decocms 4.509.6 → 4.509.7
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/{ActiveShapeUtils-ooY8r381.js → ActiveShapeUtils-B2tXXZ9P.js} +1 -1
- package/dist/client/assets/{AlertCircle-BF0Ui0Pv.js → AlertCircle-C2-xDaTS.js} +1 -1
- package/dist/client/assets/{AreaChart-DlzEksfw.js → AreaChart-BU0Nlje8.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BVlu9Dwz.js → ArrowLeft-BUifAAM4.js} +1 -1
- package/dist/client/assets/{ArrowUp-Dmyea9G6.js → ArrowUp-BJwPPm-F.js} +1 -1
- package/dist/client/assets/{BarChart-Das3ttsM.js → BarChart-ylU_LIPO.js} +1 -1
- package/dist/client/assets/{Building02-DNBL7z8J.js → Building02-BFfmnieL.js} +1 -1
- package/dist/client/assets/{CategoricalChart-CJoGBfLe.js → CategoricalChart-BOg4cQDg.js} +1 -1
- package/dist/client/assets/{CheckCircle-Dk9xz_Bm.js → CheckCircle-D_iS21iJ.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-C-NfCkc1.js → ChevronSelectorVertical-LDCyh36B.js} +1 -1
- package/dist/client/assets/{ChevronUp-sk3QYx4w.js → ChevronUp-BMWVm5VA.js} +1 -1
- package/dist/client/assets/{Copy01-NMmlHrlX.js → Copy01-DtUIoTC8.js} +1 -1
- package/dist/client/assets/{CreditCard01-DEWemsgw.js → CreditCard01-DyS8qMlW.js} +1 -1
- package/dist/client/assets/{DotsVertical-CpTUNuJb.js → DotsVertical-BdchAH_A.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-Bl7uyjge.js → ErrorBarContext-CxoH2MPc.js} +1 -1
- package/dist/client/assets/{Globe04-Vnz0t7eg.js → Globe04-Da-2fpY1.js} +1 -1
- package/dist/client/assets/{Image01-BNqUbbQC.js → Image01-BkAb4fIC.js} +1 -1
- package/dist/client/assets/{Key01-C31u2Eke.js → Key01-mqktpP-H.js} +1 -1
- package/dist/client/assets/{Link01-BHjj2bjq.js → Link01-Bjo8OGKG.js} +1 -1
- package/dist/client/assets/{LinkBroken01-nMXyJXKu.js → LinkBroken01-DVihbbed.js} +1 -1
- package/dist/client/assets/{Monitor01-D3IH3GgG.js → Monitor01-DulAR0iy.js} +1 -1
- package/dist/client/assets/{Play-BZqogoCw.js → Play-LF_DzHWN.js} +1 -1
- package/dist/client/assets/{Plus-DjDwXc6N.js → Plus-BzI6Cvgy.js} +1 -1
- package/dist/client/assets/{SearchMd-dTBCIA0I.js → SearchMd-0F_GTuHF.js} +1 -1
- package/dist/client/assets/{Sector-PvHckCS_.js → Sector-hwsthWH9.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-iwBdEc_G.js → ShoppingBag01-CCVlLnsG.js} +1 -1
- package/dist/client/assets/{Sun-DHMHnErN.js → Sun-UjRT7FSf.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DFtDKKW5.js → SwitchHorizontal01-Cu2P-zXx.js} +1 -1
- package/dist/client/assets/{Tool01-BouMEVqo.js → Tool01-DNGek73U.js} +1 -1
- package/dist/client/assets/{Trash01-Bjr3GAHU.js → Trash01-DXbNVB_L.js} +1 -1
- package/dist/client/assets/{Upload01-CQLG0Ul6.js → Upload01-BjID0aMb.js} +1 -1
- package/dist/client/assets/{User01-CK1N7iyP.js → User01-Dra3WHRe.js} +1 -1
- package/dist/client/assets/{UserSquare-BNUksztK.js → UserSquare-CaCfEQr3.js} +1 -1
- package/dist/client/assets/{Users01-DEsQIEI5.js → Users01-CGZ94Oxa.js} +1 -1
- package/dist/client/assets/{XAxis-BAiBjBbe.js → XAxis-D0OGZsLI.js} +1 -1
- package/dist/client/assets/{XClose-DOiKf-Eu.js → XClose-DTGqu4mJ.js} +1 -1
- package/dist/client/assets/{ZoomOut-D6BrN1hH.js → ZoomOut-CVdulwGX.js} +1 -1
- package/dist/client/assets/{access-gate-9z08FPvn.js → access-gate-CzvUyROT.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-CrU-1bfQ.js → add-connection-dialog-L6j8soig.js} +1 -1
- package/dist/client/assets/{agent-analytics-BfPA0B43.js → agent-analytics-Bv4hFDx4.js} +1 -1
- package/dist/client/assets/agent-app-oTgNBVbj.js +1 -0
- package/dist/client/assets/{agent-assets-BSjF7Qbc.js → agent-assets-dGEz7tS4.js} +1 -1
- package/dist/client/assets/{agent-automation-BvB5bkQ2.js → agent-automation-Cqg6cyDL.js} +1 -1
- package/dist/client/assets/{agent-automations-CU8lAAO-.js → agent-automations-Ck6clWWa.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-C4RhfCRS.js → agent-connect-sources-Bugn_Lp_.js} +1 -1
- package/dist/client/assets/agent-deck-hohzL9Dk.js +1 -0
- package/dist/client/assets/{agent-e2e-2FaFx0Ek.js → agent-e2e-DSNw7xIQ.js} +1 -1
- package/dist/client/assets/{agent-experiments-CuEYYmSc.js → agent-experiments-DzT2mrVm.js} +1 -1
- package/dist/client/assets/{agent-file-DzRDLJc9.js → agent-file-C25ApN0K.js} +1 -1
- package/dist/client/assets/{agent-hosting-DlEgBC0K.js → agent-hosting-CHiGw2yg.js} +1 -1
- package/dist/client/assets/{agent-icon-CFZX8pR7.js → agent-icon-MNrwMmyV.js} +1 -1
- package/dist/client/assets/agent-library-BYqGinma.js +1 -0
- package/dist/client/assets/agent-library-file-Mh1coZqb.js +1 -0
- package/dist/client/assets/{agent-monitor-BRQyfsgF.js → agent-monitor-CtIA9F1z.js} +1 -1
- package/dist/client/assets/{agent-overview-CohE0W4m.js → agent-overview-CWZGGMcV.js} +1 -1
- package/dist/client/assets/{agent-releases-CySJ1kvw.js → agent-releases-BLN-iWSy.js} +1 -1
- package/dist/client/assets/agent-settings-CnN40eBG.js +1 -0
- package/dist/client/assets/{agent-site-editor-ChtXrVib.js → agent-site-editor-CWGvrERP.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-Bbxy4Luo.js +2 -0
- package/dist/client/assets/agent-site-editor-content-BJ6CskYo.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-Ba40rhWl.js +1 -0
- package/dist/client/assets/agent-view-EeRID_Nj.js +1 -0
- package/dist/client/assets/{agent-view-guard-BBvfShfh.js → agent-view-guard-DKImWidB.js} +1 -1
- package/dist/client/assets/{agents-list-DSxrSodP.js → agents-list-3rsjlIB8.js} +1 -1
- package/dist/client/assets/{ai-providers-CWxcn_sv.js → ai-providers-CSIiGQmm.js} +1 -1
- package/dist/client/assets/{alert-DEIPkOBz.js → alert-DKuglrhx.js} +1 -1
- package/dist/client/assets/{alert-dialog-1AxPq0JV.js → alert-dialog-CWcdt9xA.js} +1 -1
- package/dist/client/assets/{analytics-sections-B2LRIwJd.js → analytics-sections-COZhbL_-.js} +1 -1
- package/dist/client/assets/{api-keys-zhfX9dUA.js → api-keys-BQNxGh6S.js} +1 -1
- package/dist/client/assets/api-keys-DQ9fz0me.js +1 -0
- package/dist/client/assets/{app-editor-BbXisCvb.js → app-editor-DRtZzSHQ.js} +1 -1
- package/dist/client/assets/{asset-utils-BfCzyXmn.js → asset-utils-B-fyrAKS.js} +1 -1
- package/dist/client/assets/{auth-catchall-BRZHWUGv.js → auth-catchall-DNZObFoR.js} +1 -1
- package/dist/client/assets/{auth-entry-LhUvcLui.js → auth-entry-C1QAMNKL.js} +1 -1
- package/dist/client/assets/{auth-DP4uSxPI.js → auth-qUU8zuIn.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BWp54P0k.js → auth-split-layout-Bif-LJUo.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-C_U6QZv3.js → authenticate-and-persist-oauth-DP_E70EP.js} +1 -1
- package/dist/client/assets/{automation-list-row-C0ZdxIJ1.js → automation-list-row-DkJjMYrp.js} +1 -1
- package/dist/client/assets/{automation-runs-B_bJCxFO.js → automation-runs-DLLfzptb.js} +1 -1
- package/dist/client/assets/{automations-L2pzeirr.js → automations-Cadxq-j2.js} +1 -1
- package/dist/client/assets/{autosend-cTnVaCJn.js → autosend-BrN72p8s.js} +1 -1
- package/dist/client/assets/{avatar-Cr8xE9qr.js → avatar-jAKpvDdU.js} +1 -1
- package/dist/client/assets/{badge-Cxzupfx0.js → badge-DLDHnowf.js} +1 -1
- package/dist/client/assets/{block-document-J4pX0Skn.js → block-document-CrZo7x3K.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-D569pbk9.js → blocks-preview-workspace-context-mHcuuXl-.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-CGzdJ5rB.js → blocks-tab-states-h1capsr4.js} +3 -3
- package/dist/client/assets/{blog-schema-B4fToRjB.js → blog-schema-DqZ9QsY5.js} +1 -1
- package/dist/client/assets/{board-analytics-Dx1OpXXJ.js → board-analytics-DT80PpQ5.js} +1 -1
- package/dist/client/assets/{buckets-zOYXvUGG.js → buckets-mirfAJPe.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-DW5qKm5m.js → build-improve-prompt-doc-Dv9pVLUd.js} +1 -1
- package/dist/client/assets/{calendar-DrqH5Cxh.js → calendar-C-Ms76Gt.js} +1 -1
- package/dist/client/assets/{capability-load-error-xEbIIOle.js → capability-load-error-BZ3QgdjW.js} +1 -1
- package/dist/client/assets/{category-editor-CogqhjJy.js → category-editor-BYfpRF2j.js} +1 -1
- package/dist/client/assets/{chart-CWMR3hGU.js → chart-DbYS9Pu1.js} +1 -1
- package/dist/client/assets/{chat-context-g_Eua-AQ.js → chat-context-f9bbeLaP.js} +1 -1
- package/dist/client/assets/{chat-draft-Dzk8CPyW.js → chat-draft-Ca6Ec2_J.js} +1 -1
- package/dist/client/assets/{checkbox-BdeH_FyX.js → checkbox-BKU3nc43.js} +1 -1
- package/dist/client/assets/{choose-editor-Cx8BWFni.js → choose-editor-CdPucqEN.js} +1 -1
- package/dist/client/assets/{cli-auth-success-0JNhZBeB.js → cli-auth-success-D5G8bTNK.js} +1 -1
- package/dist/client/assets/{client-icons-XzBjrLgb.js → client-icons-DuauA-0t.js} +1 -1
- package/dist/client/assets/cms-settings-editor-BqG-uPeC.js +1 -0
- package/dist/client/assets/{collapsible-Dzc5nPbl.js → collapsible-DYKtKAgk.js} +1 -1
- package/dist/client/assets/{collection-detail-_FdttxMf.js → collection-detail-eTeLeEVg.js} +1 -1
- package/dist/client/assets/{collection-display-button-C0r3MAfu.js → collection-display-button-8DvfqEYN.js} +1 -1
- package/dist/client/assets/{collection-search-Dbvpgh25.js → collection-search-Bu5DJDuz.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DetseIgy.js → collection-table-wrapper-lh375oLj.js} +1 -1
- package/dist/client/assets/{collection-tabs-BI09XyhI.js → collection-tabs-gJ3Y4aoa.js} +1 -1
- package/dist/client/assets/{column-rules-BlPEwh2V.js → column-rules-B2qujTTj.js} +1 -1
- package/dist/client/assets/{combobox-VUJ2nDqY.js → combobox-HBowX1FV.js} +1 -1
- package/dist/client/assets/{command-Bd9hJorc.js → command-CHtEESOr.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-Bp8UMiPg.js → companion-mcps-section-BhUDktlq.js} +1 -1
- package/dist/client/assets/{config-BeMd-l-0.js → config-Dc6_TIj1.js} +1 -1
- package/dist/client/assets/{connect-M4-YMPKK.js → connect-DF5u-qcG.js} +1 -1
- package/dist/client/assets/{connect-layout-p17FH5DP.js → connect-layout-DnyHtahI.js} +1 -1
- package/dist/client/assets/{connection-vGhXdKLD.js → connection-DO4CNoWk.js} +1 -1
- package/dist/client/assets/{connection-card-CAe2u903.js → connection-card-BnjG-F02.js} +1 -1
- package/dist/client/assets/{connection-detail-DIWkkxjY.js → connection-detail-N0pUNK6W.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-CALFSG79.js → connection-form-helpers-BXlO3Rip.js} +1 -1
- package/dist/client/assets/{connections-C7k4ulir.js → connections-qOEClki8.js} +1 -1
- package/dist/client/assets/{content-tab-BtHPg-dG.js → content-tab-BQlWLfye.js} +3 -3
- package/dist/client/assets/{context-CfvT2Wxa.js → context-BB5AUHhk.js} +1 -1
- package/dist/client/assets/{context-menu-CHwcnji9.js → context-menu-xsm0O27_.js} +1 -1
- package/dist/client/assets/{core.esm-DWuiNwJT.js → core.esm-GNouiJKQ.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-CWxFR1z-.js → create-organization-dialog-DHsnFPMt.js} +1 -1
- package/dist/client/assets/{daily-pulse-oRC4mLWF.js → daily-pulse-BQAaWqxH.js} +1 -1
- package/dist/client/assets/{discover-p_nLaAlD.js → discover-DkJuyWe4.js} +1 -1
- package/dist/client/assets/{domain-settings-OqiYIYXw.js → domain-settings-CPQJIBMj.js} +1 -1
- package/dist/client/assets/{drawer-Cka0Eku6.js → drawer-B5lS9Xqe.js} +1 -1
- package/dist/client/assets/{editor-B9Gjc4_u.js → editor-DE02okLY.js} +1 -1
- package/dist/client/assets/{editor-classes-DDiNriHb.js → editor-classes-DrQ94tii.js} +1 -1
- package/dist/client/assets/{empty-state-z2SR-Mog.js → empty-state-B6d61V1Q.js} +1 -1
- package/dist/client/assets/{empty-state-CwFmbLsq.js → empty-state-BDiHOr0u.js} +1 -1
- package/dist/client/assets/{extract-connection-data-XsQpf2Mh.js → extract-connection-data-Cyhl1MFd.js} +1 -1
- package/dist/client/assets/{feature-gate-B_wXef4W.js → feature-gate-B3ukj21U.js} +1 -1
- package/dist/client/assets/{feature-paywall-DchvuB27.js → feature-paywall-Dn2M2Ksx.js} +1 -1
- package/dist/client/assets/{file-explorer-ApKfPZKL.js → file-explorer-DpcRiQa3.js} +1 -1
- package/dist/client/assets/{file-preview-tnzzCkAY.js → file-preview-CIlAGmt6.js} +1 -1
- package/dist/client/assets/{file-share-button-B3GxVN2J.js → file-share-button-CmlebC7L.js} +1 -1
- package/dist/client/assets/{file-type-icon-ryttgYi6.js → file-type-icon-w3LlbMSR.js} +1 -1
- package/dist/client/assets/flat-project-BOWglK04.js +1 -0
- package/dist/client/assets/{folder-icon-CWST0MHG.js → folder-icon-DwPNH3GE.js} +1 -1
- package/dist/client/assets/{form-Bx-6xR5K.js → form-DCXiQhdc.js} +1 -1
- package/dist/client/assets/{general-Dbe_Q4-X.js → general-CG9Yqq43.js} +1 -1
- package/dist/client/assets/{home-wrx8Wl5t.js → home-I_T6Div7.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-CeIJQB2y.js → hosted-publish-feedback-Dsw8xZvp.js} +1 -1
- package/dist/client/assets/{icon-button-MCLH5x1D.js → icon-button-DNG7H-3g.js} +1 -1
- package/dist/client/assets/{index-WLhTbYq7.js → index-4t6s3xn7.js} +1 -1
- package/dist/client/assets/{index-CG5_7zQH.js → index-Bkgte43P.js} +1 -1
- package/dist/client/assets/{index-C1aGtBNr.js → index-BoE3BxcH.js} +1 -1
- package/dist/client/assets/{index-KyomgUB_.js → index-BoGZn73f.js} +1 -1
- package/dist/client/assets/{index-ViwETQr3.js → index-BqOoT4Y3.js} +1 -1
- package/dist/client/assets/{index-BO8JG4Hf.js → index-Bqlf9hqg.js} +1 -1
- package/dist/client/assets/{index-B0vZKQuD.js → index-ByfbdnqE.js} +1 -1
- package/dist/client/assets/{index-dfcCJdsL.js → index-BzJSqxI0.js} +1 -1
- package/dist/client/assets/{index-CClwXgvQ.js → index-CXOWx30X.js} +1 -1
- package/dist/client/assets/{index-BrXBiZn5.js → index-CnIzNgwd.js} +2 -2
- package/dist/client/assets/{index-C9pR_VKY.js → index-DAAO5MqR.js} +1 -1
- package/dist/client/assets/{index-Q89Fufvt.js → index-DWu_rmtO.js} +3 -3
- package/dist/client/assets/{index-DdEWvRzm.js → index-DZUr5GUU.js} +1 -1
- package/dist/client/assets/{index-D-fuKePD.js → index-Dbx4Q6a3.js} +1 -1
- package/dist/client/assets/{index-D0aQ5wnO.js → index-k6DK6gCg.js} +1 -1
- package/dist/client/assets/{index-redirect-ESqjut1k.js → index-redirect-CAiRd6Ph.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-PVfvYDsq.js → infiniteQueryObserver-D6_lKlCr.js} +1 -1
- package/dist/client/assets/{infra-billing-BSN0ioe1.js → infra-billing-B_EHrxvb.js} +1 -1
- package/dist/client/assets/{input-r7BQhqBY.js → input-BGm1jaHz.js} +3 -3
- package/dist/client/assets/{input-D0n0Uf4T.js → input-a7n78_VB.js} +1 -1
- package/dist/client/assets/{integration-icon-BB9Dv-nJ.js → integration-icon-COQFtfvN.js} +1 -1
- package/dist/client/assets/{jira-icon-CdI8zaAu.js → jira-icon-BoGPmnKt.js} +1 -1
- package/dist/client/assets/{label-DmL4Uuof.js → label-C8IPmY-B.js} +1 -1
- package/dist/client/assets/{layout-BZDYRnNv.js → layout-DIH4F3T5.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-DfPWY0Fg.js → legacy-agents-deep-DwXHPcL_.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-M1U9G2Qs.js → legacy-main-redirect-BaE18Pp5.js} +1 -1
- package/dist/client/assets/library-Bfj1AjoX.js +1 -0
- package/dist/client/assets/{library-tab-BFQfsJS_.js → library-tab-CwBBd6iW.js} +1 -1
- package/dist/client/assets/{login-B-ot9CSx.js → login-CYD2Xp8r.js} +1 -1
- package/dist/client/assets/{markdown-fTGnhGxY.js → markdown-BXPAWjH_.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-qwpDp6Qi.js → mcp-app-renderer-BDqoz6W3.js} +1 -1
- package/dist/client/assets/{mcp-oauth-D8EcE-Fc.js → mcp-oauth-D6imqpJu.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BylBFIJH.js → mcp-oauth-b3kCwoVW.js} +1 -1
- package/dist/client/assets/{members-kE58YejJ.js → members-Ct6m7Wqp.js} +1 -1
- package/dist/client/assets/{memory-D0Pm7PpR.js → memory-CVyz3Ybe.js} +1 -1
- package/dist/client/assets/{mini-report-page-ZxMwz6zr.js → mini-report-page-CbZEjhp8.js} +1 -1
- package/dist/client/assets/{mock-board-BJYyyqa_.js → mock-board-BIQcgm3j.js} +1 -1
- package/dist/client/assets/{monaco-editor-CHi3WtH8.js → monaco-editor-CsaQaF7y.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DMl3HRZi.js → monitoring-stats-row-DLGpBDg2.js} +1 -1
- package/dist/client/assets/{multi-select-3pvlXav0.js → multi-select-BLAfjXON.js} +1 -1
- package/dist/client/assets/{mustache-D1Ud0cWF.js → mustache-CLyqBVVj.js} +1 -1
- package/dist/client/assets/{new-project-dialog-21yLHCn3.js → new-project-dialog-DZH08aJm.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DyHy6BnJ.js → oauth-callback-ai-provider-C4EuIiDN.js} +1 -1
- package/dist/client/assets/{oauth-callback-C6P-q-Xb.js → oauth-callback-oG2tb_KJ.js} +1 -1
- package/dist/client/assets/{onboarding-DsDkmZX1.js → onboarding-CwlcMV42.js} +1 -1
- package/dist/client/assets/{openai-conversation-CfxNWJin.js → openai-conversation-BUiFo27t.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-WpLlSmRl.js → optimistic-project-sidebar-views-Cj7vxjUu.js} +1 -1
- package/dist/client/assets/{order-monitor-day-azJod3uM.js → order-monitor-day-C4dYyxwb.js} +1 -1
- package/dist/client/assets/{organization-choice-Nc5D1yLA.js → organization-choice-CD2ythTR.js} +1 -1
- package/dist/client/assets/{orgs-vI2cjJee.js → orgs-DzQYVdV6.js} +1 -1
- package/dist/client/assets/{page-seo-form-BGn9HeIJ.js → page-seo-form-gyMMTLUS.js} +1 -1
- package/dist/client/assets/{pair-CsPV6jek.js → pair-bYH81oH-.js} +1 -1
- package/dist/client/assets/{plan-ladder-BY6xWeYj.js → plan-ladder-BlaF63MK.js} +1 -1
- package/dist/client/assets/{popover-DwtUmLit.js → popover-CZFMvRPq.js} +1 -1
- package/dist/client/assets/{post-calendar-pztmOziQ.js → post-calendar-B6li9qbG.js} +1 -1
- package/dist/client/assets/{post-editor-C3lzy0U_.js → post-editor-BHrtQNr8.js} +1 -1
- package/dist/client/assets/{preview-content-CVSaJSDI.js → preview-content-Bg64KpmR.js} +1 -1
- package/dist/client/assets/{preview-dialog-eNQBfFBe.js → preview-dialog-BaLVTgQQ.js} +1 -1
- package/dist/client/assets/{preview-panel-DXOY3jmH.js → preview-panel-A0bltpmF.js} +1 -1
- package/dist/client/assets/{preview-tab-DbE5m7B7.js → preview-tab-Ch9XMmMj.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-Da-GpOyv.js → product-picker-dialog-uwCFV0tH.js} +1 -1
- package/dist/client/assets/{profile-U0DUwr93.js → profile-BZ8WONFO.js} +1 -1
- package/dist/client/assets/{project-app-view-FFRxOV_Q.js → project-app-view-DEFS7MJl.js} +1 -1
- package/dist/client/assets/{project-feed-DaL6uBL4.js → project-feed-BBGcr23f.js} +1 -1
- package/dist/client/assets/{project-icon-BuRsdswx.js → project-icon-CR8t1Eac.js} +1 -1
- package/dist/client/assets/project-reports-CBUpQ5Ri.js +1 -0
- package/dist/client/assets/project-tasks-lnm4wgLM.js +1 -0
- package/dist/client/assets/{projects-5riXPnmY.js → projects-BZEMlQjJ.js} +1 -1
- package/dist/client/assets/{projects-empty-state-CiePMMPI.js → projects-empty-state-BkKmWB1o.js} +1 -1
- package/dist/client/assets/{prompts-CXHSiEhX.js → prompts-CWzMlkG6.js} +1 -1
- package/dist/client/assets/record-editor-D1O_mHeI.js +1 -0
- package/dist/client/assets/{redirect-editor-CwK3Vdqv.js → redirect-editor-By7JXYgY.js} +1 -1
- package/dist/client/assets/reports-CQ_Xb0vV.js +1 -0
- package/dist/client/assets/{reports-BIgNms70.js → reports-D3wVSYZH.js} +1 -1
- package/dist/client/assets/{reports-onboarding-Cmxh3afP.js → reports-onboarding-Cfb56iE6.js} +1 -1
- package/dist/client/assets/{reports-tab-DXxiJmPa.js → reports-tab-4ye2noLZ.js} +2 -2
- package/dist/client/assets/{repositories-B42tZ01C.js → repositories-DJIkUU_o.js} +1 -1
- package/dist/client/assets/{repository-binding-r55gGNBf.js → repository-binding-0hbgTK_b.js} +1 -1
- package/dist/client/assets/{repository-import-picker-VfSlhahJ.js → repository-import-picker-DlMc0DWN.js} +1 -1
- package/dist/client/assets/{repository-picker-yFk80uej.js → repository-picker-CiIB-MVf.js} +1 -1
- package/dist/client/assets/{require-capability-CT3TLGEw.js → require-capability-Bg1oetzh.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BWb5nKEq.js → required-auth-layout-BJ16ADSq.js} +1 -1
- package/dist/client/assets/{reset-password-BOxwShbH.js → reset-password-BLF0UL9n.js} +1 -1
- package/dist/client/assets/{resizable-ByGUts-q.js → resizable-Bgy3QaJT.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-Bdjqi0eE.js → resolve-tab-icon-BUsRCYw-.js} +1 -1
- package/dist/client/assets/{review-settings-DNLvLxnr.js → review-settings-BgCs4M5A.js} +1 -1
- package/dist/client/assets/{roles-DeWWpn_K.js → roles-Bk1rngm_.js} +1 -1
- package/dist/client/assets/route-CWair0ZG.js +1 -0
- package/dist/client/assets/{route-CgE7-Lwt.js → route-DHyaqxzx.js} +1 -1
- package/dist/client/assets/{route-C4hauJvR.js → route-EJy_YPSI.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-t8rIJZQW.js → sandbox-lifecycle-context-C7jEI4z_.js} +1 -1
- package/dist/client/assets/{schema-flcIEWOM.js → schema-B7LGH06V.js} +1 -1
- package/dist/client/assets/{schema-MafV5cPV.js → schema-aBQdyYQT.js} +1 -1
- package/dist/client/assets/{scroll-area-CbXr0Grw.js → scroll-area-Be29Y_4N.js} +1 -1
- package/dist/client/assets/{search-input-ClGBBhJ7.js → search-input-CDhkeP9d.js} +1 -1
- package/dist/client/assets/{search-toggle-CBojEkrt.js → search-toggle-BhZXtk7K.js} +1 -1
- package/dist/client/assets/{secret-ciphertext-C7ulBnli.js → secret-ciphertext-DDzaaSB_.js} +1 -1
- package/dist/client/assets/{secret-picker-DGeeRc6k.js → secret-picker-BHY-1amq.js} +1 -1
- package/dist/client/assets/{secrets-BlnhE8n4.js → secrets-DBVw4ScW.js} +1 -1
- package/dist/client/assets/{sections-editor-3pSZsp94.js → sections-editor-CL_L6QYW.js} +1 -1
- package/dist/client/assets/{select-B2Hnkm4B.js → select-BJ46Skkz.js} +1 -1
- package/dist/client/assets/{select-model-DTTbzqH1.js → select-model-W7CTaV1d.js} +1 -1
- package/dist/client/assets/{seo-editor-DuxZUYjX.js → seo-editor-BCB5H8Cx.js} +1 -1
- package/dist/client/assets/{separator-DBLpqDob.js → separator-MJVLVhpb.js} +1 -1
- package/dist/client/assets/{settings-tab-8Dvvihdk.js → settings-tab-DBOvk5s1.js} +1 -1
- package/dist/client/assets/{sheet-BBhhx18B.js → sheet-IYLs7puU.js} +1 -1
- package/dist/client/assets/{shell-layout-CtvKUqqb.js → shell-layout-poyftzld.js} +1 -1
- package/dist/client/assets/site-editor-D3JZUEdl.js +1 -0
- package/dist/client/assets/{site-editor-toast-DpZxTku4.js → site-editor-toast-BkcILd9v.js} +1 -1
- package/dist/client/assets/{skills-BYbTnQ5E.js → skills-_DxONJd5.js} +1 -1
- package/dist/client/assets/{slider-qy6cOEga.js → slider-CkzZEVec.js} +1 -1
- package/dist/client/assets/{sortable.esm-B9-0HRD6.js → sortable.esm-D00-1NXX.js} +1 -1
- package/dist/client/assets/{sso-CCG74lG7.js → sso-1lNCRfgb.js} +1 -1
- package/dist/client/assets/{suggestion-Cj0G_CXn.js → suggestion-QUjD-ctP.js} +1 -1
- package/dist/client/assets/{switch-CS2FoIN2.js → switch-CLqDvZGt.js} +1 -1
- package/dist/client/assets/{symbol-CON1ZOoB.js → symbol-j3NGJHUu.js} +1 -1
- package/dist/client/assets/{synced-repos-CF0dvd0G.js → synced-repos-CNBp3ZVC.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-CYuIgDcf.js → tab-icon-glyph-BodffWRk.js} +1 -1
- package/dist/client/assets/{table-_D2SXrxl.js → table-DwqEF1lK.js} +1 -1
- package/dist/client/assets/{tabs-AcH3oy-t.js → tabs-PKlPXA60.js} +1 -1
- package/dist/client/assets/{task-board-Bd17qbWq.js → task-board-D98jSOQP.js} +1 -1
- package/dist/client/assets/{task-route-BZue4vOC.js → task-route-yhsx_34f.js} +1 -1
- package/dist/client/assets/{task-status-DyMnNCkJ.js → task-status-BqztsFUA.js} +1 -1
- package/dist/client/assets/taskboard-analytics-D1yU5uii.js +1 -0
- package/dist/client/assets/{tasks-CiKT4FN2.js → tasks-DV5stUHU.js} +1 -1
- package/dist/client/assets/tasks-wD42ExrJ.js +1 -0
- package/dist/client/assets/{textarea-DmcyokOy.js → textarea-DljgjWNF.js} +1 -1
- package/dist/client/assets/{thread-analytics-CTCE6JPQ.js → thread-analytics-CPsrLrCM.js} +1 -1
- package/dist/client/assets/{thread-intent-CxzriSHz.js → thread-intent-C1ZguXaN.js} +1 -1
- package/dist/client/assets/{thread-route-eo60lqrt.js → thread-route-Dfr9_ZgT.js} +1 -1
- package/dist/client/assets/{thread-route-pp0AsxjZ.js → thread-route-Dv613HJV.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-CRRp5dne.js → thread-sheet-body-C7NQMz1T.js} +1 -1
- package/dist/client/assets/{time-range-picker-D0t73aQX.js → time-range-picker-DhDsuI-5.js} +1 -1
- package/dist/client/assets/{toggle-group-CknzSdoq.js → toggle-group-Bio6qJZD.js} +1 -1
- package/dist/client/assets/{tool-namespace-D3b3zmJP.js → tool-namespace-TkLON3s1.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-CMsNog56.js → toolbar-icon-button-IJSN1dq4.js} +1 -1
- package/dist/client/assets/{tooltip-G8gY9Kly.js → tooltip-BWJB42OE.js} +1 -1
- package/dist/client/assets/{tooltipContext-Dxi77IFN.js → tooltipContext-CSJF7ylU.js} +1 -1
- package/dist/client/assets/{track-D3LjrCDw.js → track-BHhqkIwO.js} +1 -1
- package/dist/client/assets/{types-D_cyFCbx.js → types-CRt5xyUc.js} +1 -1
- package/dist/client/assets/{url-slug-DX5VoG4H.js → url-slug-vqu-gHjE.js} +1 -1
- package/dist/client/assets/{usage-stats-rnTJkD9x.js → usage-stats-C_oXME_Y.js} +1 -1
- package/dist/client/assets/{use-ai-providers-nflcvkej.js → use-ai-providers-DY09_qcP.js} +1 -1
- package/dist/client/assets/{use-app-takeover-CPPeRs27.js → use-app-takeover-XOLP4Gx1.js} +1 -1
- package/dist/client/assets/{use-automations-wNPVrD6L.js → use-automations-Dd1eYMDG.js} +1 -1
- package/dist/client/assets/{use-autosave-BeOqsngE.js → use-autosave-g9_HMmKl.js} +1 -1
- package/dist/client/assets/{use-chat-navigation-Ct0wuvGx.js → use-chat-navigation-DCaUEwma.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CYUj2YN-.js → use-clock-tick-ZMWXp3h8.js} +1 -1
- package/dist/client/assets/{use-connect-companion-BJzJ4g-y.js → use-connect-companion-ZufSThV0.js} +1 -1
- package/dist/client/assets/{use-connection-BKEWodZb.js → use-connection-xmXdNZkG.js} +1 -1
- package/dist/client/assets/{use-content-sync-DhKXoE3-.js → use-content-sync-D72bjijf.js} +1 -1
- package/dist/client/assets/{use-copy-CEqxOatu.js → use-copy-CfjfHVfk.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BMSftbYN.js → use-create-virtual-mcp-BKFmsTsa.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-D4E1S0jf.js → use-date-fns-locale-DnimNaFR.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DquKQIZH.js → use-debounced-autosave-QTz4x3Ol.js} +1 -1
- package/dist/client/assets/{use-debounced-value-CSstqSOk.js → use-debounced-value-CVsl_8XP.js} +1 -1
- package/dist/client/assets/{use-deco-credits-m-YLDLrH.js → use-deco-credits-DVpR5CgH.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CpujiQnI.js → use-decopilot-events-DXSa8U53.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DCjbjXKx.js → use-delete-connection-CL-TP96H.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BdLlUR4P.js → use-deployment-admin-BbAXS7HD.js} +1 -1
- package/dist/client/assets/{use-ensure-project-folder-qMCmZGpl.js → use-ensure-project-folder-uji98LuU.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-DJXYn21u.js → use-fast-preview-draft-url-KU4kdrKi.js} +1 -1
- package/dist/client/assets/{use-file-configs-CWAIMRw4.js → use-file-configs-huMllzM-.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-B02tUFCW.js → use-infinite-scroll-DVOz-lKC.js} +1 -1
- package/dist/client/assets/{use-join-requests-BvbtrG44.js → use-join-requests-_do5g7jA.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-o7S-7VzY.js → use-main-panel-tabs-CP3HtSuA.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CITuNY2R.js → use-mcp-auth-status-0Y9wWkv-.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DSSP1oDc.js → use-mcp-client-PJtelRXt.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-BJxARCf8.js → use-mcp-prompts-LJR1i3qe.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CDlmO0C-.js → use-mcp-tools-BYEX11te.js} +1 -1
- package/dist/client/assets/{use-members-3tEAzKDw.js → use-members-CnRIitIu.js} +1 -1
- package/dist/client/assets/{use-mobile-DnMZed-9.js → use-mobile-cxNaufSl.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-KM58HZ9S.js → use-navigate-to-agent-B8fIrYti.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-CQGCulmA.js → use-open-billing-url-wf2CilcR.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BRnWhfya.js → use-org-auth-client-w6iNftJA.js} +1 -1
- package/dist/client/assets/{use-org-fs-2d0xJbBN.js → use-org-fs-CduBPdT9.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-Bkud4jNg.js → use-org-repo-syncs-B40oFxnP.js} +1 -1
- package/dist/client/assets/{use-org-sso-D1Oe6UUb.js → use-org-sso-DUepTIGA.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DXH_4zVT.js → use-organization-roles-DEaPosAb.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DkqCYAjq.js → use-organization-settings-Q8jPxyvE.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-BJSqjmuU.js → use-panel-navigate-BFJRhbCJ.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-Ceczs2dP.js → use-project-native-view-presence-DhZPaHJd.js} +1 -1
- package/dist/client/assets/{use-project-scope-CuRM9scR.js → use-project-scope-DOSmHssk.js} +1 -1
- package/dist/client/assets/{use-recent-apps-CbbBzioG.js → use-recent-apps-W1vQjkfO.js} +1 -1
- package/dist/client/assets/{use-releases-D2klKVhk.js → use-releases-C4kytzn6.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-B7T0KiB5.js → use-reports-diagnostic-Dd7M-P0f.js} +1 -1
- package/dist/client/assets/{use-secrets-yXiqlkNU.js → use-secrets-fgSJoO2c.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-DFAsOVer.js → use-section-preview-base-BpCGxrlC.js} +1 -1
- package/dist/client/assets/{use-tags-CJzCEaQ0.js → use-tags-BYPgVGY0.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-r0U-e4fB.js → use-task-board-analytics-Dswn6kHm.js} +1 -1
- package/dist/client/assets/{use-task-board-events-DjMd8sPO.js → use-task-board-events-DZ_s4UQa.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-CKVkUcg_.js → use-task-board-item-prs-D2Rs4XN_.js} +1 -1
- package/dist/client/assets/{use-task-board-items-cbZX6TEt.js → use-task-board-items-BZUHoLxb.js} +1 -1
- package/dist/client/assets/{use-task-metadata-BS5LKdCm.js → use-task-metadata-KOZNtxY2.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-BzF3EbsW.js → use-thread-analytics-CZ9XZad3.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-D9D4jURz.js → use-thread-outputs-DCIlg6Ma.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-D6zFk2Eu.js +1 -0
- package/dist/client/assets/{useQueries-NQIUklIj.js → useQueries-DlbyDbnn.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DGCC_iDB.js +1 -0
- package/dist/client/assets/{users-B7H7w0IM.js → users-Cb7uWJav.js} +1 -1
- package/dist/client/assets/{utils-hC6jph5v.js → utils-B4vG3AWy.js} +1 -1
- package/dist/client/assets/{variant-calendar-BFHbViPm.js → variant-calendar-DI-tnLFs.js} +1 -1
- package/dist/client/assets/{variant-draft-pointer-dvL1YJWZ.js → variant-draft-pointer-CpKl9Ufa.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CrCfuVDs.js → view-mode-toggle-2ndWFZDn.js} +1 -1
- package/dist/client/assets/{virtual-mcp-Cf1Te1-F.js → virtual-mcp-DpMNqyoi.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-BNEDXIc1.js → watch-sse-pool-DTNZmE9e.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/server.js +18 -18
- package/package.json +1 -1
- package/dist/client/assets/agent-app-_zMO2Kgh.js +0 -1
- package/dist/client/assets/agent-deck-B0HIBzDj.js +0 -1
- package/dist/client/assets/agent-library-CnfMApSG.js +0 -1
- package/dist/client/assets/agent-library-file-Dui-jRHc.js +0 -1
- package/dist/client/assets/agent-settings-BhpiMVSF.js +0 -1
- package/dist/client/assets/agent-site-editor-code-fb4CzsoG.js +0 -2
- package/dist/client/assets/agent-site-editor-content-BRO1EgUR.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-1cxLImn-.js +0 -1
- package/dist/client/assets/agent-view-pXrmGKHJ.js +0 -1
- package/dist/client/assets/api-keys-SX9BHdXd.js +0 -1
- package/dist/client/assets/cms-settings-editor-v6Ztc9kc.js +0 -1
- package/dist/client/assets/flat-project-BRNrHCo0.js +0 -1
- package/dist/client/assets/library-B6DHkhUv.js +0 -1
- package/dist/client/assets/project-reports-CElPcDzJ.js +0 -1
- package/dist/client/assets/project-tasks-DV2eEDWl.js +0 -1
- package/dist/client/assets/record-editor-DAVvVNOZ.js +0 -1
- package/dist/client/assets/reports-DVtGq3tm.js +0 -1
- package/dist/client/assets/route-CoDyt08g.js +0 -1
- package/dist/client/assets/site-editor-BkuBcCUi.js +0 -1
- package/dist/client/assets/taskboard-analytics-CIGPLIZr.js +0 -1
- package/dist/client/assets/tasks-BN_Ove-o.js +0 -1
- package/dist/client/assets/useInfiniteQuery-CT2fnQjA.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-1bfrxvMY.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -76,7 +76,7 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht
|
|
|
76
76
|
However, a future version may change this behavior to prefer the ENV static credentials.
|
|
77
77
|
Please ensure that your environment only sets either the AWS_PROFILE or the
|
|
78
78
|
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
|
|
79
|
-
`),_t1=!0}throw new rG0.CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.",{logger:$.logger,tryNextLink:!0})}return $.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),xd0($)()},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:Q,ssoAccountId:Y,ssoRegion:X,ssoRoleName:J,ssoSession:G}=$;if(!Q&&!Y&&!X&&!J&&!G)throw new rG0.CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:$.logger});let{fromSSO:W}=await Promise.resolve().then(() => (pi0(),ii0));return W($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:Q}=await Promise.resolve().then(() => (St1(),Ct1));return Q($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:Q}=await Promise.resolve().then(() => (tp0(),np0));return Q($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:Q}=await Promise.resolve().then(() => ($n0(),ep0));return Q($)(Z)},async()=>{return $.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await ol1($))()},async()=>{throw new rG0.CredentialsProviderError("Could not load credentials from any providers",{tryNextLink:!1,logger:$.logger})}],O94),O94=($)=>$?.expiration!==void 0&&$.expiration.getTime()-Date.now()<300000;var xt1=L(()=>{fd0();sl1();rG0=_(o5(),1),vt1=_(ZJ(),1)});var ft1=L(()=>{xt1()});var yt1=()=>{};var Pc,j94="AWS_S3_USE_ARN_REGION",w94="s3_use_arn_region",gt1;var ht1=L(()=>{Pc=_(mr(),1),gt1={environmentVariableSelector:($)=>Pc.booleanSelector($,j94,Pc.SelectorType.ENV),configFileSelector:($)=>Pc.booleanSelector($,w94,Pc.SelectorType.CONFIG),default:void 0}});var ut1=()=>{};var lt1=()=>{};var ct1=L(()=>{yt1();ht1();lt1();ut1()});class zc{bytes;constructor($){if(this.bytes=$,$.byteLength!==8)throw Error("Int64 buffers must be exactly 8 bytes")}static fromNumber($){if($>9223372036854776000||$<-9223372036854776000)throw Error(`${$} is too large (or, if negative, too small) to represent as an Int64`);let Z=new Uint8Array(8);for(let Q=7,Y=Math.abs(Math.round($));Q>-1&&Y>0;Q--,Y/=256)Z[Q]=Y;if($<0)mt1(Z);return new zc(Z)}valueOf(){let $=this.bytes.slice(0),Z=$[0]&128;if(Z)mt1($);return parseInt(dt1.toHex($),16)*(Z?-1:1)}toString(){return String(this.valueOf())}}function mt1($){for(let Z=0;Z<8;Z++)$[Z]^=255;for(let Z=7;Z>-1;Z--)if($[Z]++,$[Z]!==0)break}var dt1;var Qn0=L(()=>{dt1=_(wr(),1)});class Yn0{toUtf8;fromUtf8;constructor($,Z){this.toUtf8=$,this.fromUtf8=Z}format($){let Z=[];for(let X of Object.keys($)){let J=this.fromUtf8(X);Z.push(Uint8Array.from([J.byteLength]),J,this.formatHeaderValue($[X]))}let Q=new Uint8Array(Z.reduce((X,J)=>X+J.byteLength,0)),Y=0;for(let X of Z)Q.set(X,Y),Y+=X.byteLength;return Q}formatHeaderValue($){switch($.type){case"boolean":return Uint8Array.from([$.value?0:1]);case"byte":return Uint8Array.from([2,$.value]);case"short":let Z=new DataView(new ArrayBuffer(3));return Z.setUint8(0,3),Z.setInt16(1,$.value,!1),new Uint8Array(Z.buffer);case"integer":let Q=new DataView(new ArrayBuffer(5));return Q.setUint8(0,4),Q.setInt32(1,$.value,!1),new Uint8Array(Q.buffer);case"long":let Y=new Uint8Array(9);return Y[0]=5,Y.set($.value.bytes,1),Y;case"binary":let X=new DataView(new ArrayBuffer(3+$.value.byteLength));X.setUint8(0,6),X.setUint16(1,$.value.byteLength,!1);let J=new Uint8Array(X.buffer);return J.set($.value,3),J;case"string":let G=this.fromUtf8($.value),W=new DataView(new ArrayBuffer(3+G.byteLength));W.setUint8(0,7),W.setUint16(1,G.byteLength,!1);let K=new Uint8Array(W.buffer);return K.set(G,3),K;case"timestamp":let H=new Uint8Array(9);return H[0]=8,H.set(zc.fromNumber($.value.valueOf()).bytes,1),H;case"uuid":if(!V94.test($.value))throw Error(`Invalid UUID received: ${$.value}`);let F=new Uint8Array(17);return F[0]=9,F.set(Zw.fromHex($.value.replace(/\-/g,"")),1),F}}parse($){let Z={},Q=0;while(Q<$.byteLength){let Y=$.getUint8(Q++),X=this.toUtf8(new Uint8Array($.buffer,$.byteOffset+Q,Y));switch(Q+=Y,$.getUint8(Q++)){case 0:Z[X]={type:pt1,value:!0};break;case 1:Z[X]={type:pt1,value:!1};break;case 2:Z[X]={type:E94,value:$.getInt8(Q++)};break;case 3:Z[X]={type:P94,value:$.getInt16(Q,!1)},Q+=2;break;case 4:Z[X]={type:z94,value:$.getInt32(Q,!1)},Q+=4;break;case 5:Z[X]={type:A94,value:new zc(new Uint8Array($.buffer,$.byteOffset+Q,8))},Q+=8;break;case 6:let J=$.getUint16(Q,!1);Q+=2,Z[X]={type:T94,value:new Uint8Array($.buffer,$.byteOffset+Q,J)},Q+=J;break;case 7:let G=$.getUint16(Q,!1);Q+=2,Z[X]={type:q94,value:this.toUtf8(new Uint8Array($.buffer,$.byteOffset+Q,G))},Q+=G;break;case 8:Z[X]={type:R94,value:new Date(new zc(new Uint8Array($.buffer,$.byteOffset+Q,8)).valueOf())},Q+=8;break;case 9:let W=new Uint8Array($.buffer,$.byteOffset+Q,16);Q+=16,Z[X]={type:M94,value:`${Zw.toHex(W.subarray(0,4))}-${Zw.toHex(W.subarray(4,6))}-${Zw.toHex(W.subarray(6,8))}-${Zw.toHex(W.subarray(8,10))}-${Zw.toHex(W.subarray(10))}`};break;default:throw Error("Unrecognized header type tag")}}return Z}}var Zw,it1,pt1="boolean",E94="byte",P94="short",z94="integer",A94="long",T94="binary",q94="string",R94="timestamp",M94="uuid",V94;var Xn0=L(()=>{Qn0();Zw=_(wr(),1);(function($){$[$.boolTrue=0]="boolTrue",$[$.boolFalse=1]="boolFalse",$[$.byte=2]="byte",$[$.short=3]="short",$[$.integer=4]="integer",$[$.long=5]="long",$[$.byteArray=6]="byteArray",$[$.string=7]="string",$[$.timestamp=8]="timestamp",$[$.uuid=9]="uuid"})(it1||(it1={}));V94=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/});function ot1({byteLength:$,byteOffset:Z,buffer:Q}){if($<I94)throw Error("Provided message too short to accommodate event stream message overhead");let Y=new DataView(Q,Z,$),X=Y.getUint32(0,!1);if($!==X)throw Error("Reported message length does not match received message length");let J=Y.getUint32(tt1,!1),G=Y.getUint32(Qw,!1),W=Y.getUint32($-fA,!1),K=new nt1.Crc32().update(new Uint8Array(Q,Z,Qw));if(G!==K.digest())throw Error(`The prelude checksum specified in the message (${G}) does not match the calculated CRC32 checksum (${K.digest()})`);if(K.update(new Uint8Array(Q,Z+Qw,$-(Qw+fA))),W!==K.digest())throw Error(`The message checksum (${K.digest()}) did not match the expected value of ${W}`);return{headers:new DataView(Q,Z+Qw+fA,J),body:new Uint8Array(Q,Z+Qw+fA+J,X-J-(Qw+fA+fA))}}var nt1,tt1=4,Qw,fA=4,I94;var st1=L(()=>{nt1=_(QA(),1),Qw=tt1*2,I94=Qw+fA*2});class Jn0{headerMarshaller;messageBuffer;isEndOfStream;constructor($,Z){this.headerMarshaller=new Yn0($,Z),this.messageBuffer=[],this.isEndOfStream=!1}feed($){this.messageBuffer.push(this.decode($))}endOfStream(){this.isEndOfStream=!0}getMessage(){let $=this.messageBuffer.pop(),Z=this.isEndOfStream;return{getMessage(){return $},isEndOfStream(){return Z}}}getAvailableMessages(){let $=this.messageBuffer;this.messageBuffer=[];let Z=this.isEndOfStream;return{getMessages(){return $},isEndOfStream(){return Z}}}encode({headers:$,body:Z}){let Q=this.headerMarshaller.format($),Y=Q.byteLength+Z.byteLength+16,X=new Uint8Array(Y),J=new DataView(X.buffer,X.byteOffset,X.byteLength),G=new rt1.Crc32;return J.setUint32(0,Y,!1),J.setUint32(4,Q.byteLength,!1),J.setUint32(8,G.update(X.subarray(0,8)).digest(),!1),X.set(Q,12),X.set(Z,Q.byteLength+12),J.setUint32(Y-4,G.update(X.subarray(8,Y-4)).digest(),!1),X}decode($){let{headers:Z,body:Q}=ot1($);return{headers:this.headerMarshaller.parse(Z),body:Q}}formatHeaders($){return this.headerMarshaller.format($)}}var rt1;var at1=L(()=>{Xn0();st1();rt1=_(QA(),1)});var et1=()=>{};var Gn0;var $o1=L(()=>{Gn0=class Gn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.inputStream)yield this.options.decoder.decode($)}}});var Wn0;var Zo1=L(()=>{Wn0=class Wn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.messageStream)yield this.options.encoder.encode($);if(this.options.includeEndFrame)yield new Uint8Array(0)}}});var Kn0;var Qo1=L(()=>{Kn0=class Kn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.messageStream){let Z=await this.options.deserializer($);if(Z===void 0)continue;yield Z}}}});var Hn0;var Yo1=L(()=>{Hn0=class Hn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.inputStream)yield this.options.serializer($)}}});var Xo1=L(()=>{at1();Xn0();Qn0();et1();$o1();Zo1();Qo1();Yo1()});function Jo1($){let Z=0,Q=0,Y=null,X=null,J=(W)=>{if(typeof W!=="number")throw Error("Attempted to allocate an event message where size was not a number: "+W);Z=W,Q=4,Y=new Uint8Array(W),new DataView(Y.buffer).setUint32(0,W,!1)},G=async function*(){let W=$[Symbol.asyncIterator]();while(!0){let{value:K,done:H}=await W.next();if(H){if(!Z)return;else if(Z===Q)yield Y;else throw Error("Truncated event message received.");return}let F=K.length,U=0;while(U<F){if(!Y){let B=F-U;if(!X)X=new Uint8Array(4);let D=Math.min(4-Q,B);if(X.set(K.slice(U,U+D),Q),Q+=D,U+=D,Q<4)break;J(new DataView(X.buffer).getUint32(0,!1)),X=null}let N=Math.min(Z-Q,F-U);if(Y.set(K.slice(U,U+N),Q),Q+=N,U+=N,Z&&Z===Q)yield Y,Y=null,Z=0,Q=0}}};return{[Symbol.asyncIterator]:G}}function Go1($,Z){return async function(Q){let{value:Y}=Q.headers[":message-type"];if(Y==="error"){let X=Error(Q.headers[":error-message"].value||"UnknownError");throw X.name=Q.headers[":error-code"].value,X}else if(Y==="exception"){let X=Q.headers[":exception-type"].value,J={[X]:Q},G=await $(J);if(G.$unknown){let W=Error(Z(Q.body));throw W.name=X,W}throw G[X]}else if(Y==="event"){let X={[Q.headers[":event-type"].value]:Q},J=await $(X);if(J.$unknown)return;return J}else throw Error(`Unrecognizable event type: ${Q.headers[":event-type"].value}`)}}class Fn0{eventStreamCodec;utfEncoder;constructor({utf8Encoder:$,utf8Decoder:Z}){this.eventStreamCodec=new Jn0($,Z),this.utfEncoder=$}deserialize($,Z){let Q=Jo1($);return new Kn0({messageStream:new Gn0({inputStream:Q,decoder:this.eventStreamCodec}),deserializer:Go1(Z,this.utfEncoder)})}serialize($,Z){return new Wn0({messageStream:new Hn0({inputStream:$,serializer:Z}),encoder:this.eventStreamCodec,includeEndFrame:!0})}}var Wo1=L(()=>{Xo1()});var Ko1=()=>{};var Ho1=L(()=>{Wo1();Ko1()});async function*Fo1($){let Z=!1,Q=!1,Y=[];$.on("error",(X)=>{if(!Z)Z=!0;if(X)throw X}),$.on("data",(X)=>{Y.push(X)}),$.on("end",()=>{Z=!0});while(!Q){let X=await new Promise((J)=>setTimeout(()=>J(Y.shift()),0));if(X)yield X;Q=Z&&Y.length===0}}import{Readable as k94}from"stream";class Un0{universalMarshaller;constructor({utf8Encoder:$,utf8Decoder:Z}){this.universalMarshaller=new Fn0({utf8Decoder:Z,utf8Encoder:$})}deserialize($,Z){let Q=typeof $[Symbol.asyncIterator]==="function"?$:Fo1($);return this.universalMarshaller.deserialize(Q,Z)}serialize($,Z){return k94.from(this.universalMarshaller.serialize($,Z))}}var Nn0=L(()=>{Ho1()});var Uo1=($)=>new Un0($);var No1=L(()=>{Nn0()});var Bo1=L(()=>{Nn0();No1()});import{Writable as C94}from"stream";var Do1,Bn0;var Lo1=L(()=>{Do1=_(sQ(),1);Bn0=class Bn0 extends C94{hash;constructor($,Z){super(Z);this.hash=$}_write($,Z,Q){try{this.hash.update(Do1.toUint8Array($))}catch(Y){return Q(Y)}Q()}}});var Oo1=()=>{};var jo1=($,Z)=>{if(Z.readableFlowing!==null)throw Error("Unable to calculate hash for flowing readable stream");let Q=new $,Y=new Bn0(Q);return Z.pipe(Y),new Promise((X,J)=>{Z.on("error",(G)=>{Y.end(),J(G)}),Y.on("error",J),Y.on("finish",()=>{Q.digest().then(X).catch(J)})})};var wo1=L(()=>{Lo1()});var Eo1=L(()=>{Oo1();wo1()});var aG0,Po1,zo1,Ao1,To1,eG0,$30,Z30,qo1=($)=>{return{apiVersion:"2006-03-01",base64Decoder:$?.base64Decoder??eG0.fromBase64,base64Encoder:$?.base64Encoder??eG0.toBase64,disableHostPrefix:$?.disableHostPrefix??!1,endpointProvider:$?.endpointProvider??_J0,extensions:$?.extensions??[],getAwsChunkedEncodingStream:$?.getAwsChunkedEncodingStream??$30.getAwsChunkedEncodingStream,httpAuthSchemeProvider:$?.httpAuthSchemeProvider??Vg1,httpAuthSchemes:$?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:(Z)=>Z.getIdentityProvider("aws.auth#sigv4"),signer:new aG0.AwsSdkSigV4Signer},{schemeId:"aws.auth#sigv4a",identityProvider:(Z)=>Z.getIdentityProvider("aws.auth#sigv4a"),signer:new aG0.AwsSdkSigV4ASigner}],logger:$?.logger??new Ao1.NoOpLogger,protocol:$?.protocol??Po1.S3RestXmlProtocol,protocolSettings:$?.protocolSettings??{defaultNamespace:"com.amazonaws.s3",errorTypeRegistries:vg1,xmlNamespace:"http://s3.amazonaws.com/doc/2006-03-01/",version:"2006-03-01",serviceTarget:"AmazonS3"},sdkStreamMixin:$?.sdkStreamMixin??$30.sdkStreamMixin,serviceId:$?.serviceId??"S3",signerConstructor:$?.signerConstructor??zo1.SignatureV4MultiRegion,signingEscapePath:$?.signingEscapePath??!1,urlParser:$?.urlParser??To1.parseUrl,useArnRegion:$?.useArnRegion??void 0,utf8Decoder:$?.utf8Decoder??Z30.fromUtf8,utf8Encoder:$?.utf8Encoder??Z30.toUtf8}};var Ro1=L(()=>{Ad0();zd0();F1();aG0=_(iY(),1),Po1=_(U$(),1),zo1=_($c(),1),Ao1=_(p0(),1),To1=_(IU(),1),eG0=_(aJ(),1),$30=_(Vl(),1),Z30=_(sQ(),1)});var Mo1,Y30,Vo1,X30,Yw,Q30,J30,P3,G30,W30,Io1,ko1,Co1,So1=($)=>{W30.emitWarningIfUnsupportedVersion(process.version);let Z=ko1.resolveDefaultsModeConfig($),Q=()=>Z().then(W30.loadConfigsForDefaultMode),Y=qo1($);Mo1.emitWarningIfUnsupportedVersion(process.version);let X={profile:$?.profile,logger:Y.logger};return{...Y,...$,runtime:"node",defaultsMode:Z,authSchemePreference:$?.authSchemePreference??P3.loadConfig(Y30.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS,X),bodyLengthChecker:$?.bodyLengthChecker??Io1.calculateBodyLength,credentialDefaultProvider:$?.credentialDefaultProvider??bt1,defaultUserAgentProvider:$?.defaultUserAgentProvider??X30.createDefaultUserAgentProvider({serviceId:Y.serviceId,clientVersion:Hl1.version}),disableS3ExpressSessionAuth:$?.disableS3ExpressSessionAuth??P3.loadConfig(Vo1.NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS,X),eventStreamSerdeProvider:$?.eventStreamSerdeProvider??Uo1,maxAttempts:$?.maxAttempts??P3.loadConfig(J30.NODE_MAX_ATTEMPT_CONFIG_OPTIONS,$),md5:$?.md5??Q30.Hash.bind(null,"md5"),region:$?.region??P3.loadConfig(Yw.NODE_REGION_CONFIG_OPTIONS,{...Yw.NODE_REGION_CONFIG_FILE_OPTIONS,...X}),requestChecksumCalculation:$?.requestChecksumCalculation??P3.loadConfig(wk1,X),requestHandler:G30.NodeHttpHandler.create($?.requestHandler??Q),responseChecksumValidation:$?.responseChecksumValidation??P3.loadConfig(Pk1,X),retryMode:$?.retryMode??P3.loadConfig({...J30.NODE_RETRY_MODE_CONFIG_OPTIONS,default:async()=>(await Q()).retryMode||Co1.DEFAULT_RETRY_MODE},$),sha1:$?.sha1??Q30.Hash.bind(null,"sha1"),sha256:$?.sha256??Q30.Hash.bind(null,"sha256"),sigv4aSigningRegionSet:$?.sigv4aSigningRegionSet??P3.loadConfig(Y30.NODE_SIGV4A_CONFIG_OPTIONS,X),streamCollector:$?.streamCollector??G30.streamCollector,streamHasher:$?.streamHasher??jo1,useArnRegion:$?.useArnRegion??P3.loadConfig(gt1,X),useDualstackEndpoint:$?.useDualstackEndpoint??P3.loadConfig(Yw.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,X),useFipsEndpoint:$?.useFipsEndpoint??P3.loadConfig(Yw.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,X),userAgentAppId:$?.userAgentAppId??P3.loadConfig(X30.NODE_APP_ID_CONFIG_OPTIONS,X)}};var _o1=L(()=>{Kl1();ft1();ct1();S6();Bo1();Eo1();Ro1();Mo1=_(w9(),1),Y30=_(iY(),1),Vo1=_(U$(),1),X30=_(Wc(),1),Yw=_(ZG(),1),Q30=_(Kc(),1),J30=_(yH(),1),P3=_(fH(),1),G30=_(bj(),1),W30=_(p0(),1),Io1=_(Hc(),1),ko1=_(Fc(),1),Co1=_(ED(),1)});var vo1=($)=>{let{httpAuthSchemes:Z,httpAuthSchemeProvider:Q,credentials:Y}=$;return{setHttpAuthScheme(X){let J=Z.findIndex((G)=>G.schemeId===X.schemeId);if(J===-1)Z.push(X);else Z.splice(J,1,X)},httpAuthSchemes(){return Z},setHttpAuthSchemeProvider(X){Q=X},httpAuthSchemeProvider(){return Q},setCredentials(X){Y=X},credentials(){return Y}}},bo1=($)=>{return{httpAuthSchemes:$.httpAuthSchemes(),httpAuthSchemeProvider:$.httpAuthSchemeProvider(),credentials:$.credentials()}};var K30,H30,F30,xo1=($,Z)=>{let Q=Object.assign(K30.getAwsRegionExtensionConfiguration($),F30.getDefaultExtensionConfiguration($),H30.getHttpHandlerExtensionConfiguration($),vo1($));return Z.forEach((Y)=>Y.configure(Q)),Object.assign($,K30.resolveAwsRegionExtensionConfiguration(Q),F30.resolveDefaultRuntimeConfig(Q),H30.resolveHttpHandlerRuntimeConfig(Q),bo1(Q))};var fo1=L(()=>{K30=_(EA(),1),H30=_(t5(),1),F30=_(p0(),1)});var U30,yo1,go1,vU,N30,ho1,Ac,uo1,lo1,co1,B30,mo1,QY;var yA=L(()=>{Ok1();S6();zf1();Ad0();rJ0();N1();_o1();fo1();U30=_(vl(),1),yo1=_(bl(),1),go1=_(xl(),1),vU=_(U$(),1),N30=_(BA(),1),ho1=_(ZG(),1),Ac=_(v7(),1),uo1=_(cY(),1),lo1=_(sl(),1),co1=_(G1(),1),B30=_(yH(),1),mo1=_(p0(),1);QY=class QY extends mo1.Client{config;constructor(...[$]){let Z=So1($||{});super(Z);this.initConfig=Z;let Q=kg1(Z),Y=N30.resolveUserAgentConfig(Q),X=n_1(Y),J=B30.resolveRetryConfig(X),G=ho1.resolveRegionConfig(J),W=U30.resolveHostHeaderConfig(G),K=co1.resolveEndpointConfig(W),H=Pf1(K),F=Ig1(H),U=vU.resolveS3Config(F,{session:[()=>this,Za]}),N=xo1(U,$?.extensions||[]);this.config=N,this.middlewareStack.use(uo1.getSchemaSerdePlugin(this.config)),this.middlewareStack.use(N30.getUserAgentPlugin(this.config)),this.middlewareStack.use(B30.getRetryPlugin(this.config)),this.middlewareStack.use(lo1.getContentLengthPlugin(this.config)),this.middlewareStack.use(U30.getHostHeaderPlugin(this.config)),this.middlewareStack.use(yo1.getLoggerPlugin(this.config)),this.middlewareStack.use(go1.getRecursionDetectionPlugin(this.config)),this.middlewareStack.use(Ac.getHttpAuthSchemeEndpointRuleSetPlugin(this.config,{httpAuthSchemeParametersProvider:qg1,identityProviderConfigProvider:async(B)=>new Ac.DefaultIdentityProviderConfig({"aws.auth#sigv4":B.credentials,"aws.auth#sigv4a":B.credentials})})),this.middlewareStack.use(Ac.getHttpSigningPlugin(this.config)),this.middlewareStack.use(vU.getValidateBucketNamePlugin(this.config)),this.middlewareStack.use(Lk1(this.config)),this.middlewareStack.use(vU.getRegionRedirectMiddlewarePlugin(this.config)),this.middlewareStack.use(vU.getS3ExpressPlugin(this.config)),this.middlewareStack.use(vU.getS3ExpressHttpSigningPlugin(this.config))}destroy(){super.destroy()}}});var do1,io1,po1,Aa;var Dn0=L(()=>{N1();F1();do1=_(U$(),1),io1=_(G1(),1),po1=_(p0(),1);Aa=class Aa extends po1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[io1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),do1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","AbortMultipartUpload",{}).n("S3Client","AbortMultipartUploadCommand").sc(Gh1).build(){}});function S94($){return(Z)=>async(Q)=>{let Y={...Q.input},X=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(let J of X){let G=Y[J.target];if(G){let W;if(typeof G==="string")if(v94(G,$))W=$.base64Decoder(G);else W=$.utf8Decoder(G),Y[J.target]=$.base64Encoder(W);else W=ArrayBuffer.isView(G)?new Uint8Array(G.buffer,G.byteOffset,G.byteLength):new Uint8Array(G),Y[J.target]=$.base64Encoder(W);let K=new $.md5;K.update(W),Y[J.hash]=$.base64Encoder(await K.digest())}}return Z({...Q,input:Y})}}function v94($,Z){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test($))return!1;try{return Z.base64Decoder($).length===32}catch{return!1}}var _94,MZ=($)=>({applyToStack:(Z)=>{Z.add(S94($),_94)}});var rW=L(()=>{_94={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0}});var no1,to1,oo1,Ta;var Ln0=L(()=>{rW();N1();F1();no1=_(U$(),1),to1=_(G1(),1),oo1=_(p0(),1);Ta=class Ta extends oo1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[to1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),no1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CompleteMultipartUpload",{}).n("S3Client","CompleteMultipartUploadCommand").sc(Wh1).build(){}});var so1,ro1,ao1,On0;var jn0=L(()=>{rW();N1();F1();so1=_(U$(),1),ro1=_(G1(),1),ao1=_(p0(),1);On0=class On0 extends ao1.Command.classBuilder().ep({...L0,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}}).m(function($,Z,Q,Y){return[ro1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),so1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CopyObject",{}).n("S3Client","CopyObjectCommand").sc(Kh1).build(){}});function b94($){return(Z)=>async(Q)=>{let{CreateBucketConfiguration:Y}=Q.input,X=await $.region();if(!Y?.LocationConstraint&&!Y?.Location){if(X!=="us-east-1")Q.input.CreateBucketConfiguration=Q.input.CreateBucketConfiguration??{},Q.input.CreateBucketConfiguration.LocationConstraint=X}return Z(Q)}}var x94,eo1=($)=>({applyToStack:(Z)=>{Z.add(b94($),x94)}});var $s1=L(()=>{x94={step:"initialize",tags:["LOCATION_CONSTRAINT","CREATE_BUCKET_CONFIGURATION"],name:"locationConstraintMiddleware",override:!0}});var Zs1,Qs1,Ys1,wn0;var En0=L(()=>{$s1();N1();F1();Zs1=_(U$(),1),Qs1=_(G1(),1),Ys1=_(p0(),1);wn0=class wn0 extends Ys1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},DisableAccessPoints:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Qs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Zs1.getThrow200ExceptionsPlugin(Q),eo1(Q)]}).s("AmazonS3","CreateBucket",{}).n("S3Client","CreateBucketCommand").sc(Hh1).build(){}});var Xs1,Js1,Pn0;var zn0=L(()=>{S6();N1();F1();Xs1=_(G1(),1),Js1=_(p0(),1);Pn0=class Pn0 extends Js1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Xs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","CreateBucketMetadataConfiguration",{}).n("S3Client","CreateBucketMetadataConfigurationCommand").sc(Fh1).build(){}});var Gs1,Ws1,An0;var Tn0=L(()=>{S6();N1();F1();Gs1=_(G1(),1),Ws1=_(p0(),1);An0=class An0 extends Ws1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Gs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","CreateBucketMetadataTableConfiguration",{}).n("S3Client","CreateBucketMetadataTableConfigurationCommand").sc(Uh1).build(){}});var Ks1,Hs1,Fs1,qa;var qn0=L(()=>{rW();N1();F1();Ks1=_(U$(),1),Hs1=_(G1(),1),Fs1=_(p0(),1);qa=class qa extends Fs1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Hs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ks1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CreateMultipartUpload",{}).n("S3Client","CreateMultipartUploadCommand").sc(Nh1).build(){}});var Us1,Ns1,Rn0;var Mn0=L(()=>{N1();F1();Us1=_(G1(),1),Ns1=_(p0(),1);Rn0=class Rn0 extends Ns1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Us1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketAnalyticsConfiguration",{}).n("S3Client","DeleteBucketAnalyticsConfigurationCommand").sc(Lh1).build(){}});var Bs1,Ds1,Vn0;var In0=L(()=>{N1();F1();Bs1=_(G1(),1),Ds1=_(p0(),1);Vn0=class Vn0 extends Ds1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Bs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucket",{}).n("S3Client","DeleteBucketCommand").sc(Dh1).build(){}});var Ls1,Os1,kn0;var Cn0=L(()=>{N1();F1();Ls1=_(G1(),1),Os1=_(p0(),1);kn0=class kn0 extends Os1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ls1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketCors",{}).n("S3Client","DeleteBucketCorsCommand").sc(Oh1).build(){}});var js1,ws1,Sn0;var _n0=L(()=>{N1();F1();js1=_(G1(),1),ws1=_(p0(),1);Sn0=class Sn0 extends ws1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[js1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketEncryption",{}).n("S3Client","DeleteBucketEncryptionCommand").sc(jh1).build(){}});var Es1,Ps1,vn0;var bn0=L(()=>{N1();F1();Es1=_(G1(),1),Ps1=_(p0(),1);vn0=class vn0 extends Ps1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Es1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketIntelligentTieringConfiguration",{}).n("S3Client","DeleteBucketIntelligentTieringConfigurationCommand").sc(wh1).build(){}});var zs1,As1,xn0;var fn0=L(()=>{N1();F1();zs1=_(G1(),1),As1=_(p0(),1);xn0=class xn0 extends As1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[zs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketInventoryConfiguration",{}).n("S3Client","DeleteBucketInventoryConfigurationCommand").sc(Eh1).build(){}});var Ts1,qs1,yn0;var gn0=L(()=>{N1();F1();Ts1=_(G1(),1),qs1=_(p0(),1);yn0=class yn0 extends qs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ts1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketLifecycle",{}).n("S3Client","DeleteBucketLifecycleCommand").sc(Ph1).build(){}});var Rs1,Ms1,hn0;var un0=L(()=>{N1();F1();Rs1=_(G1(),1),Ms1=_(p0(),1);hn0=class hn0 extends Ms1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Rs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetadataConfiguration",{}).n("S3Client","DeleteBucketMetadataConfigurationCommand").sc(zh1).build(){}});var Vs1,Is1,ln0;var cn0=L(()=>{N1();F1();Vs1=_(G1(),1),Is1=_(p0(),1);ln0=class ln0 extends Is1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Vs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetadataTableConfiguration",{}).n("S3Client","DeleteBucketMetadataTableConfigurationCommand").sc(Ah1).build(){}});var ks1,Cs1,mn0;var dn0=L(()=>{N1();F1();ks1=_(G1(),1),Cs1=_(p0(),1);mn0=class mn0 extends Cs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ks1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetricsConfiguration",{}).n("S3Client","DeleteBucketMetricsConfigurationCommand").sc(Th1).build(){}});var Ss1,_s1,in0;var pn0=L(()=>{N1();F1();Ss1=_(G1(),1),_s1=_(p0(),1);in0=class in0 extends _s1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ss1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketOwnershipControls",{}).n("S3Client","DeleteBucketOwnershipControlsCommand").sc(qh1).build(){}});var vs1,bs1,nn0;var tn0=L(()=>{N1();F1();vs1=_(G1(),1),bs1=_(p0(),1);nn0=class nn0 extends bs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[vs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketPolicy",{}).n("S3Client","DeleteBucketPolicyCommand").sc(Rh1).build(){}});var xs1,fs1,on0;var sn0=L(()=>{N1();F1();xs1=_(G1(),1),fs1=_(p0(),1);on0=class on0 extends fs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[xs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketReplication",{}).n("S3Client","DeleteBucketReplicationCommand").sc(Mh1).build(){}});var ys1,gs1,rn0;var an0=L(()=>{N1();F1();ys1=_(G1(),1),gs1=_(p0(),1);rn0=class rn0 extends gs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ys1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketTagging",{}).n("S3Client","DeleteBucketTaggingCommand").sc(Vh1).build(){}});var hs1,us1,en0;var $t0=L(()=>{N1();F1();hs1=_(G1(),1),us1=_(p0(),1);en0=class en0 extends us1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[hs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketWebsite",{}).n("S3Client","DeleteBucketWebsiteCommand").sc(Ih1).build(){}});var ls1,cs1,ms1,mD;var Zt0=L(()=>{N1();F1();ls1=_(U$(),1),cs1=_(G1(),1),ms1=_(p0(),1);mD=class mD extends ms1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[cs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ls1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").sc(kh1).build(){}});var ds1,is1,ps1,Qt0;var Yt0=L(()=>{S6();N1();F1();ds1=_(U$(),1),is1=_(G1(),1),ps1=_(p0(),1);Qt0=class Qt0 extends ps1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[is1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),ds1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObjects",{}).n("S3Client","DeleteObjectsCommand").sc(Ch1).build(){}});var ns1,ts1,os1,Xt0;var Jt0=L(()=>{N1();F1();ns1=_(U$(),1),ts1=_(G1(),1),os1=_(p0(),1);Xt0=class Xt0 extends os1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ts1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ns1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObjectTagging",{}).n("S3Client","DeleteObjectTaggingCommand").sc(Sh1).build(){}});var ss1,rs1,Gt0;var Wt0=L(()=>{N1();F1();ss1=_(G1(),1),rs1=_(p0(),1);Gt0=class Gt0 extends rs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ss1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeletePublicAccessBlock",{}).n("S3Client","DeletePublicAccessBlockCommand").sc(_h1).build(){}});var as1,es1,$r1,Kt0;var Ht0=L(()=>{N1();F1();as1=_(U$(),1),es1=_(G1(),1),$r1=_(p0(),1);Kt0=class Kt0 extends $r1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[es1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),as1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAbac",{}).n("S3Client","GetBucketAbacCommand").sc(vh1).build(){}});var Zr1,Qr1,Yr1,Ft0;var Ut0=L(()=>{N1();F1();Zr1=_(U$(),1),Qr1=_(G1(),1),Yr1=_(p0(),1);Ft0=class Ft0 extends Yr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Qr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Zr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAccelerateConfiguration",{}).n("S3Client","GetBucketAccelerateConfigurationCommand").sc(bh1).build(){}});var Xr1,Jr1,Gr1,Nt0;var Bt0=L(()=>{N1();F1();Xr1=_(U$(),1),Jr1=_(G1(),1),Gr1=_(p0(),1);Nt0=class Nt0 extends Gr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Jr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Xr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAcl",{}).n("S3Client","GetBucketAclCommand").sc(xh1).build(){}});var Wr1,Kr1,Hr1,Dt0;var Lt0=L(()=>{N1();F1();Wr1=_(U$(),1),Kr1=_(G1(),1),Hr1=_(p0(),1);Dt0=class Dt0 extends Hr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Kr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Wr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAnalyticsConfiguration",{}).n("S3Client","GetBucketAnalyticsConfigurationCommand").sc(fh1).build(){}});var Fr1,Ur1,Nr1,Ot0;var jt0=L(()=>{N1();F1();Fr1=_(U$(),1),Ur1=_(G1(),1),Nr1=_(p0(),1);Ot0=class Ot0 extends Nr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ur1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Fr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketCors",{}).n("S3Client","GetBucketCorsCommand").sc(yh1).build(){}});var Br1,Dr1,Lr1,wt0;var Et0=L(()=>{N1();F1();Br1=_(U$(),1),Dr1=_(G1(),1),Lr1=_(p0(),1);wt0=class wt0 extends Lr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Dr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Br1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketEncryption",{}).n("S3Client","GetBucketEncryptionCommand").sc(gh1).build(){}});var Or1,jr1,wr1,Pt0;var zt0=L(()=>{N1();F1();Or1=_(U$(),1),jr1=_(G1(),1),wr1=_(p0(),1);Pt0=class Pt0 extends wr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[jr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Or1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketIntelligentTieringConfiguration",{}).n("S3Client","GetBucketIntelligentTieringConfigurationCommand").sc(hh1).build(){}});var Er1,Pr1,zr1,At0;var Tt0=L(()=>{N1();F1();Er1=_(U$(),1),Pr1=_(G1(),1),zr1=_(p0(),1);At0=class At0 extends zr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Pr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Er1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketInventoryConfiguration",{}).n("S3Client","GetBucketInventoryConfigurationCommand").sc(uh1).build(){}});var Ar1,Tr1,qr1,qt0;var Rt0=L(()=>{N1();F1();Ar1=_(U$(),1),Tr1=_(G1(),1),qr1=_(p0(),1);qt0=class qt0 extends qr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Tr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ar1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLifecycleConfiguration",{}).n("S3Client","GetBucketLifecycleConfigurationCommand").sc(lh1).build(){}});var Rr1,Mr1,Vr1,Mt0;var Vt0=L(()=>{N1();F1();Rr1=_(U$(),1),Mr1=_(G1(),1),Vr1=_(p0(),1);Mt0=class Mt0 extends Vr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Mr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Rr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLocation",{}).n("S3Client","GetBucketLocationCommand").sc(ch1).build(){}});var Ir1,kr1,Cr1,It0;var kt0=L(()=>{N1();F1();Ir1=_(U$(),1),kr1=_(G1(),1),Cr1=_(p0(),1);It0=class It0 extends Cr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[kr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ir1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLogging",{}).n("S3Client","GetBucketLoggingCommand").sc(mh1).build(){}});var Sr1,_r1,vr1,Ct0;var St0=L(()=>{N1();F1();Sr1=_(U$(),1),_r1=_(G1(),1),vr1=_(p0(),1);Ct0=class Ct0 extends vr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_r1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Sr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetadataConfiguration",{}).n("S3Client","GetBucketMetadataConfigurationCommand").sc(dh1).build(){}});var br1,xr1,fr1,_t0;var vt0=L(()=>{N1();F1();br1=_(U$(),1),xr1=_(G1(),1),fr1=_(p0(),1);_t0=class _t0 extends fr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[xr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),br1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetadataTableConfiguration",{}).n("S3Client","GetBucketMetadataTableConfigurationCommand").sc(ih1).build(){}});var yr1,gr1,hr1,bt0;var xt0=L(()=>{N1();F1();yr1=_(U$(),1),gr1=_(G1(),1),hr1=_(p0(),1);bt0=class bt0 extends hr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[gr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),yr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetricsConfiguration",{}).n("S3Client","GetBucketMetricsConfigurationCommand").sc(ph1).build(){}});var ur1,lr1,cr1,ft0;var yt0=L(()=>{N1();F1();ur1=_(U$(),1),lr1=_(G1(),1),cr1=_(p0(),1);ft0=class ft0 extends cr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[lr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ur1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketNotificationConfiguration",{}).n("S3Client","GetBucketNotificationConfigurationCommand").sc(nh1).build(){}});var mr1,dr1,ir1,gt0;var ht0=L(()=>{N1();F1();mr1=_(U$(),1),dr1=_(G1(),1),ir1=_(p0(),1);gt0=class gt0 extends ir1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[dr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),mr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketOwnershipControls",{}).n("S3Client","GetBucketOwnershipControlsCommand").sc(th1).build(){}});var pr1,nr1,ut0;var lt0=L(()=>{N1();F1();pr1=_(G1(),1),nr1=_(p0(),1);ut0=class ut0 extends nr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[pr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","GetBucketPolicy",{}).n("S3Client","GetBucketPolicyCommand").sc(oh1).build(){}});var tr1,or1,sr1,ct0;var mt0=L(()=>{N1();F1();tr1=_(U$(),1),or1=_(G1(),1),sr1=_(p0(),1);ct0=class ct0 extends sr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[or1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),tr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketPolicyStatus",{}).n("S3Client","GetBucketPolicyStatusCommand").sc(sh1).build(){}});var rr1,ar1,er1,dt0;var it0=L(()=>{N1();F1();rr1=_(U$(),1),ar1=_(G1(),1),er1=_(p0(),1);dt0=class dt0 extends er1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ar1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),rr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketReplication",{}).n("S3Client","GetBucketReplicationCommand").sc(rh1).build(){}});var $a1,Za1,Qa1,pt0;var nt0=L(()=>{N1();F1();$a1=_(U$(),1),Za1=_(G1(),1),Qa1=_(p0(),1);pt0=class pt0 extends Qa1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Za1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),$a1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketRequestPayment",{}).n("S3Client","GetBucketRequestPaymentCommand").sc(ah1).build(){}});var Ya1,Xa1,Ja1,tt0;var ot0=L(()=>{N1();F1();Ya1=_(U$(),1),Xa1=_(G1(),1),Ja1=_(p0(),1);tt0=class tt0 extends Ja1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Xa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ya1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketTagging",{}).n("S3Client","GetBucketTaggingCommand").sc(eh1).build(){}});var Ga1,Wa1,Ka1,st0;var rt0=L(()=>{N1();F1();Ga1=_(U$(),1),Wa1=_(G1(),1),Ka1=_(p0(),1);st0=class st0 extends Ka1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Wa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ga1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketVersioning",{}).n("S3Client","GetBucketVersioningCommand").sc($u1).build(){}});var Ha1,Fa1,Ua1,at0;var et0=L(()=>{N1();F1();Ha1=_(U$(),1),Fa1=_(G1(),1),Ua1=_(p0(),1);at0=class at0 extends Ua1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Fa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ha1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketWebsite",{}).n("S3Client","GetBucketWebsiteCommand").sc(Zu1).build(){}});var Na1,Ba1,Da1,$o0;var Zo0=L(()=>{N1();F1();Na1=_(U$(),1),Ba1=_(G1(),1),Da1=_(p0(),1);$o0=class $o0 extends Da1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Ba1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Na1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectAcl",{}).n("S3Client","GetObjectAclCommand").sc(Yu1).build(){}});var La1,Oa1,ja1,Qo0;var Yo0=L(()=>{rW();N1();F1();La1=_(U$(),1),Oa1=_(G1(),1),ja1=_(p0(),1);Qo0=class Qo0 extends ja1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Oa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),La1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","GetObjectAttributes",{}).n("S3Client","GetObjectAttributesCommand").sc(Xu1).build(){}});var wa1,Ea1,Pa1,bU;var Xo0=L(()=>{S6();rW();N1();F1();wa1=_(U$(),1),Ea1=_(G1(),1),Pa1=_(p0(),1);bU=class bU extends Pa1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Ea1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC64NVME","CRC32","CRC32C","SHA256","SHA1","SHA512","MD5","XXHASH64","XXHASH3","XXHASH128"]}),MZ(Q),wa1.getS3ExpiresMiddlewarePlugin(Q)]}).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").sc(Qu1).build(){}});var za1,Aa1,Ta1,Jo0;var Go0=L(()=>{N1();F1();za1=_(U$(),1),Aa1=_(G1(),1),Ta1=_(p0(),1);Jo0=class Jo0 extends Ta1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Aa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),za1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectLegalHold",{}).n("S3Client","GetObjectLegalHoldCommand").sc(Ju1).build(){}});var qa1,Ra1,Ma1,Wo0;var Ko0=L(()=>{N1();F1();qa1=_(U$(),1),Ra1=_(G1(),1),Ma1=_(p0(),1);Wo0=class Wo0 extends Ma1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ra1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),qa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectLockConfiguration",{}).n("S3Client","GetObjectLockConfigurationCommand").sc(Gu1).build(){}});var Va1,Ia1,ka1,Ho0;var Fo0=L(()=>{N1();F1();Va1=_(U$(),1),Ia1=_(G1(),1),ka1=_(p0(),1);Ho0=class Ho0 extends ka1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ia1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Va1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectRetention",{}).n("S3Client","GetObjectRetentionCommand").sc(Wu1).build(){}});var Ca1,Sa1,_a1,Uo0;var No0=L(()=>{N1();F1();Ca1=_(U$(),1),Sa1=_(G1(),1),_a1=_(p0(),1);Uo0=class Uo0 extends _a1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Sa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ca1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectTagging",{}).n("S3Client","GetObjectTaggingCommand").sc(Ku1).build(){}});var va1,ba1,Bo0;var Do0=L(()=>{N1();F1();va1=_(G1(),1),ba1=_(p0(),1);Bo0=class Bo0 extends ba1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[va1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","GetObjectTorrent",{}).n("S3Client","GetObjectTorrentCommand").sc(Hu1).build(){}});var xa1,fa1,ya1,Lo0;var Oo0=L(()=>{N1();F1();xa1=_(U$(),1),fa1=_(G1(),1),ya1=_(p0(),1);Lo0=class Lo0 extends ya1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[fa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),xa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetPublicAccessBlock",{}).n("S3Client","GetPublicAccessBlockCommand").sc(Fu1).build(){}});var ga1,ha1,ua1,gA;var Ra=L(()=>{N1();F1();ga1=_(U$(),1),ha1=_(G1(),1),ua1=_(p0(),1);gA=class gA extends ua1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ha1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ga1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","HeadBucket",{}).n("S3Client","HeadBucketCommand").sc(Uu1).build(){}});var D30,la1,ca1,xU;var Ma=L(()=>{rW();N1();F1();D30=_(U$(),1),la1=_(G1(),1),ca1=_(p0(),1);xU=class xU extends ca1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[la1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),D30.getThrow200ExceptionsPlugin(Q),MZ(Q),D30.getS3ExpiresMiddlewarePlugin(Q)]}).s("AmazonS3","HeadObject",{}).n("S3Client","HeadObjectCommand").sc(Nu1).build(){}});var ma1,da1,ia1,jo0;var wo0=L(()=>{N1();F1();ma1=_(U$(),1),da1=_(G1(),1),ia1=_(p0(),1);jo0=class jo0 extends ia1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[da1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ma1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketAnalyticsConfigurations",{}).n("S3Client","ListBucketAnalyticsConfigurationsCommand").sc(Bu1).build(){}});var pa1,na1,ta1,Eo0;var Po0=L(()=>{N1();F1();pa1=_(U$(),1),na1=_(G1(),1),ta1=_(p0(),1);Eo0=class Eo0 extends ta1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[na1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),pa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketIntelligentTieringConfigurations",{}).n("S3Client","ListBucketIntelligentTieringConfigurationsCommand").sc(Du1).build(){}});var oa1,sa1,ra1,zo0;var Ao0=L(()=>{N1();F1();oa1=_(U$(),1),sa1=_(G1(),1),ra1=_(p0(),1);zo0=class zo0 extends ra1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[sa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),oa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketInventoryConfigurations",{}).n("S3Client","ListBucketInventoryConfigurationsCommand").sc(Lu1).build(){}});var aa1,ea1,$e1,To0;var qo0=L(()=>{N1();F1();aa1=_(U$(),1),ea1=_(G1(),1),$e1=_(p0(),1);To0=class To0 extends $e1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ea1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),aa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketMetricsConfigurations",{}).n("S3Client","ListBucketMetricsConfigurationsCommand").sc(Ou1).build(){}});var Ze1,Qe1,Ye1,Va;var L30=L(()=>{N1();F1();Ze1=_(U$(),1),Qe1=_(G1(),1),Ye1=_(p0(),1);Va=class Va extends Ye1.Command.classBuilder().ep(L0).m(function($,Z,Q,Y){return[Qe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ze1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBuckets",{}).n("S3Client","ListBucketsCommand").sc(ju1).build(){}});var Xe1,Je1,Ge1,Ia;var O30=L(()=>{N1();F1();Xe1=_(U$(),1),Je1=_(G1(),1),Ge1=_(p0(),1);Ia=class Ia extends Ge1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0}}).m(function($,Z,Q,Y){return[Je1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Xe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListDirectoryBuckets",{}).n("S3Client","ListDirectoryBucketsCommand").sc(wu1).build(){}});var We1,Ke1,He1,Ro0;var Mo0=L(()=>{N1();F1();We1=_(U$(),1),Ke1=_(G1(),1),He1=_(p0(),1);Ro0=class Ro0 extends He1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[Ke1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),We1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListMultipartUploads",{}).n("S3Client","ListMultipartUploadsCommand").sc(Eu1).build(){}});var Fe1,Ue1,Ne1,Vo0;var Io0=L(()=>{N1();F1();Fe1=_(U$(),1),Ue1=_(G1(),1),Ne1=_(p0(),1);Vo0=class Vo0 extends Ne1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[Ue1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Fe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjects",{}).n("S3Client","ListObjectsCommand").sc(Pu1).build(){}});var Be1,De1,Le1,aW;var j30=L(()=>{N1();F1();Be1=_(U$(),1),De1=_(G1(),1),Le1=_(p0(),1);aW=class aW extends Le1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[De1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Be1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").sc(zu1).build(){}});var Oe1,je1,we1,ko0;var Co0=L(()=>{N1();F1();Oe1=_(U$(),1),je1=_(G1(),1),we1=_(p0(),1);ko0=class ko0 extends we1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[je1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Oe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjectVersions",{}).n("S3Client","ListObjectVersionsCommand").sc(Au1).build(){}});var Ee1,Pe1,ze1,ka;var w30=L(()=>{rW();N1();F1();Ee1=_(U$(),1),Pe1=_(G1(),1),ze1=_(p0(),1);ka=class ka extends ze1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Pe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ee1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","ListParts",{}).n("S3Client","ListPartsCommand").sc(Tu1).build(){}});var Ae1,Te1,So0;var _o0=L(()=>{S6();N1();F1();Ae1=_(G1(),1),Te1=_(p0(),1);So0=class So0 extends Te1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ae1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1})]}).s("AmazonS3","PutBucketAbac",{}).n("S3Client","PutBucketAbacCommand").sc(qu1).build(){}});var qe1,Re1,vo0;var bo0=L(()=>{S6();N1();F1();qe1=_(G1(),1),Re1=_(p0(),1);vo0=class vo0 extends Re1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[qe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1})]}).s("AmazonS3","PutBucketAccelerateConfiguration",{}).n("S3Client","PutBucketAccelerateConfigurationCommand").sc(Ru1).build(){}});var Me1,Ve1,xo0;var fo0=L(()=>{S6();N1();F1();Me1=_(G1(),1),Ve1=_(p0(),1);xo0=class xo0 extends Ve1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Me1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketAcl",{}).n("S3Client","PutBucketAclCommand").sc(Mu1).build(){}});var Ie1,ke1,yo0;var go0=L(()=>{N1();F1();Ie1=_(G1(),1),ke1=_(p0(),1);yo0=class yo0 extends ke1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ie1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketAnalyticsConfiguration",{}).n("S3Client","PutBucketAnalyticsConfigurationCommand").sc(Vu1).build(){}});var Ce1,Se1,ho0;var uo0=L(()=>{S6();N1();F1();Ce1=_(G1(),1),Se1=_(p0(),1);ho0=class ho0 extends Se1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ce1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketCors",{}).n("S3Client","PutBucketCorsCommand").sc(Iu1).build(){}});var _e1,ve1,lo0;var co0=L(()=>{S6();N1();F1();_e1=_(G1(),1),ve1=_(p0(),1);lo0=class lo0 extends ve1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_e1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketEncryption",{}).n("S3Client","PutBucketEncryptionCommand").sc(ku1).build(){}});var be1,xe1,mo0;var do0=L(()=>{N1();F1();be1=_(G1(),1),xe1=_(p0(),1);mo0=class mo0 extends xe1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[be1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketIntelligentTieringConfiguration",{}).n("S3Client","PutBucketIntelligentTieringConfigurationCommand").sc(Cu1).build(){}});var fe1,ye1,io0;var po0=L(()=>{N1();F1();fe1=_(G1(),1),ye1=_(p0(),1);io0=class io0 extends ye1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[fe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketInventoryConfiguration",{}).n("S3Client","PutBucketInventoryConfigurationCommand").sc(Su1).build(){}});var ge1,he1,ue1,no0;var to0=L(()=>{S6();N1();F1();ge1=_(U$(),1),he1=_(G1(),1),ue1=_(p0(),1);no0=class no0 extends ue1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[he1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),ge1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutBucketLifecycleConfiguration",{}).n("S3Client","PutBucketLifecycleConfigurationCommand").sc(_u1).build(){}});var le1,ce1,oo0;var so0=L(()=>{S6();N1();F1();le1=_(G1(),1),ce1=_(p0(),1);oo0=class oo0 extends ce1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[le1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketLogging",{}).n("S3Client","PutBucketLoggingCommand").sc(vu1).build(){}});var me1,de1,ro0;var ao0=L(()=>{N1();F1();me1=_(G1(),1),de1=_(p0(),1);ro0=class ro0 extends de1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[me1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketMetricsConfiguration",{}).n("S3Client","PutBucketMetricsConfigurationCommand").sc(bu1).build(){}});var ie1,pe1,eo0;var $s0=L(()=>{N1();F1();ie1=_(G1(),1),pe1=_(p0(),1);eo0=class eo0 extends pe1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ie1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketNotificationConfiguration",{}).n("S3Client","PutBucketNotificationConfigurationCommand").sc(xu1).build(){}});var ne1,te1,Zs0;var Qs0=L(()=>{S6();N1();F1();ne1=_(G1(),1),te1=_(p0(),1);Zs0=class Zs0 extends te1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ne1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketOwnershipControls",{}).n("S3Client","PutBucketOwnershipControlsCommand").sc(fu1).build(){}});var oe1,se1,Ys0;var Xs0=L(()=>{S6();N1();F1();oe1=_(G1(),1),se1=_(p0(),1);Ys0=class Ys0 extends se1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[oe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketPolicy",{}).n("S3Client","PutBucketPolicyCommand").sc(yu1).build(){}});var re1,ae1,Js0;var Gs0=L(()=>{S6();N1();F1();re1=_(G1(),1),ae1=_(p0(),1);Js0=class Js0 extends ae1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[re1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketReplication",{}).n("S3Client","PutBucketReplicationCommand").sc(gu1).build(){}});var ee1,$0$,Ws0;var Ks0=L(()=>{S6();N1();F1();ee1=_(G1(),1),$0$=_(p0(),1);Ws0=class Ws0 extends $0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ee1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketRequestPayment",{}).n("S3Client","PutBucketRequestPaymentCommand").sc(hu1).build(){}});var Z0$,Q0$,Hs0;var Fs0=L(()=>{S6();N1();F1();Z0$=_(G1(),1),Q0$=_(p0(),1);Hs0=class Hs0 extends Q0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Z0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketTagging",{}).n("S3Client","PutBucketTaggingCommand").sc(uu1).build(){}});var Y0$,X0$,Us0;var Ns0=L(()=>{S6();N1();F1();Y0$=_(G1(),1),X0$=_(p0(),1);Us0=class Us0 extends X0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Y0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketVersioning",{}).n("S3Client","PutBucketVersioningCommand").sc(lu1).build(){}});var J0$,G0$,Bs0;var Ds0=L(()=>{S6();N1();F1();J0$=_(G1(),1),G0$=_(p0(),1);Bs0=class Bs0 extends G0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[J0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketWebsite",{}).n("S3Client","PutBucketWebsiteCommand").sc(cu1).build(){}});var W0$,K0$,H0$,Ls0;var Os0=L(()=>{S6();N1();F1();W0$=_(U$(),1),K0$=_(G1(),1),H0$=_(p0(),1);Ls0=class Ls0 extends H0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[K0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),W0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectAcl",{}).n("S3Client","PutObjectAclCommand").sc(du1).build(){}});var E30,F0$,U0$,z3;var js0=L(()=>{S6();rW();N1();F1();E30=_(U$(),1),F0$=_(G1(),1),U0$=_(p0(),1);z3=class z3 extends U0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[F0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),E30.getCheckContentLengthHeaderPlugin(Q),E30.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").sc(mu1).build(){}});var N0$,B0$,D0$,ws0;var Es0=L(()=>{S6();N1();F1();N0$=_(U$(),1),B0$=_(G1(),1),D0$=_(p0(),1);ws0=class ws0 extends D0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[B0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),N0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectLegalHold",{}).n("S3Client","PutObjectLegalHoldCommand").sc(iu1).build(){}});var L0$,O0$,j0$,Ps0;var zs0=L(()=>{S6();N1();F1();L0$=_(U$(),1),O0$=_(G1(),1),j0$=_(p0(),1);Ps0=class Ps0 extends j0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[O0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),L0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectLockConfiguration",{}).n("S3Client","PutObjectLockConfigurationCommand").sc(pu1).build(){}});var w0$,E0$,P0$,As0;var Ts0=L(()=>{S6();N1();F1();w0$=_(U$(),1),E0$=_(G1(),1),P0$=_(p0(),1);As0=class As0 extends P0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[E0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),w0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectRetention",{}).n("S3Client","PutObjectRetentionCommand").sc(nu1).build(){}});var z0$,A0$,T0$,Ca;var qs0=L(()=>{S6();N1();F1();z0$=_(U$(),1),A0$=_(G1(),1),T0$=_(p0(),1);Ca=class Ca extends T0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[A0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),z0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectTagging",{}).n("S3Client","PutObjectTaggingCommand").sc(tu1).build(){}});var q0$,R0$,Rs0;var Ms0=L(()=>{S6();N1();F1();q0$=_(G1(),1),R0$=_(p0(),1);Rs0=class Rs0 extends R0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[q0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutPublicAccessBlock",{}).n("S3Client","PutPublicAccessBlockCommand").sc(ou1).build(){}});var M0$,V0$,I0$,Vs0;var Is0=L(()=>{N1();F1();M0$=_(U$(),1),V0$=_(G1(),1),I0$=_(p0(),1);Vs0=class Vs0 extends I0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[V0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),M0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","RenameObject",{}).n("S3Client","RenameObjectCommand").sc(su1).build(){}});var k0$,C0$,S0$,ks0;var Cs0=L(()=>{S6();N1();F1();k0$=_(U$(),1),C0$=_(G1(),1),S0$=_(p0(),1);ks0=class ks0 extends S0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[C0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),k0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","RestoreObject",{}).n("S3Client","RestoreObjectCommand").sc(ru1).build(){}});var _0$,v0$,Ss0;var _s0=L(()=>{rW();N1();F1();_0$=_(G1(),1),v0$=_(p0(),1);Ss0=class Ss0 extends v0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),MZ(Q)]}).s("AmazonS3","SelectObjectContent",{eventStream:{output:!0}}).n("S3Client","SelectObjectContentCommand").sc(au1).build(){}});var b0$,x0$,vs0;var bs0=L(()=>{S6();N1();F1();b0$=_(G1(),1),x0$=_(p0(),1);vs0=class vs0 extends x0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[b0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","UpdateBucketMetadataInventoryTableConfiguration",{}).n("S3Client","UpdateBucketMetadataInventoryTableConfigurationCommand").sc(eu1).build(){}});var f0$,y0$,xs0;var fs0=L(()=>{S6();N1();F1();f0$=_(G1(),1),y0$=_(p0(),1);xs0=class xs0 extends y0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[f0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","UpdateBucketMetadataJournalTableConfiguration",{}).n("S3Client","UpdateBucketMetadataJournalTableConfigurationCommand").sc($l1).build(){}});var g0$,h0$,u0$,ys0;var gs0=L(()=>{S6();N1();F1();g0$=_(U$(),1),h0$=_(G1(),1),u0$=_(p0(),1);ys0=class ys0 extends u0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[h0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),g0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","UpdateObjectEncryption",{}).n("S3Client","UpdateObjectEncryptionCommand").sc(Zl1).build(){}});var l0$,c0$,m0$,Sa;var hs0=L(()=>{S6();rW();N1();F1();l0$=_(U$(),1),c0$=_(G1(),1),m0$=_(p0(),1);Sa=class Sa extends m0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[c0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),l0$.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","UploadPart",{}).n("S3Client","UploadPartCommand").sc(Ql1).build(){}});var d0$,i0$,p0$,us0;var ls0=L(()=>{rW();N1();F1();d0$=_(U$(),1),i0$=_(G1(),1),p0$=_(p0(),1);us0=class us0 extends p0$.Command.classBuilder().ep({...L0,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[i0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d0$.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","UploadPartCopy",{}).n("S3Client","UploadPartCopyCommand").sc(Yl1).build(){}});var n0$,t0$,cs0;var ms0=L(()=>{N1();F1();n0$=_(G1(),1),t0$=_(p0(),1);cs0=class cs0 extends t0$.Command.classBuilder().ep({...L0,UseObjectLambdaEndpoint:{type:"staticContextParams",value:!0}}).m(function($,Z,Q,Y){return[n0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","WriteGetObjectResponse",{}).n("S3Client","WriteGetObjectResponseCommand").sc(Xl1).build(){}});var o0$,s0$;var ds0=L(()=>{L30();yA();o0$=_(v7(),1),s0$=o0$.createPaginator(QY,Va,"ContinuationToken","ContinuationToken","MaxBuckets")});var r0$,a0$;var is0=L(()=>{O30();yA();r0$=_(v7(),1),a0$=r0$.createPaginator(QY,Ia,"ContinuationToken","ContinuationToken","MaxDirectoryBuckets")});var e0$,$1$;var ps0=L(()=>{j30();yA();e0$=_(v7(),1),$1$=e0$.createPaginator(QY,aW,"ContinuationToken","NextContinuationToken","MaxKeys")});var Z1$,Q1$;var ns0=L(()=>{w30();yA();Z1$=_(v7(),1),Q1$=Z1$.createPaginator(QY,ka,"PartNumberMarker","NextPartNumberMarker","MaxParts")});var Tc=()=>{let $=new WeakSet;return(Z,Q)=>{if(typeof Q==="object"&&Q!==null){if($.has(Q))return"[Circular]";$.add(Q)}return Q}};var Y1$=($)=>{return new Promise((Z)=>setTimeout(Z,$*1000))};var X1$,E9,Xw=($)=>{if($.state===E9.ABORTED){let Z=Error(`${JSON.stringify({...$,reason:"Request was aborted"},Tc())}`);throw Z.name="AbortError",Z}else if($.state===E9.TIMEOUT){let Z=Error(`${JSON.stringify({...$,reason:"Waiter has timed out"},Tc())}`);throw Z.name="TimeoutError",Z}else if($.state!==E9.SUCCESS)throw Error(`${JSON.stringify($,Tc())}`);return $};var P30=L(()=>{X1$={minDelay:2,maxDelay:120};(function($){$.ABORTED="ABORTED",$.FAILURE="FAILURE",$.SUCCESS="SUCCESS",$.RETRY="RETRY",$.TIMEOUT="TIMEOUT"})(E9||(E9={}))});var J1$=async({minDelay:$,maxDelay:Z,maxWaitTime:Q,abortController:Y,client:X,abortSignal:J},G,W)=>{let K={},[H,F]=[$*1000,Z*1000],U=0,N=Date.now()+Q*1000,B=Date.now()+60000,D=!1;while(!0){if(U>0){let w=g94(H,F,U,N);if(Y?.signal?.aborted||J?.aborted)return K["AbortController signal aborted."]|=0,K["AbortController signal aborted."]+=1,{state:E9.ABORTED,observedResponses:K};if(Date.now()+w>N)return{state:E9.TIMEOUT,observedResponses:K};await Y1$(w/1000)}let{state:O,reason:j}=await W(X,G);if(j){let w=y94(j);K[w]|=0,K[w]+=1}if(O!==E9.RETRY)return{state:O,reason:j,final:j,observedResponses:K};if(U+=1,!D&&Date.now()>=B)f94(K,X),D=!0}},f94=($={},Z)=>{let Q=Object.keys($),Y=0,X=0;for(let W of Q){let K=$[W]|0;if(Y=Math.max(K,Y),W.startsWith("403:"))X+=K}let J=Z?.config?.logger,G=typeof J?.warn==="function"&&!J.constructor?.name?.includes?.("NoOpLogger")?J:console;if(X>=3||Q[Q.length-1].startsWith("403:"))G.warn("@smithy/util-waiter WARN - 403 status code encountered during waiter polling.")},y94=($)=>{let Z=$?.$response?.statusCode??$?.$metadata?.httpStatusCode;if($?.$responseBodyText)return`${Z?Z+": ":""}Deserialization error for body: ${$.$responseBodyText}`;if(Z){if($?.$response||$?.message)return`${Z??"Unknown"}: ${$?.message}`;return`${Z}: OK`}return String($?.message??JSON.stringify($,Tc())??"Unknown")},g94=($,Z,Q,Y)=>{let X=Math.log(Z/$)/Math.log(2)+1;if(Q>X)return Z;let J=$*2**(Q-1),G=Math.min(J,Z),W=h94($,G);if(Date.now()+W>Y){let K=Y-Date.now();return Math.max(0,K-500)}return W},h94=($,Z)=>$+Math.random()*(Z-$);var G1$=L(()=>{P30()});var W1$=($)=>{if($.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if($.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if($.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if($.maxWaitTime<=$.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${$.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`);else if($.maxDelay<$.minDelay)throw Error(`WaiterConfiguration.maxDelay [${$.maxDelay}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`)};var K1$=()=>{};var H1$=($)=>{let Z,Q=new Promise((Y)=>{if(Z=()=>Y({state:E9.ABORTED}),typeof $.addEventListener==="function")$.addEventListener("abort",Z);else $.onabort=Z});return{clearListener(){if(typeof $.removeEventListener==="function")$.removeEventListener("abort",Z)},aborted:Q}},Jw=async($,Z,Q)=>{let Y={...X1$,...$};W1$(Y);let X=[J1$(Y,Z,Q)],J=[];if($.abortSignal){let{aborted:G,clearListener:W}=H1$($.abortSignal);J.push(W),X.push(G)}if($.abortController?.signal){let{aborted:G,clearListener:W}=H1$($.abortController.signal);J.push(W),X.push(G)}return Promise.race(X).then((G)=>{for(let W of J)W();return G})};var F1$=L(()=>{G1$();K1$();P30()});var _a=L(()=>{F1$();P30()});var u94=async($,Z)=>{let Q;try{return Q=await $.send(new gA(Z)),{state:E9.SUCCESS,reason:Q}}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.RETRY,reason:Q}}return{state:E9.RETRY,reason:Q}},U1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,u94);return Xw(Y)};var ts0=L(()=>{_a();Ra()});var l94=async($,Z)=>{let Q;try{Q=await $.send(new gA(Z))}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.SUCCESS,reason:Q}}return{state:E9.RETRY,reason:Q}},N1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,l94);return Xw(Y)};var os0=L(()=>{_a();Ra()});var c94=async($,Z)=>{let Q;try{return Q=await $.send(new xU(Z)),{state:E9.SUCCESS,reason:Q}}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.RETRY,reason:Q}}return{state:E9.RETRY,reason:Q}},B1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,c94);return Xw(Y)};var ss0=L(()=>{_a();Ma()});var m94=async($,Z)=>{let Q;try{Q=await $.send(new xU(Z))}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.SUCCESS,reason:Q}}return{state:E9.RETRY,reason:Q}},D1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,m94);return Xw(Y)};var rs0=L(()=>{_a();Ma()});var L1$,d94,i94,p94,O1$;var j1$=L(()=>{Dn0();Ln0();jn0();En0();zn0();Tn0();qn0();rJ0();Mn0();In0();Cn0();_n0();bn0();fn0();gn0();un0();cn0();dn0();pn0();tn0();sn0();an0();$t0();Zt0();Yt0();Jt0();Wt0();Ht0();Ut0();Bt0();Lt0();jt0();Et0();zt0();Tt0();Rt0();Vt0();kt0();St0();vt0();xt0();yt0();ht0();lt0();mt0();it0();nt0();ot0();rt0();et0();Zo0();Yo0();Xo0();Go0();Ko0();Fo0();No0();Do0();Oo0();Ra();Ma();wo0();Po0();Ao0();qo0();L30();O30();Mo0();Io0();j30();Co0();w30();_o0();bo0();fo0();go0();uo0();co0();do0();po0();to0();so0();ao0();$s0();Qs0();Xs0();Gs0();Ks0();Fs0();Ns0();Ds0();Os0();js0();Es0();zs0();Ts0();qs0();Ms0();Is0();Cs0();_s0();bs0();fs0();gs0();hs0();ls0();ms0();ds0();is0();ps0();ns0();yA();ts0();os0();ss0();rs0();L1$=_(p0(),1),d94={AbortMultipartUploadCommand:Aa,CompleteMultipartUploadCommand:Ta,CopyObjectCommand:On0,CreateBucketCommand:wn0,CreateBucketMetadataConfigurationCommand:Pn0,CreateBucketMetadataTableConfigurationCommand:An0,CreateMultipartUploadCommand:qa,CreateSessionCommand:Za,DeleteBucketCommand:Vn0,DeleteBucketAnalyticsConfigurationCommand:Rn0,DeleteBucketCorsCommand:kn0,DeleteBucketEncryptionCommand:Sn0,DeleteBucketIntelligentTieringConfigurationCommand:vn0,DeleteBucketInventoryConfigurationCommand:xn0,DeleteBucketLifecycleCommand:yn0,DeleteBucketMetadataConfigurationCommand:hn0,DeleteBucketMetadataTableConfigurationCommand:ln0,DeleteBucketMetricsConfigurationCommand:mn0,DeleteBucketOwnershipControlsCommand:in0,DeleteBucketPolicyCommand:nn0,DeleteBucketReplicationCommand:on0,DeleteBucketTaggingCommand:rn0,DeleteBucketWebsiteCommand:en0,DeleteObjectCommand:mD,DeleteObjectsCommand:Qt0,DeleteObjectTaggingCommand:Xt0,DeletePublicAccessBlockCommand:Gt0,GetBucketAbacCommand:Kt0,GetBucketAccelerateConfigurationCommand:Ft0,GetBucketAclCommand:Nt0,GetBucketAnalyticsConfigurationCommand:Dt0,GetBucketCorsCommand:Ot0,GetBucketEncryptionCommand:wt0,GetBucketIntelligentTieringConfigurationCommand:Pt0,GetBucketInventoryConfigurationCommand:At0,GetBucketLifecycleConfigurationCommand:qt0,GetBucketLocationCommand:Mt0,GetBucketLoggingCommand:It0,GetBucketMetadataConfigurationCommand:Ct0,GetBucketMetadataTableConfigurationCommand:_t0,GetBucketMetricsConfigurationCommand:bt0,GetBucketNotificationConfigurationCommand:ft0,GetBucketOwnershipControlsCommand:gt0,GetBucketPolicyCommand:ut0,GetBucketPolicyStatusCommand:ct0,GetBucketReplicationCommand:dt0,GetBucketRequestPaymentCommand:pt0,GetBucketTaggingCommand:tt0,GetBucketVersioningCommand:st0,GetBucketWebsiteCommand:at0,GetObjectCommand:bU,GetObjectAclCommand:$o0,GetObjectAttributesCommand:Qo0,GetObjectLegalHoldCommand:Jo0,GetObjectLockConfigurationCommand:Wo0,GetObjectRetentionCommand:Ho0,GetObjectTaggingCommand:Uo0,GetObjectTorrentCommand:Bo0,GetPublicAccessBlockCommand:Lo0,HeadBucketCommand:gA,HeadObjectCommand:xU,ListBucketAnalyticsConfigurationsCommand:jo0,ListBucketIntelligentTieringConfigurationsCommand:Eo0,ListBucketInventoryConfigurationsCommand:zo0,ListBucketMetricsConfigurationsCommand:To0,ListBucketsCommand:Va,ListDirectoryBucketsCommand:Ia,ListMultipartUploadsCommand:Ro0,ListObjectsCommand:Vo0,ListObjectsV2Command:aW,ListObjectVersionsCommand:ko0,ListPartsCommand:ka,PutBucketAbacCommand:So0,PutBucketAccelerateConfigurationCommand:vo0,PutBucketAclCommand:xo0,PutBucketAnalyticsConfigurationCommand:yo0,PutBucketCorsCommand:ho0,PutBucketEncryptionCommand:lo0,PutBucketIntelligentTieringConfigurationCommand:mo0,PutBucketInventoryConfigurationCommand:io0,PutBucketLifecycleConfigurationCommand:no0,PutBucketLoggingCommand:oo0,PutBucketMetricsConfigurationCommand:ro0,PutBucketNotificationConfigurationCommand:eo0,PutBucketOwnershipControlsCommand:Zs0,PutBucketPolicyCommand:Ys0,PutBucketReplicationCommand:Js0,PutBucketRequestPaymentCommand:Ws0,PutBucketTaggingCommand:Hs0,PutBucketVersioningCommand:Us0,PutBucketWebsiteCommand:Bs0,PutObjectCommand:z3,PutObjectAclCommand:Ls0,PutObjectLegalHoldCommand:ws0,PutObjectLockConfigurationCommand:Ps0,PutObjectRetentionCommand:As0,PutObjectTaggingCommand:Ca,PutPublicAccessBlockCommand:Rs0,RenameObjectCommand:Vs0,RestoreObjectCommand:ks0,SelectObjectContentCommand:Ss0,UpdateBucketMetadataInventoryTableConfigurationCommand:vs0,UpdateBucketMetadataJournalTableConfigurationCommand:xs0,UpdateObjectEncryptionCommand:ys0,UploadPartCommand:Sa,UploadPartCopyCommand:us0,WriteGetObjectResponseCommand:cs0},i94={paginateListBuckets:s0$,paginateListDirectoryBuckets:a0$,paginateListObjectsV2:$1$,paginateListParts:Q1$},p94={waitUntilBucketExists:U1$,waitUntilBucketNotExists:N1$,waitUntilObjectExists:B1$,waitUntilObjectNotExists:D1$};O1$=class O1$ extends QY{};L1$.createAggregatedClient(d94,O1$,{paginators:i94,waiters:p94})});var w1$=L(()=>{Dn0();Ln0();jn0();En0();zn0();Tn0();qn0();rJ0();Mn0();In0();Cn0();_n0();bn0();fn0();gn0();un0();cn0();dn0();pn0();tn0();sn0();an0();$t0();Zt0();Jt0();Yt0();Wt0();Ht0();Ut0();Bt0();Lt0();jt0();Et0();zt0();Tt0();Rt0();Vt0();kt0();St0();vt0();xt0();yt0();ht0();lt0();mt0();it0();nt0();ot0();rt0();et0();Zo0();Yo0();Xo0();Go0();Ko0();Fo0();No0();Do0();Oo0();Ra();Ma();wo0();Po0();Ao0();qo0();L30();O30();Mo0();Co0();Io0();j30();w30();_o0();bo0();fo0();go0();uo0();co0();do0();po0();to0();so0();ao0();$s0();Qs0();Xs0();Gs0();Ks0();Fs0();Ns0();Ds0();Os0();js0();Es0();zs0();Ts0();qs0();Ms0();Is0();Cs0();_s0();bs0();fs0();gs0();hs0();ls0();ms0()});var E1$=()=>{};var P1$=L(()=>{E1$();ds0();is0();ps0();ns0()});var z1$=L(()=>{ts0();os0();ss0();rs0()});var A1$;var T1$=L(()=>{A1$={CRC32:"CRC32",CRC32C:"CRC32C",CRC64NVME:"CRC64NVME",MD5:"MD5",SHA1:"SHA1",SHA256:"SHA256",SHA512:"SHA512",XXHASH128:"XXHASH128",XXHASH3:"XXHASH3",XXHASH64:"XXHASH64"}});var q1$=()=>{};var R1$=()=>{};var va=L(()=>{yA();j1$();w1$();F1();P1$();z1$();T1$();qd0();q1$();R1$()});function V1$($){let{port:Z,query:Q}=$,{protocol:Y,path:X,hostname:J}=$;if(Y&&Y.slice(-1)!==":")Y+=":";if(Z)J+=`:${Z}`;if(X&&X.charAt(0)!=="/")X=`/${X}`;let G=Q?M1$.buildQueryString(Q):"";if(G&&G[0]!=="?")G=`?${G}`;let W="";if($.username!=null||$.password!=null){let H=$.username??"",F=$.password??"";W=`${H}:${F}@`}let K="";if($.fragment)K=`#${$.fragment}`;return`${Y}//${W}${J}${X}${G}${K}`}var M1$;var I1$=L(()=>{M1$=_(QX0(),1)});var k1$="UNSIGNED-PAYLOAD",C1$="X-Amz-Content-Sha256";class z30{signer;constructor($){let Z={service:$.signingName||$.service||"s3",uriEscapePath:$.uriEscapePath||!1,applyChecksum:$.applyChecksum||!1,...$};this.signer=new S1$.SignatureV4MultiRegion(Z)}presign($,{unsignableHeaders:Z=new Set,hoistableHeaders:Q=new Set,unhoistableHeaders:Y=new Set,...X}={}){return this.prepareRequest($,{unsignableHeaders:Z,unhoistableHeaders:Y,hoistableHeaders:Q}),this.signer.presign($,{expiresIn:900,unsignableHeaders:Z,unhoistableHeaders:Y,...X})}presignWithCredentials($,Z,{unsignableHeaders:Q=new Set,hoistableHeaders:Y=new Set,unhoistableHeaders:X=new Set,...J}={}){return this.prepareRequest($,{unsignableHeaders:Q,unhoistableHeaders:X,hoistableHeaders:Y}),this.signer.presignWithCredentials($,Z,{expiresIn:900,unsignableHeaders:Q,unhoistableHeaders:X,...J})}prepareRequest($,{unsignableHeaders:Z=new Set,unhoistableHeaders:Q=new Set,hoistableHeaders:Y=new Set}={}){Z.add("content-type"),Object.keys($.headers).map((W)=>W.toLowerCase()).filter((W)=>W.startsWith("x-amz-server-side-encryption")).forEach((W)=>{if(!Y.has(W))Q.add(W)}),$.headers[C1$]=k1$;let X=$.headers.host,J=$.port,G=`${$.hostname}${$.port!=null?":"+J:""}`;if(!X||X===$.hostname&&$.port!=null)$.headers.host=G}}var S1$;var as0=L(()=>{S1$=_($c(),1)});var _1$,v1$,A30=async($,Z,Q={})=>{let Y,X;if(typeof $.config.endpointProvider==="function"){let N=(await _1$.getEndpointFromInstructions(Z.input,Z.constructor,$.config)).properties?.authSchemes?.[0];if(N?.name==="sigv4a")X=N?.signingRegionSet?.join(",");else X=N?.signingRegion;Y=new z30({...$.config,signingName:N?.signingName,region:async()=>X})}else Y=new z30($.config);let J=(U,N)=>async(B)=>{let{request:D}=B;if(!v1$.HttpRequest.isInstance(D))throw Error("Request to be presigned is not an valid HTTP request.");delete D.headers["amz-sdk-invocation-id"],delete D.headers["amz-sdk-request"],delete D.headers["x-amz-user-agent"];let O,j={...Q,signingRegion:Q.signingRegion??N.signing_region??X,signingService:Q.signingService??N.signing_service};if(N.s3ExpressIdentity)O=await Y.presignWithCredentials(D,N.s3ExpressIdentity,j);else O=await Y.presign(D,j);return{response:{},output:{$metadata:{httpStatusCode:200},presigned:O}}},G="presignInterceptMiddleware",W=$.middlewareStack.clone();W.addRelativeTo(J,{name:G,relation:"before",toMiddleware:"awsAuthMiddleware",override:!0});let K=Z.resolveMiddleware(W,$.config,{}),{output:H}=await K({input:Z.input}),{presigned:F}=H;return V1$(F)};var b1$=L(()=>{I1$();as0();_1$=_(G1(),1),v1$=_(t5(),1)});var x1$=L(()=>{b1$();as0()});import{extname as n94}from"path";function A3($){let Z;try{Z=decodeURIComponent($)}catch{Z=$}let Y=Z.replace(/\0/g,"").replace(/[\x00-\x1f\x7f]/g,"").replace(/\\/g,"/").split("/"),X=[];for(let J of Y)if(J==="..")X.pop();else if(J!=="."&&J!=="")X.push(J);return X.join("/")}function Gw($,Z){let Q=A3(Z);if(!Q)throw Error("Key is empty after sanitization");return`${$}/${Q}`}function f1$($,Z){if(!Z)return`${$}/`;let Q=A3(Z);return`${$}/${Q}${Q.endsWith("/")?"":"/"}`}function qc($,Z,Q){let Y=Q.split("/").map(encodeURIComponent).join("/");return`${$}/api/${encodeURIComponent(Z)}/files/${Y}`}function es0($,Z){let Q=`${$}/`;if(Z.startsWith(Q))return Z.slice(Q.length);return Z}function x7($){let Z=n94($).toLowerCase();return t94[Z]??"application/octet-stream"}function T30($){let Z=$.split(";")[0].trim();if(o94.has(Z))return!0;if(Z.startsWith("text/"))return!0;return!1}var t94,o94;var iH=L(()=>{t94={".json":"application/json",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".mjs":"application/javascript",".ts":"text/typescript",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".xml":"application/xml",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".pdf":"application/pdf",".zip":"application/zip",".gz":"application/gzip",".tar":"application/x-tar",".wasm":"application/wasm",".yaml":"application/yaml",".yml":"application/yaml",".toml":"application/toml"};o94=new Set(["application/json","text/html","text/css","application/javascript","text/typescript","text/plain","text/markdown","text/csv","application/xml","image/svg+xml","application/yaml","application/toml"])});class $r0{client;bucket;constructor($){this.bucket=$.bucket,this.client=new QY({endpoint:$.endpoint,region:$.region,credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},forcePathStyle:$.forcePathStyle})}async getBytesOrPresign($,Z,Q){let Y=Gw($,Z),X=await this.client.send(new xU({Bucket:this.bucket,Key:Y})),J=X.ContentLength??0,G=X.ContentType??x7(Z);if(J>Q.presignWhenLargerThan){let F=await A30(this.client,new bU({Bucket:this.bucket,Key:Y}),{expiresIn:Q.presignExpiresIn??3600});return{error:"FILE_TOO_LARGE",size:J,maxInlineSize:Q.presignWhenLargerThan,presignedUrl:F,contentType:G}}let K=await(await this.client.send(new bU({Bucket:this.bucket,Key:Y}))).Body.transformToByteArray(),H=T30(G);return{content:H?new TextDecoder().decode(K):Buffer.from(K).toString("base64"),contentType:G,encoding:H?"utf-8":"base64",size:J,lastModified:X.LastModified,etag:X.ETag}}async getBytes($,Z){let Q=Gw($,Z);return(await this.client.send(new bU({Bucket:this.bucket,Key:Q}))).Body.transformToByteArray()}async put($,Z,Q,Y){let X=Gw($,Z),J=Y?.contentType??x7(Z);return{etag:(await this.client.send(new z3({Bucket:this.bucket,Key:X,Body:typeof Q==="string"?Buffer.from(Q,"utf-8"):Q,ContentType:J}))).ETag,key:Z}}async list($,Z){let Q=f1$($,Z?.prefix),Y=await this.client.send(new aW({Bucket:this.bucket,Prefix:Q,MaxKeys:Z?.maxKeys??1000,ContinuationToken:Z?.continuationToken,Delimiter:Z?.delimiter})),X=Y.CommonPrefixes?.map((J)=>es0($,J.Prefix??"")).filter(Boolean);return{objects:(Y.Contents??[]).map((J)=>({key:es0($,J.Key??""),size:J.Size??0,lastModified:J.LastModified,etag:J.ETag})),isTruncated:Y.IsTruncated??!1,nextContinuationToken:Y.NextContinuationToken,commonPrefixes:X&&X.length>0?X:void 0}}async delete($,Z){let Q=Gw($,Z);await this.client.send(new mD({Bucket:this.bucket,Key:Q}))}async head($,Z){let Q=Gw($,Z),Y=await this.client.send(new xU({Bucket:this.bucket,Key:Q}));return{contentType:Y.ContentType??x7(Z),size:Y.ContentLength??0,lastModified:Y.LastModified,etag:Y.ETag,metadata:Y.Metadata&&Object.keys(Y.Metadata).length>0?Y.Metadata:void 0}}async presignedGetUrl($,Z,Q=3600,Y){let X=Gw($,Z);return A30(this.client,new bU({Bucket:this.bucket,Key:X}),{expiresIn:Q})}async presignedPutUrl($,Z,Q=3600,Y){let X=Gw($,Z);return A30(this.client,new z3({Bucket:this.bucket,Key:X,ContentType:Y}),{expiresIn:Q})}}var y1$=L(()=>{va();x1$();iH()});function s94(){let $=B0();return!!($.s3Endpoint&&$.s3Bucket&&$.s3AccessKeyId&&$.s3SecretAccessKey)}function XJ(){if(ba!==void 0)return ba;if(!s94())return ba=null,null;let $=B0();return ba=new $r0({endpoint:$.s3Endpoint,bucket:$.s3Bucket,region:$.s3Region,accessKeyId:$.s3AccessKeyId,secretAccessKey:$.s3SecretAccessKey,forcePathStyle:$.s3ForcePathStyle}),ba}var ba;var Ww=L(()=>{u1();y1$()});function T3($,Z){return{getBytesOrPresign:(Q,Y)=>$.getBytesOrPresign(Z,Q,Y),getBytes:(Q)=>$.getBytes(Z,Q),put:(Q,Y,X)=>$.put(Z,Q,Y,X),list:(Q)=>$.list(Z,Q),delete:(Q)=>$.delete(Z,Q),head:(Q)=>$.head(Z,Q),presignedGetUrl:(Q,Y,X)=>$.presignedGetUrl(Z,Q,Y,X),presignedPutUrl:(Q,Y,X)=>$.presignedPutUrl(Z,Q,Y,X)}}import{mkdir as r94,readdir as a94,readFile as Zr0,stat as q30,unlink as e94,writeFile as $Z4}from"fs/promises";import{createHmac as ZZ4}from"crypto";import{dirname as QZ4,join as xa}from"path";function Qr0($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return xa(YZ4,Z)}function Rc($,Z){return xa(Qr0($),A3(Z))}class eW{orgId;baseUrl;constructor($,Z){this.orgId=$;this.baseUrl=Z}async getBytesOrPresign($,Z){let Q=Rc(this.orgId,$),Y=await q30(Q),X=x7($);if(Y.size>Z.presignWhenLargerThan)return{error:"FILE_TOO_LARGE",size:Y.size,maxInlineSize:Z.presignWhenLargerThan,presignedUrl:await this.presignedGetUrl($),contentType:X};let J=await Zr0(Q),G=T30(X);return{content:G?new TextDecoder().decode(J):Buffer.from(J).toString("base64"),contentType:X,encoding:G?"utf-8":"base64",size:Y.size,lastModified:Y.mtime}}async getBytes($){let Z=await Zr0(Rc(this.orgId,$));return new Uint8Array(Z)}async put($,Z,Q){let Y=Rc(this.orgId,$);return await r94(QZ4(Y),{recursive:!0}),await $Z4(Y,typeof Z==="string"?Buffer.from(Z,"utf-8"):Z),{key:$}}async list($){let Z=$?.prefix?xa(Qr0(this.orgId),A3($.prefix)):Qr0(this.orgId),Q;try{Q=await a94(Z,{withFileTypes:!0})}catch{return{objects:[],isTruncated:!1}}let Y=$?.maxKeys??1000,X=$?.prefix,J=Q.filter((W)=>W.isFile());if($?.delimiter){let W=[],K=Q.filter((D)=>D.isDirectory());for(let D of K){let O=X?`${X}/${D.name}/`:`${D.name}/`;W.push(O)}W.sort();let H=Y,F=W.slice(0,H);H-=F.length;let U=J.slice(0,H),N=W.length+J.length;return{objects:await Promise.all(U.map(async(D)=>{let O=await q30(xa(Z,D.name));return{key:X?`${X}/${D.name}`:D.name,size:O.size,lastModified:O.mtime}})),isTruncated:N>Y,commonPrefixes:F.length>0?F:void 0}}return{objects:await Promise.all(J.slice(0,Y).map(async(W)=>{let K=await q30(xa(Z,W.name));return{key:X?`${X}/${W.name}`:W.name,size:K.size,lastModified:K.mtime}})),isTruncated:J.length>Y}}async delete($){await e94(Rc(this.orgId,$))}async head($){let Z=await q30(Rc(this.orgId,$));return{contentType:x7($),size:Z.size,lastModified:Z.mtime}}async presignedGetUrl($,Z,Q){if(Q?.requireFetchable)throw Error("object storage returned a not fetchable (data:) URL; configure real S3/R2/MinIO for large-payload offload");let Y=Rc(this.orgId,$),X=await Zr0(Y),J=x7($),G=Buffer.from(X).toString("base64");return`data:${J};base64,${G}`}async presignedPutUrl($,Z=3600){if(!this.baseUrl)throw Error("baseUrl required for presigned PUT URLs in dev mode");let Q=A3($),Y=Math.floor(Date.now()/1000)+Z,X=B0().encryptionKey||"dev-secret",J=`${this.orgId}:${Q}:${Y}:PUT`,G=ZZ4("sha256",X).update(J).digest("hex"),W=new URL(`/api/dev-assets/${this.orgId}/${Q}`,this.baseUrl);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",G),W.searchParams.set("method","PUT"),W.toString()}}var YZ4="./data/assets";var Mc=L(()=>{iH();u1()});function $K($){return XZ4.test($)&&$!=="."&&$!==".."}function f7($){if(!$K($))throw Error(`Invalid org-fs volume name: ${JSON.stringify($)}`)}function N5($){return A3($)}function Vc($){let Z=$.lastIndexOf("/");return Z===-1?"":$.slice(0,Z)}function Kw($){let Z=Vc($);if(Z==="")return[];let Q=Z.split("/"),Y=[],X="";for(let J of Q)X=X===""?J:`${X}/${J}`,Y.push(X);return Y}function ZK($,Z){return`${Yr0}/${$}/${Z}`}function fU($){let[Z,Q="",...Y]=A3($).split("/");return Z===Yr0?{volume:Q,path:Y.join("/")}:null}function R30($){return`${Yr0}/${$}/`}var XZ4,Yr0="_fs";var YY=L(()=>{iH();XZ4=/^[A-Za-z0-9_.-]{1,128}$/});import{createHmac as Xr0,randomBytes as Jr0,scrypt as JZ4,timingSafeEqual as g1$}from"crypto";import{promisify as GZ4}from"util";async function u1$($){let Z=Jr0(16),Q=await h1$($,Z,WZ4);return`scrypt$${Z.toString("hex")}$${Q.toString("hex")}`}async function l1$($,Z){let Q=Z.split("$");if(Q.length!==3||Q[0]!=="scrypt")return!1;let Y=Buffer.from(Q[1],"hex"),X=Buffer.from(Q[2],"hex");if(Y.length===0||X.length===0)return!1;let J;try{J=await h1$($,Y,X.length)}catch{return!1}return X.length===J.length&&g1$(X,J)}function c1$(){return Jr0(16).toString("hex")}function m1$(){if(M30)return M30;let $;try{let Z=B0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return M30=$?Buffer.from($):Jr0(32),M30}function d1$($){let Z=Buffer.from(JSON.stringify($)).toString("base64url"),Q=Xr0("sha256",m1$()).update(Z).digest("base64url");return`${Z}.${Q}`}function i1$($,Z){let Q=$.indexOf(".");if(Q<0)return null;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(Xr0("sha256",m1$()).update(Y).digest("base64url"));if(X.length!==J.length||!g1$(X,J))return null;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return null}if(G.o!==Z.org||G.v!==Z.volume||G.s!==Z.secret||typeof G.e!=="number"||G.e<Z.nowSec)return null;return{govPath:G.p}}function Gr0($,Z,Q){return`fsu_${Xr0("sha256","fsunlock-name").update(`${$}:${Z}:${Q}`).digest("hex").slice(0,16)}`}var WZ4=64,h1$,M30=null;var Wr0=L(()=>{u1();h1$=GZ4(JZ4)});import{createHash as KZ4}from"crypto";function BZ4($){if(typeof $!=="object"||$===null)return!1;let Z=$;return Z.name==="NoSuchKey"||Z.Code==="NoSuchKey"||Z.code==="ENOENT"||Z.$metadata?.httpStatusCode===404}function p1$($){return KZ4("sha256").update($).digest("hex")}class QK{storage;manifest;organizationId;maxFileBytes;volumeQuotaBytes;constructor($,Z,Q,Y={}){this.storage=$;this.manifest=Z;this.organizationId=Q;this.maxFileBytes=Y.maxFileBytes??UZ4,this.volumeQuotaBytes=Y.volumeQuotaBytes??NZ4}async usage($){return f7($),this.manifest.usage(this.organizationId,$)}async stat($,Z){return f7($),this.manifest.get(this.organizationId,$,N5(Z))}async listVolumeFiles($){return f7($),this.manifest.listVolumeFiles(this.organizationId,$)}async listDir($,Z){return f7($),this.manifest.listDir(this.organizationId,$,N5(Z))}async read($,Z){let Q=await this.requireFile($,Z);try{return await this.storage.getBytes(ZK($,Q.path))}catch(Y){if(BZ4(Y))throw new JJ(`No such file: ${Q.path}`);throw Y}}async setShareMode($,Z,Q,Y){f7($);let X=N5(Z),J=await this.manifest.get(this.organizationId,$,X);if(!J)throw new JJ(`No such path: ${X}`);let G=null,W=null;if(Q==="password"){if(!Y.password)throw new q3("A password is required to set password mode");G=await u1$(Y.password),W=c1$()}let K=await this.manifest.setShareMode({organizationId:this.organizationId,volume:$,path:J.path,readPublic:Q!=="private",passwordHash:G,shareSecret:W,actor:Y.actor});if(!K)throw new JJ(`No such path: ${J.path}`);return K}async setReadPublic($,Z,Q,Y){return this.setShareMode($,Z,Q?"public":"private",{actor:Y.actor})}async resolveReadAccess($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")return{access:"private"};let X=await this.manifest.resolveGoverningShare({organizationId:this.organizationId,volume:$,candidatePaths:[Q,...Kw(Q)]});if(!X)return{access:"private"};if(!X.passwordHash)return{access:"public"};return{access:"password",govPath:X.path,secret:X.secret??"",passwordHash:X.passwordHash}}async isPubliclyReadable($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")return!1;if(Y.readPublic)return!0;return this.manifest.hasPublicAncestorDir(this.organizationId,$,Kw(Q))}async inheritsPublic($,Z){return f7($),this.manifest.hasPublicAncestorDir(this.organizationId,$,Kw(N5(Z)))}async childrenInheritPublic($,Z){f7($);let Q=N5(Z);if(Q==="")return!1;return this.manifest.hasPublicAncestorDir(this.organizationId,$,[...Kw(Q),Q])}async recentWithEffectivePublic($){return this.withEffectivePublic(await this.recent($))}async searchWithEffectivePublic($,Z,Q,Y,X){return this.withEffectivePublic(await this.manifest.searchFiles({organizationId:this.organizationId,query:$,limit:Z,volumes:Q,pathPrefix:Y?N5(Y):void 0,beforeSeq:X}))}async withEffectivePublic($){let Z=new Map;for(let Y of $){let X=Z.get(Y.volume);if(!X)X=new Set,Z.set(Y.volume,X);for(let J of Kw(Y.path))X.add(J)}let Q=new Map;return await Promise.all([...Z].map(async([Y,X])=>{let J=await this.manifest.publicDirPaths({organizationId:this.organizationId,volume:Y,paths:[...X]});Q.set(Y,new Set(J))})),$.map((Y)=>{let X=Q.get(Y.volume),J=!!X&&Kw(Y.path).some((G)=>X.has(G));return{...Y,effectivePublic:Y.readPublic||J}})}async presignRead($,Z,Q){let Y=await this.requireFile($,Z);return this.storage.presignedGetUrl(ZK($,Y.path),Q)}async write($,Z,Q,Y){f7($);let X=N5(Z);if(X==="")throw new q3("Cannot write to the volume root");let J=typeof Q==="string"?new TextEncoder().encode(Q):Q;if(J.byteLength>this.maxFileBytes)throw new hA(`File exceeds the ${this.maxFileBytes}-byte per-file limit`);let[G,W]=await Promise.all([Y.skipVolumeQuota?Promise.resolve(null):this.manifest.usage(this.organizationId,$),this.manifest.get(this.organizationId,$,X)]);if(W?.kind==="dir")throw new q3(`Cannot write a file at ${X}: a directory exists there`);if(Y.expect){let K=W?.kind==="file"?W.contentHash:null;if(!("absent"in Y.expect?!W:K===Y.expect.contentHash))throw new Ic(`${X} changed since it was read`)}if(G){let K=W?.kind==="file"?W.size:0;if(G.bytes-K+J.byteLength>this.volumeQuotaBytes)throw new hA(`Write would exceed the volume quota of ${this.volumeQuotaBytes} bytes`)}await this.ensureDirs($,X,Y.actor),await this.storage.put(ZK($,X),J,{contentType:Y.contentType??x7(X)});try{return await e$(()=>this.manifest.putFile({organizationId:this.organizationId,volume:$,path:X,parent:Vc(X),contentHash:p1$(J),size:J.byteLength,actor:Y.actor,threadId:Y.threadId??null}))}catch(K){throw console.error("org-fs manifest write lost after object put",{organizationId:this.organizationId,volume:$,path:X,size:J.byteLength,error:K instanceof Error?K.message:String(K)}),K}}async mkdir($,Z,Q){f7($);let Y=N5(Z);if(Y==="")return;if((await this.manifest.get(this.organizationId,$,Y))?.kind==="file")throw new q3(`Cannot create a directory at ${Y}: a file exists there`);await this.ensureDirs($,Y,Q.actor),await this.manifest.putDir({organizationId:this.organizationId,volume:$,path:Y,parent:Vc(Y),actor:Q.actor})}async delete($,Z,Q){f7($);let Y=N5(Z);if(Y==="")throw new q3("Cannot delete the volume root");let X=await this.manifest.get(this.organizationId,$,Y);if(!X)return;if(X.kind==="dir"){let J=await this.manifest.listSubtreeFiles(this.organizationId,$,Y);await Promise.all(J.map((G)=>this.storage.delete(ZK($,G.path)))),await this.manifest.tombstoneSubtree(this.organizationId,$,Y,Q.actor);return}await this.storage.delete(ZK($,Y)),await this.manifest.tombstone(this.organizationId,$,Y,Q.actor)}async move($,Z,Q,Y){f7($);let X=N5(Z),J=N5(Q);if(X===""||J==="")throw new q3("Cannot move the volume root");if(J===X||J.startsWith(`${X}/`))throw new q3(`Cannot move ${X} onto itself or into its own subtree`);let G=await this.manifest.get(this.organizationId,$,X);if(!G)throw new JJ(`No such path: ${X}`);if(G.kind==="file"){let H=await this.storage.getBytes(ZK($,X));await this.write($,J,H,{...Y,skipVolumeQuota:!0}),await this.delete($,X,Y);return}let[W,K]=await Promise.all([this.manifest.listSubtreeFiles(this.organizationId,$,X),this.manifest.listSubtreeDirs(this.organizationId,$,X)]);await this.mkdir($,J,Y);for(let H of W){let F=H.path.slice(X.length+1),U=await this.storage.getBytes(ZK($,H.path));await this.write($,`${J}/${F}`,U,{...Y,skipVolumeQuota:!0})}for(let H of K){let F=H.path.slice(X.length+1);await this.mkdir($,`${J}/${F}`,Y)}await this.delete($,X,Y)}async filesExist($,Z){f7($);let Q=await this.manifest.liveFilePaths({organizationId:this.organizationId,volume:$,paths:Z.map((Y)=>N5(Y))});return new Set(Q)}async recent($){return this.manifest.recentFiles({organizationId:this.organizationId,limit:$})}async changes($,Z,Q=HZ4){f7($);let Y=Z||"0";if(!/^\d+$/.test(Y))throw new q3(`Invalid cursor: ${Z}`);let X=await this.manifest.changesSince({organizationId:this.organizationId,volume:$,sinceSeq:Y,limit:Q}),J=X.at(-1);return{entries:X,cursor:J?J.seq:Z||"0",hasMore:X.length>=Q}}async latestSeq($){return f7($),this.manifest.latestSeq({organizationId:this.organizationId,volume:$})}async backfillFromStorage($,Z){f7($);let Q=R30($),Y,X=0;do{let J=await this.storage.list({prefix:Q,maxKeys:FZ4,continuationToken:Y});for(let G of J.objects){let W=G.key.slice(Q.length);if(W==="")continue;await this.ensureDirs($,W,Z.actor);let K=await this.storage.getBytes(G.key);await this.manifest.putFile({organizationId:this.organizationId,volume:$,path:W,parent:Vc(W),contentHash:p1$(K),size:K.byteLength,actor:Z.actor}),X++}Y=J.isTruncated?J.nextContinuationToken:void 0}while(Y);return X}async requireFile($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")throw new JJ(`No such file: ${Q}`);return Y}async ensureDirs($,Z,Q){for(let Y of Kw(Z))await this.manifest.putDir({organizationId:this.organizationId,volume:$,path:Y,parent:Vc(Y),actor:Q})}}var HZ4=500,FZ4=1000,UZ4=524288000,NZ4=10737418240,hA,q3,Ic,JJ;var yU=L(()=>{p$();iH();YY();Wr0();hA=class hA extends Error{constructor($){super($);this.name="OrgFsQuotaError"}};q3=class q3 extends Error{constructor($){super($);this.name="OrgFsValidationError"}};Ic=class Ic extends Error{constructor($){super($);this.name="OrgFsConflictError"}};JJ=class JJ extends Error{constructor($){super($);this.name="OrgFsNotFoundError"}}});import{existsSync as DZ4}from"fs";import{join as t1$}from"path";import{z as gU}from"zod";function YK($){return $.startsWith(o1$)}function Hw($){return`${o1$}${$}`}function wZ4($){let Z=new Map(s1$.map((Q)=>[Q.set,Q]));if($)try{for(let Q of jZ4.parse(JSON.parse($)))Z.set(Q.set,Q)}catch(Q){console.warn("[org-fs] invalid ORGFS_PUBLIC_SETS \u2014 using built-in defaults only",Q)}return[...Z.values()]}function XK(){let $=B0(),Z=wZ4($.orgFsPublicSetsJson);if($.nodeEnv==="production")return Z;return Z.map((Q)=>Q===s1$[0]&&DZ4(t1$(n1$,Q.paths[0].from))?{...Q,dir:n1$}:Q)}function ya($){let Z=XJ(),Q=Z?T3(Z,fa):new eW(fa,$.baseUrl);return new QK(Q,$.storage.orgFsEntries,fa)}var fa="org_orgfs_public_skills",o1$="public-",LZ4,OZ4,s1$,jZ4,n1$;var Fw=L(()=>{u1();Ww();Mc();yU();LZ4=gU.object({from:gU.string(),to:gU.string().optional()}),OZ4=gU.object({set:gU.string().regex(/^[a-z0-9][a-z0-9-]{0,40}$/),repo:gU.string().regex(/^[\w.-]+\/[\w.-]+$/),ref:gU.string().min(1),paths:gU.array(LZ4).min(1),dir:gU.string().optional()}),s1$=[{set:"core",repo:"decocms/studio",ref:"main",paths:[{from:"packages/sandbox/image/skills"}]},{set:"storefront",repo:"decocms/storefront-skills",ref:"main",paths:[{from:".claude-seo/skills"},{from:".claude-performance/skills"},{from:".claude-deco/skills"}]}],jZ4=gU.array(OZ4).refine(($)=>new Set($.map((Z)=>Z.set)).size===$.length,{message:"duplicate set names"});n1$=t1$(import.meta.dir,"../../../..")});function dD($){if(typeof $==="string")return $.length>0?[$]:[];if(Array.isArray($))return $.flatMap(dD);if($!==null&&typeof $==="object")return Object.values($).flatMap(dD);return[]}var b0;var S5=L(()=>{b0=class b0 extends Error{provider;status;retryAfterMs;constructor($){super($.message,{cause:$.cause});this.name="GitProviderError",this.provider=$.provider,this.status=$.status,this.retryAfterMs=$.retryAfterMs??null}get isRateLimited(){return this.status===429||this.retryAfterMs!==null}get isAuthFailure(){return this.status===401||this.status===403}}});import{sql as Uw}from"kysely";function Kr0($){if($===null)return null;return $ instanceof Date?$.toISOString():String($)}function pH($){return{organizationId:$.organization_id,volume:$.volume,path:$.path,parent:$.parent,kind:$.kind,contentHash:$.content_hash,size:Number($.size),seq:String($.seq),deletedAt:Kr0($.deleted_at),createdBy:$.created_by,createdAt:Kr0($.created_at)??"",updatedBy:$.updated_by,updatedAt:Kr0($.updated_at)??"",threadId:$.thread_id,readPublic:$.read_public,shareMode:!$.read_public?"private":$.share_password_hash?"password":"public"}}class ha{db;constructor($){this.db=$}async putFile($){let Z=new Date,Q=$.threadId??null,Y=await this.db.insertInto("org_fs_entry").values({organization_id:$.organizationId,volume:$.volume,path:$.path,parent:$.parent,kind:"file",content_hash:$.contentHash,size:$.size,deleted_at:null,created_by:$.actor,created_at:Z,updated_by:$.actor,updated_at:Z,thread_id:Q}).onConflict((X)=>X.columns(["organization_id","volume","path"]).doUpdateSet({kind:"file",content_hash:$.contentHash,size:$.size,deleted_at:null,updated_by:$.actor,updated_at:Z,seq:V30,read_public:Uw`case when org_fs_entry.deleted_at is not null then false else org_fs_entry.read_public end`,thread_id:Uw`coalesce(cast(${Q} as text), org_fs_entry.thread_id)`})).returning(nH).executeTakeFirstOrThrow();return pH(Y)}async putDir($){let Z=new Date;await this.db.insertInto("org_fs_entry").values({organization_id:$.organizationId,volume:$.volume,path:$.path,parent:$.parent,kind:"dir",content_hash:null,size:0,deleted_at:null,created_by:$.actor,created_at:Z,updated_by:$.actor,updated_at:Z}).onConflict((Q)=>Q.columns(["organization_id","volume","path"]).where("org_fs_entry.deleted_at","is not",null).doUpdateSet({kind:"dir",content_hash:null,size:0,deleted_at:null,updated_by:$.actor,updated_at:Z,seq:V30,read_public:Uw`case when org_fs_entry.deleted_at is not null then false else org_fs_entry.read_public end`})).execute()}async get($,Z,Q){let Y=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("path","=",Q).where("deleted_at","is",null).select(nH).executeTakeFirst();return Y?pH(Y):null}async listDir($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("parent","=",Q).where("deleted_at","is",null).select(nH).orderBy("path","asc").execute()).map((X)=>pH(X))}async listVolumeDirs($,Z){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("deleted_at","is",null).select(nH).execute()).map((Y)=>pH(Y))}async listVolumeFiles($,Z){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).select(nH).execute()).map((Y)=>pH(Y))}async listSubtreeFiles($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).where("path","like",`${ga(Q)}/%`).select(nH).execute()).map((X)=>pH(X))}async listSubtreeDirs($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("deleted_at","is",null).where("path","like",`${ga(Q)}/%`).select(nH).execute()).map((X)=>pH(X))}async tombstone($,Z,Q,Y){await this.db.updateTable("org_fs_entry").set({deleted_at:new Date,updated_by:Y,updated_at:new Date,seq:V30}).where("organization_id","=",$).where("volume","=",Z).where("path","=",Q).where("deleted_at","is",null).execute()}async tombstoneSubtree($,Z,Q,Y){await this.db.updateTable("org_fs_entry").set({deleted_at:new Date,updated_by:Y,updated_at:new Date,seq:V30}).where("organization_id","=",$).where("volume","=",Z).where("deleted_at","is",null).where((X)=>X.or([X("path","=",Q),X("path","like",`${ga(Q)}/%`)])).execute()}async setShareMode($){let Z=new Date,Q=await this.db.updateTable("org_fs_entry").set({read_public:$.readPublic,share_password_hash:$.passwordHash,share_secret:$.shareSecret,updated_by:$.actor,updated_at:Z}).where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("path","=",$.path).where("deleted_at","is",null).returning(nH).executeTakeFirst();return Q?pH(Q):null}async resolveGoverningShare($){if($.candidatePaths.length===0)return null;let Z=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("read_public","=",!0).where("deleted_at","is",null).where("path","in",$.candidatePaths).select(["path","share_password_hash","share_secret"]).execute();if(Z.length===0)return null;Z.sort((Y,X)=>X.path.length-Y.path.length);let Q=Z[0];return{path:Q.path,passwordHash:Q.share_password_hash,secret:Q.share_secret}}async hasPublicAncestorDir($,Z,Q){if(Q.length===0)return!1;return!!await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("read_public","=",!0).where("deleted_at","is",null).where("path","in",Q).select("path").limit(1).executeTakeFirst()}async publicDirPaths($){if($.paths.length===0)return[];return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("kind","=","dir").where("read_public","=",!0).where("deleted_at","is",null).where("path","in",$.paths).select("path").execute()).map((Q)=>Q.path)}async usage($,Z){let Q=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).select((Y)=>[Y.fn.countAll().as("files"),Y.fn.coalesce(Y.fn.sum("size"),Uw`0`).as("bytes")]).executeTakeFirst();return{files:Number(Q?.files??0),bytes:Number(Q?.bytes??0)}}async liveFilePaths($){if($.paths.length===0)return[];return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("kind","=","file").where("deleted_at","is",null).where("path","in",$.paths).select(["path"]).execute()).map((Q)=>Q.path)}async recentFiles($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("kind","=","file").where("deleted_at","is",null).select(nH).orderBy("seq","desc").limit($.limit).execute()).map((Q)=>pH(Q))}async searchFiles($){if($.volumes&&$.volumes.length===0)return[];let Z=ga($.query),Q=this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("kind","=","file").where("deleted_at","is",null);if(Z)Q=Q.where("path","ilike",`%${Z}%`);if($.volumes)Q=Q.where("volume","in",$.volumes);if($.pathPrefix)Q=Q.where("path","like",`${ga($.pathPrefix)}/%`);if($.beforeSeq)Q=Q.where("seq","<",Uw`cast(${$.beforeSeq} as bigint)`);return(await Q.select(nH).orderBy("seq","desc").limit($.limit).execute()).map((X)=>pH(X))}async changesSince($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("seq",">",Uw`cast(${$.sinceSeq} as bigint)`).select(nH).orderBy("seq","asc").limit($.limit).execute()).map((Q)=>pH(Q))}async latestSeq($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).select(Uw`max(seq)`.as("seq")).executeTakeFirst())?.seq??"0"}}function ga($){return $.replace(/[\\%_]/g,"\\$&")}var nH,V30;var Hr0=L(()=>{nH=["organization_id","volume","path","parent","kind","content_hash","size","seq","deleted_at","created_by","created_at","updated_by","updated_at","thread_id","read_public","share_password_hash"],V30=Uw`nextval('org_fs_entry_seq')`});import{createHash as EZ4}from"crypto";import{readdir as PZ4,readFile as zZ4,stat as AZ4}from"fs/promises";import{join as r1$}from"path";import{gunzipSync as TZ4}from"zlib";function Ur0($,Z,Q){let Y=Z,X=Z+Q;while(Y<X&&$[Y]!==0)Y++;return new TextDecoder().decode($.subarray(Z,Y))}function RZ4($,Z,Q){let Y=Ur0($,Z,Q).trim();return Y===""?0:Number.parseInt(Y,8)}function MZ4($){let Z=new Map,Q=0,Y=null,X=null;while(Q+512<=$.length){let J=$.subarray(Q,Q+512);if(Q+=512,J.every((N)=>N===0))break;let G=Ur0(J,0,100),W=Ur0(J,345,155);if(W)G=`${W}/${G}`;let K=RZ4(J,124,12),H=String.fromCharCode(J[156]??0),F=$.subarray(Q,Q+K);if(Q+=Math.ceil(K/512)*512,H==="L"){let N=new TextDecoder().decode(F),B=N.indexOf("\x00");Y=B===-1?N:N.slice(0,B);continue}if(H==="x"){let N=new TextDecoder().decode(F);X=/(?:^|\n)\d+ path=([^\n]*)\n/.exec(N)?.[1]??null;continue}if(H==="g")continue;let U=X??Y??G;if(Y=null,X=null,H==="0"||H==="\x00"||H==="")Z.set(U,new Uint8Array(F))}return Z}function VZ4($,Z,Q){let Y=encodeURIComponent(Z);if(!Q)return{url:`https://codeload.github.com/${$}/tar.gz/${Y}`,headers:{}};return{url:`https://api.github.com/repos/${$}/tarball/${Y}`,headers:{Authorization:`Bearer ${Q}`,Accept:"application/vnd.github+json"}}}function a1$($,Z){if($.length>kc)throw Error(`tarball for ${Z} exceeds ${kc} bytes`);let Q=MZ4(new Uint8Array(TZ4($,{maxOutputLength:qZ4}))),Y=new Map;for(let[X,J]of Q){let G=X.indexOf("/");if(G===-1)continue;let W=X.slice(G+1);if(W)Y.set(W,J)}return Y}function e1$($,Z,Q){if($>Z)throw Error(`tarball for ${Q} exceeds ${Z} bytes`)}async function IZ4($,Z){let Q=[],Y=0,X=$.getReader();try{while(!0){let{done:W,value:K}=await X.read();if(W)break;Y+=K.length,e1$(Y,kc,Z),Q.push(K)}}finally{await X.cancel().catch(()=>{}),X.releaseLock()}let J=new Uint8Array(Y),G=0;for(let W of Q)J.set(W,G),G+=W.length;return J}function $$$($){if($ instanceof Nr0)return $.status>=500||$.status===429;if($ instanceof b0)return $.status===0||$.status>=500||$.status===429;if($ instanceof Error&&/declares .* bytes|exceeds .* bytes/.test($.message))return!1;return!0}async function kZ4($,Z,Q){let{url:Y,headers:X}=VZ4($,Z,Q),J=`${$}@${Z}`,G=async()=>{let W=await fetch(Y,{headers:X,signal:AbortSignal.timeout(60000)});if(!W.ok)throw await W.body?.cancel().catch(()=>{}),new Nr0(W.status,`tarball fetch failed for ${J}: HTTP ${W.status}`);let K=Number(W.headers.get("content-length")??0);if(K>kc)throw Error(`tarball for ${J} declares ${K} bytes (cap ${kc})`);let H=new Uint8Array(await W.arrayBuffer());return e1$(H.length,kc,J),H};try{let W=await e$(G,{maxAttempts:3,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:$$$});return a1$(W,J)}catch(W){if(W instanceof e6)throw W.cause instanceof Error?W.cause:W;throw W}}async function CZ4($,Z){let Q=new Map;for(let{from:Y}of Z){let X=r1$($,Y);for(let J of await PZ4(X,{recursive:!0})){let G=r1$(X,J);if(!(await AZ4(G)).isFile())continue;Q.set(Y?`${Y}/${J}`:J,new Uint8Array(await zZ4(G)))}}return Q}async function SZ4($,Z){if($.dir)return CZ4($.dir,$.paths);if(!Z.tarball)return kZ4($.repo,$.ref,Z.authToken);let Q=Z.tarball,Y=`${$.repo}@${$.ref}`,X;try{X=await e$(()=>Q(),{maxAttempts:3,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:$$$})}catch(J){throw J instanceof e6&&J.cause instanceof Error?J.cause:J}if(!X)throw Error(`tarball not found for ${Y}`);return a1$(await IZ4(X,Y),Y)}function _Z4($,Z){let Q=new Map;for(let{from:Y,to:X}of Z){let J=Y===""?"":`${Y.replace(/\/+$/,"")}/`;for(let[G,W]of $){if(!G.startsWith(J))continue;let K=G.slice(J.length);if(!K)continue;let H=N5(X?`${X}/${K}`:K);if(H)Q.set(H,W)}}return Q}function vZ4($,Z){let Q=new Set;for(let J of $){let G=J.split("/");for(let W=1;W<G.length;W++)Q.add(G.slice(0,W).join("/"))}let Y=[...Z].filter((J)=>!Q.has(J)).sort((J,G)=>J.length-G.length),X=[];for(let J of Y)if(!X.some((G)=>J.startsWith(`${G}/`)))X.push(J);return X}function bZ4($){return EZ4("sha256").update($).digest("hex")}function xZ4($){return $.manifestHash===$.hash&&$.storedPaths.has($.path)}async function fZ4($,Z){let Q=R30(Z),Y=new Set,X;do{let J=await $.list({prefix:Q,continuationToken:X});for(let G of J.objects)Y.add(G.key.slice(Q.length));X=J.nextContinuationToken}while(X);return Y}async function Br0($,Z){let{orgId:Q,volume:Y,source:X}=Z,J=XJ(),G=J?T3(J,Q):new eW(Q,Z.baseUrl),W=new ha($),K=new QK(G,W,Q),H=_Z4(await SZ4(X,Z),X.paths),F=new Map((await W.listVolumeFiles(Q,Y)).map((j)=>[j.path,j.contentHash]));if(H.size===0&&F.size>0)throw Error(`volume "${Y}" resolved 0 files from ${X.repo}@${X.ref} `+`(check paths config) \u2014 refusing to delete the ${F.size} existing files`);let U=0;for(let j of F.keys()){if(H.has(j))continue;await K.delete(Y,j,{actor:Fr0}),U++}let N=await W.listVolumeDirs(Q,Y);for(let j of vZ4(H.keys(),N.map((w)=>w.path)))await K.delete(Y,j,{actor:Fr0});let B=0,D=0,O=await fZ4(G,Y);for(let[j,w]of H){if(xZ4({hash:bZ4(w),manifestHash:F.get(j),storedPaths:O,path:j})){D++;continue}await K.write(Y,j,w,{actor:Fr0,contentType:x7(j),skipVolumeQuota:Z.skipVolumeQuota}),B++}return{written:B,deleted:U,unchanged:D}}async function yZ4($,Z,Q){let Y=await Br0($,{orgId:fa,baseUrl:Q.baseUrl,volume:Hw(Z.set),source:Z,skipVolumeQuota:!0});return{set:Z.set,...Y}}async function Dr0($,Z,Q){try{return await yZ4($,Z,Q)}catch(Y){return{set:Z.set,error:Y instanceof Error?Y.message:String(Y)}}}async function Z$$($,Z){let Q=[];for(let Y of XK())Q.push(await Dr0($,Y,Z));return Q}var Fr0="system:skill-set-sync",kc=209715200,qZ4=1073741824,Nr0;var I30=L(()=>{p$();S5();Hr0();Mc();Ww();iH();yU();YY();Fw();Nr0=class Nr0 extends Error{status;constructor($,Z){super(Z);this.status=$;this.name="TarballHttpError"}}});import{DBOS as k30,SchedulerMode as gZ4}from"@dbos-inc/dbos-sdk";function Q$$($){Lr0=$}function uZ4(){if(!Lr0)throw Error("[org-fs] public-sets sync runtime not initialized \u2014 setPublicSetsSyncRuntime() must run before the workflow fires");return Lr0}async function lZ4($,Z){for(let Q of XK()){let Y=await k30.runStep(()=>{let X=uZ4();return Dr0(X.db,Q,{baseUrl:X.baseUrl})},{name:`syncPublicSet:${Q.set}`});if("error"in Y)console.warn(`[org-fs] public set "${Y.set}" sync failed: ${Y.error}`);else if(Y.written||Y.deleted)console.log(`[org-fs] public set "${Y.set}" synced: +${Y.written} -${Y.deleted} (=${Y.unchanged})`)}}function Y$$(){if(ua)return;ua=k30.registerWorkflow(lZ4,{name:"publicSetsSyncWorkflow"}),k30.registerScheduled(ua,{name:"publicSetsSyncWorkflow",crontab:hZ4,mode:gZ4.ExactlyOncePerIntervalWhenActive})}async function X$$(){if(XK().length===0||!ua)return;let $=new Date,Z=`public-sets-sync-boot:${$.toISOString().slice(0,13)}`;await k30.startWorkflow(ua,{workflowID:Z})($,$)}var hZ4="4,14,24,34,44,54 * * * *",Lr0=null,ua=null;var J$$=L(()=>{Fw();I30()});import{createHash as G$$}from"crypto";class Or0{db;vault;constructor($,Z){this.db=$;this.vault=Z}async upsert($,Z){let Q=new Date,Y={encrypted_auth:await this.vault.encrypt(Z),auth_hash:G$$("sha256").update(Z).digest("hex"),created_at:Q};return await this.db.insertInto("codex_subscriptions").values({user_id:$,...Y}).onConflict((X)=>X.column("user_id").doUpdateSet(Y)).execute(),{linkedAt:Q.toISOString(),expiresAt:null}}async find($){let Z=await this.db.selectFrom("codex_subscriptions").select("created_at").where("user_id","=",$).executeTakeFirst();return Z?{linkedAt:new Date(Z.created_at).toISOString(),expiresAt:null}:null}async findLiveToken($){let Z=await this.db.selectFrom("codex_subscriptions").select("encrypted_auth").where("user_id","=",$).executeTakeFirst();return Z?this.vault.decrypt(Z.encrypted_auth):null}async sync($,Z,Q){return(await this.db.updateTable("codex_subscriptions").set({encrypted_auth:await this.vault.encrypt(Q),auth_hash:G$$("sha256").update(Q).digest("hex")}).where("user_id","=",$).where("auth_hash","=",Z).executeTakeFirst()).numUpdatedRows>0n}async delete($){await this.db.deleteFrom("codex_subscriptions").where("user_id","=",$).execute()}}var W$$=()=>{};import{jwtVerify as cZ4,SignJWT as K$$}from"jose";import{randomBytes as mZ4}from"crypto";function H$$(){if(la)return la;let $=B0(),Z=$.studioJwtSecret??$.betterAuthSecret;if(Z)la=new TextEncoder().encode(Z);else console.warn("STUDIO_JWT_SECRET not set - generating random secret (not persistent)"),la=new Uint8Array(mZ4(32));return la}async function F$$($,Z="5m"){let Q=H$$();return await new K$$($).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Z).sign(Q)}async function jr0($){try{let Z=H$$(),{payload:Q}=await cZ4($,Z);return Q}catch{return}}async function NQ($,Z,Q=3600){let Y=B0(),X=Y.plansEnabled?Y.studioJwtSecret:Y.studioJwtSecret??Y.betterAuthSecret;if(!X)throw Error(Y.plansEnabled?"STUDIO_JWT_SECRET (or MESH_JWT_SECRET) is required to mint gateway JWTs when STUDIO_PLANS_ENABLED is set \u2014 BETTER_AUTH_SECRET is deliberately not a fallback, see resolve-config":"A deterministic JWT secret is required to mint gateway JWTs \u2014 set STUDIO_JWT_SECRET or BETTER_AUTH_SECRET");let J=new TextEncoder().encode(X);return await new K$$({iss:"mesh",sub:$,...Z&&{email:Z}}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1000)+Q).sign(J)}var la=null;var tH=L(()=>{u1()});import{createCipheriv as dZ4,createDecipheriv as iZ4,createHash as pZ4,randomBytes as U$$}from"crypto";class GJ{key;constructor($){if(Buffer.from($,"base64").length===D$$)this.key=Buffer.from($,"base64");else this.key=pZ4("sha256").update($).digest()}async encrypt($){let Z=U$$(ca),Q=dZ4(N$$,this.key,Z),Y=Q.update($,"utf8");Y=Buffer.concat([Y,Q.final()]);let X=Q.getAuthTag();return Buffer.concat([Z,X,Y]).toString("base64")}async decrypt($){let Z=Buffer.from($,"base64"),Q=Z.subarray(0,ca),Y=Z.subarray(ca,ca+B$$),X=Z.subarray(ca+B$$),J=iZ4(N$$,this.key,Q);J.setAuthTag(Y);let G=J.update(X);return G=Buffer.concat([G,J.final()]),G.toString("utf8")}static generateKey(){return U$$(D$$).toString("base64")}}var N$$="aes-256-gcm",ca=16,B$$=16,D$$=32;var Nw=()=>{};function g9(){let $=B0();if($.baseUrl)return $.baseUrl;return`http://localhost:${$.port??3000}`}function L$$(){return`http://localhost:${B0().port??3000}`}function B5(){return B0().publicUrl??g9()}var H9=L(()=>{u1()});function Cc($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}import{z as nZ4}from"zod";function da($){return uA.safeParse($).success}function ia($,Z){let Q=Cc($??"").slice(0,ma).replace(/-+$/,"");return da(Q)?Q:Z}function wr0($,Z){if(Z<=1)return $;let Q=`-${Z}`;return`${$.slice(0,ma-Q.length).replace(/-+$/,"")}${Q}`}var tZ4=2,ma=64,oZ4,sZ4,uA;var Bw=L(()=>{oZ4=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,sZ4=new Set(["new","edit","settings","apps","projects","connections"]),uA=nZ4.string().min(tZ4).max(ma).regex(oZ4,"Use lowercase letters, digits, and single hyphens between them").refine(($)=>!$.includes("--"),"Use single hyphens").refine(($)=>!sZ4.has($),"This slug is reserved")});import{z as v0}from"zod";function zr0($){let Z=$?.homeTiles;if(Array.isArray(Z)&&Z.length>0)return Z;let Q=$?.homeTile;return Q?[Q]:[]}function iD($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z=$,Q={};for(let[Y,X]of Object.entries(Z)){if(!X||typeof X!=="object")continue;if(Y!=="agent-sandbox"&&Y!=="local-api")continue;try{Q[Y]=Ar0.parse(X)}catch{}}return Q}function Tr0($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z={};for(let[Q,Y]of Object.entries($)){if(!Y||typeof Y!=="object"||Array.isArray(Y))continue;let X={};for(let[J,G]of Object.entries(Y)){let W=iD(G);if(Object.keys(W).length>0)X[J]=W}if(Object.keys(X).length>0)Z[Q]=X}return Z}var w$$,Er0=500,E$$=200,rZ4=200,aZ4=20,eZ4=50,$74=100,Z74=20,Q74=100,P$$=300,Y74=100,X74=8192,z$$,J74,A$$,Pr0,G74,W74,T$$,O$$,K74,C30,j$$,H74,F74,S30,U74,N74,Ar0,q$$,B74,D74,L74,O74,j74,w74,E74,R$$,P74,qr0,oY,Rr0,_30,v30;var Mr0=L(()=>{Bw();w$$=v0.object({connection_id:v0.string().describe("Connection ID"),selected_tools:v0.array(v0.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:v0.array(v0.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:v0.array(v0.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),z$$=w$$.extend({selected_tools:v0.array(v0.string()).max(Er0).nullable().optional().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:v0.array(v0.string()).max(Er0).nullable().optional().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:v0.array(v0.string()).max(Er0).nullable().optional().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),J74=v0.object({connectionId:v0.string(),toolName:v0.string(),label:v0.string(),icon:v0.string().nullable().optional()}),A$$=v0.object({id:v0.string().describe("Stable id; used as React key and ?tab= value"),title:v0.string().describe("Tab label"),icon:v0.string().optional().describe("Optional lucide icon name"),view:v0.object({type:v0.literal("ext-app"),appId:v0.string(),args:v0.record(v0.string(),v0.unknown()).optional()})}),Pr0=v0.enum(["overview","reports","board","site-editor","assets","releases","hosting","e2e","analytics","cdn","automations","experiments"]),G74=v0.enum(["on","off"]),W74=v0.enum(["on","off","manual","auto"]),T$$=v0.object({defaultMainView:v0.object({type:v0.string(),id:v0.string().optional(),toolName:v0.string().optional()}).nullable().optional(),chatDefaultOpen:v0.boolean().nullable().optional(),cmsDefaultOpen:v0.boolean().nullable().optional(),cms:W74.nullable().optional().describe("How this agent offers content editing. Absent means on; the retired `manual` / `auto` read as on too."),sidebarViews:v0.array(Pr0).max(10).nullable().optional().describe("Deprecated layout-scoped sidebar selections. Read only as a fallback when metadata.sidebarViews is absent."),tabs:v0.array(A$$).max(Z74).optional()}),O$$=v0.object({tileId:v0.string().optional(),connectionId:v0.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:v0.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),toolName:v0.string().optional().describe("Tool name \u2014 identifies which tool's inputSchema to display when editing tile props."),toolInput:v0.record(v0.string(),v0.unknown()).optional().describe("User-configured input props passed to MCPAppRenderer when rendering the tile."),minHeight:v0.number().int().positive().optional(),maxHeight:v0.number().int().positive().optional()}),K74=v0.object({banner:v0.string().nullable().optional(),bannerColor:v0.string().nullable().optional(),icon:v0.string().nullable().optional(),themeColor:v0.string().nullable().optional(),pinnedViews:v0.array(J74).max($74).nullable().optional(),layout:T$$.nullable().optional(),homeTile:O$$.nullable().optional(),homeTiles:v0.array(O$$).max(aZ4).nullable().optional(),homePrompts:v0.array(v0.string()).max(eZ4).nullable().optional()});C30=/^[A-Za-z_][A-Za-z0-9_]*$/,j$$=v0.string().min(1).regex(C30,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),H74=v0.discriminatedUnion("kind",[v0.object({key:j$$,kind:v0.literal("literal"),value:v0.string().max(X74)}),v0.object({key:j$$,kind:v0.literal("secret"),secretId:v0.string().min(1)})]),F74=v0.object({selected:v0.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:v0.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:v0.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:v0.array(H74).max(Y74).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that Studio resolves via the credential vault before posting /_sandbox/config.")}),S30=v0.object({url:v0.string().describe("Repository URL, including its provider host"),owner:v0.string().describe("Repository owner"),name:v0.string().describe("Repository name"),installationId:v0.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:v0.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials."),repositoryId:v0.string().optional().describe("First-class repository (REPOSITORY_LINK) backing this binding. When set, credentials come from the repository's git provider account rather than connectionId.")}),U74=v0.enum(["agent-sandbox","local-api"]),N74={sandboxHandle:v0.string().describe("Provider-specific handle"),previewUrl:v0.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:v0.string().nullable().optional().describe("Direct sandbox API URL for runtimes that expose one. Equal to previewUrl for local-api; null/absent for AgentSandbox, which routes control traffic through hosted Studio."),createdAt:v0.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:v0.object({packageManager:v0.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:v0.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:v0.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},Ar0=v0.object(N74);q$$=v0.record(v0.string().describe("userId"),v0.record(v0.string().describe("branch"),v0.partialRecord(U74,Ar0)));B74=v0.object({id:v0.string().describe("Stable identifier for this knowledge file"),name:v0.string().describe("File name shown in the UI"),kind:v0.enum(["file","skill"]).optional().describe("'file' (a single document) or 'skill' (a Claude Code skill folder containing SKILL.md). Defaults to 'file'."),volume:v0.string().describe("Org filesystem (Library) volume the file lives in"),path:v0.string().describe("Path within the volume"),url:v0.string().describe("Same-origin URL to read the file (display/download)"),contentType:v0.string().nullable().optional().describe("MIME type, used to decide whether to inline the content"),size:v0.number().nullable().optional().describe("File size in bytes"),addedAt:v0.string().describe("ISO timestamp when the file was attached")}),D74=v0.array(B74).max(Q74).nullable().optional().describe("Files attached to the agent as reference knowledge. Surfaced in the system prompt: small text documents are inlined, others are listed as retrievable references."),L74=v0.enum(["smart","code-review","open"]),O74=L74.nullable().optional().describe("Controls when this code agent's changes may be published directly vs. requiring PR review. 'smart' (default) uses AI to judge per change; 'code-review' requires review for any code; 'open' allows direct publish always."),j74=v0.boolean().nullable().optional().describe("Enable Fast Preview (sandbox-less): render the draft instantly on the preview server's own page via a ?__draft pointer, with reads/writes served by the decofile API against GitHub. Requires previewServerUrl (or legacy productionUrl) to be set to take effect."),w74=v0.boolean().nullable().optional().describe("EXPERIMENTAL: with Fast Preview on, refresh content edits via an in-place /live/previews render (no commit, no reload) instead of a commit + re-navigation. Deco-runtime preview targets only. Requires fastPreview."),E74=v0.string().nullable().optional().describe("Preview server URL \u2014 the deployment the CMS preview renders against (often the live site, e.g. https://acme.com). Painted in the preview iframe, and the render target for Fast Preview drafts. Supersedes the legacy productionUrl key."),R$$=v0.object({branch:v0.string().describe("Git branch backing this release"),name:v0.string().describe('User-facing name, e.g. "Black Friday 2026"'),color:v0.string().describe("Dot color token shown in the version switcher"),createdBy:v0.string().optional().describe("User ID who created the release"),createdAt:v0.string().optional().describe("ISO 8601 creation timestamp")}),P74=v0.array(R$$).max(P$$).nullable().optional().describe("Curated list of named, branch-backed releases shown in the version switcher. The base branch ('No ar') is derived, not stored here."),qr0={instructions:v0.string().nullable().optional().describe("Instructions also used as system prompt"),subAgents:v0.array(v0.string()).max(rZ4).nullable().optional().describe("Allowlist of Virtual MCP (agent) or concrete MCP connection IDs this agent may delegate to via subtask. Concrete connections create ephemeral subagents. null/absent = all active org targets; empty array = itself only."),ui:K74.nullable().optional().describe("UI customization settings"),sidebarViews:v0.array(Pr0).max(10).nullable().optional().describe("Project views selected for the sidebar. Interpret as an exact list when sidebarViewsVersion is 1; unversioned values use legacy native-only semantics. Runtime presence gates still apply."),sidebarViewsVersion:v0.literal(1).optional().describe("Version 1 marks metadata.sidebarViews as an exact list that can disable legacy default rows."),repository:S30.nullable().optional().describe("Linked repository"),runtime:F74.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),knowledge:D74,siteSlug:v0.string().nullable().optional().describe("The project's site id (asset tenancy, CDN paths, site tokens). Set once when the site is created or imported; any write that would change it is refused."),publishPolicy:O74,previewServerUrl:E74,productionUrl:v0.string().nullable().optional().describe("Legacy key for previewServerUrl \u2014 still read as a fallback. New writes use previewServerUrl."),fieldDescriptionTooltips:v0.boolean().nullable().optional().describe("Blocks form: opt in to showing a field's schema description as a hover tooltip on its title, instead of the default inline text below the title."),fastPreview:j74,releases:P74,fastPreviewInPlace:w74},oY=v0.object({id:v0.string().describe("Unique identifier"),title:v0.string().describe("Human-readable name"),url_slug:v0.string().nullable().optional().describe("Name of the project in Studio URLs, unique in the organization"),description:v0.string().nullable().describe("Description"),icon:v0.string().nullable().describe("Icon URL"),created_at:v0.string().describe("Creation timestamp"),updated_at:v0.string().describe("Last update timestamp"),created_by:v0.string().describe("User ID who created this item"),updated_by:v0.string().optional().describe("User ID who last updated this item"),organization_id:v0.string().describe("Organization ID this item belongs to"),status:v0.enum(["active","inactive"]).describe("Current status"),pinned:v0.boolean().describe("Whether this space is pinned to the sidebar"),metadata:v0.object(qr0).extend({instructions:v0.string().nullable().describe("Instructions also used as system prompt"),sandboxMap:q$$.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:v0.array(w$$).describe("Connections with their selected tools, resources, and prompts")}),Rr0=v0.object({title:v0.string().min(1).max(120).describe("Short label shown on the chip"),description:v0.string().max(280).optional().describe("One-line subtitle shown under the title"),text:v0.string().min(1).max(4000).describe("The message sent to the agent when the prompt is clicked")}),_30=v0.object({title:v0.string().min(1).max(255).describe("Name for the virtual MCP"),description:v0.string().max(500).nullable().optional().describe("Optional description"),icon:v0.string().nullish().describe("Optional icon URL"),status:v0.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:v0.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:v0.object(qr0).loose().superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).nullable().optional().describe("Additional metadata including MCP server instructions"),connections:v0.array(z$$).max(E$$).describe("Connections to include/exclude (can be empty for exclusion mode)"),prompts:v0.array(Rr0).max(20).optional().describe("Optional kickstart prompts to seed on the agent. Each becomes a clickable conversation starter (icebreaker) on the agent. Author them from the agent's role and the tools it will have so they're coherent and immediately useful.")}),v30=v0.object({title:v0.string().min(1).max(255).optional().describe("New name"),url_slug:uA.nullish().describe("New URL slug. The old one keeps redirecting. Renaming does not change it. null keeps the current slug."),description:v0.string().max(500).nullable().optional().describe("New description (null to clear)"),icon:v0.string().nullish().describe("New icon URL"),status:v0.enum(["active","inactive"]).optional().describe("New status"),pinned:v0.boolean().optional().describe("Pin/unpin from sidebar"),metadata:v0.object(qr0).loose().superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).nullable().optional().describe("Additional metadata including MCP server instructions"),connections:v0.array(z$$).max(E$$).optional().describe("New connections (replaces existing)"),prompts:v0.array(Rr0).max(20).optional().describe("Replace the agent's kickstart prompts with this full set. Omit to leave them unchanged; pass an empty array to remove all. Each becomes a clickable conversation starter (icebreaker).")})});function V$$($){return $==="repository"||$==="additionalRepositories"?Ir0[$]:$}function I$$($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:null}function M$$($){let Z=I$$($),Q=Z&&Z.url===void 0&&typeof Z.owner==="string"&&/^[\w.-]+$/.test(Z.owner)&&typeof Z.name==="string"&&/^[\w.-]+$/.test(Z.name)?`https://github.com/${Z.owner}/${Z.name}`:void 0,Y=S30.safeParse(Q?{...Z,url:Q}:$);if(!Y.success)return null;try{return Vr0(Y.data)??null}catch{return null}}function oH($){let Z=I$$($);if(!Z)return null;let Q={...Z};for(let[Y,X]of Object.entries(Ir0)){if(delete Q[X],!(Y in Z)&&!(X in Z))continue;let J=Object.hasOwn(Z,Y)?Z[Y]:Z[X];if(Y==="repository")Q.repository=M$$(J);else Q.additionalRepositories=J===null?null:Array.isArray(J)?J.map(M$$).filter((G)=>G!==null):[]}return Q}function Vr0($){if($===null||$===void 0)return $;let Z=S30.parse($),Q=new URL(Z.url);if(Q.protocol!=="https:"&&Q.protocol!=="http:")throw Error("Repository URL must use HTTP or HTTPS");return Q.username="",Q.password="",Q.search="",Q.hash="",{...Z,url:Q.toString()}}function hU($){if(!$)return null;let Z={...$};for(let[Q,Y]of Object.entries(Ir0)){if(Object.hasOwn($,Y))throw Error(`Repository metadata must use ${Q}; ${Y} is a database compatibility key`);if(delete Z[Q],delete Z[Y],!Object.hasOwn($,Q))continue;let X=$[Q];if(Q==="repository")Z[Y]=Vr0(X);else if(X===null||X===void 0)Z[Y]=X;else{if(!Array.isArray(X))throw Error("Additional repositories must be an array");Z[Y]=X.map((J)=>Vr0(J))}}return Z}var Ir0;var pa=L(()=>{Mr0();Ir0={repository:"githubRepo",additionalRepositories:"githubRepos"}});import*as g from"zod/v4";function d$$($){if($.params.ref.type!=="ref/prompt")throw TypeError(`Expected CompleteRequestPrompt, but got ${$.params.ref.type}`)}function i$$($){if($.params.ref.type!=="ref/resource")throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${$.params.ref.type}`)}var Dw="2025-11-25",k$$="2025-03-26",Lw,Ow="io.modelcontextprotocol/related-task",x30="2.0",y7,C$$,S$$,Uh5,z74,A74,kr0,R3,na,_$$=($)=>na.safeParse($).success,XY,JK,GK,JY,f30,v$$,uU=($)=>v$$.safeParse($).success,b$$,x$$=($)=>b$$.safeParse($).success,Cr0,sH=($)=>Cr0.safeParse($).success,l1,Sr0,_c=($)=>Sr0.safeParse($).success,M3,Nh5,pD,T74,y30,q74,ta,Sc,f$$,R74,M74,V74,I74,k74,C74,g30,_r0=($)=>g30.safeParse($).success,S74,vr0,h30,y$$=($)=>h30.safeParse($).success,u30,_74,v74,l30,b74,oa,sa,x74,ra,nD,f74,aa,c30,m30,d30,Bh5,i30,p30,n30,g$$,h$$,u$$,br0,l$$,ea,vc,c$$,y74,jw,xr0,ww,fr0,yr0,g74,bc,gr0,hr0,h74,u74,l74,c74,m74,d74,i74,p74,Ew,ur0,n74,xc,lr0,cr0,mr0,t74,o74,s74,dr0,r74,ir0,pr0,a74,e74,t30,fc,$e,lU,Dh5,$Q4,Pw,nr0,m$$,Ze,ZQ4,tr0,QQ4,YQ4,XQ4,JQ4,GQ4,WQ4,KQ4,b30,HQ4,FQ4,or0,lA,Qe,UQ4,NQ4,BQ4,DQ4,LQ4,OQ4,jQ4,wQ4,EQ4,PQ4,zQ4,AQ4,TQ4,qQ4,RQ4,sr0,MQ4,VQ4,zw,IQ4,kQ4,CQ4,o30,rr0,SQ4,_Q4,ar0,vQ4,Lh5,Oh5,jh5,wh5,Eh5,Ph5,x1,p$$;var VZ=L(()=>{Lw=[Dw,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],y7=g.custom(($)=>$!==null&&(typeof $==="object"||typeof $==="function")),C$$=g.union([g.string(),g.number().int()]),S$$=g.string(),Uh5=g.looseObject({ttl:g.number().optional(),pollInterval:g.number().optional()}),z74=g.object({ttl:g.number().optional()}),A74=g.object({taskId:g.string()}),kr0=g.looseObject({progressToken:C$$.optional(),[Ow]:A74.optional()}),R3=g.object({_meta:kr0.optional()}),na=R3.extend({task:z74.optional()}),XY=g.object({method:g.string(),params:R3.loose().optional()}),JK=g.object({_meta:kr0.optional()}),GK=g.object({method:g.string(),params:JK.loose().optional()}),JY=g.looseObject({_meta:kr0.optional()}),f30=g.union([g.string(),g.number().int()]),v$$=g.object({jsonrpc:g.literal(x30),id:f30,...XY.shape}).strict(),b$$=g.object({jsonrpc:g.literal(x30),...GK.shape}).strict(),Cr0=g.object({jsonrpc:g.literal(x30),id:f30,result:JY}).strict();(function($){$[$.ConnectionClosed=-32000]="ConnectionClosed",$[$.RequestTimeout=-32001]="RequestTimeout",$[$.ParseError=-32700]="ParseError",$[$.InvalidRequest=-32600]="InvalidRequest",$[$.MethodNotFound=-32601]="MethodNotFound",$[$.InvalidParams=-32602]="InvalidParams",$[$.InternalError=-32603]="InternalError",$[$.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(l1||(l1={}));Sr0=g.object({jsonrpc:g.literal(x30),id:f30.optional(),error:g.object({code:g.number().int(),message:g.string(),data:g.unknown().optional()})}).strict(),M3=g.union([v$$,b$$,Cr0,Sr0]),Nh5=g.union([Cr0,Sr0]),pD=JY.strict(),T74=JK.extend({requestId:f30.optional(),reason:g.string().optional()}),y30=GK.extend({method:g.literal("notifications/cancelled"),params:T74}),q74=g.object({src:g.string(),mimeType:g.string().optional(),sizes:g.array(g.string()).optional(),theme:g.enum(["light","dark"]).optional()}),ta=g.object({icons:g.array(q74).optional()}),Sc=g.object({name:g.string(),title:g.string().optional()}),f$$=Sc.extend({...Sc.shape,...ta.shape,version:g.string(),websiteUrl:g.string().optional(),description:g.string().optional()}),R74=g.intersection(g.object({applyDefaults:g.boolean().optional()}),g.record(g.string(),g.unknown())),M74=g.preprocess(($)=>{if($&&typeof $==="object"&&!Array.isArray($)){if(Object.keys($).length===0)return{form:{}}}return $},g.intersection(g.object({form:R74.optional(),url:y7.optional()}),g.record(g.string(),g.unknown()).optional())),V74=g.looseObject({list:y7.optional(),cancel:y7.optional(),requests:g.looseObject({sampling:g.looseObject({createMessage:y7.optional()}).optional(),elicitation:g.looseObject({create:y7.optional()}).optional()}).optional()}),I74=g.looseObject({list:y7.optional(),cancel:y7.optional(),requests:g.looseObject({tools:g.looseObject({call:y7.optional()}).optional()}).optional()}),k74=g.object({experimental:g.record(g.string(),y7).optional(),sampling:g.object({context:y7.optional(),tools:y7.optional()}).optional(),elicitation:M74.optional(),roots:g.object({listChanged:g.boolean().optional()}).optional(),tasks:V74.optional(),extensions:g.record(g.string(),y7).optional()}),C74=R3.extend({protocolVersion:g.string(),capabilities:k74,clientInfo:f$$}),g30=XY.extend({method:g.literal("initialize"),params:C74}),S74=g.object({experimental:g.record(g.string(),y7).optional(),logging:y7.optional(),completions:y7.optional(),prompts:g.object({listChanged:g.boolean().optional()}).optional(),resources:g.object({subscribe:g.boolean().optional(),listChanged:g.boolean().optional()}).optional(),tools:g.object({listChanged:g.boolean().optional()}).optional(),tasks:I74.optional(),extensions:g.record(g.string(),y7).optional()}),vr0=JY.extend({protocolVersion:g.string(),capabilities:S74,serverInfo:f$$,instructions:g.string().optional()}),h30=GK.extend({method:g.literal("notifications/initialized"),params:JK.optional()}),u30=XY.extend({method:g.literal("ping"),params:R3.optional()}),_74=g.object({progress:g.number(),total:g.optional(g.number()),message:g.optional(g.string())}),v74=g.object({...JK.shape,..._74.shape,progressToken:C$$}),l30=GK.extend({method:g.literal("notifications/progress"),params:v74}),b74=R3.extend({cursor:S$$.optional()}),oa=XY.extend({params:b74.optional()}),sa=JY.extend({nextCursor:S$$.optional()}),x74=g.enum(["working","input_required","completed","failed","cancelled"]),ra=g.object({taskId:g.string(),status:x74,ttl:g.union([g.number(),g.null()]),createdAt:g.string(),lastUpdatedAt:g.string(),pollInterval:g.optional(g.number()),statusMessage:g.optional(g.string())}),nD=JY.extend({task:ra}),f74=JK.merge(ra),aa=GK.extend({method:g.literal("notifications/tasks/status"),params:f74}),c30=XY.extend({method:g.literal("tasks/get"),params:R3.extend({taskId:g.string()})}),m30=JY.merge(ra),d30=XY.extend({method:g.literal("tasks/result"),params:R3.extend({taskId:g.string()})}),Bh5=JY.loose(),i30=oa.extend({method:g.literal("tasks/list")}),p30=sa.extend({tasks:g.array(ra)}),n30=XY.extend({method:g.literal("tasks/cancel"),params:R3.extend({taskId:g.string()})}),g$$=JY.merge(ra),h$$=g.object({uri:g.string(),mimeType:g.optional(g.string()),_meta:g.record(g.string(),g.unknown()).optional()}),u$$=h$$.extend({text:g.string()}),br0=g.string().refine(($)=>{try{return atob($),!0}catch{return!1}},{message:"Invalid Base64 string"}),l$$=h$$.extend({blob:br0}),ea=g.enum(["user","assistant"]),vc=g.object({audience:g.array(ea).optional(),priority:g.number().min(0).max(1).optional(),lastModified:g.iso.datetime({offset:!0}).optional()}),c$$=g.object({...Sc.shape,...ta.shape,uri:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),size:g.optional(g.number()),annotations:vc.optional(),_meta:g.optional(g.looseObject({}))}),y74=g.object({...Sc.shape,...ta.shape,uriTemplate:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),annotations:vc.optional(),_meta:g.optional(g.looseObject({}))}),jw=oa.extend({method:g.literal("resources/list")}),xr0=sa.extend({resources:g.array(c$$)}),ww=oa.extend({method:g.literal("resources/templates/list")}),fr0=sa.extend({resourceTemplates:g.array(y74)}),yr0=R3.extend({uri:g.string()}),g74=yr0,bc=XY.extend({method:g.literal("resources/read"),params:g74}),gr0=JY.extend({contents:g.array(g.union([u$$,l$$]))}),hr0=GK.extend({method:g.literal("notifications/resources/list_changed"),params:JK.optional()}),h74=yr0,u74=XY.extend({method:g.literal("resources/subscribe"),params:h74}),l74=yr0,c74=XY.extend({method:g.literal("resources/unsubscribe"),params:l74}),m74=JK.extend({uri:g.string()}),d74=GK.extend({method:g.literal("notifications/resources/updated"),params:m74}),i74=g.object({name:g.string(),description:g.optional(g.string()),required:g.optional(g.boolean())}),p74=g.object({...Sc.shape,...ta.shape,description:g.optional(g.string()),arguments:g.optional(g.array(i74)),_meta:g.optional(g.looseObject({}))}),Ew=oa.extend({method:g.literal("prompts/list")}),ur0=sa.extend({prompts:g.array(p74)}),n74=R3.extend({name:g.string(),arguments:g.record(g.string(),g.string()).optional()}),xc=XY.extend({method:g.literal("prompts/get"),params:n74}),lr0=g.object({type:g.literal("text"),text:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),cr0=g.object({type:g.literal("image"),data:br0,mimeType:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),mr0=g.object({type:g.literal("audio"),data:br0,mimeType:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),t74=g.object({type:g.literal("tool_use"),name:g.string(),id:g.string(),input:g.record(g.string(),g.unknown()),_meta:g.record(g.string(),g.unknown()).optional()}),o74=g.object({type:g.literal("resource"),resource:g.union([u$$,l$$]),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),s74=c$$.extend({type:g.literal("resource_link")}),dr0=g.union([lr0,cr0,mr0,s74,o74]),r74=g.object({role:ea,content:dr0}),ir0=JY.extend({description:g.string().optional(),messages:g.array(r74)}),pr0=GK.extend({method:g.literal("notifications/prompts/list_changed"),params:JK.optional()}),a74=g.object({title:g.string().optional(),readOnlyHint:g.boolean().optional(),destructiveHint:g.boolean().optional(),idempotentHint:g.boolean().optional(),openWorldHint:g.boolean().optional()}),e74=g.object({taskSupport:g.enum(["required","optional","forbidden"]).optional()}),t30=g.object({...Sc.shape,...ta.shape,description:g.string().optional(),inputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),y7).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()),outputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),y7).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()).optional(),annotations:a74.optional(),execution:e74.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),fc=oa.extend({method:g.literal("tools/list")}),$e=sa.extend({tools:g.array(t30)}),lU=JY.extend({content:g.array(dr0).default([]),structuredContent:g.record(g.string(),g.unknown()).optional(),isError:g.boolean().optional()}),Dh5=lU.or(JY.extend({toolResult:g.unknown()})),$Q4=na.extend({name:g.string(),arguments:g.record(g.string(),g.unknown()).optional()}),Pw=XY.extend({method:g.literal("tools/call"),params:$Q4}),nr0=GK.extend({method:g.literal("notifications/tools/list_changed"),params:JK.optional()}),m$$=g.object({autoRefresh:g.boolean().default(!0),debounceMs:g.number().int().nonnegative().default(300)}),Ze=g.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),ZQ4=R3.extend({level:Ze}),tr0=XY.extend({method:g.literal("logging/setLevel"),params:ZQ4}),QQ4=JK.extend({level:Ze,logger:g.string().optional(),data:g.unknown()}),YQ4=GK.extend({method:g.literal("notifications/message"),params:QQ4}),XQ4=g.object({name:g.string().optional()}),JQ4=g.object({hints:g.array(XQ4).optional(),costPriority:g.number().min(0).max(1).optional(),speedPriority:g.number().min(0).max(1).optional(),intelligencePriority:g.number().min(0).max(1).optional()}),GQ4=g.object({mode:g.enum(["auto","required","none"]).optional()}),WQ4=g.object({type:g.literal("tool_result"),toolUseId:g.string().describe("The unique identifier for the corresponding tool call."),content:g.array(dr0).default([]),structuredContent:g.object({}).loose().optional(),isError:g.boolean().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),KQ4=g.discriminatedUnion("type",[lr0,cr0,mr0]),b30=g.discriminatedUnion("type",[lr0,cr0,mr0,t74,WQ4]),HQ4=g.object({role:ea,content:g.union([b30,g.array(b30)]),_meta:g.record(g.string(),g.unknown()).optional()}),FQ4=na.extend({messages:g.array(HQ4),modelPreferences:JQ4.optional(),systemPrompt:g.string().optional(),includeContext:g.enum(["none","thisServer","allServers"]).optional(),temperature:g.number().optional(),maxTokens:g.number().int(),stopSequences:g.array(g.string()).optional(),metadata:y7.optional(),tools:g.array(t30).optional(),toolChoice:GQ4.optional()}),or0=XY.extend({method:g.literal("sampling/createMessage"),params:FQ4}),lA=JY.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens"]).or(g.string())),role:ea,content:KQ4}),Qe=JY.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(g.string())),role:ea,content:g.union([b30,g.array(b30)])}),UQ4=g.object({type:g.literal("boolean"),title:g.string().optional(),description:g.string().optional(),default:g.boolean().optional()}),NQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),minLength:g.number().optional(),maxLength:g.number().optional(),format:g.enum(["email","uri","date","date-time"]).optional(),default:g.string().optional()}),BQ4=g.object({type:g.enum(["number","integer"]),title:g.string().optional(),description:g.string().optional(),minimum:g.number().optional(),maximum:g.number().optional(),default:g.number().optional()}),DQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),default:g.string().optional()}),LQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),oneOf:g.array(g.object({const:g.string(),title:g.string()})),default:g.string().optional()}),OQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),enumNames:g.array(g.string()).optional(),default:g.string().optional()}),jQ4=g.union([DQ4,LQ4]),wQ4=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({type:g.literal("string"),enum:g.array(g.string())}),default:g.array(g.string()).optional()}),EQ4=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({anyOf:g.array(g.object({const:g.string(),title:g.string()}))}),default:g.array(g.string()).optional()}),PQ4=g.union([wQ4,EQ4]),zQ4=g.union([OQ4,jQ4,PQ4]),AQ4=g.union([zQ4,UQ4,NQ4,BQ4]),TQ4=na.extend({mode:g.literal("form").optional(),message:g.string(),requestedSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),AQ4),required:g.array(g.string()).optional()})}),qQ4=na.extend({mode:g.literal("url"),message:g.string(),elicitationId:g.string(),url:g.string().url()}),RQ4=g.union([TQ4,qQ4]),sr0=XY.extend({method:g.literal("elicitation/create"),params:RQ4}),MQ4=JK.extend({elicitationId:g.string()}),VQ4=GK.extend({method:g.literal("notifications/elicitation/complete"),params:MQ4}),zw=JY.extend({action:g.enum(["accept","decline","cancel"]),content:g.preprocess(($)=>$===null?void 0:$,g.record(g.string(),g.union([g.string(),g.number(),g.boolean(),g.array(g.string())])).optional())}),IQ4=g.object({type:g.literal("ref/resource"),uri:g.string()}),kQ4=g.object({type:g.literal("ref/prompt"),name:g.string()}),CQ4=R3.extend({ref:g.union([kQ4,IQ4]),argument:g.object({name:g.string(),value:g.string()}),context:g.object({arguments:g.record(g.string(),g.string()).optional()}).optional()}),o30=XY.extend({method:g.literal("completion/complete"),params:CQ4});rr0=JY.extend({completion:g.looseObject({values:g.array(g.string()).max(100),total:g.optional(g.number().int()),hasMore:g.optional(g.boolean())})}),SQ4=g.object({uri:g.string().startsWith("file://"),name:g.string().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),_Q4=XY.extend({method:g.literal("roots/list"),params:R3.optional()}),ar0=JY.extend({roots:g.array(SQ4)}),vQ4=GK.extend({method:g.literal("notifications/roots/list_changed"),params:JK.optional()}),Lh5=g.union([u30,g30,o30,tr0,xc,Ew,jw,ww,bc,u74,c74,Pw,fc,c30,d30,i30,n30]),Oh5=g.union([y30,l30,h30,vQ4,aa]),jh5=g.union([pD,lA,Qe,zw,ar0,m30,p30,nD]),wh5=g.union([u30,or0,sr0,_Q4,c30,d30,i30,n30]),Eh5=g.union([y30,l30,YQ4,d74,hr0,nr0,pr0,aa,VQ4]),Ph5=g.union([pD,vr0,rr0,ir0,ur0,xr0,fr0,gr0,lU,$e,m30,p30,nD]);x1=class x1 extends Error{constructor($,Z,Q){super(`MCP error ${$}: ${Z}`);this.code=$,this.data=Q,this.name="McpError"}static fromError($,Z,Q){if($===l1.UrlElicitationRequired&&Q){let Y=Q;if(Y.elicitations)return new p$$(Y.elicitations,Z)}return new x1($,Z,Q)}};p$$=class p$$ extends x1{constructor($,Z=`URL elicitation${$.length>1?"s":""} required`){super(l1.UrlElicitationRequired,Z,{elicitations:$})}get elicitations(){return this.data?.elicitations??[]}}});import{z as $8}from"zod";function o$$($){return $8.record($8.string(),$8.unknown()).nullable().refine((Z)=>Z===null||JSON.stringify(Z).length<=t$$,{message:`${$} must serialize to at most ${t$$} bytes`})}function cU($){return $!==null&&$!==void 0&&"command"in $}function yc($){if(!$||!$.startsWith("virtual://"))return null;return $.replace("virtual://","")}function gc($){return`virtual://${$}`}var s$$,n$$,bQ4,xQ4,fQ4,t$$=262144,sY,s30,r30;var r$$=L(()=>{Bw();VZ();s$$=$8.object({authorizationEndpoint:$8.string().url(),tokenEndpoint:$8.string().url(),introspectionEndpoint:$8.string().url().optional(),clientId:$8.string(),clientSecret:$8.string().optional(),scopes:$8.array($8.string()),grantType:$8.enum(["authorization_code","client_credentials"])}),n$$=$8.object({type:$8.literal("object"),properties:$8.record($8.string(),$8.unknown()).optional(),required:$8.array($8.string()).optional()}).catchall($8.unknown()),bQ4=t30.extend({inputSchema:n$$,outputSchema:n$$.optional()}),xQ4=$8.object({headers:$8.record($8.string(),$8.string()).optional()}),fQ4=$8.object({command:$8.string().describe("Command to run (e.g., 'npx', 'node')"),args:$8.array($8.string()).optional().describe("Command arguments"),cwd:$8.string().optional().describe("Working directory"),envVars:$8.record($8.string(),$8.string()).optional().describe("Environment variables (encrypted in storage)")});sY=$8.object({id:$8.string().describe("Unique identifier for the connection"),title:$8.string().describe("Human-readable name for the connection"),created_at:$8.string().describe("When the connection was created"),updated_at:$8.string().describe("When the connection was last updated"),created_by:$8.string().describe("User ID who created the connection"),updated_by:$8.string().optional().describe("User ID who last updated the connection"),organization_id:$8.string().describe("Organization ID this connection belongs to"),description:$8.string().nullable().describe("Description of the connection"),icon:$8.string().nullable().describe("Icon URL for the connection"),app_name:$8.string().nullable().describe("Associated app name"),app_id:$8.string().nullable().describe("Associated app ID"),slug:$8.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),url_slug:$8.string().nullable().optional().describe("Name of the connection in Studio URLs, unique in the organization. Set it to rename the URL; the old one keeps redirecting."),connection_type:$8.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:$8.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:$8.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:$8.union([fQ4,xQ4]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:s$$.nullable().describe("OAuth configuration"),configuration_state:o$$("configuration_state").describe("Configuration state (decrypted)"),configuration_scopes:$8.array($8.string()).nullable().optional().describe("Configuration scopes"),metadata:o$$("metadata").describe("Additional metadata (includes repository info)"),tools:$8.array(bQ4).nullable().describe("Discovered tools from MCP"),bindings:$8.array($8.string()).nullable().describe("Detected bindings"),status:$8.enum(["active","inactive","error"]).describe("Current status")}),s30=sY.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:$8.string().nullish()}),r30=sY.partial().extend({url_slug:uA.nullish()})});function cA($){return yQ4.has($)}function a$$($){return gQ4.has($)}var tZ,yQ4,gQ4,a30;var er0=L(()=>{tZ=["deco","anthropic","openrouter","llmapi","google","openai-compatible"],yQ4=new Set(tZ);gQ4=new Set(["anthropic","openrouter","deco"]);a30=[...tZ,"claude-code","codex"]});function $a0($,Z){return{id:crypto.randomUUID(),type:Ye.STEP,source:"decopilot",subject:$,data:{stepCount:Z},time:new Date().toISOString()}}function e30($,Z){return{id:crypto.randomUUID(),type:Ye.FINISH,source:"decopilot",subject:$,data:{status:Z},time:new Date().toISOString()}}function mU($,Z,Q){return{id:crypto.randomUUID(),type:Ye.THREAD_STATUS,source:"decopilot",subject:$,data:{status:Z,...Q?.messageId!==void 0&&{message_id:Q.messageId},...Q?.virtualMcpId!==void 0&&{virtual_mcp_id:Q.virtualMcpId},...Q?.createdBy!==void 0&&{created_by:Q.createdBy},...Q?.triggerId!==void 0&&{trigger_id:Q.triggerId},...Q?.title!==void 0&&{title:Q.title},...Q?.branch!==void 0&&{branch:Q.branch},...Q?.harnessId!==void 0&&{harness_id:Q.harnessId},...Q?.createdAt!==void 0&&{created_at:Q.createdAt},...Q?.updatedAt!==void 0&&{updated_at:Q.updatedAt},...Q?.metadata!==void 0&&{metadata:Q.metadata}},time:new Date().toISOString()}}var e$$,hQ4,Ye,uQ4;var $8$=L(()=>{e$$=["in_progress","requires_action","failed","completed"],hQ4=[...e$$,"expired"],Ye={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},uQ4=Object.values(Ye)});var $W0=L(()=>{r$$();Mr0();er0();$8$()});var dU=L(()=>{$W0()});import{lookup as lQ4}from"dns/promises";function Xe($,Z){if($===10)return!0;if($===172&&Z!==void 0&&Z>=16&&Z<=31)return!0;if($===192&&Z===168)return!0;if($===127)return!0;if($===169&&Z===254)return!0;if($===0)return!0;if($===100&&Z!==void 0&&Z>=64&&Z<=127)return!0;return!1}function Za0($){let Z=Number.parseInt($.padStart(4,"0"),16);return[Z>>8,Z&255]}function Z8$($){let Z=$.split(":").filter((Q)=>Q.length>0);if($.startsWith("2002:")&&Z.length>=2){let[Q,Y]=Za0(Z[1]);if(Xe(Q,Y))return!0}if($.startsWith("64:ff9b::")&&Z.length>=4){let[Q,Y]=Za0(Z[Z.length-2]);if(Xe(Q,Y))return!0}if($.startsWith("::")&&Z.length===2){let[Q,Y]=Za0(Z[0]);if(Xe(Q,Y))return!0}return!1}function ZW0($){try{let Q=new URL($).hostname.toLowerCase();if(Q==="localhost"||Q==="0.0.0.0"||Q.endsWith(".local")||Q.endsWith(".internal")||Q.endsWith(".localhost"))return!0;let Y=Q.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(Y){let[,X,J]=Y.map(Number);if(Xe(X,J))return!0}if(Q.startsWith("[")&&Q.endsWith("]")){let X=Q.slice(1,-1).toLowerCase();if(X==="::1"||X==="::")return!0;if(X.startsWith("::ffff:"))return!0;if(X.startsWith("fc")||X.startsWith("fd"))return!0;if(X.startsWith("fe80"))return!0;if(X.startsWith("100:"))return!0;if(X.startsWith("::1"))return!0;if(Z8$(X))return!0}return!1}catch{return!0}}function cQ4($){let Z=$.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(Z){let[,Y,X]=Z.map(Number);return Xe(Y,X)}let Q=$.toLowerCase();if(Q==="::1"||Q==="::")return!0;if(Q.startsWith("::ffff:"))return!0;if(Q.startsWith("fc")||Q.startsWith("fd"))return!0;if(Q.startsWith("fe80"))return!0;if(Q.startsWith("100:"))return!0;return Z8$(Q)}async function mQ4($,Z=async(Q)=>(await lQ4(Q,{all:!0})).map((Y)=>Y.address)){try{let Q=await Z($);return Q.length===0||Q.some(cQ4)}catch{return!0}}async function Aw($){if(ZW0($))return"URLs targeting private networks are not allowed";let Q=new URL($).hostname;if(/^\d+\.\d+\.\d+\.\d+$/.test(Q)||Q.startsWith("[")&&Q.endsWith("]"))return null;try{return await Qa0(mQ4(Q),5000,"DNS resolution timeout")?"URLs targeting private networks are not allowed":null}catch{return"URLs targeting private networks are not allowed"}}function Qa0($,Z,Q){let Y,X=new Promise((J,G)=>{Y=setTimeout(()=>G(Error(Q)),Z)});return Promise.race([$,X]).finally(()=>clearTimeout(Y))}function tD($=fetch){return async(Z,Q)=>{let Y=await $(Z,{...Q,redirect:"manual"});if(Y.status>=300&&Y.status<400)throw Error("Refusing to follow a redirect from the remote server");return Y}}var hc=()=>{};var Q8$="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";import{webcrypto as Y8$}from"crypto";function iQ4($){if(!mA||mA.length<$)mA=Buffer.allocUnsafe($*dQ4),Y8$.getRandomValues(mA),uc=0;else if(uc+$>mA.length)Y8$.getRandomValues(mA),uc=0;uc+=$}function QW0($=21){iQ4($|=0);let Z="";for(let Q=uc-$;Q<uc;Q++)Z+=Q8$[mA[Q]&63];return Z}var dQ4=128,mA,uc;var Ya0=()=>{};function c8($){return`${$}_${QW0()}`}var GY=L(()=>{Ya0()});function J8$($,Z){return{id:s8.SELF(Z),title:"Deco CMS",description:"The MCP for the CMS API",connection_type:"HTTP",connection_url:`${$}/mcp/self`,icon:"https://assets.decocache.com/mcp/09e44283-f47d-4046-955f-816d227c626f/app.png",app_name:"@deco/management-mcp",connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!0,type:"self"}}}function G8$($,Z){return{id:s8.DEV_ASSETS(Z),title:"Local Files",description:"Local file storage for development. Files are stored in /data/assets/.",connection_type:"HTTP",connection_url:`${$}/mcp/dev-assets`,icon:"https://api.iconify.design/lucide:folder.svg?color=%23888",app_name:"@deco/dev-assets-mcp",app_id:null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isFixed:!0,devOnly:!0,type:"dev-assets"}}}function iU($){return{is(Z){if(!Z)return null;if(!Z.startsWith($))return null;return Z.slice($.length)||null},get(Z){return`${$}${Z}`}}}function pQ4($){return{id:$.id,organization_id:$.organizationId,title:$.title,description:$.description,icon:$.icon,status:"active",created_at:new Date().toISOString(),updated_at:new Date().toISOString(),created_by:"system",updated_by:void 0,metadata:{instructions:$.instructions??null,...$.ui?{ui:$.ui}:{}},pinned:!1,connections:[]}}function Tw($){if(!$)return!1;try{return nQ4.has(new URL($).hostname)}catch{return!1}}function Ja0($){return pQ4({id:V3($),organizationId:$,title:"Super Agent",description:"Default agent that aggregates all organization connections",icon:tQ4,ui:{layout:{defaultMainView:{type:"overview"},chatDefaultOpen:!0}}})}function N8$($,Z,Q="https://reports.decocms.com/api/v2/mcp"){return{id:s8.REPORTS($),title:"Deco Score",description:"Your store's Deco Score",connection_type:"HTTP",connection_url:Q,icon:"https://github.com/decocms.png",app_name:"commerce-discovery",app_id:null,connection_token:Z,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!1,type:"commerce-discovery"}}}function B8$($,Z=s8.REPORTS($)){return{title:"Deco Score Agent",description:"Ask anything about your store's Deco Score",icon:"https://github.com/decocms.png",status:"active",pinned:!0,metadata:{type:"commerce-discovery",isDefault:!1,ui:{pinnedViews:[{connectionId:Z,toolName:"get_my_diagnostic",label:"Deco Score",icon:"https://github.com/decocms.png"}],layout:{defaultMainView:{type:"ext-apps",id:Z,toolName:"get_my_diagnostic"},chatDefaultOpen:!0}}},connections:[{connection_id:Z,selected_tools:null,selected_resources:null,selected_prompts:null}]}}function Ga0($){if(!$)return!1;return Object.values(lc).some((Z)=>Z.is($)!==null)}function rQ4($){if(!$)return!1;return sQ4.some((Z)=>Z.is($)!==null)}function XW0($){return!BQ($.id)&&!Ga0($.id)&&!rQ4($.id)}function D8$($){let Z=Ja0($);return{...Z,id:Z.id,connection_type:"VIRTUAL",connection_url:`virtual://${Z.id}`,app_name:"decopilot",app_id:"decopilot",connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!0,type:"decopilot"},tools:[],bindings:[]}}var s8,X8$="https://reports.decocms.com/api/v2/mcp",YW0="get_my_diagnostic",W8$,BQ,V3,nQ4,K8$,H8$,Xa0,tQ4="https://assets.decocache.com/decocms/fd07a578-6b1c-40f1-bc05-88a3b981695d/f7fc4ffa81aec04e37ae670c3cd4936643a7b269.png",oQ4="#6366f1",ph5,F8$,nh5,th5,U8$,oh5,cc,lc,pU,Wa0,sQ4;var L8$=L(()=>{s8={SELF:($)=>`${$}_self`,REGISTRY:($)=>`${$}_registry`,COMMUNITY_REGISTRY:($)=>`${$}_community-registry`,DEV_ASSETS:($)=>`${$}_dev-assets`,SITE_DIAGNOSTICS:($)=>`site-diagnostics_${$}`,REPORTS:($)=>`${$}_commerce-discovery`};W8$=iU("decopilot_"),BQ=W8$.is,V3=W8$.get,nQ4=new Set(["mcp.figma.com"]);K8$=iU("dev_"),H8$=K8$.get,Xa0=K8$.is,ph5=`https://api.iconify.design/lucide:file-search.svg?color=${encodeURIComponent(oQ4)}`;F8$=iU("site-diagnostics_"),nh5=F8$.is,th5=F8$.get,U8$=iU("commerce-discovery_"),oh5=U8$.is,cc=U8$.get;lc={AUTOMATION_MANAGER:iU("studio-automation-manager_"),CONNECTION_MANAGER:iU("studio-connection-manager_"),API_KEY_MANAGER:iU("studio-api-key-manager_"),STORE_MANAGER:iU("studio-store-manager_"),USAGE_MANAGER:iU("studio-usage-manager_")},pU={AUTOMATION_MANAGER:lc.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:lc.CONNECTION_MANAGER.get,API_KEY_MANAGER:lc.API_KEY_MANAGER.get,STORE_MANAGER:lc.STORE_MANAGER.get,USAGE_MANAGER:lc.USAGE_MANAGER.get};Wa0=["studio-agent-manager_","studio-task-manager_","studio-brand-manager_"],sQ4=Wa0.map(iU)});function aQ4($){return $.capabilities?.includes("decisions")===!0}function O8$($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function JY4($){return O8$($).includes("deepresearch")}function j8$($){let Z=O8$($);if(Z.includes("deepresearch"))return!1;return GY4.some((Q)=>Z.includes(Q))}function WY4($){return $.asyncResearch!==!0&&j8$($.modelId)}function KY4($){return $.asyncResearch===!0||JY4($.modelId)||j8$($.modelId)}function mc($,Z,Q,Y){for(let X of Q){let J=$.find((G)=>G.modelId===X);if(J)return{keyId:Z,modelId:J.modelId,title:J.title}}for(let X of Q){let J=$.find((G)=>G.modelId.includes(X));if(J)return{keyId:Z,modelId:J.modelId,title:J.title}}if(Y){let X=$.find(Y);if(X)return{keyId:Z,modelId:X.modelId,title:X.title}}return null}function w8$($,Z){let Q={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Y of $){let X=(Z[Y.id]??[]).filter((G)=>!aQ4(G)),J=Y.providerId;if(!Q.chat.fast)Q.chat.fast=mc(X,Y.id,eQ4[J]??[]);if(!Q.chat.smart)Q.chat.smart=mc(X,Y.id,$Y4[J]??[]);if(!Q.chat.thinking)Q.chat.thinking=mc(X,Y.id,ZY4[J]??[]);if(!Q.image)Q.image=mc(X,Y.id,QY4[J]??[],(G)=>G.capabilities?.includes("image")===!0&&!G.modelId.startsWith("openrouter/auto"));if(!Q.webSearch)Q.webSearch=mc(X,Y.id,YY4[J]??[],WY4);if(!Q.deepResearch)Q.deepResearch=mc(X,Y.id,XY4[J]??[],KY4)}return Q}var eQ4,$Y4,ZY4,QY4,YY4,XY4,GY4;var E8$=L(()=>{eQ4={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},$Y4={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},ZY4={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},QY4={openrouter:["google/gemini-3-pro-image","openai/gpt-5-image","google/gemini-2.5-flash-image"],deco:["google/gemini-3-pro-image","openai/gpt-5-image","google/gemini-2.5-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},YY4={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},XY4={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};GY4=["sonar","searchpreview","online"]});function JW0($){if(!$)return;let Z={};for(let Q in $){let Y=$[Q];if(typeof Y==="object"&&Y!==null){let X={};for(let J of HY4)if(J in Y)X[J]=Y[J];Z[Q]=X}}return Object.keys(Z).length>0?Z:void 0}var HY4;var P8$=L(()=>{HY4=["usage","cost","model"]});var q8=L(()=>{$W0();L8$();E8$();P8$()});function dA($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Y=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return Cc(Y)}catch{return Cc($.connection_url)}if($.title)return Cc($.title);return $.id??"unknown"}var GW0=()=>{};var dc=300000,qw=5000,WW0=1e4,Ka0=3,Ha0=30000,z8$=65000,KW0=1000,ic=3,A8$=5,T8$=60000,q8$=300000,Fa0=60000;function R8$(){if(oD.size<KW0)return;let $=null,Z=1/0;for(let[Q,Y]of oD)if(Y.lastFailureAt<Z)Z=Y.lastFailureAt,$=Q;if($)oD.delete($)}function M8$($){let Z=oD.get($);if(!Z)return R8$(),oD.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=ic};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=ic}}function Ua0($){let Z=oD.get($);if(Z){Z.disabled=!0;return}R8$(),oD.set($,{consecutiveFailures:ic,disabled:!0,lastFailureAt:Date.now()})}function V8$($){return oD.get($)?.disabled??!1}function I8$($){oD.delete($)}var oD;var k8$=L(()=>{oD=new Map});function Na0($){try{let Z=new URL($.url);if(Z.protocol!=="https:"&&Z.protocol!=="http:")return null;let Q=Z.pathname.replace(/\/+$/,"").replace(/\.git$/i,"");return Q?{host:Z.host.toLowerCase(),path:Q.slice(1)}:null}catch{return null}}function Je($){let Z=Na0($);return Z?`${Z.host}/${Z.path}`.toLowerCase():null}function sD($,Z){if($.repositoryId&&Z.repositoryId)return $.repositoryId===Z.repositoryId;let Q=Je($);return Q!==null&&Q===Je(Z)}function Rw($){let Z=$.startsWith("./")?$.slice(2):$;for(let Q of["/app/org/","org/"]){if(!Z.startsWith(Q))continue;let Y=Z.slice(Q.length);return Y.split("/").includes("..")?null:Y}return null}var rY="/app/org",aY="home";var XG=()=>{};var Mw="New chat";function S8$(){return`<platform>
|
|
79
|
+
`),_t1=!0}throw new rG0.CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.",{logger:$.logger,tryNextLink:!0})}return $.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),xd0($)()},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:Q,ssoAccountId:Y,ssoRegion:X,ssoRoleName:J,ssoSession:G}=$;if(!Q&&!Y&&!X&&!J&&!G)throw new rG0.CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:$.logger});let{fromSSO:W}=await Promise.resolve().then(() => (pi0(),ii0));return W($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:Q}=await Promise.resolve().then(() => (St1(),Ct1));return Q($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:Q}=await Promise.resolve().then(() => (tp0(),np0));return Q($)(Z)},async(Z)=>{$.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:Q}=await Promise.resolve().then(() => ($n0(),ep0));return Q($)(Z)},async()=>{return $.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await ol1($))()},async()=>{throw new rG0.CredentialsProviderError("Could not load credentials from any providers",{tryNextLink:!1,logger:$.logger})}],O94),O94=($)=>$?.expiration!==void 0&&$.expiration.getTime()-Date.now()<300000;var xt1=L(()=>{fd0();sl1();rG0=_(o5(),1),vt1=_(ZJ(),1)});var ft1=L(()=>{xt1()});var yt1=()=>{};var Pc,j94="AWS_S3_USE_ARN_REGION",w94="s3_use_arn_region",gt1;var ht1=L(()=>{Pc=_(mr(),1),gt1={environmentVariableSelector:($)=>Pc.booleanSelector($,j94,Pc.SelectorType.ENV),configFileSelector:($)=>Pc.booleanSelector($,w94,Pc.SelectorType.CONFIG),default:void 0}});var ut1=()=>{};var lt1=()=>{};var ct1=L(()=>{yt1();ht1();lt1();ut1()});class zc{bytes;constructor($){if(this.bytes=$,$.byteLength!==8)throw Error("Int64 buffers must be exactly 8 bytes")}static fromNumber($){if($>9223372036854776000||$<-9223372036854776000)throw Error(`${$} is too large (or, if negative, too small) to represent as an Int64`);let Z=new Uint8Array(8);for(let Q=7,Y=Math.abs(Math.round($));Q>-1&&Y>0;Q--,Y/=256)Z[Q]=Y;if($<0)mt1(Z);return new zc(Z)}valueOf(){let $=this.bytes.slice(0),Z=$[0]&128;if(Z)mt1($);return parseInt(dt1.toHex($),16)*(Z?-1:1)}toString(){return String(this.valueOf())}}function mt1($){for(let Z=0;Z<8;Z++)$[Z]^=255;for(let Z=7;Z>-1;Z--)if($[Z]++,$[Z]!==0)break}var dt1;var Qn0=L(()=>{dt1=_(wr(),1)});class Yn0{toUtf8;fromUtf8;constructor($,Z){this.toUtf8=$,this.fromUtf8=Z}format($){let Z=[];for(let X of Object.keys($)){let J=this.fromUtf8(X);Z.push(Uint8Array.from([J.byteLength]),J,this.formatHeaderValue($[X]))}let Q=new Uint8Array(Z.reduce((X,J)=>X+J.byteLength,0)),Y=0;for(let X of Z)Q.set(X,Y),Y+=X.byteLength;return Q}formatHeaderValue($){switch($.type){case"boolean":return Uint8Array.from([$.value?0:1]);case"byte":return Uint8Array.from([2,$.value]);case"short":let Z=new DataView(new ArrayBuffer(3));return Z.setUint8(0,3),Z.setInt16(1,$.value,!1),new Uint8Array(Z.buffer);case"integer":let Q=new DataView(new ArrayBuffer(5));return Q.setUint8(0,4),Q.setInt32(1,$.value,!1),new Uint8Array(Q.buffer);case"long":let Y=new Uint8Array(9);return Y[0]=5,Y.set($.value.bytes,1),Y;case"binary":let X=new DataView(new ArrayBuffer(3+$.value.byteLength));X.setUint8(0,6),X.setUint16(1,$.value.byteLength,!1);let J=new Uint8Array(X.buffer);return J.set($.value,3),J;case"string":let G=this.fromUtf8($.value),W=new DataView(new ArrayBuffer(3+G.byteLength));W.setUint8(0,7),W.setUint16(1,G.byteLength,!1);let K=new Uint8Array(W.buffer);return K.set(G,3),K;case"timestamp":let H=new Uint8Array(9);return H[0]=8,H.set(zc.fromNumber($.value.valueOf()).bytes,1),H;case"uuid":if(!V94.test($.value))throw Error(`Invalid UUID received: ${$.value}`);let F=new Uint8Array(17);return F[0]=9,F.set(Zw.fromHex($.value.replace(/\-/g,"")),1),F}}parse($){let Z={},Q=0;while(Q<$.byteLength){let Y=$.getUint8(Q++),X=this.toUtf8(new Uint8Array($.buffer,$.byteOffset+Q,Y));switch(Q+=Y,$.getUint8(Q++)){case 0:Z[X]={type:pt1,value:!0};break;case 1:Z[X]={type:pt1,value:!1};break;case 2:Z[X]={type:E94,value:$.getInt8(Q++)};break;case 3:Z[X]={type:P94,value:$.getInt16(Q,!1)},Q+=2;break;case 4:Z[X]={type:z94,value:$.getInt32(Q,!1)},Q+=4;break;case 5:Z[X]={type:A94,value:new zc(new Uint8Array($.buffer,$.byteOffset+Q,8))},Q+=8;break;case 6:let J=$.getUint16(Q,!1);Q+=2,Z[X]={type:T94,value:new Uint8Array($.buffer,$.byteOffset+Q,J)},Q+=J;break;case 7:let G=$.getUint16(Q,!1);Q+=2,Z[X]={type:q94,value:this.toUtf8(new Uint8Array($.buffer,$.byteOffset+Q,G))},Q+=G;break;case 8:Z[X]={type:R94,value:new Date(new zc(new Uint8Array($.buffer,$.byteOffset+Q,8)).valueOf())},Q+=8;break;case 9:let W=new Uint8Array($.buffer,$.byteOffset+Q,16);Q+=16,Z[X]={type:M94,value:`${Zw.toHex(W.subarray(0,4))}-${Zw.toHex(W.subarray(4,6))}-${Zw.toHex(W.subarray(6,8))}-${Zw.toHex(W.subarray(8,10))}-${Zw.toHex(W.subarray(10))}`};break;default:throw Error("Unrecognized header type tag")}}return Z}}var Zw,it1,pt1="boolean",E94="byte",P94="short",z94="integer",A94="long",T94="binary",q94="string",R94="timestamp",M94="uuid",V94;var Xn0=L(()=>{Qn0();Zw=_(wr(),1);(function($){$[$.boolTrue=0]="boolTrue",$[$.boolFalse=1]="boolFalse",$[$.byte=2]="byte",$[$.short=3]="short",$[$.integer=4]="integer",$[$.long=5]="long",$[$.byteArray=6]="byteArray",$[$.string=7]="string",$[$.timestamp=8]="timestamp",$[$.uuid=9]="uuid"})(it1||(it1={}));V94=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/});function ot1({byteLength:$,byteOffset:Z,buffer:Q}){if($<I94)throw Error("Provided message too short to accommodate event stream message overhead");let Y=new DataView(Q,Z,$),X=Y.getUint32(0,!1);if($!==X)throw Error("Reported message length does not match received message length");let J=Y.getUint32(tt1,!1),G=Y.getUint32(Qw,!1),W=Y.getUint32($-fA,!1),K=new nt1.Crc32().update(new Uint8Array(Q,Z,Qw));if(G!==K.digest())throw Error(`The prelude checksum specified in the message (${G}) does not match the calculated CRC32 checksum (${K.digest()})`);if(K.update(new Uint8Array(Q,Z+Qw,$-(Qw+fA))),W!==K.digest())throw Error(`The message checksum (${K.digest()}) did not match the expected value of ${W}`);return{headers:new DataView(Q,Z+Qw+fA,J),body:new Uint8Array(Q,Z+Qw+fA+J,X-J-(Qw+fA+fA))}}var nt1,tt1=4,Qw,fA=4,I94;var st1=L(()=>{nt1=_(QA(),1),Qw=tt1*2,I94=Qw+fA*2});class Jn0{headerMarshaller;messageBuffer;isEndOfStream;constructor($,Z){this.headerMarshaller=new Yn0($,Z),this.messageBuffer=[],this.isEndOfStream=!1}feed($){this.messageBuffer.push(this.decode($))}endOfStream(){this.isEndOfStream=!0}getMessage(){let $=this.messageBuffer.pop(),Z=this.isEndOfStream;return{getMessage(){return $},isEndOfStream(){return Z}}}getAvailableMessages(){let $=this.messageBuffer;this.messageBuffer=[];let Z=this.isEndOfStream;return{getMessages(){return $},isEndOfStream(){return Z}}}encode({headers:$,body:Z}){let Q=this.headerMarshaller.format($),Y=Q.byteLength+Z.byteLength+16,X=new Uint8Array(Y),J=new DataView(X.buffer,X.byteOffset,X.byteLength),G=new rt1.Crc32;return J.setUint32(0,Y,!1),J.setUint32(4,Q.byteLength,!1),J.setUint32(8,G.update(X.subarray(0,8)).digest(),!1),X.set(Q,12),X.set(Z,Q.byteLength+12),J.setUint32(Y-4,G.update(X.subarray(8,Y-4)).digest(),!1),X}decode($){let{headers:Z,body:Q}=ot1($);return{headers:this.headerMarshaller.parse(Z),body:Q}}formatHeaders($){return this.headerMarshaller.format($)}}var rt1;var at1=L(()=>{Xn0();st1();rt1=_(QA(),1)});var et1=()=>{};var Gn0;var $o1=L(()=>{Gn0=class Gn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.inputStream)yield this.options.decoder.decode($)}}});var Wn0;var Zo1=L(()=>{Wn0=class Wn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.messageStream)yield this.options.encoder.encode($);if(this.options.includeEndFrame)yield new Uint8Array(0)}}});var Kn0;var Qo1=L(()=>{Kn0=class Kn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.messageStream){let Z=await this.options.deserializer($);if(Z===void 0)continue;yield Z}}}});var Hn0;var Yo1=L(()=>{Hn0=class Hn0{options;constructor($){this.options=$}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let $ of this.options.inputStream)yield this.options.serializer($)}}});var Xo1=L(()=>{at1();Xn0();Qn0();et1();$o1();Zo1();Qo1();Yo1()});function Jo1($){let Z=0,Q=0,Y=null,X=null,J=(W)=>{if(typeof W!=="number")throw Error("Attempted to allocate an event message where size was not a number: "+W);Z=W,Q=4,Y=new Uint8Array(W),new DataView(Y.buffer).setUint32(0,W,!1)},G=async function*(){let W=$[Symbol.asyncIterator]();while(!0){let{value:K,done:H}=await W.next();if(H){if(!Z)return;else if(Z===Q)yield Y;else throw Error("Truncated event message received.");return}let F=K.length,U=0;while(U<F){if(!Y){let B=F-U;if(!X)X=new Uint8Array(4);let D=Math.min(4-Q,B);if(X.set(K.slice(U,U+D),Q),Q+=D,U+=D,Q<4)break;J(new DataView(X.buffer).getUint32(0,!1)),X=null}let N=Math.min(Z-Q,F-U);if(Y.set(K.slice(U,U+N),Q),Q+=N,U+=N,Z&&Z===Q)yield Y,Y=null,Z=0,Q=0}}};return{[Symbol.asyncIterator]:G}}function Go1($,Z){return async function(Q){let{value:Y}=Q.headers[":message-type"];if(Y==="error"){let X=Error(Q.headers[":error-message"].value||"UnknownError");throw X.name=Q.headers[":error-code"].value,X}else if(Y==="exception"){let X=Q.headers[":exception-type"].value,J={[X]:Q},G=await $(J);if(G.$unknown){let W=Error(Z(Q.body));throw W.name=X,W}throw G[X]}else if(Y==="event"){let X={[Q.headers[":event-type"].value]:Q},J=await $(X);if(J.$unknown)return;return J}else throw Error(`Unrecognizable event type: ${Q.headers[":event-type"].value}`)}}class Fn0{eventStreamCodec;utfEncoder;constructor({utf8Encoder:$,utf8Decoder:Z}){this.eventStreamCodec=new Jn0($,Z),this.utfEncoder=$}deserialize($,Z){let Q=Jo1($);return new Kn0({messageStream:new Gn0({inputStream:Q,decoder:this.eventStreamCodec}),deserializer:Go1(Z,this.utfEncoder)})}serialize($,Z){return new Wn0({messageStream:new Hn0({inputStream:$,serializer:Z}),encoder:this.eventStreamCodec,includeEndFrame:!0})}}var Wo1=L(()=>{Xo1()});var Ko1=()=>{};var Ho1=L(()=>{Wo1();Ko1()});async function*Fo1($){let Z=!1,Q=!1,Y=[];$.on("error",(X)=>{if(!Z)Z=!0;if(X)throw X}),$.on("data",(X)=>{Y.push(X)}),$.on("end",()=>{Z=!0});while(!Q){let X=await new Promise((J)=>setTimeout(()=>J(Y.shift()),0));if(X)yield X;Q=Z&&Y.length===0}}import{Readable as k94}from"stream";class Un0{universalMarshaller;constructor({utf8Encoder:$,utf8Decoder:Z}){this.universalMarshaller=new Fn0({utf8Decoder:Z,utf8Encoder:$})}deserialize($,Z){let Q=typeof $[Symbol.asyncIterator]==="function"?$:Fo1($);return this.universalMarshaller.deserialize(Q,Z)}serialize($,Z){return k94.from(this.universalMarshaller.serialize($,Z))}}var Nn0=L(()=>{Ho1()});var Uo1=($)=>new Un0($);var No1=L(()=>{Nn0()});var Bo1=L(()=>{Nn0();No1()});import{Writable as C94}from"stream";var Do1,Bn0;var Lo1=L(()=>{Do1=_(sQ(),1);Bn0=class Bn0 extends C94{hash;constructor($,Z){super(Z);this.hash=$}_write($,Z,Q){try{this.hash.update(Do1.toUint8Array($))}catch(Y){return Q(Y)}Q()}}});var Oo1=()=>{};var jo1=($,Z)=>{if(Z.readableFlowing!==null)throw Error("Unable to calculate hash for flowing readable stream");let Q=new $,Y=new Bn0(Q);return Z.pipe(Y),new Promise((X,J)=>{Z.on("error",(G)=>{Y.end(),J(G)}),Y.on("error",J),Y.on("finish",()=>{Q.digest().then(X).catch(J)})})};var wo1=L(()=>{Lo1()});var Eo1=L(()=>{Oo1();wo1()});var aG0,Po1,zo1,Ao1,To1,eG0,$30,Z30,qo1=($)=>{return{apiVersion:"2006-03-01",base64Decoder:$?.base64Decoder??eG0.fromBase64,base64Encoder:$?.base64Encoder??eG0.toBase64,disableHostPrefix:$?.disableHostPrefix??!1,endpointProvider:$?.endpointProvider??_J0,extensions:$?.extensions??[],getAwsChunkedEncodingStream:$?.getAwsChunkedEncodingStream??$30.getAwsChunkedEncodingStream,httpAuthSchemeProvider:$?.httpAuthSchemeProvider??Vg1,httpAuthSchemes:$?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:(Z)=>Z.getIdentityProvider("aws.auth#sigv4"),signer:new aG0.AwsSdkSigV4Signer},{schemeId:"aws.auth#sigv4a",identityProvider:(Z)=>Z.getIdentityProvider("aws.auth#sigv4a"),signer:new aG0.AwsSdkSigV4ASigner}],logger:$?.logger??new Ao1.NoOpLogger,protocol:$?.protocol??Po1.S3RestXmlProtocol,protocolSettings:$?.protocolSettings??{defaultNamespace:"com.amazonaws.s3",errorTypeRegistries:vg1,xmlNamespace:"http://s3.amazonaws.com/doc/2006-03-01/",version:"2006-03-01",serviceTarget:"AmazonS3"},sdkStreamMixin:$?.sdkStreamMixin??$30.sdkStreamMixin,serviceId:$?.serviceId??"S3",signerConstructor:$?.signerConstructor??zo1.SignatureV4MultiRegion,signingEscapePath:$?.signingEscapePath??!1,urlParser:$?.urlParser??To1.parseUrl,useArnRegion:$?.useArnRegion??void 0,utf8Decoder:$?.utf8Decoder??Z30.fromUtf8,utf8Encoder:$?.utf8Encoder??Z30.toUtf8}};var Ro1=L(()=>{Ad0();zd0();F1();aG0=_(iY(),1),Po1=_(U$(),1),zo1=_($c(),1),Ao1=_(p0(),1),To1=_(IU(),1),eG0=_(aJ(),1),$30=_(Vl(),1),Z30=_(sQ(),1)});var Mo1,Y30,Vo1,X30,Yw,Q30,J30,P3,G30,W30,Io1,ko1,Co1,So1=($)=>{W30.emitWarningIfUnsupportedVersion(process.version);let Z=ko1.resolveDefaultsModeConfig($),Q=()=>Z().then(W30.loadConfigsForDefaultMode),Y=qo1($);Mo1.emitWarningIfUnsupportedVersion(process.version);let X={profile:$?.profile,logger:Y.logger};return{...Y,...$,runtime:"node",defaultsMode:Z,authSchemePreference:$?.authSchemePreference??P3.loadConfig(Y30.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS,X),bodyLengthChecker:$?.bodyLengthChecker??Io1.calculateBodyLength,credentialDefaultProvider:$?.credentialDefaultProvider??bt1,defaultUserAgentProvider:$?.defaultUserAgentProvider??X30.createDefaultUserAgentProvider({serviceId:Y.serviceId,clientVersion:Hl1.version}),disableS3ExpressSessionAuth:$?.disableS3ExpressSessionAuth??P3.loadConfig(Vo1.NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS,X),eventStreamSerdeProvider:$?.eventStreamSerdeProvider??Uo1,maxAttempts:$?.maxAttempts??P3.loadConfig(J30.NODE_MAX_ATTEMPT_CONFIG_OPTIONS,$),md5:$?.md5??Q30.Hash.bind(null,"md5"),region:$?.region??P3.loadConfig(Yw.NODE_REGION_CONFIG_OPTIONS,{...Yw.NODE_REGION_CONFIG_FILE_OPTIONS,...X}),requestChecksumCalculation:$?.requestChecksumCalculation??P3.loadConfig(wk1,X),requestHandler:G30.NodeHttpHandler.create($?.requestHandler??Q),responseChecksumValidation:$?.responseChecksumValidation??P3.loadConfig(Pk1,X),retryMode:$?.retryMode??P3.loadConfig({...J30.NODE_RETRY_MODE_CONFIG_OPTIONS,default:async()=>(await Q()).retryMode||Co1.DEFAULT_RETRY_MODE},$),sha1:$?.sha1??Q30.Hash.bind(null,"sha1"),sha256:$?.sha256??Q30.Hash.bind(null,"sha256"),sigv4aSigningRegionSet:$?.sigv4aSigningRegionSet??P3.loadConfig(Y30.NODE_SIGV4A_CONFIG_OPTIONS,X),streamCollector:$?.streamCollector??G30.streamCollector,streamHasher:$?.streamHasher??jo1,useArnRegion:$?.useArnRegion??P3.loadConfig(gt1,X),useDualstackEndpoint:$?.useDualstackEndpoint??P3.loadConfig(Yw.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,X),useFipsEndpoint:$?.useFipsEndpoint??P3.loadConfig(Yw.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,X),userAgentAppId:$?.userAgentAppId??P3.loadConfig(X30.NODE_APP_ID_CONFIG_OPTIONS,X)}};var _o1=L(()=>{Kl1();ft1();ct1();S6();Bo1();Eo1();Ro1();Mo1=_(w9(),1),Y30=_(iY(),1),Vo1=_(U$(),1),X30=_(Wc(),1),Yw=_(ZG(),1),Q30=_(Kc(),1),J30=_(yH(),1),P3=_(fH(),1),G30=_(bj(),1),W30=_(p0(),1),Io1=_(Hc(),1),ko1=_(Fc(),1),Co1=_(ED(),1)});var vo1=($)=>{let{httpAuthSchemes:Z,httpAuthSchemeProvider:Q,credentials:Y}=$;return{setHttpAuthScheme(X){let J=Z.findIndex((G)=>G.schemeId===X.schemeId);if(J===-1)Z.push(X);else Z.splice(J,1,X)},httpAuthSchemes(){return Z},setHttpAuthSchemeProvider(X){Q=X},httpAuthSchemeProvider(){return Q},setCredentials(X){Y=X},credentials(){return Y}}},bo1=($)=>{return{httpAuthSchemes:$.httpAuthSchemes(),httpAuthSchemeProvider:$.httpAuthSchemeProvider(),credentials:$.credentials()}};var K30,H30,F30,xo1=($,Z)=>{let Q=Object.assign(K30.getAwsRegionExtensionConfiguration($),F30.getDefaultExtensionConfiguration($),H30.getHttpHandlerExtensionConfiguration($),vo1($));return Z.forEach((Y)=>Y.configure(Q)),Object.assign($,K30.resolveAwsRegionExtensionConfiguration(Q),F30.resolveDefaultRuntimeConfig(Q),H30.resolveHttpHandlerRuntimeConfig(Q),bo1(Q))};var fo1=L(()=>{K30=_(EA(),1),H30=_(t5(),1),F30=_(p0(),1)});var U30,yo1,go1,vU,N30,ho1,Ac,uo1,lo1,co1,B30,mo1,QY;var yA=L(()=>{Ok1();S6();zf1();Ad0();rJ0();N1();_o1();fo1();U30=_(vl(),1),yo1=_(bl(),1),go1=_(xl(),1),vU=_(U$(),1),N30=_(BA(),1),ho1=_(ZG(),1),Ac=_(v7(),1),uo1=_(cY(),1),lo1=_(sl(),1),co1=_(G1(),1),B30=_(yH(),1),mo1=_(p0(),1);QY=class QY extends mo1.Client{config;constructor(...[$]){let Z=So1($||{});super(Z);this.initConfig=Z;let Q=kg1(Z),Y=N30.resolveUserAgentConfig(Q),X=n_1(Y),J=B30.resolveRetryConfig(X),G=ho1.resolveRegionConfig(J),W=U30.resolveHostHeaderConfig(G),K=co1.resolveEndpointConfig(W),H=Pf1(K),F=Ig1(H),U=vU.resolveS3Config(F,{session:[()=>this,Za]}),N=xo1(U,$?.extensions||[]);this.config=N,this.middlewareStack.use(uo1.getSchemaSerdePlugin(this.config)),this.middlewareStack.use(N30.getUserAgentPlugin(this.config)),this.middlewareStack.use(B30.getRetryPlugin(this.config)),this.middlewareStack.use(lo1.getContentLengthPlugin(this.config)),this.middlewareStack.use(U30.getHostHeaderPlugin(this.config)),this.middlewareStack.use(yo1.getLoggerPlugin(this.config)),this.middlewareStack.use(go1.getRecursionDetectionPlugin(this.config)),this.middlewareStack.use(Ac.getHttpAuthSchemeEndpointRuleSetPlugin(this.config,{httpAuthSchemeParametersProvider:qg1,identityProviderConfigProvider:async(B)=>new Ac.DefaultIdentityProviderConfig({"aws.auth#sigv4":B.credentials,"aws.auth#sigv4a":B.credentials})})),this.middlewareStack.use(Ac.getHttpSigningPlugin(this.config)),this.middlewareStack.use(vU.getValidateBucketNamePlugin(this.config)),this.middlewareStack.use(Lk1(this.config)),this.middlewareStack.use(vU.getRegionRedirectMiddlewarePlugin(this.config)),this.middlewareStack.use(vU.getS3ExpressPlugin(this.config)),this.middlewareStack.use(vU.getS3ExpressHttpSigningPlugin(this.config))}destroy(){super.destroy()}}});var do1,io1,po1,Aa;var Dn0=L(()=>{N1();F1();do1=_(U$(),1),io1=_(G1(),1),po1=_(p0(),1);Aa=class Aa extends po1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[io1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),do1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","AbortMultipartUpload",{}).n("S3Client","AbortMultipartUploadCommand").sc(Gh1).build(){}});function S94($){return(Z)=>async(Q)=>{let Y={...Q.input},X=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(let J of X){let G=Y[J.target];if(G){let W;if(typeof G==="string")if(v94(G,$))W=$.base64Decoder(G);else W=$.utf8Decoder(G),Y[J.target]=$.base64Encoder(W);else W=ArrayBuffer.isView(G)?new Uint8Array(G.buffer,G.byteOffset,G.byteLength):new Uint8Array(G),Y[J.target]=$.base64Encoder(W);let K=new $.md5;K.update(W),Y[J.hash]=$.base64Encoder(await K.digest())}}return Z({...Q,input:Y})}}function v94($,Z){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test($))return!1;try{return Z.base64Decoder($).length===32}catch{return!1}}var _94,MZ=($)=>({applyToStack:(Z)=>{Z.add(S94($),_94)}});var rW=L(()=>{_94={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0}});var no1,to1,oo1,Ta;var Ln0=L(()=>{rW();N1();F1();no1=_(U$(),1),to1=_(G1(),1),oo1=_(p0(),1);Ta=class Ta extends oo1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[to1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),no1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CompleteMultipartUpload",{}).n("S3Client","CompleteMultipartUploadCommand").sc(Wh1).build(){}});var so1,ro1,ao1,On0;var jn0=L(()=>{rW();N1();F1();so1=_(U$(),1),ro1=_(G1(),1),ao1=_(p0(),1);On0=class On0 extends ao1.Command.classBuilder().ep({...L0,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}}).m(function($,Z,Q,Y){return[ro1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),so1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CopyObject",{}).n("S3Client","CopyObjectCommand").sc(Kh1).build(){}});function b94($){return(Z)=>async(Q)=>{let{CreateBucketConfiguration:Y}=Q.input,X=await $.region();if(!Y?.LocationConstraint&&!Y?.Location){if(X!=="us-east-1")Q.input.CreateBucketConfiguration=Q.input.CreateBucketConfiguration??{},Q.input.CreateBucketConfiguration.LocationConstraint=X}return Z(Q)}}var x94,eo1=($)=>({applyToStack:(Z)=>{Z.add(b94($),x94)}});var $s1=L(()=>{x94={step:"initialize",tags:["LOCATION_CONSTRAINT","CREATE_BUCKET_CONFIGURATION"],name:"locationConstraintMiddleware",override:!0}});var Zs1,Qs1,Ys1,wn0;var En0=L(()=>{$s1();N1();F1();Zs1=_(U$(),1),Qs1=_(G1(),1),Ys1=_(p0(),1);wn0=class wn0 extends Ys1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},DisableAccessPoints:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Qs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Zs1.getThrow200ExceptionsPlugin(Q),eo1(Q)]}).s("AmazonS3","CreateBucket",{}).n("S3Client","CreateBucketCommand").sc(Hh1).build(){}});var Xs1,Js1,Pn0;var zn0=L(()=>{S6();N1();F1();Xs1=_(G1(),1),Js1=_(p0(),1);Pn0=class Pn0 extends Js1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Xs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","CreateBucketMetadataConfiguration",{}).n("S3Client","CreateBucketMetadataConfigurationCommand").sc(Fh1).build(){}});var Gs1,Ws1,An0;var Tn0=L(()=>{S6();N1();F1();Gs1=_(G1(),1),Ws1=_(p0(),1);An0=class An0 extends Ws1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Gs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","CreateBucketMetadataTableConfiguration",{}).n("S3Client","CreateBucketMetadataTableConfigurationCommand").sc(Uh1).build(){}});var Ks1,Hs1,Fs1,qa;var qn0=L(()=>{rW();N1();F1();Ks1=_(U$(),1),Hs1=_(G1(),1),Fs1=_(p0(),1);qa=class qa extends Fs1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Hs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ks1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","CreateMultipartUpload",{}).n("S3Client","CreateMultipartUploadCommand").sc(Nh1).build(){}});var Us1,Ns1,Rn0;var Mn0=L(()=>{N1();F1();Us1=_(G1(),1),Ns1=_(p0(),1);Rn0=class Rn0 extends Ns1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Us1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketAnalyticsConfiguration",{}).n("S3Client","DeleteBucketAnalyticsConfigurationCommand").sc(Lh1).build(){}});var Bs1,Ds1,Vn0;var In0=L(()=>{N1();F1();Bs1=_(G1(),1),Ds1=_(p0(),1);Vn0=class Vn0 extends Ds1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Bs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucket",{}).n("S3Client","DeleteBucketCommand").sc(Dh1).build(){}});var Ls1,Os1,kn0;var Cn0=L(()=>{N1();F1();Ls1=_(G1(),1),Os1=_(p0(),1);kn0=class kn0 extends Os1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ls1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketCors",{}).n("S3Client","DeleteBucketCorsCommand").sc(Oh1).build(){}});var js1,ws1,Sn0;var _n0=L(()=>{N1();F1();js1=_(G1(),1),ws1=_(p0(),1);Sn0=class Sn0 extends ws1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[js1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketEncryption",{}).n("S3Client","DeleteBucketEncryptionCommand").sc(jh1).build(){}});var Es1,Ps1,vn0;var bn0=L(()=>{N1();F1();Es1=_(G1(),1),Ps1=_(p0(),1);vn0=class vn0 extends Ps1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Es1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketIntelligentTieringConfiguration",{}).n("S3Client","DeleteBucketIntelligentTieringConfigurationCommand").sc(wh1).build(){}});var zs1,As1,xn0;var fn0=L(()=>{N1();F1();zs1=_(G1(),1),As1=_(p0(),1);xn0=class xn0 extends As1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[zs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketInventoryConfiguration",{}).n("S3Client","DeleteBucketInventoryConfigurationCommand").sc(Eh1).build(){}});var Ts1,qs1,yn0;var gn0=L(()=>{N1();F1();Ts1=_(G1(),1),qs1=_(p0(),1);yn0=class yn0 extends qs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ts1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketLifecycle",{}).n("S3Client","DeleteBucketLifecycleCommand").sc(Ph1).build(){}});var Rs1,Ms1,hn0;var un0=L(()=>{N1();F1();Rs1=_(G1(),1),Ms1=_(p0(),1);hn0=class hn0 extends Ms1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Rs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetadataConfiguration",{}).n("S3Client","DeleteBucketMetadataConfigurationCommand").sc(zh1).build(){}});var Vs1,Is1,ln0;var cn0=L(()=>{N1();F1();Vs1=_(G1(),1),Is1=_(p0(),1);ln0=class ln0 extends Is1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Vs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetadataTableConfiguration",{}).n("S3Client","DeleteBucketMetadataTableConfigurationCommand").sc(Ah1).build(){}});var ks1,Cs1,mn0;var dn0=L(()=>{N1();F1();ks1=_(G1(),1),Cs1=_(p0(),1);mn0=class mn0 extends Cs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ks1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketMetricsConfiguration",{}).n("S3Client","DeleteBucketMetricsConfigurationCommand").sc(Th1).build(){}});var Ss1,_s1,in0;var pn0=L(()=>{N1();F1();Ss1=_(G1(),1),_s1=_(p0(),1);in0=class in0 extends _s1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ss1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketOwnershipControls",{}).n("S3Client","DeleteBucketOwnershipControlsCommand").sc(qh1).build(){}});var vs1,bs1,nn0;var tn0=L(()=>{N1();F1();vs1=_(G1(),1),bs1=_(p0(),1);nn0=class nn0 extends bs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[vs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketPolicy",{}).n("S3Client","DeleteBucketPolicyCommand").sc(Rh1).build(){}});var xs1,fs1,on0;var sn0=L(()=>{N1();F1();xs1=_(G1(),1),fs1=_(p0(),1);on0=class on0 extends fs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[xs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketReplication",{}).n("S3Client","DeleteBucketReplicationCommand").sc(Mh1).build(){}});var ys1,gs1,rn0;var an0=L(()=>{N1();F1();ys1=_(G1(),1),gs1=_(p0(),1);rn0=class rn0 extends gs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ys1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketTagging",{}).n("S3Client","DeleteBucketTaggingCommand").sc(Vh1).build(){}});var hs1,us1,en0;var $t0=L(()=>{N1();F1();hs1=_(G1(),1),us1=_(p0(),1);en0=class en0 extends us1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[hs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeleteBucketWebsite",{}).n("S3Client","DeleteBucketWebsiteCommand").sc(Ih1).build(){}});var ls1,cs1,ms1,mD;var Zt0=L(()=>{N1();F1();ls1=_(U$(),1),cs1=_(G1(),1),ms1=_(p0(),1);mD=class mD extends ms1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[cs1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ls1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").sc(kh1).build(){}});var ds1,is1,ps1,Qt0;var Yt0=L(()=>{S6();N1();F1();ds1=_(U$(),1),is1=_(G1(),1),ps1=_(p0(),1);Qt0=class Qt0 extends ps1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[is1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),ds1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObjects",{}).n("S3Client","DeleteObjectsCommand").sc(Ch1).build(){}});var ns1,ts1,os1,Xt0;var Jt0=L(()=>{N1();F1();ns1=_(U$(),1),ts1=_(G1(),1),os1=_(p0(),1);Xt0=class Xt0 extends os1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ts1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ns1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","DeleteObjectTagging",{}).n("S3Client","DeleteObjectTaggingCommand").sc(Sh1).build(){}});var ss1,rs1,Gt0;var Wt0=L(()=>{N1();F1();ss1=_(G1(),1),rs1=_(p0(),1);Gt0=class Gt0 extends rs1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ss1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","DeletePublicAccessBlock",{}).n("S3Client","DeletePublicAccessBlockCommand").sc(_h1).build(){}});var as1,es1,$r1,Kt0;var Ht0=L(()=>{N1();F1();as1=_(U$(),1),es1=_(G1(),1),$r1=_(p0(),1);Kt0=class Kt0 extends $r1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[es1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),as1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAbac",{}).n("S3Client","GetBucketAbacCommand").sc(vh1).build(){}});var Zr1,Qr1,Yr1,Ft0;var Ut0=L(()=>{N1();F1();Zr1=_(U$(),1),Qr1=_(G1(),1),Yr1=_(p0(),1);Ft0=class Ft0 extends Yr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Qr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Zr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAccelerateConfiguration",{}).n("S3Client","GetBucketAccelerateConfigurationCommand").sc(bh1).build(){}});var Xr1,Jr1,Gr1,Nt0;var Bt0=L(()=>{N1();F1();Xr1=_(U$(),1),Jr1=_(G1(),1),Gr1=_(p0(),1);Nt0=class Nt0 extends Gr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Jr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Xr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAcl",{}).n("S3Client","GetBucketAclCommand").sc(xh1).build(){}});var Wr1,Kr1,Hr1,Dt0;var Lt0=L(()=>{N1();F1();Wr1=_(U$(),1),Kr1=_(G1(),1),Hr1=_(p0(),1);Dt0=class Dt0 extends Hr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Kr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Wr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketAnalyticsConfiguration",{}).n("S3Client","GetBucketAnalyticsConfigurationCommand").sc(fh1).build(){}});var Fr1,Ur1,Nr1,Ot0;var jt0=L(()=>{N1();F1();Fr1=_(U$(),1),Ur1=_(G1(),1),Nr1=_(p0(),1);Ot0=class Ot0 extends Nr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ur1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Fr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketCors",{}).n("S3Client","GetBucketCorsCommand").sc(yh1).build(){}});var Br1,Dr1,Lr1,wt0;var Et0=L(()=>{N1();F1();Br1=_(U$(),1),Dr1=_(G1(),1),Lr1=_(p0(),1);wt0=class wt0 extends Lr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Dr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Br1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketEncryption",{}).n("S3Client","GetBucketEncryptionCommand").sc(gh1).build(){}});var Or1,jr1,wr1,Pt0;var zt0=L(()=>{N1();F1();Or1=_(U$(),1),jr1=_(G1(),1),wr1=_(p0(),1);Pt0=class Pt0 extends wr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[jr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Or1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketIntelligentTieringConfiguration",{}).n("S3Client","GetBucketIntelligentTieringConfigurationCommand").sc(hh1).build(){}});var Er1,Pr1,zr1,At0;var Tt0=L(()=>{N1();F1();Er1=_(U$(),1),Pr1=_(G1(),1),zr1=_(p0(),1);At0=class At0 extends zr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Pr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Er1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketInventoryConfiguration",{}).n("S3Client","GetBucketInventoryConfigurationCommand").sc(uh1).build(){}});var Ar1,Tr1,qr1,qt0;var Rt0=L(()=>{N1();F1();Ar1=_(U$(),1),Tr1=_(G1(),1),qr1=_(p0(),1);qt0=class qt0 extends qr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Tr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ar1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLifecycleConfiguration",{}).n("S3Client","GetBucketLifecycleConfigurationCommand").sc(lh1).build(){}});var Rr1,Mr1,Vr1,Mt0;var Vt0=L(()=>{N1();F1();Rr1=_(U$(),1),Mr1=_(G1(),1),Vr1=_(p0(),1);Mt0=class Mt0 extends Vr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Mr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Rr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLocation",{}).n("S3Client","GetBucketLocationCommand").sc(ch1).build(){}});var Ir1,kr1,Cr1,It0;var kt0=L(()=>{N1();F1();Ir1=_(U$(),1),kr1=_(G1(),1),Cr1=_(p0(),1);It0=class It0 extends Cr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[kr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ir1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketLogging",{}).n("S3Client","GetBucketLoggingCommand").sc(mh1).build(){}});var Sr1,_r1,vr1,Ct0;var St0=L(()=>{N1();F1();Sr1=_(U$(),1),_r1=_(G1(),1),vr1=_(p0(),1);Ct0=class Ct0 extends vr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_r1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Sr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetadataConfiguration",{}).n("S3Client","GetBucketMetadataConfigurationCommand").sc(dh1).build(){}});var br1,xr1,fr1,_t0;var vt0=L(()=>{N1();F1();br1=_(U$(),1),xr1=_(G1(),1),fr1=_(p0(),1);_t0=class _t0 extends fr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[xr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),br1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetadataTableConfiguration",{}).n("S3Client","GetBucketMetadataTableConfigurationCommand").sc(ih1).build(){}});var yr1,gr1,hr1,bt0;var xt0=L(()=>{N1();F1();yr1=_(U$(),1),gr1=_(G1(),1),hr1=_(p0(),1);bt0=class bt0 extends hr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[gr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),yr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketMetricsConfiguration",{}).n("S3Client","GetBucketMetricsConfigurationCommand").sc(ph1).build(){}});var ur1,lr1,cr1,ft0;var yt0=L(()=>{N1();F1();ur1=_(U$(),1),lr1=_(G1(),1),cr1=_(p0(),1);ft0=class ft0 extends cr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[lr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ur1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketNotificationConfiguration",{}).n("S3Client","GetBucketNotificationConfigurationCommand").sc(nh1).build(){}});var mr1,dr1,ir1,gt0;var ht0=L(()=>{N1();F1();mr1=_(U$(),1),dr1=_(G1(),1),ir1=_(p0(),1);gt0=class gt0 extends ir1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[dr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),mr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketOwnershipControls",{}).n("S3Client","GetBucketOwnershipControlsCommand").sc(th1).build(){}});var pr1,nr1,ut0;var lt0=L(()=>{N1();F1();pr1=_(G1(),1),nr1=_(p0(),1);ut0=class ut0 extends nr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[pr1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","GetBucketPolicy",{}).n("S3Client","GetBucketPolicyCommand").sc(oh1).build(){}});var tr1,or1,sr1,ct0;var mt0=L(()=>{N1();F1();tr1=_(U$(),1),or1=_(G1(),1),sr1=_(p0(),1);ct0=class ct0 extends sr1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[or1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),tr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketPolicyStatus",{}).n("S3Client","GetBucketPolicyStatusCommand").sc(sh1).build(){}});var rr1,ar1,er1,dt0;var it0=L(()=>{N1();F1();rr1=_(U$(),1),ar1=_(G1(),1),er1=_(p0(),1);dt0=class dt0 extends er1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ar1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),rr1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketReplication",{}).n("S3Client","GetBucketReplicationCommand").sc(rh1).build(){}});var $a1,Za1,Qa1,pt0;var nt0=L(()=>{N1();F1();$a1=_(U$(),1),Za1=_(G1(),1),Qa1=_(p0(),1);pt0=class pt0 extends Qa1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Za1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),$a1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketRequestPayment",{}).n("S3Client","GetBucketRequestPaymentCommand").sc(ah1).build(){}});var Ya1,Xa1,Ja1,tt0;var ot0=L(()=>{N1();F1();Ya1=_(U$(),1),Xa1=_(G1(),1),Ja1=_(p0(),1);tt0=class tt0 extends Ja1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Xa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ya1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketTagging",{}).n("S3Client","GetBucketTaggingCommand").sc(eh1).build(){}});var Ga1,Wa1,Ka1,st0;var rt0=L(()=>{N1();F1();Ga1=_(U$(),1),Wa1=_(G1(),1),Ka1=_(p0(),1);st0=class st0 extends Ka1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Wa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ga1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketVersioning",{}).n("S3Client","GetBucketVersioningCommand").sc($u1).build(){}});var Ha1,Fa1,Ua1,at0;var et0=L(()=>{N1();F1();Ha1=_(U$(),1),Fa1=_(G1(),1),Ua1=_(p0(),1);at0=class at0 extends Ua1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Fa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ha1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetBucketWebsite",{}).n("S3Client","GetBucketWebsiteCommand").sc(Zu1).build(){}});var Na1,Ba1,Da1,$o0;var Zo0=L(()=>{N1();F1();Na1=_(U$(),1),Ba1=_(G1(),1),Da1=_(p0(),1);$o0=class $o0 extends Da1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Ba1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Na1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectAcl",{}).n("S3Client","GetObjectAclCommand").sc(Yu1).build(){}});var La1,Oa1,ja1,Qo0;var Yo0=L(()=>{rW();N1();F1();La1=_(U$(),1),Oa1=_(G1(),1),ja1=_(p0(),1);Qo0=class Qo0 extends ja1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Oa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),La1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","GetObjectAttributes",{}).n("S3Client","GetObjectAttributesCommand").sc(Xu1).build(){}});var wa1,Ea1,Pa1,bU;var Xo0=L(()=>{S6();rW();N1();F1();wa1=_(U$(),1),Ea1=_(G1(),1),Pa1=_(p0(),1);bU=class bU extends Pa1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Ea1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC64NVME","CRC32","CRC32C","SHA256","SHA1","SHA512","MD5","XXHASH64","XXHASH3","XXHASH128"]}),MZ(Q),wa1.getS3ExpiresMiddlewarePlugin(Q)]}).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").sc(Qu1).build(){}});var za1,Aa1,Ta1,Jo0;var Go0=L(()=>{N1();F1();za1=_(U$(),1),Aa1=_(G1(),1),Ta1=_(p0(),1);Jo0=class Jo0 extends Ta1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Aa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),za1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectLegalHold",{}).n("S3Client","GetObjectLegalHoldCommand").sc(Ju1).build(){}});var qa1,Ra1,Ma1,Wo0;var Ko0=L(()=>{N1();F1();qa1=_(U$(),1),Ra1=_(G1(),1),Ma1=_(p0(),1);Wo0=class Wo0 extends Ma1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ra1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),qa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectLockConfiguration",{}).n("S3Client","GetObjectLockConfigurationCommand").sc(Gu1).build(){}});var Va1,Ia1,ka1,Ho0;var Fo0=L(()=>{N1();F1();Va1=_(U$(),1),Ia1=_(G1(),1),ka1=_(p0(),1);Ho0=class Ho0 extends ka1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ia1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Va1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectRetention",{}).n("S3Client","GetObjectRetentionCommand").sc(Wu1).build(){}});var Ca1,Sa1,_a1,Uo0;var No0=L(()=>{N1();F1();Ca1=_(U$(),1),Sa1=_(G1(),1),_a1=_(p0(),1);Uo0=class Uo0 extends _a1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Sa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ca1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetObjectTagging",{}).n("S3Client","GetObjectTaggingCommand").sc(Ku1).build(){}});var va1,ba1,Bo0;var Do0=L(()=>{N1();F1();va1=_(G1(),1),ba1=_(p0(),1);Bo0=class Bo0 extends ba1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[va1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","GetObjectTorrent",{}).n("S3Client","GetObjectTorrentCommand").sc(Hu1).build(){}});var xa1,fa1,ya1,Lo0;var Oo0=L(()=>{N1();F1();xa1=_(U$(),1),fa1=_(G1(),1),ya1=_(p0(),1);Lo0=class Lo0 extends ya1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[fa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),xa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","GetPublicAccessBlock",{}).n("S3Client","GetPublicAccessBlockCommand").sc(Fu1).build(){}});var ga1,ha1,ua1,gA;var Ra=L(()=>{N1();F1();ga1=_(U$(),1),ha1=_(G1(),1),ua1=_(p0(),1);gA=class gA extends ua1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ha1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ga1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","HeadBucket",{}).n("S3Client","HeadBucketCommand").sc(Uu1).build(){}});var D30,la1,ca1,xU;var Ma=L(()=>{rW();N1();F1();D30=_(U$(),1),la1=_(G1(),1),ca1=_(p0(),1);xU=class xU extends ca1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[la1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),D30.getThrow200ExceptionsPlugin(Q),MZ(Q),D30.getS3ExpiresMiddlewarePlugin(Q)]}).s("AmazonS3","HeadObject",{}).n("S3Client","HeadObjectCommand").sc(Nu1).build(){}});var ma1,da1,ia1,jo0;var wo0=L(()=>{N1();F1();ma1=_(U$(),1),da1=_(G1(),1),ia1=_(p0(),1);jo0=class jo0 extends ia1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[da1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),ma1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketAnalyticsConfigurations",{}).n("S3Client","ListBucketAnalyticsConfigurationsCommand").sc(Bu1).build(){}});var pa1,na1,ta1,Eo0;var Po0=L(()=>{N1();F1();pa1=_(U$(),1),na1=_(G1(),1),ta1=_(p0(),1);Eo0=class Eo0 extends ta1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[na1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),pa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketIntelligentTieringConfigurations",{}).n("S3Client","ListBucketIntelligentTieringConfigurationsCommand").sc(Du1).build(){}});var oa1,sa1,ra1,zo0;var Ao0=L(()=>{N1();F1();oa1=_(U$(),1),sa1=_(G1(),1),ra1=_(p0(),1);zo0=class zo0 extends ra1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[sa1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),oa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketInventoryConfigurations",{}).n("S3Client","ListBucketInventoryConfigurationsCommand").sc(Lu1).build(){}});var aa1,ea1,$e1,To0;var qo0=L(()=>{N1();F1();aa1=_(U$(),1),ea1=_(G1(),1),$e1=_(p0(),1);To0=class To0 extends $e1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ea1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),aa1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBucketMetricsConfigurations",{}).n("S3Client","ListBucketMetricsConfigurationsCommand").sc(Ou1).build(){}});var Ze1,Qe1,Ye1,Va;var L30=L(()=>{N1();F1();Ze1=_(U$(),1),Qe1=_(G1(),1),Ye1=_(p0(),1);Va=class Va extends Ye1.Command.classBuilder().ep(L0).m(function($,Z,Q,Y){return[Qe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ze1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListBuckets",{}).n("S3Client","ListBucketsCommand").sc(ju1).build(){}});var Xe1,Je1,Ge1,Ia;var O30=L(()=>{N1();F1();Xe1=_(U$(),1),Je1=_(G1(),1),Ge1=_(p0(),1);Ia=class Ia extends Ge1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0}}).m(function($,Z,Q,Y){return[Je1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Xe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListDirectoryBuckets",{}).n("S3Client","ListDirectoryBucketsCommand").sc(wu1).build(){}});var We1,Ke1,He1,Ro0;var Mo0=L(()=>{N1();F1();We1=_(U$(),1),Ke1=_(G1(),1),He1=_(p0(),1);Ro0=class Ro0 extends He1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[Ke1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),We1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListMultipartUploads",{}).n("S3Client","ListMultipartUploadsCommand").sc(Eu1).build(){}});var Fe1,Ue1,Ne1,Vo0;var Io0=L(()=>{N1();F1();Fe1=_(U$(),1),Ue1=_(G1(),1),Ne1=_(p0(),1);Vo0=class Vo0 extends Ne1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[Ue1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Fe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjects",{}).n("S3Client","ListObjectsCommand").sc(Pu1).build(){}});var Be1,De1,Le1,aW;var j30=L(()=>{N1();F1();Be1=_(U$(),1),De1=_(G1(),1),Le1=_(p0(),1);aW=class aW extends Le1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[De1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Be1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").sc(zu1).build(){}});var Oe1,je1,we1,ko0;var Co0=L(()=>{N1();F1();Oe1=_(U$(),1),je1=_(G1(),1),we1=_(p0(),1);ko0=class ko0 extends we1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m(function($,Z,Q,Y){return[je1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Oe1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","ListObjectVersions",{}).n("S3Client","ListObjectVersionsCommand").sc(Au1).build(){}});var Ee1,Pe1,ze1,ka;var w30=L(()=>{rW();N1();F1();Ee1=_(U$(),1),Pe1=_(G1(),1),ze1=_(p0(),1);ka=class ka extends ze1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[Pe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),Ee1.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","ListParts",{}).n("S3Client","ListPartsCommand").sc(Tu1).build(){}});var Ae1,Te1,So0;var _o0=L(()=>{S6();N1();F1();Ae1=_(G1(),1),Te1=_(p0(),1);So0=class So0 extends Te1.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ae1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1})]}).s("AmazonS3","PutBucketAbac",{}).n("S3Client","PutBucketAbacCommand").sc(qu1).build(){}});var qe1,Re1,vo0;var bo0=L(()=>{S6();N1();F1();qe1=_(G1(),1),Re1=_(p0(),1);vo0=class vo0 extends Re1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[qe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1})]}).s("AmazonS3","PutBucketAccelerateConfiguration",{}).n("S3Client","PutBucketAccelerateConfigurationCommand").sc(Ru1).build(){}});var Me1,Ve1,xo0;var fo0=L(()=>{S6();N1();F1();Me1=_(G1(),1),Ve1=_(p0(),1);xo0=class xo0 extends Ve1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Me1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketAcl",{}).n("S3Client","PutBucketAclCommand").sc(Mu1).build(){}});var Ie1,ke1,yo0;var go0=L(()=>{N1();F1();Ie1=_(G1(),1),ke1=_(p0(),1);yo0=class yo0 extends ke1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ie1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketAnalyticsConfiguration",{}).n("S3Client","PutBucketAnalyticsConfigurationCommand").sc(Vu1).build(){}});var Ce1,Se1,ho0;var uo0=L(()=>{S6();N1();F1();Ce1=_(G1(),1),Se1=_(p0(),1);ho0=class ho0 extends Se1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Ce1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketCors",{}).n("S3Client","PutBucketCorsCommand").sc(Iu1).build(){}});var _e1,ve1,lo0;var co0=L(()=>{S6();N1();F1();_e1=_(G1(),1),ve1=_(p0(),1);lo0=class lo0 extends ve1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_e1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketEncryption",{}).n("S3Client","PutBucketEncryptionCommand").sc(ku1).build(){}});var be1,xe1,mo0;var do0=L(()=>{N1();F1();be1=_(G1(),1),xe1=_(p0(),1);mo0=class mo0 extends xe1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[be1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketIntelligentTieringConfiguration",{}).n("S3Client","PutBucketIntelligentTieringConfigurationCommand").sc(Cu1).build(){}});var fe1,ye1,io0;var po0=L(()=>{N1();F1();fe1=_(G1(),1),ye1=_(p0(),1);io0=class io0 extends ye1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[fe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketInventoryConfiguration",{}).n("S3Client","PutBucketInventoryConfigurationCommand").sc(Su1).build(){}});var ge1,he1,ue1,no0;var to0=L(()=>{S6();N1();F1();ge1=_(U$(),1),he1=_(G1(),1),ue1=_(p0(),1);no0=class no0 extends ue1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[he1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),ge1.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutBucketLifecycleConfiguration",{}).n("S3Client","PutBucketLifecycleConfigurationCommand").sc(_u1).build(){}});var le1,ce1,oo0;var so0=L(()=>{S6();N1();F1();le1=_(G1(),1),ce1=_(p0(),1);oo0=class oo0 extends ce1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[le1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketLogging",{}).n("S3Client","PutBucketLoggingCommand").sc(vu1).build(){}});var me1,de1,ro0;var ao0=L(()=>{N1();F1();me1=_(G1(),1),de1=_(p0(),1);ro0=class ro0 extends de1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[me1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketMetricsConfiguration",{}).n("S3Client","PutBucketMetricsConfigurationCommand").sc(bu1).build(){}});var ie1,pe1,eo0;var $s0=L(()=>{N1();F1();ie1=_(G1(),1),pe1=_(p0(),1);eo0=class eo0 extends pe1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ie1.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","PutBucketNotificationConfiguration",{}).n("S3Client","PutBucketNotificationConfigurationCommand").sc(xu1).build(){}});var ne1,te1,Zs0;var Qs0=L(()=>{S6();N1();F1();ne1=_(G1(),1),te1=_(p0(),1);Zs0=class Zs0 extends te1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ne1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketOwnershipControls",{}).n("S3Client","PutBucketOwnershipControlsCommand").sc(fu1).build(){}});var oe1,se1,Ys0;var Xs0=L(()=>{S6();N1();F1();oe1=_(G1(),1),se1=_(p0(),1);Ys0=class Ys0 extends se1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[oe1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketPolicy",{}).n("S3Client","PutBucketPolicyCommand").sc(yu1).build(){}});var re1,ae1,Js0;var Gs0=L(()=>{S6();N1();F1();re1=_(G1(),1),ae1=_(p0(),1);Js0=class Js0 extends ae1.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[re1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketReplication",{}).n("S3Client","PutBucketReplicationCommand").sc(gu1).build(){}});var ee1,$0$,Ws0;var Ks0=L(()=>{S6();N1();F1();ee1=_(G1(),1),$0$=_(p0(),1);Ws0=class Ws0 extends $0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[ee1.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketRequestPayment",{}).n("S3Client","PutBucketRequestPaymentCommand").sc(hu1).build(){}});var Z0$,Q0$,Hs0;var Fs0=L(()=>{S6();N1();F1();Z0$=_(G1(),1),Q0$=_(p0(),1);Hs0=class Hs0 extends Q0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Z0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketTagging",{}).n("S3Client","PutBucketTaggingCommand").sc(uu1).build(){}});var Y0$,X0$,Us0;var Ns0=L(()=>{S6();N1();F1();Y0$=_(G1(),1),X0$=_(p0(),1);Us0=class Us0 extends X0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[Y0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketVersioning",{}).n("S3Client","PutBucketVersioningCommand").sc(lu1).build(){}});var J0$,G0$,Bs0;var Ds0=L(()=>{S6();N1();F1();J0$=_(G1(),1),G0$=_(p0(),1);Bs0=class Bs0 extends G0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[J0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutBucketWebsite",{}).n("S3Client","PutBucketWebsiteCommand").sc(cu1).build(){}});var W0$,K0$,H0$,Ls0;var Os0=L(()=>{S6();N1();F1();W0$=_(U$(),1),K0$=_(G1(),1),H0$=_(p0(),1);Ls0=class Ls0 extends H0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[K0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),W0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectAcl",{}).n("S3Client","PutObjectAclCommand").sc(du1).build(){}});var E30,F0$,U0$,z3;var js0=L(()=>{S6();rW();N1();F1();E30=_(U$(),1),F0$=_(G1(),1),U0$=_(p0(),1);z3=class z3 extends U0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[F0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),E30.getCheckContentLengthHeaderPlugin(Q),E30.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").sc(mu1).build(){}});var N0$,B0$,D0$,ws0;var Es0=L(()=>{S6();N1();F1();N0$=_(U$(),1),B0$=_(G1(),1),D0$=_(p0(),1);ws0=class ws0 extends D0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[B0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),N0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectLegalHold",{}).n("S3Client","PutObjectLegalHoldCommand").sc(iu1).build(){}});var L0$,O0$,j0$,Ps0;var zs0=L(()=>{S6();N1();F1();L0$=_(U$(),1),O0$=_(G1(),1),j0$=_(p0(),1);Ps0=class Ps0 extends j0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[O0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),L0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectLockConfiguration",{}).n("S3Client","PutObjectLockConfigurationCommand").sc(pu1).build(){}});var w0$,E0$,P0$,As0;var Ts0=L(()=>{S6();N1();F1();w0$=_(U$(),1),E0$=_(G1(),1),P0$=_(p0(),1);As0=class As0 extends P0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[E0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),w0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectRetention",{}).n("S3Client","PutObjectRetentionCommand").sc(nu1).build(){}});var z0$,A0$,T0$,Ca;var qs0=L(()=>{S6();N1();F1();z0$=_(U$(),1),A0$=_(G1(),1),T0$=_(p0(),1);Ca=class Ca extends T0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[A0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),z0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","PutObjectTagging",{}).n("S3Client","PutObjectTaggingCommand").sc(tu1).build(){}});var q0$,R0$,Rs0;var Ms0=L(()=>{S6();N1();F1();q0$=_(G1(),1),R0$=_(p0(),1);Rs0=class Rs0 extends R0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[q0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","PutPublicAccessBlock",{}).n("S3Client","PutPublicAccessBlockCommand").sc(ou1).build(){}});var M0$,V0$,I0$,Vs0;var Is0=L(()=>{N1();F1();M0$=_(U$(),1),V0$=_(G1(),1),I0$=_(p0(),1);Vs0=class Vs0 extends I0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[V0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),M0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","RenameObject",{}).n("S3Client","RenameObjectCommand").sc(su1).build(){}});var k0$,C0$,S0$,ks0;var Cs0=L(()=>{S6();N1();F1();k0$=_(U$(),1),C0$=_(G1(),1),S0$=_(p0(),1);ks0=class ks0 extends S0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[C0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),k0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","RestoreObject",{}).n("S3Client","RestoreObjectCommand").sc(ru1).build(){}});var _0$,v0$,Ss0;var _s0=L(()=>{rW();N1();F1();_0$=_(G1(),1),v0$=_(p0(),1);Ss0=class Ss0 extends v0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[_0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),MZ(Q)]}).s("AmazonS3","SelectObjectContent",{eventStream:{output:!0}}).n("S3Client","SelectObjectContentCommand").sc(au1).build(){}});var b0$,x0$,vs0;var bs0=L(()=>{S6();N1();F1();b0$=_(G1(),1),x0$=_(p0(),1);vs0=class vs0 extends x0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[b0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","UpdateBucketMetadataInventoryTableConfiguration",{}).n("S3Client","UpdateBucketMetadataInventoryTableConfigurationCommand").sc(eu1).build(){}});var f0$,y0$,xs0;var fs0=L(()=>{S6();N1();F1();f0$=_(G1(),1),y0$=_(p0(),1);xs0=class xs0 extends y0$.Command.classBuilder().ep({...L0,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[f0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0})]}).s("AmazonS3","UpdateBucketMetadataJournalTableConfiguration",{}).n("S3Client","UpdateBucketMetadataJournalTableConfigurationCommand").sc($l1).build(){}});var g0$,h0$,u0$,ys0;var gs0=L(()=>{S6();N1();F1();g0$=_(U$(),1),h0$=_(G1(),1),u0$=_(p0(),1);ys0=class ys0 extends u0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[h0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!0}),g0$.getThrow200ExceptionsPlugin(Q)]}).s("AmazonS3","UpdateObjectEncryption",{}).n("S3Client","UpdateObjectEncryptionCommand").sc(Zl1).build(){}});var l0$,c0$,m0$,Sa;var hs0=L(()=>{S6();rW();N1();F1();l0$=_(U$(),1),c0$=_(G1(),1),m0$=_(p0(),1);Sa=class Sa extends m0$.Command.classBuilder().ep({...L0,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m(function($,Z,Q,Y){return[c0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d$(Q,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:!1}),l0$.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","UploadPart",{}).n("S3Client","UploadPartCommand").sc(Ql1).build(){}});var d0$,i0$,p0$,us0;var ls0=L(()=>{rW();N1();F1();d0$=_(U$(),1),i0$=_(G1(),1),p0$=_(p0(),1);us0=class us0 extends p0$.Command.classBuilder().ep({...L0,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m(function($,Z,Q,Y){return[i0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions()),d0$.getThrow200ExceptionsPlugin(Q),MZ(Q)]}).s("AmazonS3","UploadPartCopy",{}).n("S3Client","UploadPartCopyCommand").sc(Yl1).build(){}});var n0$,t0$,cs0;var ms0=L(()=>{N1();F1();n0$=_(G1(),1),t0$=_(p0(),1);cs0=class cs0 extends t0$.Command.classBuilder().ep({...L0,UseObjectLambdaEndpoint:{type:"staticContextParams",value:!0}}).m(function($,Z,Q,Y){return[n0$.getEndpointPlugin(Q,$.getEndpointParameterInstructions())]}).s("AmazonS3","WriteGetObjectResponse",{}).n("S3Client","WriteGetObjectResponseCommand").sc(Xl1).build(){}});var o0$,s0$;var ds0=L(()=>{L30();yA();o0$=_(v7(),1),s0$=o0$.createPaginator(QY,Va,"ContinuationToken","ContinuationToken","MaxBuckets")});var r0$,a0$;var is0=L(()=>{O30();yA();r0$=_(v7(),1),a0$=r0$.createPaginator(QY,Ia,"ContinuationToken","ContinuationToken","MaxDirectoryBuckets")});var e0$,$1$;var ps0=L(()=>{j30();yA();e0$=_(v7(),1),$1$=e0$.createPaginator(QY,aW,"ContinuationToken","NextContinuationToken","MaxKeys")});var Z1$,Q1$;var ns0=L(()=>{w30();yA();Z1$=_(v7(),1),Q1$=Z1$.createPaginator(QY,ka,"PartNumberMarker","NextPartNumberMarker","MaxParts")});var Tc=()=>{let $=new WeakSet;return(Z,Q)=>{if(typeof Q==="object"&&Q!==null){if($.has(Q))return"[Circular]";$.add(Q)}return Q}};var Y1$=($)=>{return new Promise((Z)=>setTimeout(Z,$*1000))};var X1$,E9,Xw=($)=>{if($.state===E9.ABORTED){let Z=Error(`${JSON.stringify({...$,reason:"Request was aborted"},Tc())}`);throw Z.name="AbortError",Z}else if($.state===E9.TIMEOUT){let Z=Error(`${JSON.stringify({...$,reason:"Waiter has timed out"},Tc())}`);throw Z.name="TimeoutError",Z}else if($.state!==E9.SUCCESS)throw Error(`${JSON.stringify($,Tc())}`);return $};var P30=L(()=>{X1$={minDelay:2,maxDelay:120};(function($){$.ABORTED="ABORTED",$.FAILURE="FAILURE",$.SUCCESS="SUCCESS",$.RETRY="RETRY",$.TIMEOUT="TIMEOUT"})(E9||(E9={}))});var J1$=async({minDelay:$,maxDelay:Z,maxWaitTime:Q,abortController:Y,client:X,abortSignal:J},G,W)=>{let K={},[H,F]=[$*1000,Z*1000],U=0,N=Date.now()+Q*1000,B=Date.now()+60000,D=!1;while(!0){if(U>0){let w=g94(H,F,U,N);if(Y?.signal?.aborted||J?.aborted)return K["AbortController signal aborted."]|=0,K["AbortController signal aborted."]+=1,{state:E9.ABORTED,observedResponses:K};if(Date.now()+w>N)return{state:E9.TIMEOUT,observedResponses:K};await Y1$(w/1000)}let{state:O,reason:j}=await W(X,G);if(j){let w=y94(j);K[w]|=0,K[w]+=1}if(O!==E9.RETRY)return{state:O,reason:j,final:j,observedResponses:K};if(U+=1,!D&&Date.now()>=B)f94(K,X),D=!0}},f94=($={},Z)=>{let Q=Object.keys($),Y=0,X=0;for(let W of Q){let K=$[W]|0;if(Y=Math.max(K,Y),W.startsWith("403:"))X+=K}let J=Z?.config?.logger,G=typeof J?.warn==="function"&&!J.constructor?.name?.includes?.("NoOpLogger")?J:console;if(X>=3||Q[Q.length-1].startsWith("403:"))G.warn("@smithy/util-waiter WARN - 403 status code encountered during waiter polling.")},y94=($)=>{let Z=$?.$response?.statusCode??$?.$metadata?.httpStatusCode;if($?.$responseBodyText)return`${Z?Z+": ":""}Deserialization error for body: ${$.$responseBodyText}`;if(Z){if($?.$response||$?.message)return`${Z??"Unknown"}: ${$?.message}`;return`${Z}: OK`}return String($?.message??JSON.stringify($,Tc())??"Unknown")},g94=($,Z,Q,Y)=>{let X=Math.log(Z/$)/Math.log(2)+1;if(Q>X)return Z;let J=$*2**(Q-1),G=Math.min(J,Z),W=h94($,G);if(Date.now()+W>Y){let K=Y-Date.now();return Math.max(0,K-500)}return W},h94=($,Z)=>$+Math.random()*(Z-$);var G1$=L(()=>{P30()});var W1$=($)=>{if($.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if($.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if($.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if($.maxWaitTime<=$.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${$.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`);else if($.maxDelay<$.minDelay)throw Error(`WaiterConfiguration.maxDelay [${$.maxDelay}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`)};var K1$=()=>{};var H1$=($)=>{let Z,Q=new Promise((Y)=>{if(Z=()=>Y({state:E9.ABORTED}),typeof $.addEventListener==="function")$.addEventListener("abort",Z);else $.onabort=Z});return{clearListener(){if(typeof $.removeEventListener==="function")$.removeEventListener("abort",Z)},aborted:Q}},Jw=async($,Z,Q)=>{let Y={...X1$,...$};W1$(Y);let X=[J1$(Y,Z,Q)],J=[];if($.abortSignal){let{aborted:G,clearListener:W}=H1$($.abortSignal);J.push(W),X.push(G)}if($.abortController?.signal){let{aborted:G,clearListener:W}=H1$($.abortController.signal);J.push(W),X.push(G)}return Promise.race(X).then((G)=>{for(let W of J)W();return G})};var F1$=L(()=>{G1$();K1$();P30()});var _a=L(()=>{F1$();P30()});var u94=async($,Z)=>{let Q;try{return Q=await $.send(new gA(Z)),{state:E9.SUCCESS,reason:Q}}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.RETRY,reason:Q}}return{state:E9.RETRY,reason:Q}},U1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,u94);return Xw(Y)};var ts0=L(()=>{_a();Ra()});var l94=async($,Z)=>{let Q;try{Q=await $.send(new gA(Z))}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.SUCCESS,reason:Q}}return{state:E9.RETRY,reason:Q}},N1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,l94);return Xw(Y)};var os0=L(()=>{_a();Ra()});var c94=async($,Z)=>{let Q;try{return Q=await $.send(new xU(Z)),{state:E9.SUCCESS,reason:Q}}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.RETRY,reason:Q}}return{state:E9.RETRY,reason:Q}},B1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,c94);return Xw(Y)};var ss0=L(()=>{_a();Ma()});var m94=async($,Z)=>{let Q;try{Q=await $.send(new xU(Z))}catch(Y){if(Q=Y,Y.name==="NotFound")return{state:E9.SUCCESS,reason:Q}}return{state:E9.RETRY,reason:Q}},D1$=async($,Z)=>{let Y=await Jw({...{minDelay:5,maxDelay:120},...$},Z,m94);return Xw(Y)};var rs0=L(()=>{_a();Ma()});var L1$,d94,i94,p94,O1$;var j1$=L(()=>{Dn0();Ln0();jn0();En0();zn0();Tn0();qn0();rJ0();Mn0();In0();Cn0();_n0();bn0();fn0();gn0();un0();cn0();dn0();pn0();tn0();sn0();an0();$t0();Zt0();Yt0();Jt0();Wt0();Ht0();Ut0();Bt0();Lt0();jt0();Et0();zt0();Tt0();Rt0();Vt0();kt0();St0();vt0();xt0();yt0();ht0();lt0();mt0();it0();nt0();ot0();rt0();et0();Zo0();Yo0();Xo0();Go0();Ko0();Fo0();No0();Do0();Oo0();Ra();Ma();wo0();Po0();Ao0();qo0();L30();O30();Mo0();Io0();j30();Co0();w30();_o0();bo0();fo0();go0();uo0();co0();do0();po0();to0();so0();ao0();$s0();Qs0();Xs0();Gs0();Ks0();Fs0();Ns0();Ds0();Os0();js0();Es0();zs0();Ts0();qs0();Ms0();Is0();Cs0();_s0();bs0();fs0();gs0();hs0();ls0();ms0();ds0();is0();ps0();ns0();yA();ts0();os0();ss0();rs0();L1$=_(p0(),1),d94={AbortMultipartUploadCommand:Aa,CompleteMultipartUploadCommand:Ta,CopyObjectCommand:On0,CreateBucketCommand:wn0,CreateBucketMetadataConfigurationCommand:Pn0,CreateBucketMetadataTableConfigurationCommand:An0,CreateMultipartUploadCommand:qa,CreateSessionCommand:Za,DeleteBucketCommand:Vn0,DeleteBucketAnalyticsConfigurationCommand:Rn0,DeleteBucketCorsCommand:kn0,DeleteBucketEncryptionCommand:Sn0,DeleteBucketIntelligentTieringConfigurationCommand:vn0,DeleteBucketInventoryConfigurationCommand:xn0,DeleteBucketLifecycleCommand:yn0,DeleteBucketMetadataConfigurationCommand:hn0,DeleteBucketMetadataTableConfigurationCommand:ln0,DeleteBucketMetricsConfigurationCommand:mn0,DeleteBucketOwnershipControlsCommand:in0,DeleteBucketPolicyCommand:nn0,DeleteBucketReplicationCommand:on0,DeleteBucketTaggingCommand:rn0,DeleteBucketWebsiteCommand:en0,DeleteObjectCommand:mD,DeleteObjectsCommand:Qt0,DeleteObjectTaggingCommand:Xt0,DeletePublicAccessBlockCommand:Gt0,GetBucketAbacCommand:Kt0,GetBucketAccelerateConfigurationCommand:Ft0,GetBucketAclCommand:Nt0,GetBucketAnalyticsConfigurationCommand:Dt0,GetBucketCorsCommand:Ot0,GetBucketEncryptionCommand:wt0,GetBucketIntelligentTieringConfigurationCommand:Pt0,GetBucketInventoryConfigurationCommand:At0,GetBucketLifecycleConfigurationCommand:qt0,GetBucketLocationCommand:Mt0,GetBucketLoggingCommand:It0,GetBucketMetadataConfigurationCommand:Ct0,GetBucketMetadataTableConfigurationCommand:_t0,GetBucketMetricsConfigurationCommand:bt0,GetBucketNotificationConfigurationCommand:ft0,GetBucketOwnershipControlsCommand:gt0,GetBucketPolicyCommand:ut0,GetBucketPolicyStatusCommand:ct0,GetBucketReplicationCommand:dt0,GetBucketRequestPaymentCommand:pt0,GetBucketTaggingCommand:tt0,GetBucketVersioningCommand:st0,GetBucketWebsiteCommand:at0,GetObjectCommand:bU,GetObjectAclCommand:$o0,GetObjectAttributesCommand:Qo0,GetObjectLegalHoldCommand:Jo0,GetObjectLockConfigurationCommand:Wo0,GetObjectRetentionCommand:Ho0,GetObjectTaggingCommand:Uo0,GetObjectTorrentCommand:Bo0,GetPublicAccessBlockCommand:Lo0,HeadBucketCommand:gA,HeadObjectCommand:xU,ListBucketAnalyticsConfigurationsCommand:jo0,ListBucketIntelligentTieringConfigurationsCommand:Eo0,ListBucketInventoryConfigurationsCommand:zo0,ListBucketMetricsConfigurationsCommand:To0,ListBucketsCommand:Va,ListDirectoryBucketsCommand:Ia,ListMultipartUploadsCommand:Ro0,ListObjectsCommand:Vo0,ListObjectsV2Command:aW,ListObjectVersionsCommand:ko0,ListPartsCommand:ka,PutBucketAbacCommand:So0,PutBucketAccelerateConfigurationCommand:vo0,PutBucketAclCommand:xo0,PutBucketAnalyticsConfigurationCommand:yo0,PutBucketCorsCommand:ho0,PutBucketEncryptionCommand:lo0,PutBucketIntelligentTieringConfigurationCommand:mo0,PutBucketInventoryConfigurationCommand:io0,PutBucketLifecycleConfigurationCommand:no0,PutBucketLoggingCommand:oo0,PutBucketMetricsConfigurationCommand:ro0,PutBucketNotificationConfigurationCommand:eo0,PutBucketOwnershipControlsCommand:Zs0,PutBucketPolicyCommand:Ys0,PutBucketReplicationCommand:Js0,PutBucketRequestPaymentCommand:Ws0,PutBucketTaggingCommand:Hs0,PutBucketVersioningCommand:Us0,PutBucketWebsiteCommand:Bs0,PutObjectCommand:z3,PutObjectAclCommand:Ls0,PutObjectLegalHoldCommand:ws0,PutObjectLockConfigurationCommand:Ps0,PutObjectRetentionCommand:As0,PutObjectTaggingCommand:Ca,PutPublicAccessBlockCommand:Rs0,RenameObjectCommand:Vs0,RestoreObjectCommand:ks0,SelectObjectContentCommand:Ss0,UpdateBucketMetadataInventoryTableConfigurationCommand:vs0,UpdateBucketMetadataJournalTableConfigurationCommand:xs0,UpdateObjectEncryptionCommand:ys0,UploadPartCommand:Sa,UploadPartCopyCommand:us0,WriteGetObjectResponseCommand:cs0},i94={paginateListBuckets:s0$,paginateListDirectoryBuckets:a0$,paginateListObjectsV2:$1$,paginateListParts:Q1$},p94={waitUntilBucketExists:U1$,waitUntilBucketNotExists:N1$,waitUntilObjectExists:B1$,waitUntilObjectNotExists:D1$};O1$=class O1$ extends QY{};L1$.createAggregatedClient(d94,O1$,{paginators:i94,waiters:p94})});var w1$=L(()=>{Dn0();Ln0();jn0();En0();zn0();Tn0();qn0();rJ0();Mn0();In0();Cn0();_n0();bn0();fn0();gn0();un0();cn0();dn0();pn0();tn0();sn0();an0();$t0();Zt0();Jt0();Yt0();Wt0();Ht0();Ut0();Bt0();Lt0();jt0();Et0();zt0();Tt0();Rt0();Vt0();kt0();St0();vt0();xt0();yt0();ht0();lt0();mt0();it0();nt0();ot0();rt0();et0();Zo0();Yo0();Xo0();Go0();Ko0();Fo0();No0();Do0();Oo0();Ra();Ma();wo0();Po0();Ao0();qo0();L30();O30();Mo0();Co0();Io0();j30();w30();_o0();bo0();fo0();go0();uo0();co0();do0();po0();to0();so0();ao0();$s0();Qs0();Xs0();Gs0();Ks0();Fs0();Ns0();Ds0();Os0();js0();Es0();zs0();Ts0();qs0();Ms0();Is0();Cs0();_s0();bs0();fs0();gs0();hs0();ls0();ms0()});var E1$=()=>{};var P1$=L(()=>{E1$();ds0();is0();ps0();ns0()});var z1$=L(()=>{ts0();os0();ss0();rs0()});var A1$;var T1$=L(()=>{A1$={CRC32:"CRC32",CRC32C:"CRC32C",CRC64NVME:"CRC64NVME",MD5:"MD5",SHA1:"SHA1",SHA256:"SHA256",SHA512:"SHA512",XXHASH128:"XXHASH128",XXHASH3:"XXHASH3",XXHASH64:"XXHASH64"}});var q1$=()=>{};var R1$=()=>{};var va=L(()=>{yA();j1$();w1$();F1();P1$();z1$();T1$();qd0();q1$();R1$()});function V1$($){let{port:Z,query:Q}=$,{protocol:Y,path:X,hostname:J}=$;if(Y&&Y.slice(-1)!==":")Y+=":";if(Z)J+=`:${Z}`;if(X&&X.charAt(0)!=="/")X=`/${X}`;let G=Q?M1$.buildQueryString(Q):"";if(G&&G[0]!=="?")G=`?${G}`;let W="";if($.username!=null||$.password!=null){let H=$.username??"",F=$.password??"";W=`${H}:${F}@`}let K="";if($.fragment)K=`#${$.fragment}`;return`${Y}//${W}${J}${X}${G}${K}`}var M1$;var I1$=L(()=>{M1$=_(QX0(),1)});var k1$="UNSIGNED-PAYLOAD",C1$="X-Amz-Content-Sha256";class z30{signer;constructor($){let Z={service:$.signingName||$.service||"s3",uriEscapePath:$.uriEscapePath||!1,applyChecksum:$.applyChecksum||!1,...$};this.signer=new S1$.SignatureV4MultiRegion(Z)}presign($,{unsignableHeaders:Z=new Set,hoistableHeaders:Q=new Set,unhoistableHeaders:Y=new Set,...X}={}){return this.prepareRequest($,{unsignableHeaders:Z,unhoistableHeaders:Y,hoistableHeaders:Q}),this.signer.presign($,{expiresIn:900,unsignableHeaders:Z,unhoistableHeaders:Y,...X})}presignWithCredentials($,Z,{unsignableHeaders:Q=new Set,hoistableHeaders:Y=new Set,unhoistableHeaders:X=new Set,...J}={}){return this.prepareRequest($,{unsignableHeaders:Q,unhoistableHeaders:X,hoistableHeaders:Y}),this.signer.presignWithCredentials($,Z,{expiresIn:900,unsignableHeaders:Q,unhoistableHeaders:X,...J})}prepareRequest($,{unsignableHeaders:Z=new Set,unhoistableHeaders:Q=new Set,hoistableHeaders:Y=new Set}={}){Z.add("content-type"),Object.keys($.headers).map((W)=>W.toLowerCase()).filter((W)=>W.startsWith("x-amz-server-side-encryption")).forEach((W)=>{if(!Y.has(W))Q.add(W)}),$.headers[C1$]=k1$;let X=$.headers.host,J=$.port,G=`${$.hostname}${$.port!=null?":"+J:""}`;if(!X||X===$.hostname&&$.port!=null)$.headers.host=G}}var S1$;var as0=L(()=>{S1$=_($c(),1)});var _1$,v1$,A30=async($,Z,Q={})=>{let Y,X;if(typeof $.config.endpointProvider==="function"){let N=(await _1$.getEndpointFromInstructions(Z.input,Z.constructor,$.config)).properties?.authSchemes?.[0];if(N?.name==="sigv4a")X=N?.signingRegionSet?.join(",");else X=N?.signingRegion;Y=new z30({...$.config,signingName:N?.signingName,region:async()=>X})}else Y=new z30($.config);let J=(U,N)=>async(B)=>{let{request:D}=B;if(!v1$.HttpRequest.isInstance(D))throw Error("Request to be presigned is not an valid HTTP request.");delete D.headers["amz-sdk-invocation-id"],delete D.headers["amz-sdk-request"],delete D.headers["x-amz-user-agent"];let O,j={...Q,signingRegion:Q.signingRegion??N.signing_region??X,signingService:Q.signingService??N.signing_service};if(N.s3ExpressIdentity)O=await Y.presignWithCredentials(D,N.s3ExpressIdentity,j);else O=await Y.presign(D,j);return{response:{},output:{$metadata:{httpStatusCode:200},presigned:O}}},G="presignInterceptMiddleware",W=$.middlewareStack.clone();W.addRelativeTo(J,{name:G,relation:"before",toMiddleware:"awsAuthMiddleware",override:!0});let K=Z.resolveMiddleware(W,$.config,{}),{output:H}=await K({input:Z.input}),{presigned:F}=H;return V1$(F)};var b1$=L(()=>{I1$();as0();_1$=_(G1(),1),v1$=_(t5(),1)});var x1$=L(()=>{b1$();as0()});import{extname as n94}from"path";function A3($){let Z;try{Z=decodeURIComponent($)}catch{Z=$}let Y=Z.replace(/\0/g,"").replace(/[\x00-\x1f\x7f]/g,"").replace(/\\/g,"/").split("/"),X=[];for(let J of Y)if(J==="..")X.pop();else if(J!=="."&&J!=="")X.push(J);return X.join("/")}function Gw($,Z){let Q=A3(Z);if(!Q)throw Error("Key is empty after sanitization");return`${$}/${Q}`}function f1$($,Z){if(!Z)return`${$}/`;let Q=A3(Z);return`${$}/${Q}${Q.endsWith("/")?"":"/"}`}function qc($,Z,Q){let Y=Q.split("/").map(encodeURIComponent).join("/");return`${$}/api/${encodeURIComponent(Z)}/files/${Y}`}function es0($,Z){let Q=`${$}/`;if(Z.startsWith(Q))return Z.slice(Q.length);return Z}function x7($){let Z=n94($).toLowerCase();return t94[Z]??"application/octet-stream"}function T30($){let Z=$.split(";")[0].trim();if(o94.has(Z))return!0;if(Z.startsWith("text/"))return!0;return!1}var t94,o94;var iH=L(()=>{t94={".json":"application/json",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".mjs":"application/javascript",".ts":"text/typescript",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".xml":"application/xml",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".pdf":"application/pdf",".zip":"application/zip",".gz":"application/gzip",".tar":"application/x-tar",".wasm":"application/wasm",".yaml":"application/yaml",".yml":"application/yaml",".toml":"application/toml"};o94=new Set(["application/json","text/html","text/css","application/javascript","text/typescript","text/plain","text/markdown","text/csv","application/xml","image/svg+xml","application/yaml","application/toml"])});class $r0{client;bucket;constructor($){this.bucket=$.bucket,this.client=new QY({endpoint:$.endpoint,region:$.region,credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},forcePathStyle:$.forcePathStyle})}async getBytesOrPresign($,Z,Q){let Y=Gw($,Z),X=await this.client.send(new xU({Bucket:this.bucket,Key:Y})),J=X.ContentLength??0,G=X.ContentType??x7(Z);if(J>Q.presignWhenLargerThan){let F=await A30(this.client,new bU({Bucket:this.bucket,Key:Y}),{expiresIn:Q.presignExpiresIn??3600});return{error:"FILE_TOO_LARGE",size:J,maxInlineSize:Q.presignWhenLargerThan,presignedUrl:F,contentType:G}}let K=await(await this.client.send(new bU({Bucket:this.bucket,Key:Y}))).Body.transformToByteArray(),H=T30(G);return{content:H?new TextDecoder().decode(K):Buffer.from(K).toString("base64"),contentType:G,encoding:H?"utf-8":"base64",size:J,lastModified:X.LastModified,etag:X.ETag}}async getBytes($,Z){let Q=Gw($,Z);return(await this.client.send(new bU({Bucket:this.bucket,Key:Q}))).Body.transformToByteArray()}async put($,Z,Q,Y){let X=Gw($,Z),J=Y?.contentType??x7(Z);return{etag:(await this.client.send(new z3({Bucket:this.bucket,Key:X,Body:typeof Q==="string"?Buffer.from(Q,"utf-8"):Q,ContentType:J}))).ETag,key:Z}}async list($,Z){let Q=f1$($,Z?.prefix),Y=await this.client.send(new aW({Bucket:this.bucket,Prefix:Q,MaxKeys:Z?.maxKeys??1000,ContinuationToken:Z?.continuationToken,Delimiter:Z?.delimiter})),X=Y.CommonPrefixes?.map((J)=>es0($,J.Prefix??"")).filter(Boolean);return{objects:(Y.Contents??[]).map((J)=>({key:es0($,J.Key??""),size:J.Size??0,lastModified:J.LastModified,etag:J.ETag})),isTruncated:Y.IsTruncated??!1,nextContinuationToken:Y.NextContinuationToken,commonPrefixes:X&&X.length>0?X:void 0}}async delete($,Z){let Q=Gw($,Z);await this.client.send(new mD({Bucket:this.bucket,Key:Q}))}async head($,Z){let Q=Gw($,Z),Y=await this.client.send(new xU({Bucket:this.bucket,Key:Q}));return{contentType:Y.ContentType??x7(Z),size:Y.ContentLength??0,lastModified:Y.LastModified,etag:Y.ETag,metadata:Y.Metadata&&Object.keys(Y.Metadata).length>0?Y.Metadata:void 0}}async presignedGetUrl($,Z,Q=3600,Y){let X=Gw($,Z);return A30(this.client,new bU({Bucket:this.bucket,Key:X}),{expiresIn:Q})}async presignedPutUrl($,Z,Q=3600,Y){let X=Gw($,Z);return A30(this.client,new z3({Bucket:this.bucket,Key:X,ContentType:Y}),{expiresIn:Q})}}var y1$=L(()=>{va();x1$();iH()});function s94(){let $=B0();return!!($.s3Endpoint&&$.s3Bucket&&$.s3AccessKeyId&&$.s3SecretAccessKey)}function XJ(){if(ba!==void 0)return ba;if(!s94())return ba=null,null;let $=B0();return ba=new $r0({endpoint:$.s3Endpoint,bucket:$.s3Bucket,region:$.s3Region,accessKeyId:$.s3AccessKeyId,secretAccessKey:$.s3SecretAccessKey,forcePathStyle:$.s3ForcePathStyle}),ba}var ba;var Ww=L(()=>{u1();y1$()});function T3($,Z){return{getBytesOrPresign:(Q,Y)=>$.getBytesOrPresign(Z,Q,Y),getBytes:(Q)=>$.getBytes(Z,Q),put:(Q,Y,X)=>$.put(Z,Q,Y,X),list:(Q)=>$.list(Z,Q),delete:(Q)=>$.delete(Z,Q),head:(Q)=>$.head(Z,Q),presignedGetUrl:(Q,Y,X)=>$.presignedGetUrl(Z,Q,Y,X),presignedPutUrl:(Q,Y,X)=>$.presignedPutUrl(Z,Q,Y,X)}}import{mkdir as r94,readdir as a94,readFile as Zr0,stat as q30,unlink as e94,writeFile as $Z4}from"fs/promises";import{createHmac as ZZ4}from"crypto";import{dirname as QZ4,join as xa}from"path";function Qr0($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return xa(YZ4,Z)}function Rc($,Z){return xa(Qr0($),A3(Z))}class eW{orgId;baseUrl;constructor($,Z){this.orgId=$;this.baseUrl=Z}async getBytesOrPresign($,Z){let Q=Rc(this.orgId,$),Y=await q30(Q),X=x7($);if(Y.size>Z.presignWhenLargerThan)return{error:"FILE_TOO_LARGE",size:Y.size,maxInlineSize:Z.presignWhenLargerThan,presignedUrl:await this.presignedGetUrl($),contentType:X};let J=await Zr0(Q),G=T30(X);return{content:G?new TextDecoder().decode(J):Buffer.from(J).toString("base64"),contentType:X,encoding:G?"utf-8":"base64",size:Y.size,lastModified:Y.mtime}}async getBytes($){let Z=await Zr0(Rc(this.orgId,$));return new Uint8Array(Z)}async put($,Z,Q){let Y=Rc(this.orgId,$);return await r94(QZ4(Y),{recursive:!0}),await $Z4(Y,typeof Z==="string"?Buffer.from(Z,"utf-8"):Z),{key:$}}async list($){let Z=$?.prefix?xa(Qr0(this.orgId),A3($.prefix)):Qr0(this.orgId),Q;try{Q=await a94(Z,{withFileTypes:!0})}catch{return{objects:[],isTruncated:!1}}let Y=$?.maxKeys??1000,X=$?.prefix,J=Q.filter((W)=>W.isFile());if($?.delimiter){let W=[],K=Q.filter((D)=>D.isDirectory());for(let D of K){let O=X?`${X}/${D.name}/`:`${D.name}/`;W.push(O)}W.sort();let H=Y,F=W.slice(0,H);H-=F.length;let U=J.slice(0,H),N=W.length+J.length;return{objects:await Promise.all(U.map(async(D)=>{let O=await q30(xa(Z,D.name));return{key:X?`${X}/${D.name}`:D.name,size:O.size,lastModified:O.mtime}})),isTruncated:N>Y,commonPrefixes:F.length>0?F:void 0}}return{objects:await Promise.all(J.slice(0,Y).map(async(W)=>{let K=await q30(xa(Z,W.name));return{key:X?`${X}/${W.name}`:W.name,size:K.size,lastModified:K.mtime}})),isTruncated:J.length>Y}}async delete($){await e94(Rc(this.orgId,$))}async head($){let Z=await q30(Rc(this.orgId,$));return{contentType:x7($),size:Z.size,lastModified:Z.mtime}}async presignedGetUrl($,Z,Q){if(Q?.requireFetchable)throw Error("object storage returned a not fetchable (data:) URL; configure real S3/R2/MinIO for large-payload offload");let Y=Rc(this.orgId,$),X=await Zr0(Y),J=x7($),G=Buffer.from(X).toString("base64");return`data:${J};base64,${G}`}async presignedPutUrl($,Z=3600){if(!this.baseUrl)throw Error("baseUrl required for presigned PUT URLs in dev mode");let Q=A3($),Y=Math.floor(Date.now()/1000)+Z,X=B0().encryptionKey||"dev-secret",J=`${this.orgId}:${Q}:${Y}:PUT`,G=ZZ4("sha256",X).update(J).digest("hex"),W=new URL(`/api/dev-assets/${this.orgId}/${Q}`,this.baseUrl);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",G),W.searchParams.set("method","PUT"),W.toString()}}var YZ4="./data/assets";var Mc=L(()=>{iH();u1()});function $K($){return XZ4.test($)&&$!=="."&&$!==".."}function f7($){if(!$K($))throw Error(`Invalid org-fs volume name: ${JSON.stringify($)}`)}function N5($){return A3($)}function Vc($){let Z=$.lastIndexOf("/");return Z===-1?"":$.slice(0,Z)}function Kw($){let Z=Vc($);if(Z==="")return[];let Q=Z.split("/"),Y=[],X="";for(let J of Q)X=X===""?J:`${X}/${J}`,Y.push(X);return Y}function ZK($,Z){return`${Yr0}/${$}/${Z}`}function fU($){let[Z,Q="",...Y]=A3($).split("/");return Z===Yr0?{volume:Q,path:Y.join("/")}:null}function R30($){return`${Yr0}/${$}/`}var XZ4,Yr0="_fs";var YY=L(()=>{iH();XZ4=/^[A-Za-z0-9_.-]{1,128}$/});import{createHmac as Xr0,randomBytes as Jr0,scrypt as JZ4,timingSafeEqual as g1$}from"crypto";import{promisify as GZ4}from"util";async function u1$($){let Z=Jr0(16),Q=await h1$($,Z,WZ4);return`scrypt$${Z.toString("hex")}$${Q.toString("hex")}`}async function l1$($,Z){let Q=Z.split("$");if(Q.length!==3||Q[0]!=="scrypt")return!1;let Y=Buffer.from(Q[1],"hex"),X=Buffer.from(Q[2],"hex");if(Y.length===0||X.length===0)return!1;let J;try{J=await h1$($,Y,X.length)}catch{return!1}return X.length===J.length&&g1$(X,J)}function c1$(){return Jr0(16).toString("hex")}function m1$(){if(M30)return M30;let $;try{let Z=B0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return M30=$?Buffer.from($):Jr0(32),M30}function d1$($){let Z=Buffer.from(JSON.stringify($)).toString("base64url"),Q=Xr0("sha256",m1$()).update(Z).digest("base64url");return`${Z}.${Q}`}function i1$($,Z){let Q=$.indexOf(".");if(Q<0)return null;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(Xr0("sha256",m1$()).update(Y).digest("base64url"));if(X.length!==J.length||!g1$(X,J))return null;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return null}if(G.o!==Z.org||G.v!==Z.volume||G.s!==Z.secret||typeof G.e!=="number"||G.e<Z.nowSec)return null;return{govPath:G.p}}function Gr0($,Z,Q){return`fsu_${Xr0("sha256","fsunlock-name").update(`${$}:${Z}:${Q}`).digest("hex").slice(0,16)}`}var WZ4=64,h1$,M30=null;var Wr0=L(()=>{u1();h1$=GZ4(JZ4)});import{createHash as KZ4}from"crypto";function BZ4($){if(typeof $!=="object"||$===null)return!1;let Z=$;return Z.name==="NoSuchKey"||Z.Code==="NoSuchKey"||Z.code==="ENOENT"||Z.$metadata?.httpStatusCode===404}function p1$($){return KZ4("sha256").update($).digest("hex")}class QK{storage;manifest;organizationId;maxFileBytes;volumeQuotaBytes;constructor($,Z,Q,Y={}){this.storage=$;this.manifest=Z;this.organizationId=Q;this.maxFileBytes=Y.maxFileBytes??UZ4,this.volumeQuotaBytes=Y.volumeQuotaBytes??NZ4}async usage($){return f7($),this.manifest.usage(this.organizationId,$)}async stat($,Z){return f7($),this.manifest.get(this.organizationId,$,N5(Z))}async listVolumeFiles($){return f7($),this.manifest.listVolumeFiles(this.organizationId,$)}async listDir($,Z){return f7($),this.manifest.listDir(this.organizationId,$,N5(Z))}async read($,Z){let Q=await this.requireFile($,Z);try{return await this.storage.getBytes(ZK($,Q.path))}catch(Y){if(BZ4(Y))throw new JJ(`No such file: ${Q.path}`);throw Y}}async setShareMode($,Z,Q,Y){f7($);let X=N5(Z),J=await this.manifest.get(this.organizationId,$,X);if(!J)throw new JJ(`No such path: ${X}`);let G=null,W=null;if(Q==="password"){if(!Y.password)throw new q3("A password is required to set password mode");G=await u1$(Y.password),W=c1$()}let K=await this.manifest.setShareMode({organizationId:this.organizationId,volume:$,path:J.path,readPublic:Q!=="private",passwordHash:G,shareSecret:W,actor:Y.actor});if(!K)throw new JJ(`No such path: ${J.path}`);return K}async setReadPublic($,Z,Q,Y){return this.setShareMode($,Z,Q?"public":"private",{actor:Y.actor})}async resolveReadAccess($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")return{access:"private"};let X=await this.manifest.resolveGoverningShare({organizationId:this.organizationId,volume:$,candidatePaths:[Q,...Kw(Q)]});if(!X)return{access:"private"};if(!X.passwordHash)return{access:"public"};return{access:"password",govPath:X.path,secret:X.secret??"",passwordHash:X.passwordHash}}async isPubliclyReadable($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")return!1;if(Y.readPublic)return!0;return this.manifest.hasPublicAncestorDir(this.organizationId,$,Kw(Q))}async inheritsPublic($,Z){return f7($),this.manifest.hasPublicAncestorDir(this.organizationId,$,Kw(N5(Z)))}async childrenInheritPublic($,Z){f7($);let Q=N5(Z);if(Q==="")return!1;return this.manifest.hasPublicAncestorDir(this.organizationId,$,[...Kw(Q),Q])}async recentWithEffectivePublic($){return this.withEffectivePublic(await this.recent($))}async searchWithEffectivePublic($,Z,Q,Y,X){return this.withEffectivePublic(await this.manifest.searchFiles({organizationId:this.organizationId,query:$,limit:Z,volumes:Q,pathPrefix:Y?N5(Y):void 0,beforeSeq:X}))}async withEffectivePublic($){let Z=new Map;for(let Y of $){let X=Z.get(Y.volume);if(!X)X=new Set,Z.set(Y.volume,X);for(let J of Kw(Y.path))X.add(J)}let Q=new Map;return await Promise.all([...Z].map(async([Y,X])=>{let J=await this.manifest.publicDirPaths({organizationId:this.organizationId,volume:Y,paths:[...X]});Q.set(Y,new Set(J))})),$.map((Y)=>{let X=Q.get(Y.volume),J=!!X&&Kw(Y.path).some((G)=>X.has(G));return{...Y,effectivePublic:Y.readPublic||J}})}async presignRead($,Z,Q){let Y=await this.requireFile($,Z);return this.storage.presignedGetUrl(ZK($,Y.path),Q)}async write($,Z,Q,Y){f7($);let X=N5(Z);if(X==="")throw new q3("Cannot write to the volume root");let J=typeof Q==="string"?new TextEncoder().encode(Q):Q;if(J.byteLength>this.maxFileBytes)throw new hA(`File exceeds the ${this.maxFileBytes}-byte per-file limit`);let[G,W]=await Promise.all([Y.skipVolumeQuota?Promise.resolve(null):this.manifest.usage(this.organizationId,$),this.manifest.get(this.organizationId,$,X)]);if(W?.kind==="dir")throw new q3(`Cannot write a file at ${X}: a directory exists there`);if(Y.expect){let K=W?.kind==="file"?W.contentHash:null;if(!("absent"in Y.expect?!W:K===Y.expect.contentHash))throw new Ic(`${X} changed since it was read`)}if(G){let K=W?.kind==="file"?W.size:0;if(G.bytes-K+J.byteLength>this.volumeQuotaBytes)throw new hA(`Write would exceed the volume quota of ${this.volumeQuotaBytes} bytes`)}await this.ensureDirs($,X,Y.actor),await this.storage.put(ZK($,X),J,{contentType:Y.contentType??x7(X)});try{return await e$(()=>this.manifest.putFile({organizationId:this.organizationId,volume:$,path:X,parent:Vc(X),contentHash:p1$(J),size:J.byteLength,actor:Y.actor,threadId:Y.threadId??null}))}catch(K){throw console.error("org-fs manifest write lost after object put",{organizationId:this.organizationId,volume:$,path:X,size:J.byteLength,error:K instanceof Error?K.message:String(K)}),K}}async mkdir($,Z,Q){f7($);let Y=N5(Z);if(Y==="")return;if((await this.manifest.get(this.organizationId,$,Y))?.kind==="file")throw new q3(`Cannot create a directory at ${Y}: a file exists there`);await this.ensureDirs($,Y,Q.actor),await this.manifest.putDir({organizationId:this.organizationId,volume:$,path:Y,parent:Vc(Y),actor:Q.actor})}async delete($,Z,Q){f7($);let Y=N5(Z);if(Y==="")throw new q3("Cannot delete the volume root");let X=await this.manifest.get(this.organizationId,$,Y);if(!X)return;if(X.kind==="dir"){let J=await this.manifest.listSubtreeFiles(this.organizationId,$,Y);await Promise.all(J.map((G)=>this.storage.delete(ZK($,G.path)))),await this.manifest.tombstoneSubtree(this.organizationId,$,Y,Q.actor);return}await this.storage.delete(ZK($,Y)),await this.manifest.tombstone(this.organizationId,$,Y,Q.actor)}async move($,Z,Q,Y){f7($);let X=N5(Z),J=N5(Q);if(X===""||J==="")throw new q3("Cannot move the volume root");if(J===X||J.startsWith(`${X}/`))throw new q3(`Cannot move ${X} onto itself or into its own subtree`);let G=await this.manifest.get(this.organizationId,$,X);if(!G)throw new JJ(`No such path: ${X}`);if(G.kind==="file"){let H=await this.storage.getBytes(ZK($,X));await this.write($,J,H,{...Y,skipVolumeQuota:!0}),await this.delete($,X,Y);return}let[W,K]=await Promise.all([this.manifest.listSubtreeFiles(this.organizationId,$,X),this.manifest.listSubtreeDirs(this.organizationId,$,X)]);await this.mkdir($,J,Y);for(let H of W){let F=H.path.slice(X.length+1),U=await this.storage.getBytes(ZK($,H.path));await this.write($,`${J}/${F}`,U,{...Y,skipVolumeQuota:!0})}for(let H of K){let F=H.path.slice(X.length+1);await this.mkdir($,`${J}/${F}`,Y)}await this.delete($,X,Y)}async filesExist($,Z){f7($);let Q=await this.manifest.liveFilePaths({organizationId:this.organizationId,volume:$,paths:Z.map((Y)=>N5(Y))});return new Set(Q)}async recent($){return this.manifest.recentFiles({organizationId:this.organizationId,limit:$})}async changes($,Z,Q=HZ4){f7($);let Y=Z||"0";if(!/^\d+$/.test(Y))throw new q3(`Invalid cursor: ${Z}`);let X=await this.manifest.changesSince({organizationId:this.organizationId,volume:$,sinceSeq:Y,limit:Q}),J=X.at(-1);return{entries:X,cursor:J?J.seq:Z||"0",hasMore:X.length>=Q}}async latestSeq($){return f7($),this.manifest.latestSeq({organizationId:this.organizationId,volume:$})}async backfillFromStorage($,Z){f7($);let Q=R30($),Y,X=0;do{let J=await this.storage.list({prefix:Q,maxKeys:FZ4,continuationToken:Y});for(let G of J.objects){let W=G.key.slice(Q.length);if(W==="")continue;await this.ensureDirs($,W,Z.actor);let K=await this.storage.getBytes(G.key);await this.manifest.putFile({organizationId:this.organizationId,volume:$,path:W,parent:Vc(W),contentHash:p1$(K),size:K.byteLength,actor:Z.actor}),X++}Y=J.isTruncated?J.nextContinuationToken:void 0}while(Y);return X}async requireFile($,Z){f7($);let Q=N5(Z),Y=await this.manifest.get(this.organizationId,$,Q);if(!Y||Y.kind!=="file")throw new JJ(`No such file: ${Q}`);return Y}async ensureDirs($,Z,Q){for(let Y of Kw(Z))await this.manifest.putDir({organizationId:this.organizationId,volume:$,path:Y,parent:Vc(Y),actor:Q})}}var HZ4=500,FZ4=1000,UZ4=524288000,NZ4=10737418240,hA,q3,Ic,JJ;var yU=L(()=>{p$();iH();YY();Wr0();hA=class hA extends Error{constructor($){super($);this.name="OrgFsQuotaError"}};q3=class q3 extends Error{constructor($){super($);this.name="OrgFsValidationError"}};Ic=class Ic extends Error{constructor($){super($);this.name="OrgFsConflictError"}};JJ=class JJ extends Error{constructor($){super($);this.name="OrgFsNotFoundError"}}});import{existsSync as DZ4}from"fs";import{join as t1$}from"path";import{z as gU}from"zod";function YK($){return $.startsWith(o1$)}function Hw($){return`${o1$}${$}`}function wZ4($){let Z=new Map(s1$.map((Q)=>[Q.set,Q]));if($)try{for(let Q of jZ4.parse(JSON.parse($)))Z.set(Q.set,Q)}catch(Q){console.warn("[org-fs] invalid ORGFS_PUBLIC_SETS \u2014 using built-in defaults only",Q)}return[...Z.values()]}function XK(){let $=B0(),Z=wZ4($.orgFsPublicSetsJson);if($.nodeEnv==="production")return Z;return Z.map((Q)=>Q===s1$[0]&&DZ4(t1$(n1$,Q.paths[0].from))?{...Q,dir:n1$}:Q)}function ya($){let Z=XJ(),Q=Z?T3(Z,fa):new eW(fa,$.baseUrl);return new QK(Q,$.storage.orgFsEntries,fa)}var fa="org_orgfs_public_skills",o1$="public-",LZ4,OZ4,s1$,jZ4,n1$;var Fw=L(()=>{u1();Ww();Mc();yU();LZ4=gU.object({from:gU.string(),to:gU.string().optional()}),OZ4=gU.object({set:gU.string().regex(/^[a-z0-9][a-z0-9-]{0,40}$/),repo:gU.string().regex(/^[\w.-]+\/[\w.-]+$/),ref:gU.string().min(1),paths:gU.array(LZ4).min(1),dir:gU.string().optional()}),s1$=[{set:"core",repo:"decocms/studio",ref:"main",paths:[{from:"packages/sandbox/image/skills"}]},{set:"storefront",repo:"decocms/storefront-skills",ref:"main",paths:[{from:".claude-seo/skills"},{from:".claude-performance/skills"},{from:".claude-deco/skills"}]}],jZ4=gU.array(OZ4).refine(($)=>new Set($.map((Z)=>Z.set)).size===$.length,{message:"duplicate set names"});n1$=t1$(import.meta.dir,"../../../..")});function dD($){if(typeof $==="string")return $.length>0?[$]:[];if(Array.isArray($))return $.flatMap(dD);if($!==null&&typeof $==="object")return Object.values($).flatMap(dD);return[]}var v0;var S5=L(()=>{v0=class v0 extends Error{provider;status;retryAfterMs;constructor($){super($.message,{cause:$.cause});this.name="GitProviderError",this.provider=$.provider,this.status=$.status,this.retryAfterMs=$.retryAfterMs??null}get isRateLimited(){return this.status===429||this.retryAfterMs!==null}get isAuthFailure(){return this.status===401||this.status===403}}});import{sql as Uw}from"kysely";function Kr0($){if($===null)return null;return $ instanceof Date?$.toISOString():String($)}function pH($){return{organizationId:$.organization_id,volume:$.volume,path:$.path,parent:$.parent,kind:$.kind,contentHash:$.content_hash,size:Number($.size),seq:String($.seq),deletedAt:Kr0($.deleted_at),createdBy:$.created_by,createdAt:Kr0($.created_at)??"",updatedBy:$.updated_by,updatedAt:Kr0($.updated_at)??"",threadId:$.thread_id,readPublic:$.read_public,shareMode:!$.read_public?"private":$.share_password_hash?"password":"public"}}class ha{db;constructor($){this.db=$}async putFile($){let Z=new Date,Q=$.threadId??null,Y=await this.db.insertInto("org_fs_entry").values({organization_id:$.organizationId,volume:$.volume,path:$.path,parent:$.parent,kind:"file",content_hash:$.contentHash,size:$.size,deleted_at:null,created_by:$.actor,created_at:Z,updated_by:$.actor,updated_at:Z,thread_id:Q}).onConflict((X)=>X.columns(["organization_id","volume","path"]).doUpdateSet({kind:"file",content_hash:$.contentHash,size:$.size,deleted_at:null,updated_by:$.actor,updated_at:Z,seq:V30,read_public:Uw`case when org_fs_entry.deleted_at is not null then false else org_fs_entry.read_public end`,thread_id:Uw`coalesce(cast(${Q} as text), org_fs_entry.thread_id)`})).returning(nH).executeTakeFirstOrThrow();return pH(Y)}async putDir($){let Z=new Date;await this.db.insertInto("org_fs_entry").values({organization_id:$.organizationId,volume:$.volume,path:$.path,parent:$.parent,kind:"dir",content_hash:null,size:0,deleted_at:null,created_by:$.actor,created_at:Z,updated_by:$.actor,updated_at:Z}).onConflict((Q)=>Q.columns(["organization_id","volume","path"]).where("org_fs_entry.deleted_at","is not",null).doUpdateSet({kind:"dir",content_hash:null,size:0,deleted_at:null,updated_by:$.actor,updated_at:Z,seq:V30,read_public:Uw`case when org_fs_entry.deleted_at is not null then false else org_fs_entry.read_public end`})).execute()}async get($,Z,Q){let Y=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("path","=",Q).where("deleted_at","is",null).select(nH).executeTakeFirst();return Y?pH(Y):null}async listDir($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("parent","=",Q).where("deleted_at","is",null).select(nH).orderBy("path","asc").execute()).map((X)=>pH(X))}async listVolumeDirs($,Z){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("deleted_at","is",null).select(nH).execute()).map((Y)=>pH(Y))}async listVolumeFiles($,Z){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).select(nH).execute()).map((Y)=>pH(Y))}async listSubtreeFiles($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).where("path","like",`${ga(Q)}/%`).select(nH).execute()).map((X)=>pH(X))}async listSubtreeDirs($,Z,Q){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("deleted_at","is",null).where("path","like",`${ga(Q)}/%`).select(nH).execute()).map((X)=>pH(X))}async tombstone($,Z,Q,Y){await this.db.updateTable("org_fs_entry").set({deleted_at:new Date,updated_by:Y,updated_at:new Date,seq:V30}).where("organization_id","=",$).where("volume","=",Z).where("path","=",Q).where("deleted_at","is",null).execute()}async tombstoneSubtree($,Z,Q,Y){await this.db.updateTable("org_fs_entry").set({deleted_at:new Date,updated_by:Y,updated_at:new Date,seq:V30}).where("organization_id","=",$).where("volume","=",Z).where("deleted_at","is",null).where((X)=>X.or([X("path","=",Q),X("path","like",`${ga(Q)}/%`)])).execute()}async setShareMode($){let Z=new Date,Q=await this.db.updateTable("org_fs_entry").set({read_public:$.readPublic,share_password_hash:$.passwordHash,share_secret:$.shareSecret,updated_by:$.actor,updated_at:Z}).where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("path","=",$.path).where("deleted_at","is",null).returning(nH).executeTakeFirst();return Q?pH(Q):null}async resolveGoverningShare($){if($.candidatePaths.length===0)return null;let Z=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("read_public","=",!0).where("deleted_at","is",null).where("path","in",$.candidatePaths).select(["path","share_password_hash","share_secret"]).execute();if(Z.length===0)return null;Z.sort((Y,X)=>X.path.length-Y.path.length);let Q=Z[0];return{path:Q.path,passwordHash:Q.share_password_hash,secret:Q.share_secret}}async hasPublicAncestorDir($,Z,Q){if(Q.length===0)return!1;return!!await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","dir").where("read_public","=",!0).where("deleted_at","is",null).where("path","in",Q).select("path").limit(1).executeTakeFirst()}async publicDirPaths($){if($.paths.length===0)return[];return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("kind","=","dir").where("read_public","=",!0).where("deleted_at","is",null).where("path","in",$.paths).select("path").execute()).map((Q)=>Q.path)}async usage($,Z){let Q=await this.db.selectFrom("org_fs_entry").where("organization_id","=",$).where("volume","=",Z).where("kind","=","file").where("deleted_at","is",null).select((Y)=>[Y.fn.countAll().as("files"),Y.fn.coalesce(Y.fn.sum("size"),Uw`0`).as("bytes")]).executeTakeFirst();return{files:Number(Q?.files??0),bytes:Number(Q?.bytes??0)}}async liveFilePaths($){if($.paths.length===0)return[];return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("kind","=","file").where("deleted_at","is",null).where("path","in",$.paths).select(["path"]).execute()).map((Q)=>Q.path)}async recentFiles($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("kind","=","file").where("deleted_at","is",null).select(nH).orderBy("seq","desc").limit($.limit).execute()).map((Q)=>pH(Q))}async searchFiles($){if($.volumes&&$.volumes.length===0)return[];let Z=ga($.query),Q=this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("kind","=","file").where("deleted_at","is",null);if(Z)Q=Q.where("path","ilike",`%${Z}%`);if($.volumes)Q=Q.where("volume","in",$.volumes);if($.pathPrefix)Q=Q.where("path","like",`${ga($.pathPrefix)}/%`);if($.beforeSeq)Q=Q.where("seq","<",Uw`cast(${$.beforeSeq} as bigint)`);return(await Q.select(nH).orderBy("seq","desc").limit($.limit).execute()).map((X)=>pH(X))}async changesSince($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).where("seq",">",Uw`cast(${$.sinceSeq} as bigint)`).select(nH).orderBy("seq","asc").limit($.limit).execute()).map((Q)=>pH(Q))}async latestSeq($){return(await this.db.selectFrom("org_fs_entry").where("organization_id","=",$.organizationId).where("volume","=",$.volume).select(Uw`max(seq)`.as("seq")).executeTakeFirst())?.seq??"0"}}function ga($){return $.replace(/[\\%_]/g,"\\$&")}var nH,V30;var Hr0=L(()=>{nH=["organization_id","volume","path","parent","kind","content_hash","size","seq","deleted_at","created_by","created_at","updated_by","updated_at","thread_id","read_public","share_password_hash"],V30=Uw`nextval('org_fs_entry_seq')`});import{createHash as EZ4}from"crypto";import{readdir as PZ4,readFile as zZ4,stat as AZ4}from"fs/promises";import{join as r1$}from"path";import{gunzipSync as TZ4}from"zlib";function Ur0($,Z,Q){let Y=Z,X=Z+Q;while(Y<X&&$[Y]!==0)Y++;return new TextDecoder().decode($.subarray(Z,Y))}function RZ4($,Z,Q){let Y=Ur0($,Z,Q).trim();return Y===""?0:Number.parseInt(Y,8)}function MZ4($){let Z=new Map,Q=0,Y=null,X=null;while(Q+512<=$.length){let J=$.subarray(Q,Q+512);if(Q+=512,J.every((N)=>N===0))break;let G=Ur0(J,0,100),W=Ur0(J,345,155);if(W)G=`${W}/${G}`;let K=RZ4(J,124,12),H=String.fromCharCode(J[156]??0),F=$.subarray(Q,Q+K);if(Q+=Math.ceil(K/512)*512,H==="L"){let N=new TextDecoder().decode(F),B=N.indexOf("\x00");Y=B===-1?N:N.slice(0,B);continue}if(H==="x"){let N=new TextDecoder().decode(F);X=/(?:^|\n)\d+ path=([^\n]*)\n/.exec(N)?.[1]??null;continue}if(H==="g")continue;let U=X??Y??G;if(Y=null,X=null,H==="0"||H==="\x00"||H==="")Z.set(U,new Uint8Array(F))}return Z}function VZ4($,Z,Q){let Y=encodeURIComponent(Z);if(!Q)return{url:`https://codeload.github.com/${$}/tar.gz/${Y}`,headers:{}};return{url:`https://api.github.com/repos/${$}/tarball/${Y}`,headers:{Authorization:`Bearer ${Q}`,Accept:"application/vnd.github+json"}}}function a1$($,Z){if($.length>kc)throw Error(`tarball for ${Z} exceeds ${kc} bytes`);let Q=MZ4(new Uint8Array(TZ4($,{maxOutputLength:qZ4}))),Y=new Map;for(let[X,J]of Q){let G=X.indexOf("/");if(G===-1)continue;let W=X.slice(G+1);if(W)Y.set(W,J)}return Y}function e1$($,Z,Q){if($>Z)throw Error(`tarball for ${Q} exceeds ${Z} bytes`)}async function IZ4($,Z){let Q=[],Y=0,X=$.getReader();try{while(!0){let{done:W,value:K}=await X.read();if(W)break;Y+=K.length,e1$(Y,kc,Z),Q.push(K)}}finally{await X.cancel().catch(()=>{}),X.releaseLock()}let J=new Uint8Array(Y),G=0;for(let W of Q)J.set(W,G),G+=W.length;return J}function $$$($){if($ instanceof Nr0)return $.status>=500||$.status===429;if($ instanceof v0)return $.status===0||$.status>=500||$.status===429;if($ instanceof Error&&/declares .* bytes|exceeds .* bytes/.test($.message))return!1;return!0}async function kZ4($,Z,Q){let{url:Y,headers:X}=VZ4($,Z,Q),J=`${$}@${Z}`,G=async()=>{let W=await fetch(Y,{headers:X,signal:AbortSignal.timeout(60000)});if(!W.ok)throw await W.body?.cancel().catch(()=>{}),new Nr0(W.status,`tarball fetch failed for ${J}: HTTP ${W.status}`);let K=Number(W.headers.get("content-length")??0);if(K>kc)throw Error(`tarball for ${J} declares ${K} bytes (cap ${kc})`);let H=new Uint8Array(await W.arrayBuffer());return e1$(H.length,kc,J),H};try{let W=await e$(G,{maxAttempts:3,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:$$$});return a1$(W,J)}catch(W){if(W instanceof e6)throw W.cause instanceof Error?W.cause:W;throw W}}async function CZ4($,Z){let Q=new Map;for(let{from:Y}of Z){let X=r1$($,Y);for(let J of await PZ4(X,{recursive:!0})){let G=r1$(X,J);if(!(await AZ4(G)).isFile())continue;Q.set(Y?`${Y}/${J}`:J,new Uint8Array(await zZ4(G)))}}return Q}async function SZ4($,Z){if($.dir)return CZ4($.dir,$.paths);if(!Z.tarball)return kZ4($.repo,$.ref,Z.authToken);let Q=Z.tarball,Y=`${$.repo}@${$.ref}`,X;try{X=await e$(()=>Q(),{maxAttempts:3,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:$$$})}catch(J){throw J instanceof e6&&J.cause instanceof Error?J.cause:J}if(!X)throw Error(`tarball not found for ${Y}`);return a1$(await IZ4(X,Y),Y)}function _Z4($,Z){let Q=new Map;for(let{from:Y,to:X}of Z){let J=Y===""?"":`${Y.replace(/\/+$/,"")}/`;for(let[G,W]of $){if(!G.startsWith(J))continue;let K=G.slice(J.length);if(!K)continue;let H=N5(X?`${X}/${K}`:K);if(H)Q.set(H,W)}}return Q}function vZ4($,Z){let Q=new Set;for(let J of $){let G=J.split("/");for(let W=1;W<G.length;W++)Q.add(G.slice(0,W).join("/"))}let Y=[...Z].filter((J)=>!Q.has(J)).sort((J,G)=>J.length-G.length),X=[];for(let J of Y)if(!X.some((G)=>J.startsWith(`${G}/`)))X.push(J);return X}function bZ4($){return EZ4("sha256").update($).digest("hex")}function xZ4($){return $.manifestHash===$.hash&&$.storedPaths.has($.path)}async function fZ4($,Z){let Q=R30(Z),Y=new Set,X;do{let J=await $.list({prefix:Q,continuationToken:X});for(let G of J.objects)Y.add(G.key.slice(Q.length));X=J.nextContinuationToken}while(X);return Y}async function Br0($,Z){let{orgId:Q,volume:Y,source:X}=Z,J=XJ(),G=J?T3(J,Q):new eW(Q,Z.baseUrl),W=new ha($),K=new QK(G,W,Q),H=_Z4(await SZ4(X,Z),X.paths),F=new Map((await W.listVolumeFiles(Q,Y)).map((j)=>[j.path,j.contentHash]));if(H.size===0&&F.size>0)throw Error(`volume "${Y}" resolved 0 files from ${X.repo}@${X.ref} `+`(check paths config) \u2014 refusing to delete the ${F.size} existing files`);let U=0;for(let j of F.keys()){if(H.has(j))continue;await K.delete(Y,j,{actor:Fr0}),U++}let N=await W.listVolumeDirs(Q,Y);for(let j of vZ4(H.keys(),N.map((w)=>w.path)))await K.delete(Y,j,{actor:Fr0});let B=0,D=0,O=await fZ4(G,Y);for(let[j,w]of H){if(xZ4({hash:bZ4(w),manifestHash:F.get(j),storedPaths:O,path:j})){D++;continue}await K.write(Y,j,w,{actor:Fr0,contentType:x7(j),skipVolumeQuota:Z.skipVolumeQuota}),B++}return{written:B,deleted:U,unchanged:D}}async function yZ4($,Z,Q){let Y=await Br0($,{orgId:fa,baseUrl:Q.baseUrl,volume:Hw(Z.set),source:Z,skipVolumeQuota:!0});return{set:Z.set,...Y}}async function Dr0($,Z,Q){try{return await yZ4($,Z,Q)}catch(Y){return{set:Z.set,error:Y instanceof Error?Y.message:String(Y)}}}async function Z$$($,Z){let Q=[];for(let Y of XK())Q.push(await Dr0($,Y,Z));return Q}var Fr0="system:skill-set-sync",kc=209715200,qZ4=1073741824,Nr0;var I30=L(()=>{p$();S5();Hr0();Mc();Ww();iH();yU();YY();Fw();Nr0=class Nr0 extends Error{status;constructor($,Z){super(Z);this.status=$;this.name="TarballHttpError"}}});import{DBOS as k30,SchedulerMode as gZ4}from"@dbos-inc/dbos-sdk";function Q$$($){Lr0=$}function uZ4(){if(!Lr0)throw Error("[org-fs] public-sets sync runtime not initialized \u2014 setPublicSetsSyncRuntime() must run before the workflow fires");return Lr0}async function lZ4($,Z){for(let Q of XK()){let Y=await k30.runStep(()=>{let X=uZ4();return Dr0(X.db,Q,{baseUrl:X.baseUrl})},{name:`syncPublicSet:${Q.set}`});if("error"in Y)console.warn(`[org-fs] public set "${Y.set}" sync failed: ${Y.error}`);else if(Y.written||Y.deleted)console.log(`[org-fs] public set "${Y.set}" synced: +${Y.written} -${Y.deleted} (=${Y.unchanged})`)}}function Y$$(){if(ua)return;ua=k30.registerWorkflow(lZ4,{name:"publicSetsSyncWorkflow"}),k30.registerScheduled(ua,{name:"publicSetsSyncWorkflow",crontab:hZ4,mode:gZ4.ExactlyOncePerIntervalWhenActive})}async function X$$(){if(XK().length===0||!ua)return;let $=new Date,Z=`public-sets-sync-boot:${$.toISOString().slice(0,13)}`;await k30.startWorkflow(ua,{workflowID:Z})($,$)}var hZ4="4,14,24,34,44,54 * * * *",Lr0=null,ua=null;var J$$=L(()=>{Fw();I30()});import{createHash as G$$}from"crypto";class Or0{db;vault;constructor($,Z){this.db=$;this.vault=Z}async upsert($,Z){let Q=new Date,Y={encrypted_auth:await this.vault.encrypt(Z),auth_hash:G$$("sha256").update(Z).digest("hex"),created_at:Q};return await this.db.insertInto("codex_subscriptions").values({user_id:$,...Y}).onConflict((X)=>X.column("user_id").doUpdateSet(Y)).execute(),{linkedAt:Q.toISOString(),expiresAt:null}}async find($){let Z=await this.db.selectFrom("codex_subscriptions").select("created_at").where("user_id","=",$).executeTakeFirst();return Z?{linkedAt:new Date(Z.created_at).toISOString(),expiresAt:null}:null}async findLiveToken($){let Z=await this.db.selectFrom("codex_subscriptions").select("encrypted_auth").where("user_id","=",$).executeTakeFirst();return Z?this.vault.decrypt(Z.encrypted_auth):null}async sync($,Z,Q){return(await this.db.updateTable("codex_subscriptions").set({encrypted_auth:await this.vault.encrypt(Q),auth_hash:G$$("sha256").update(Q).digest("hex")}).where("user_id","=",$).where("auth_hash","=",Z).executeTakeFirst()).numUpdatedRows>0n}async delete($){await this.db.deleteFrom("codex_subscriptions").where("user_id","=",$).execute()}}var W$$=()=>{};import{jwtVerify as cZ4,SignJWT as K$$}from"jose";import{randomBytes as mZ4}from"crypto";function H$$(){if(la)return la;let $=B0(),Z=$.studioJwtSecret??$.betterAuthSecret;if(Z)la=new TextEncoder().encode(Z);else console.warn("STUDIO_JWT_SECRET not set - generating random secret (not persistent)"),la=new Uint8Array(mZ4(32));return la}async function F$$($,Z="5m"){let Q=H$$();return await new K$$($).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Z).sign(Q)}async function jr0($){try{let Z=H$$(),{payload:Q}=await cZ4($,Z);return Q}catch{return}}async function NQ($,Z,Q=3600){let Y=B0(),X=Y.plansEnabled?Y.studioJwtSecret:Y.studioJwtSecret??Y.betterAuthSecret;if(!X)throw Error(Y.plansEnabled?"STUDIO_JWT_SECRET (or MESH_JWT_SECRET) is required to mint gateway JWTs when STUDIO_PLANS_ENABLED is set \u2014 BETTER_AUTH_SECRET is deliberately not a fallback, see resolve-config":"A deterministic JWT secret is required to mint gateway JWTs \u2014 set STUDIO_JWT_SECRET or BETTER_AUTH_SECRET");let J=new TextEncoder().encode(X);return await new K$$({iss:"mesh",sub:$,...Z&&{email:Z}}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1000)+Q).sign(J)}var la=null;var tH=L(()=>{u1()});import{createCipheriv as dZ4,createDecipheriv as iZ4,createHash as pZ4,randomBytes as U$$}from"crypto";class GJ{key;constructor($){if(Buffer.from($,"base64").length===D$$)this.key=Buffer.from($,"base64");else this.key=pZ4("sha256").update($).digest()}async encrypt($){let Z=U$$(ca),Q=dZ4(N$$,this.key,Z),Y=Q.update($,"utf8");Y=Buffer.concat([Y,Q.final()]);let X=Q.getAuthTag();return Buffer.concat([Z,X,Y]).toString("base64")}async decrypt($){let Z=Buffer.from($,"base64"),Q=Z.subarray(0,ca),Y=Z.subarray(ca,ca+B$$),X=Z.subarray(ca+B$$),J=iZ4(N$$,this.key,Q);J.setAuthTag(Y);let G=J.update(X);return G=Buffer.concat([G,J.final()]),G.toString("utf8")}static generateKey(){return U$$(D$$).toString("base64")}}var N$$="aes-256-gcm",ca=16,B$$=16,D$$=32;var Nw=()=>{};function g9(){let $=B0();if($.baseUrl)return $.baseUrl;return`http://localhost:${$.port??3000}`}function L$$(){return`http://localhost:${B0().port??3000}`}function B5(){return B0().publicUrl??g9()}var H9=L(()=>{u1()});function Cc($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}import{z as nZ4}from"zod";function da($){return uA.safeParse($).success}function ia($,Z){let Q=Cc($??"").slice(0,ma).replace(/-+$/,"");return da(Q)?Q:Z}function wr0($,Z){if(Z<=1)return $;let Q=`-${Z}`;return`${$.slice(0,ma-Q.length).replace(/-+$/,"")}${Q}`}var tZ4=2,ma=64,oZ4,sZ4,uA;var Bw=L(()=>{oZ4=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,sZ4=new Set(["new","edit","settings","apps","projects","connections"]),uA=nZ4.string().min(tZ4).max(ma).regex(oZ4,"Use lowercase letters, digits, and single hyphens between them").refine(($)=>!$.includes("--"),"Use single hyphens").refine(($)=>!sZ4.has($),"This slug is reserved")});import{z as b0}from"zod";function zr0($){let Z=$?.homeTiles;if(Array.isArray(Z)&&Z.length>0)return Z;let Q=$?.homeTile;return Q?[Q]:[]}function iD($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z=$,Q={};for(let[Y,X]of Object.entries(Z)){if(!X||typeof X!=="object")continue;if(Y!=="agent-sandbox"&&Y!=="local-api")continue;try{Q[Y]=Ar0.parse(X)}catch{}}return Q}function Tr0($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z={};for(let[Q,Y]of Object.entries($)){if(!Y||typeof Y!=="object"||Array.isArray(Y))continue;let X={};for(let[J,G]of Object.entries(Y)){let W=iD(G);if(Object.keys(W).length>0)X[J]=W}if(Object.keys(X).length>0)Z[Q]=X}return Z}var w$$,Er0=500,E$$=200,rZ4=200,aZ4=20,eZ4=50,$74=100,Z74=20,Q74=100,P$$=300,Y74=100,X74=8192,z$$,J74,A$$,Pr0,G74,W74,T$$,O$$,K74,C30,j$$,H74,F74,S30,U74,N74,Ar0,q$$,B74,D74,L74,O74,j74,w74,E74,R$$,P74,qr0,oY,Rr0,_30,v30;var Mr0=L(()=>{Bw();w$$=b0.object({connection_id:b0.string().describe("Connection ID"),selected_tools:b0.array(b0.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:b0.array(b0.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:b0.array(b0.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),z$$=w$$.extend({selected_tools:b0.array(b0.string()).max(Er0).nullable().optional().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:b0.array(b0.string()).max(Er0).nullable().optional().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:b0.array(b0.string()).max(Er0).nullable().optional().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),J74=b0.object({connectionId:b0.string(),toolName:b0.string(),label:b0.string(),icon:b0.string().nullable().optional()}),A$$=b0.object({id:b0.string().describe("Stable id; used as React key and ?tab= value"),title:b0.string().describe("Tab label"),icon:b0.string().optional().describe("Optional lucide icon name"),view:b0.object({type:b0.literal("ext-app"),appId:b0.string(),args:b0.record(b0.string(),b0.unknown()).optional()})}),Pr0=b0.enum(["overview","reports","board","site-editor","assets","releases","hosting","e2e","analytics","cdn","automations","experiments"]),G74=b0.enum(["on","off"]),W74=b0.enum(["on","off","manual","auto"]),T$$=b0.object({defaultMainView:b0.object({type:b0.string(),id:b0.string().optional(),toolName:b0.string().optional()}).nullable().optional(),chatDefaultOpen:b0.boolean().nullable().optional(),cmsDefaultOpen:b0.boolean().nullable().optional(),cms:W74.nullable().optional().describe("How this agent offers content editing. Absent means on; the retired `manual` / `auto` read as on too."),sidebarViews:b0.array(Pr0).max(10).nullable().optional().describe("Deprecated layout-scoped sidebar selections. Read only as a fallback when metadata.sidebarViews is absent."),tabs:b0.array(A$$).max(Z74).optional()}),O$$=b0.object({tileId:b0.string().optional(),connectionId:b0.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:b0.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),toolName:b0.string().optional().describe("Tool name \u2014 identifies which tool's inputSchema to display when editing tile props."),toolInput:b0.record(b0.string(),b0.unknown()).optional().describe("User-configured input props passed to MCPAppRenderer when rendering the tile."),minHeight:b0.number().int().positive().optional(),maxHeight:b0.number().int().positive().optional()}),K74=b0.object({banner:b0.string().nullable().optional(),bannerColor:b0.string().nullable().optional(),icon:b0.string().nullable().optional(),themeColor:b0.string().nullable().optional(),pinnedViews:b0.array(J74).max($74).nullable().optional(),layout:T$$.nullable().optional(),homeTile:O$$.nullable().optional(),homeTiles:b0.array(O$$).max(aZ4).nullable().optional(),homePrompts:b0.array(b0.string()).max(eZ4).nullable().optional()});C30=/^[A-Za-z_][A-Za-z0-9_]*$/,j$$=b0.string().min(1).regex(C30,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),H74=b0.discriminatedUnion("kind",[b0.object({key:j$$,kind:b0.literal("literal"),value:b0.string().max(X74)}),b0.object({key:j$$,kind:b0.literal("secret"),secretId:b0.string().min(1)})]),F74=b0.object({selected:b0.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:b0.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:b0.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:b0.array(H74).max(Y74).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that Studio resolves via the credential vault before posting /_sandbox/config.")}),S30=b0.object({url:b0.string().describe("Repository URL, including its provider host"),owner:b0.string().describe("Repository owner"),name:b0.string().describe("Repository name"),installationId:b0.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:b0.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials."),repositoryId:b0.string().optional().describe("First-class repository (REPOSITORY_LINK) backing this binding. When set, credentials come from the repository's git provider account rather than connectionId.")}),U74=b0.enum(["agent-sandbox","local-api"]),N74={sandboxHandle:b0.string().describe("Provider-specific handle"),previewUrl:b0.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:b0.string().nullable().optional().describe("Direct sandbox API URL for runtimes that expose one. Equal to previewUrl for local-api; null/absent for AgentSandbox, which routes control traffic through hosted Studio."),createdAt:b0.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:b0.object({packageManager:b0.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:b0.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:b0.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},Ar0=b0.object(N74);q$$=b0.record(b0.string().describe("userId"),b0.record(b0.string().describe("branch"),b0.partialRecord(U74,Ar0)));B74=b0.object({id:b0.string().describe("Stable identifier for this knowledge file"),name:b0.string().describe("File name shown in the UI"),kind:b0.enum(["file","skill"]).optional().describe("'file' (a single document) or 'skill' (a Claude Code skill folder containing SKILL.md). Defaults to 'file'."),volume:b0.string().describe("Org filesystem (Library) volume the file lives in"),path:b0.string().describe("Path within the volume"),url:b0.string().describe("Same-origin URL to read the file (display/download)"),contentType:b0.string().nullable().optional().describe("MIME type, used to decide whether to inline the content"),size:b0.number().nullable().optional().describe("File size in bytes"),addedAt:b0.string().describe("ISO timestamp when the file was attached")}),D74=b0.array(B74).max(Q74).nullable().optional().describe("Files attached to the agent as reference knowledge. Surfaced in the system prompt: small text documents are inlined, others are listed as retrievable references."),L74=b0.enum(["smart","code-review","open"]),O74=L74.nullable().optional().describe("Controls when this code agent's changes may be published directly vs. requiring PR review. 'smart' (default) uses AI to judge per change; 'code-review' requires review for any code; 'open' allows direct publish always."),j74=b0.boolean().nullable().optional().describe("Enable Fast Preview (sandbox-less): render the draft instantly on the preview server's own page via a ?__draft pointer, with reads/writes served by the decofile API against GitHub. Requires previewServerUrl (or legacy productionUrl) to be set to take effect."),w74=b0.boolean().nullable().optional().describe("EXPERIMENTAL: with Fast Preview on, refresh content edits via an in-place /live/previews render (no commit, no reload) instead of a commit + re-navigation. Deco-runtime preview targets only. Requires fastPreview."),E74=b0.string().nullable().optional().describe("Preview server URL \u2014 the deployment the CMS preview renders against (often the live site, e.g. https://acme.com). Painted in the preview iframe, and the render target for Fast Preview drafts. Supersedes the legacy productionUrl key."),R$$=b0.object({branch:b0.string().describe("Git branch backing this release"),name:b0.string().describe('User-facing name, e.g. "Black Friday 2026"'),color:b0.string().describe("Dot color token shown in the version switcher"),createdBy:b0.string().optional().describe("User ID who created the release"),createdAt:b0.string().optional().describe("ISO 8601 creation timestamp")}),P74=b0.array(R$$).max(P$$).nullable().optional().describe("Curated list of named, branch-backed releases shown in the version switcher. The base branch ('No ar') is derived, not stored here."),qr0={instructions:b0.string().nullable().optional().describe("Instructions also used as system prompt"),subAgents:b0.array(b0.string()).max(rZ4).nullable().optional().describe("Allowlist of Virtual MCP (agent) or concrete MCP connection IDs this agent may delegate to via subtask. Concrete connections create ephemeral subagents. null/absent = all active org targets; empty array = itself only."),ui:K74.nullable().optional().describe("UI customization settings"),sidebarViews:b0.array(Pr0).max(10).nullable().optional().describe("Project views selected for the sidebar. Interpret as an exact list when sidebarViewsVersion is 1; unversioned values use legacy native-only semantics. Runtime presence gates still apply."),sidebarViewsVersion:b0.literal(1).optional().describe("Version 1 marks metadata.sidebarViews as an exact list that can disable legacy default rows."),repository:S30.nullable().optional().describe("Linked repository"),runtime:F74.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),knowledge:D74,siteSlug:b0.string().nullable().optional().describe("The project's site id (asset tenancy, CDN paths, site tokens). Set once when the site is created or imported; any write that would change it is refused."),publishPolicy:O74,previewServerUrl:E74,productionUrl:b0.string().nullable().optional().describe("Legacy key for previewServerUrl \u2014 still read as a fallback. New writes use previewServerUrl."),fieldDescriptionTooltips:b0.boolean().nullable().optional().describe("Blocks form: opt in to showing a field's schema description as a hover tooltip on its title, instead of the default inline text below the title."),fastPreview:j74,releases:P74,fastPreviewInPlace:w74},oY=b0.object({id:b0.string().describe("Unique identifier"),title:b0.string().describe("Human-readable name"),url_slug:b0.string().nullable().optional().describe("Name of the project in Studio URLs, unique in the organization"),description:b0.string().nullable().describe("Description"),icon:b0.string().nullable().describe("Icon URL"),created_at:b0.string().describe("Creation timestamp"),updated_at:b0.string().describe("Last update timestamp"),created_by:b0.string().describe("User ID who created this item"),updated_by:b0.string().optional().describe("User ID who last updated this item"),organization_id:b0.string().describe("Organization ID this item belongs to"),status:b0.enum(["active","inactive"]).describe("Current status"),pinned:b0.boolean().describe("Whether this space is pinned to the sidebar"),metadata:b0.object(qr0).extend({instructions:b0.string().nullable().describe("Instructions also used as system prompt"),sandboxMap:q$$.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:b0.array(w$$).describe("Connections with their selected tools, resources, and prompts")}),Rr0=b0.object({title:b0.string().min(1).max(120).describe("Short label shown on the chip"),description:b0.string().max(280).optional().describe("One-line subtitle shown under the title"),text:b0.string().min(1).max(4000).describe("The message sent to the agent when the prompt is clicked")}),_30=b0.object({title:b0.string().min(1).max(255).describe("Name for the virtual MCP"),description:b0.string().max(500).nullable().optional().describe("Optional description"),icon:b0.string().nullish().describe("Optional icon URL"),status:b0.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:b0.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:b0.object(qr0).loose().superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).nullable().optional().describe("Additional metadata including MCP server instructions"),connections:b0.array(z$$).max(E$$).describe("Connections to include/exclude (can be empty for exclusion mode)"),prompts:b0.array(Rr0).max(20).optional().describe("Optional kickstart prompts to seed on the agent. Each becomes a clickable conversation starter (icebreaker) on the agent. Author them from the agent's role and the tools it will have so they're coherent and immediately useful.")}),v30=b0.object({title:b0.string().min(1).max(255).optional().describe("New name"),url_slug:uA.nullish().describe("New URL slug. The old one keeps redirecting. Renaming does not change it. null keeps the current slug."),description:b0.string().max(500).nullable().optional().describe("New description (null to clear)"),icon:b0.string().nullish().describe("New icon URL"),status:b0.enum(["active","inactive"]).optional().describe("New status"),pinned:b0.boolean().optional().describe("Pin/unpin from sidebar"),metadata:b0.object(qr0).loose().superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).nullable().optional().describe("Additional metadata including MCP server instructions"),connections:b0.array(z$$).max(E$$).optional().describe("New connections (replaces existing)"),prompts:b0.array(Rr0).max(20).optional().describe("Replace the agent's kickstart prompts with this full set. Omit to leave them unchanged; pass an empty array to remove all. Each becomes a clickable conversation starter (icebreaker).")})});function V$$($){return $==="repository"||$==="additionalRepositories"?Ir0[$]:$}function I$$($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:null}function M$$($){let Z=I$$($),Q=Z&&Z.url===void 0&&typeof Z.owner==="string"&&/^[\w.-]+$/.test(Z.owner)&&typeof Z.name==="string"&&/^[\w.-]+$/.test(Z.name)?`https://github.com/${Z.owner}/${Z.name}`:void 0,Y=S30.safeParse(Q?{...Z,url:Q}:$);if(!Y.success)return null;try{return Vr0(Y.data)??null}catch{return null}}function oH($){let Z=I$$($);if(!Z)return null;let Q={...Z};for(let[Y,X]of Object.entries(Ir0)){if(delete Q[X],!(Y in Z)&&!(X in Z))continue;let J=Object.hasOwn(Z,Y)?Z[Y]:Z[X];if(Y==="repository")Q.repository=M$$(J);else Q.additionalRepositories=J===null?null:Array.isArray(J)?J.map(M$$).filter((G)=>G!==null):[]}return Q}function Vr0($){if($===null||$===void 0)return $;let Z=S30.parse($),Q=new URL(Z.url);if(Q.protocol!=="https:"&&Q.protocol!=="http:")throw Error("Repository URL must use HTTP or HTTPS");return Q.username="",Q.password="",Q.search="",Q.hash="",{...Z,url:Q.toString()}}function hU($){if(!$)return null;let Z={...$};for(let[Q,Y]of Object.entries(Ir0)){if(Object.hasOwn($,Y))throw Error(`Repository metadata must use ${Q}; ${Y} is a database compatibility key`);if(delete Z[Q],delete Z[Y],!Object.hasOwn($,Q))continue;let X=$[Q];if(Q==="repository")Z[Y]=Vr0(X);else if(X===null||X===void 0)Z[Y]=X;else{if(!Array.isArray(X))throw Error("Additional repositories must be an array");Z[Y]=X.map((J)=>Vr0(J))}}return Z}var Ir0;var pa=L(()=>{Mr0();Ir0={repository:"githubRepo",additionalRepositories:"githubRepos"}});import*as g from"zod/v4";function d$$($){if($.params.ref.type!=="ref/prompt")throw TypeError(`Expected CompleteRequestPrompt, but got ${$.params.ref.type}`)}function i$$($){if($.params.ref.type!=="ref/resource")throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${$.params.ref.type}`)}var Dw="2025-11-25",k$$="2025-03-26",Lw,Ow="io.modelcontextprotocol/related-task",x30="2.0",y7,C$$,S$$,Uh5,z74,A74,kr0,R3,na,_$$=($)=>na.safeParse($).success,XY,JK,GK,JY,f30,v$$,uU=($)=>v$$.safeParse($).success,b$$,x$$=($)=>b$$.safeParse($).success,Cr0,sH=($)=>Cr0.safeParse($).success,l1,Sr0,_c=($)=>Sr0.safeParse($).success,M3,Nh5,pD,T74,y30,q74,ta,Sc,f$$,R74,M74,V74,I74,k74,C74,g30,_r0=($)=>g30.safeParse($).success,S74,vr0,h30,y$$=($)=>h30.safeParse($).success,u30,_74,v74,l30,b74,oa,sa,x74,ra,nD,f74,aa,c30,m30,d30,Bh5,i30,p30,n30,g$$,h$$,u$$,br0,l$$,ea,vc,c$$,y74,jw,xr0,ww,fr0,yr0,g74,bc,gr0,hr0,h74,u74,l74,c74,m74,d74,i74,p74,Ew,ur0,n74,xc,lr0,cr0,mr0,t74,o74,s74,dr0,r74,ir0,pr0,a74,e74,t30,fc,$e,lU,Dh5,$Q4,Pw,nr0,m$$,Ze,ZQ4,tr0,QQ4,YQ4,XQ4,JQ4,GQ4,WQ4,KQ4,b30,HQ4,FQ4,or0,lA,Qe,UQ4,NQ4,BQ4,DQ4,LQ4,OQ4,jQ4,wQ4,EQ4,PQ4,zQ4,AQ4,TQ4,qQ4,RQ4,sr0,MQ4,VQ4,zw,IQ4,kQ4,CQ4,o30,rr0,SQ4,_Q4,ar0,vQ4,Lh5,Oh5,jh5,wh5,Eh5,Ph5,x1,p$$;var VZ=L(()=>{Lw=[Dw,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],y7=g.custom(($)=>$!==null&&(typeof $==="object"||typeof $==="function")),C$$=g.union([g.string(),g.number().int()]),S$$=g.string(),Uh5=g.looseObject({ttl:g.number().optional(),pollInterval:g.number().optional()}),z74=g.object({ttl:g.number().optional()}),A74=g.object({taskId:g.string()}),kr0=g.looseObject({progressToken:C$$.optional(),[Ow]:A74.optional()}),R3=g.object({_meta:kr0.optional()}),na=R3.extend({task:z74.optional()}),XY=g.object({method:g.string(),params:R3.loose().optional()}),JK=g.object({_meta:kr0.optional()}),GK=g.object({method:g.string(),params:JK.loose().optional()}),JY=g.looseObject({_meta:kr0.optional()}),f30=g.union([g.string(),g.number().int()]),v$$=g.object({jsonrpc:g.literal(x30),id:f30,...XY.shape}).strict(),b$$=g.object({jsonrpc:g.literal(x30),...GK.shape}).strict(),Cr0=g.object({jsonrpc:g.literal(x30),id:f30,result:JY}).strict();(function($){$[$.ConnectionClosed=-32000]="ConnectionClosed",$[$.RequestTimeout=-32001]="RequestTimeout",$[$.ParseError=-32700]="ParseError",$[$.InvalidRequest=-32600]="InvalidRequest",$[$.MethodNotFound=-32601]="MethodNotFound",$[$.InvalidParams=-32602]="InvalidParams",$[$.InternalError=-32603]="InternalError",$[$.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(l1||(l1={}));Sr0=g.object({jsonrpc:g.literal(x30),id:f30.optional(),error:g.object({code:g.number().int(),message:g.string(),data:g.unknown().optional()})}).strict(),M3=g.union([v$$,b$$,Cr0,Sr0]),Nh5=g.union([Cr0,Sr0]),pD=JY.strict(),T74=JK.extend({requestId:f30.optional(),reason:g.string().optional()}),y30=GK.extend({method:g.literal("notifications/cancelled"),params:T74}),q74=g.object({src:g.string(),mimeType:g.string().optional(),sizes:g.array(g.string()).optional(),theme:g.enum(["light","dark"]).optional()}),ta=g.object({icons:g.array(q74).optional()}),Sc=g.object({name:g.string(),title:g.string().optional()}),f$$=Sc.extend({...Sc.shape,...ta.shape,version:g.string(),websiteUrl:g.string().optional(),description:g.string().optional()}),R74=g.intersection(g.object({applyDefaults:g.boolean().optional()}),g.record(g.string(),g.unknown())),M74=g.preprocess(($)=>{if($&&typeof $==="object"&&!Array.isArray($)){if(Object.keys($).length===0)return{form:{}}}return $},g.intersection(g.object({form:R74.optional(),url:y7.optional()}),g.record(g.string(),g.unknown()).optional())),V74=g.looseObject({list:y7.optional(),cancel:y7.optional(),requests:g.looseObject({sampling:g.looseObject({createMessage:y7.optional()}).optional(),elicitation:g.looseObject({create:y7.optional()}).optional()}).optional()}),I74=g.looseObject({list:y7.optional(),cancel:y7.optional(),requests:g.looseObject({tools:g.looseObject({call:y7.optional()}).optional()}).optional()}),k74=g.object({experimental:g.record(g.string(),y7).optional(),sampling:g.object({context:y7.optional(),tools:y7.optional()}).optional(),elicitation:M74.optional(),roots:g.object({listChanged:g.boolean().optional()}).optional(),tasks:V74.optional(),extensions:g.record(g.string(),y7).optional()}),C74=R3.extend({protocolVersion:g.string(),capabilities:k74,clientInfo:f$$}),g30=XY.extend({method:g.literal("initialize"),params:C74}),S74=g.object({experimental:g.record(g.string(),y7).optional(),logging:y7.optional(),completions:y7.optional(),prompts:g.object({listChanged:g.boolean().optional()}).optional(),resources:g.object({subscribe:g.boolean().optional(),listChanged:g.boolean().optional()}).optional(),tools:g.object({listChanged:g.boolean().optional()}).optional(),tasks:I74.optional(),extensions:g.record(g.string(),y7).optional()}),vr0=JY.extend({protocolVersion:g.string(),capabilities:S74,serverInfo:f$$,instructions:g.string().optional()}),h30=GK.extend({method:g.literal("notifications/initialized"),params:JK.optional()}),u30=XY.extend({method:g.literal("ping"),params:R3.optional()}),_74=g.object({progress:g.number(),total:g.optional(g.number()),message:g.optional(g.string())}),v74=g.object({...JK.shape,..._74.shape,progressToken:C$$}),l30=GK.extend({method:g.literal("notifications/progress"),params:v74}),b74=R3.extend({cursor:S$$.optional()}),oa=XY.extend({params:b74.optional()}),sa=JY.extend({nextCursor:S$$.optional()}),x74=g.enum(["working","input_required","completed","failed","cancelled"]),ra=g.object({taskId:g.string(),status:x74,ttl:g.union([g.number(),g.null()]),createdAt:g.string(),lastUpdatedAt:g.string(),pollInterval:g.optional(g.number()),statusMessage:g.optional(g.string())}),nD=JY.extend({task:ra}),f74=JK.merge(ra),aa=GK.extend({method:g.literal("notifications/tasks/status"),params:f74}),c30=XY.extend({method:g.literal("tasks/get"),params:R3.extend({taskId:g.string()})}),m30=JY.merge(ra),d30=XY.extend({method:g.literal("tasks/result"),params:R3.extend({taskId:g.string()})}),Bh5=JY.loose(),i30=oa.extend({method:g.literal("tasks/list")}),p30=sa.extend({tasks:g.array(ra)}),n30=XY.extend({method:g.literal("tasks/cancel"),params:R3.extend({taskId:g.string()})}),g$$=JY.merge(ra),h$$=g.object({uri:g.string(),mimeType:g.optional(g.string()),_meta:g.record(g.string(),g.unknown()).optional()}),u$$=h$$.extend({text:g.string()}),br0=g.string().refine(($)=>{try{return atob($),!0}catch{return!1}},{message:"Invalid Base64 string"}),l$$=h$$.extend({blob:br0}),ea=g.enum(["user","assistant"]),vc=g.object({audience:g.array(ea).optional(),priority:g.number().min(0).max(1).optional(),lastModified:g.iso.datetime({offset:!0}).optional()}),c$$=g.object({...Sc.shape,...ta.shape,uri:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),size:g.optional(g.number()),annotations:vc.optional(),_meta:g.optional(g.looseObject({}))}),y74=g.object({...Sc.shape,...ta.shape,uriTemplate:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),annotations:vc.optional(),_meta:g.optional(g.looseObject({}))}),jw=oa.extend({method:g.literal("resources/list")}),xr0=sa.extend({resources:g.array(c$$)}),ww=oa.extend({method:g.literal("resources/templates/list")}),fr0=sa.extend({resourceTemplates:g.array(y74)}),yr0=R3.extend({uri:g.string()}),g74=yr0,bc=XY.extend({method:g.literal("resources/read"),params:g74}),gr0=JY.extend({contents:g.array(g.union([u$$,l$$]))}),hr0=GK.extend({method:g.literal("notifications/resources/list_changed"),params:JK.optional()}),h74=yr0,u74=XY.extend({method:g.literal("resources/subscribe"),params:h74}),l74=yr0,c74=XY.extend({method:g.literal("resources/unsubscribe"),params:l74}),m74=JK.extend({uri:g.string()}),d74=GK.extend({method:g.literal("notifications/resources/updated"),params:m74}),i74=g.object({name:g.string(),description:g.optional(g.string()),required:g.optional(g.boolean())}),p74=g.object({...Sc.shape,...ta.shape,description:g.optional(g.string()),arguments:g.optional(g.array(i74)),_meta:g.optional(g.looseObject({}))}),Ew=oa.extend({method:g.literal("prompts/list")}),ur0=sa.extend({prompts:g.array(p74)}),n74=R3.extend({name:g.string(),arguments:g.record(g.string(),g.string()).optional()}),xc=XY.extend({method:g.literal("prompts/get"),params:n74}),lr0=g.object({type:g.literal("text"),text:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),cr0=g.object({type:g.literal("image"),data:br0,mimeType:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),mr0=g.object({type:g.literal("audio"),data:br0,mimeType:g.string(),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),t74=g.object({type:g.literal("tool_use"),name:g.string(),id:g.string(),input:g.record(g.string(),g.unknown()),_meta:g.record(g.string(),g.unknown()).optional()}),o74=g.object({type:g.literal("resource"),resource:g.union([u$$,l$$]),annotations:vc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),s74=c$$.extend({type:g.literal("resource_link")}),dr0=g.union([lr0,cr0,mr0,s74,o74]),r74=g.object({role:ea,content:dr0}),ir0=JY.extend({description:g.string().optional(),messages:g.array(r74)}),pr0=GK.extend({method:g.literal("notifications/prompts/list_changed"),params:JK.optional()}),a74=g.object({title:g.string().optional(),readOnlyHint:g.boolean().optional(),destructiveHint:g.boolean().optional(),idempotentHint:g.boolean().optional(),openWorldHint:g.boolean().optional()}),e74=g.object({taskSupport:g.enum(["required","optional","forbidden"]).optional()}),t30=g.object({...Sc.shape,...ta.shape,description:g.string().optional(),inputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),y7).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()),outputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),y7).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()).optional(),annotations:a74.optional(),execution:e74.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),fc=oa.extend({method:g.literal("tools/list")}),$e=sa.extend({tools:g.array(t30)}),lU=JY.extend({content:g.array(dr0).default([]),structuredContent:g.record(g.string(),g.unknown()).optional(),isError:g.boolean().optional()}),Dh5=lU.or(JY.extend({toolResult:g.unknown()})),$Q4=na.extend({name:g.string(),arguments:g.record(g.string(),g.unknown()).optional()}),Pw=XY.extend({method:g.literal("tools/call"),params:$Q4}),nr0=GK.extend({method:g.literal("notifications/tools/list_changed"),params:JK.optional()}),m$$=g.object({autoRefresh:g.boolean().default(!0),debounceMs:g.number().int().nonnegative().default(300)}),Ze=g.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),ZQ4=R3.extend({level:Ze}),tr0=XY.extend({method:g.literal("logging/setLevel"),params:ZQ4}),QQ4=JK.extend({level:Ze,logger:g.string().optional(),data:g.unknown()}),YQ4=GK.extend({method:g.literal("notifications/message"),params:QQ4}),XQ4=g.object({name:g.string().optional()}),JQ4=g.object({hints:g.array(XQ4).optional(),costPriority:g.number().min(0).max(1).optional(),speedPriority:g.number().min(0).max(1).optional(),intelligencePriority:g.number().min(0).max(1).optional()}),GQ4=g.object({mode:g.enum(["auto","required","none"]).optional()}),WQ4=g.object({type:g.literal("tool_result"),toolUseId:g.string().describe("The unique identifier for the corresponding tool call."),content:g.array(dr0).default([]),structuredContent:g.object({}).loose().optional(),isError:g.boolean().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),KQ4=g.discriminatedUnion("type",[lr0,cr0,mr0]),b30=g.discriminatedUnion("type",[lr0,cr0,mr0,t74,WQ4]),HQ4=g.object({role:ea,content:g.union([b30,g.array(b30)]),_meta:g.record(g.string(),g.unknown()).optional()}),FQ4=na.extend({messages:g.array(HQ4),modelPreferences:JQ4.optional(),systemPrompt:g.string().optional(),includeContext:g.enum(["none","thisServer","allServers"]).optional(),temperature:g.number().optional(),maxTokens:g.number().int(),stopSequences:g.array(g.string()).optional(),metadata:y7.optional(),tools:g.array(t30).optional(),toolChoice:GQ4.optional()}),or0=XY.extend({method:g.literal("sampling/createMessage"),params:FQ4}),lA=JY.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens"]).or(g.string())),role:ea,content:KQ4}),Qe=JY.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(g.string())),role:ea,content:g.union([b30,g.array(b30)])}),UQ4=g.object({type:g.literal("boolean"),title:g.string().optional(),description:g.string().optional(),default:g.boolean().optional()}),NQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),minLength:g.number().optional(),maxLength:g.number().optional(),format:g.enum(["email","uri","date","date-time"]).optional(),default:g.string().optional()}),BQ4=g.object({type:g.enum(["number","integer"]),title:g.string().optional(),description:g.string().optional(),minimum:g.number().optional(),maximum:g.number().optional(),default:g.number().optional()}),DQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),default:g.string().optional()}),LQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),oneOf:g.array(g.object({const:g.string(),title:g.string()})),default:g.string().optional()}),OQ4=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),enumNames:g.array(g.string()).optional(),default:g.string().optional()}),jQ4=g.union([DQ4,LQ4]),wQ4=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({type:g.literal("string"),enum:g.array(g.string())}),default:g.array(g.string()).optional()}),EQ4=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({anyOf:g.array(g.object({const:g.string(),title:g.string()}))}),default:g.array(g.string()).optional()}),PQ4=g.union([wQ4,EQ4]),zQ4=g.union([OQ4,jQ4,PQ4]),AQ4=g.union([zQ4,UQ4,NQ4,BQ4]),TQ4=na.extend({mode:g.literal("form").optional(),message:g.string(),requestedSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),AQ4),required:g.array(g.string()).optional()})}),qQ4=na.extend({mode:g.literal("url"),message:g.string(),elicitationId:g.string(),url:g.string().url()}),RQ4=g.union([TQ4,qQ4]),sr0=XY.extend({method:g.literal("elicitation/create"),params:RQ4}),MQ4=JK.extend({elicitationId:g.string()}),VQ4=GK.extend({method:g.literal("notifications/elicitation/complete"),params:MQ4}),zw=JY.extend({action:g.enum(["accept","decline","cancel"]),content:g.preprocess(($)=>$===null?void 0:$,g.record(g.string(),g.union([g.string(),g.number(),g.boolean(),g.array(g.string())])).optional())}),IQ4=g.object({type:g.literal("ref/resource"),uri:g.string()}),kQ4=g.object({type:g.literal("ref/prompt"),name:g.string()}),CQ4=R3.extend({ref:g.union([kQ4,IQ4]),argument:g.object({name:g.string(),value:g.string()}),context:g.object({arguments:g.record(g.string(),g.string()).optional()}).optional()}),o30=XY.extend({method:g.literal("completion/complete"),params:CQ4});rr0=JY.extend({completion:g.looseObject({values:g.array(g.string()).max(100),total:g.optional(g.number().int()),hasMore:g.optional(g.boolean())})}),SQ4=g.object({uri:g.string().startsWith("file://"),name:g.string().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),_Q4=XY.extend({method:g.literal("roots/list"),params:R3.optional()}),ar0=JY.extend({roots:g.array(SQ4)}),vQ4=GK.extend({method:g.literal("notifications/roots/list_changed"),params:JK.optional()}),Lh5=g.union([u30,g30,o30,tr0,xc,Ew,jw,ww,bc,u74,c74,Pw,fc,c30,d30,i30,n30]),Oh5=g.union([y30,l30,h30,vQ4,aa]),jh5=g.union([pD,lA,Qe,zw,ar0,m30,p30,nD]),wh5=g.union([u30,or0,sr0,_Q4,c30,d30,i30,n30]),Eh5=g.union([y30,l30,YQ4,d74,hr0,nr0,pr0,aa,VQ4]),Ph5=g.union([pD,vr0,rr0,ir0,ur0,xr0,fr0,gr0,lU,$e,m30,p30,nD]);x1=class x1 extends Error{constructor($,Z,Q){super(`MCP error ${$}: ${Z}`);this.code=$,this.data=Q,this.name="McpError"}static fromError($,Z,Q){if($===l1.UrlElicitationRequired&&Q){let Y=Q;if(Y.elicitations)return new p$$(Y.elicitations,Z)}return new x1($,Z,Q)}};p$$=class p$$ extends x1{constructor($,Z=`URL elicitation${$.length>1?"s":""} required`){super(l1.UrlElicitationRequired,Z,{elicitations:$})}get elicitations(){return this.data?.elicitations??[]}}});import{z as $8}from"zod";function o$$($){return $8.record($8.string(),$8.unknown()).nullable().refine((Z)=>Z===null||JSON.stringify(Z).length<=t$$,{message:`${$} must serialize to at most ${t$$} bytes`})}function cU($){return $!==null&&$!==void 0&&"command"in $}function yc($){if(!$||!$.startsWith("virtual://"))return null;return $.replace("virtual://","")}function gc($){return`virtual://${$}`}var s$$,n$$,bQ4,xQ4,fQ4,t$$=262144,sY,s30,r30;var r$$=L(()=>{Bw();VZ();s$$=$8.object({authorizationEndpoint:$8.string().url(),tokenEndpoint:$8.string().url(),introspectionEndpoint:$8.string().url().optional(),clientId:$8.string(),clientSecret:$8.string().optional(),scopes:$8.array($8.string()),grantType:$8.enum(["authorization_code","client_credentials"])}),n$$=$8.object({type:$8.literal("object"),properties:$8.record($8.string(),$8.unknown()).optional(),required:$8.array($8.string()).optional()}).catchall($8.unknown()),bQ4=t30.extend({inputSchema:n$$,outputSchema:n$$.optional()}),xQ4=$8.object({headers:$8.record($8.string(),$8.string()).optional()}),fQ4=$8.object({command:$8.string().describe("Command to run (e.g., 'npx', 'node')"),args:$8.array($8.string()).optional().describe("Command arguments"),cwd:$8.string().optional().describe("Working directory"),envVars:$8.record($8.string(),$8.string()).optional().describe("Environment variables (encrypted in storage)")});sY=$8.object({id:$8.string().describe("Unique identifier for the connection"),title:$8.string().describe("Human-readable name for the connection"),created_at:$8.string().describe("When the connection was created"),updated_at:$8.string().describe("When the connection was last updated"),created_by:$8.string().describe("User ID who created the connection"),updated_by:$8.string().optional().describe("User ID who last updated the connection"),organization_id:$8.string().describe("Organization ID this connection belongs to"),description:$8.string().nullable().describe("Description of the connection"),icon:$8.string().nullable().describe("Icon URL for the connection"),app_name:$8.string().nullable().describe("Associated app name"),app_id:$8.string().nullable().describe("Associated app ID"),slug:$8.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),url_slug:$8.string().nullable().optional().describe("Name of the connection in Studio URLs, unique in the organization. Set it to rename the URL; the old one keeps redirecting."),connection_type:$8.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:$8.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:$8.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:$8.union([fQ4,xQ4]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:s$$.nullable().describe("OAuth configuration"),configuration_state:o$$("configuration_state").describe("Configuration state (decrypted)"),configuration_scopes:$8.array($8.string()).nullable().optional().describe("Configuration scopes"),metadata:o$$("metadata").describe("Additional metadata (includes repository info)"),tools:$8.array(bQ4).nullable().describe("Discovered tools from MCP"),bindings:$8.array($8.string()).nullable().describe("Detected bindings"),status:$8.enum(["active","inactive","error"]).describe("Current status")}),s30=sY.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:$8.string().nullish()}),r30=sY.partial().extend({url_slug:uA.nullish()})});function cA($){return yQ4.has($)}function a$$($){return gQ4.has($)}var tZ,yQ4,gQ4,a30;var er0=L(()=>{tZ=["deco","anthropic","openrouter","llmapi","google","openai-compatible"],yQ4=new Set(tZ);gQ4=new Set(["anthropic","openrouter","deco"]);a30=[...tZ,"claude-code","codex"]});function $a0($,Z){return{id:crypto.randomUUID(),type:Ye.STEP,source:"decopilot",subject:$,data:{stepCount:Z},time:new Date().toISOString()}}function e30($,Z){return{id:crypto.randomUUID(),type:Ye.FINISH,source:"decopilot",subject:$,data:{status:Z},time:new Date().toISOString()}}function mU($,Z,Q){return{id:crypto.randomUUID(),type:Ye.THREAD_STATUS,source:"decopilot",subject:$,data:{status:Z,...Q?.messageId!==void 0&&{message_id:Q.messageId},...Q?.virtualMcpId!==void 0&&{virtual_mcp_id:Q.virtualMcpId},...Q?.createdBy!==void 0&&{created_by:Q.createdBy},...Q?.triggerId!==void 0&&{trigger_id:Q.triggerId},...Q?.title!==void 0&&{title:Q.title},...Q?.branch!==void 0&&{branch:Q.branch},...Q?.harnessId!==void 0&&{harness_id:Q.harnessId},...Q?.createdAt!==void 0&&{created_at:Q.createdAt},...Q?.updatedAt!==void 0&&{updated_at:Q.updatedAt},...Q?.metadata!==void 0&&{metadata:Q.metadata}},time:new Date().toISOString()}}var e$$,hQ4,Ye,uQ4;var $8$=L(()=>{e$$=["in_progress","requires_action","failed","completed"],hQ4=[...e$$,"expired"],Ye={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},uQ4=Object.values(Ye)});var $W0=L(()=>{r$$();Mr0();er0();$8$()});var dU=L(()=>{$W0()});import{lookup as lQ4}from"dns/promises";function Xe($,Z){if($===10)return!0;if($===172&&Z!==void 0&&Z>=16&&Z<=31)return!0;if($===192&&Z===168)return!0;if($===127)return!0;if($===169&&Z===254)return!0;if($===0)return!0;if($===100&&Z!==void 0&&Z>=64&&Z<=127)return!0;return!1}function Za0($){let Z=Number.parseInt($.padStart(4,"0"),16);return[Z>>8,Z&255]}function Z8$($){let Z=$.split(":").filter((Q)=>Q.length>0);if($.startsWith("2002:")&&Z.length>=2){let[Q,Y]=Za0(Z[1]);if(Xe(Q,Y))return!0}if($.startsWith("64:ff9b::")&&Z.length>=4){let[Q,Y]=Za0(Z[Z.length-2]);if(Xe(Q,Y))return!0}if($.startsWith("::")&&Z.length===2){let[Q,Y]=Za0(Z[0]);if(Xe(Q,Y))return!0}return!1}function ZW0($){try{let Q=new URL($).hostname.toLowerCase();if(Q==="localhost"||Q==="0.0.0.0"||Q.endsWith(".local")||Q.endsWith(".internal")||Q.endsWith(".localhost"))return!0;let Y=Q.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(Y){let[,X,J]=Y.map(Number);if(Xe(X,J))return!0}if(Q.startsWith("[")&&Q.endsWith("]")){let X=Q.slice(1,-1).toLowerCase();if(X==="::1"||X==="::")return!0;if(X.startsWith("::ffff:"))return!0;if(X.startsWith("fc")||X.startsWith("fd"))return!0;if(X.startsWith("fe80"))return!0;if(X.startsWith("100:"))return!0;if(X.startsWith("::1"))return!0;if(Z8$(X))return!0}return!1}catch{return!0}}function cQ4($){let Z=$.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(Z){let[,Y,X]=Z.map(Number);return Xe(Y,X)}let Q=$.toLowerCase();if(Q==="::1"||Q==="::")return!0;if(Q.startsWith("::ffff:"))return!0;if(Q.startsWith("fc")||Q.startsWith("fd"))return!0;if(Q.startsWith("fe80"))return!0;if(Q.startsWith("100:"))return!0;return Z8$(Q)}async function mQ4($,Z=async(Q)=>(await lQ4(Q,{all:!0})).map((Y)=>Y.address)){try{let Q=await Z($);return Q.length===0||Q.some(cQ4)}catch{return!0}}async function Aw($){if(ZW0($))return"URLs targeting private networks are not allowed";let Q=new URL($).hostname;if(/^\d+\.\d+\.\d+\.\d+$/.test(Q)||Q.startsWith("[")&&Q.endsWith("]"))return null;try{return await Qa0(mQ4(Q),5000,"DNS resolution timeout")?"URLs targeting private networks are not allowed":null}catch{return"URLs targeting private networks are not allowed"}}function Qa0($,Z,Q){let Y,X=new Promise((J,G)=>{Y=setTimeout(()=>G(Error(Q)),Z)});return Promise.race([$,X]).finally(()=>clearTimeout(Y))}function tD($=fetch){return async(Z,Q)=>{let Y=await $(Z,{...Q,redirect:"manual"});if(Y.status>=300&&Y.status<400)throw Error("Refusing to follow a redirect from the remote server");return Y}}var hc=()=>{};var Q8$="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";import{webcrypto as Y8$}from"crypto";function iQ4($){if(!mA||mA.length<$)mA=Buffer.allocUnsafe($*dQ4),Y8$.getRandomValues(mA),uc=0;else if(uc+$>mA.length)Y8$.getRandomValues(mA),uc=0;uc+=$}function QW0($=21){iQ4($|=0);let Z="";for(let Q=uc-$;Q<uc;Q++)Z+=Q8$[mA[Q]&63];return Z}var dQ4=128,mA,uc;var Ya0=()=>{};function c8($){return`${$}_${QW0()}`}var GY=L(()=>{Ya0()});function J8$($,Z){return{id:s8.SELF(Z),title:"Deco CMS",description:"The MCP for the CMS API",connection_type:"HTTP",connection_url:`${$}/mcp/self`,icon:"https://assets.decocache.com/mcp/09e44283-f47d-4046-955f-816d227c626f/app.png",app_name:"@deco/management-mcp",connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!0,type:"self"}}}function G8$($,Z){return{id:s8.DEV_ASSETS(Z),title:"Local Files",description:"Local file storage for development. Files are stored in /data/assets/.",connection_type:"HTTP",connection_url:`${$}/mcp/dev-assets`,icon:"https://api.iconify.design/lucide:folder.svg?color=%23888",app_name:"@deco/dev-assets-mcp",app_id:null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isFixed:!0,devOnly:!0,type:"dev-assets"}}}function iU($){return{is(Z){if(!Z)return null;if(!Z.startsWith($))return null;return Z.slice($.length)||null},get(Z){return`${$}${Z}`}}}function pQ4($){return{id:$.id,organization_id:$.organizationId,title:$.title,description:$.description,icon:$.icon,status:"active",created_at:new Date().toISOString(),updated_at:new Date().toISOString(),created_by:"system",updated_by:void 0,metadata:{instructions:$.instructions??null,...$.ui?{ui:$.ui}:{}},pinned:!1,connections:[]}}function Tw($){if(!$)return!1;try{return nQ4.has(new URL($).hostname)}catch{return!1}}function Ja0($){return pQ4({id:V3($),organizationId:$,title:"Super Agent",description:"Default agent that aggregates all organization connections",icon:tQ4,ui:{layout:{defaultMainView:{type:"overview"},chatDefaultOpen:!0}}})}function N8$($,Z,Q="https://reports.decocms.com/api/v2/mcp"){return{id:s8.REPORTS($),title:"Deco Score",description:"Your store's Deco Score",connection_type:"HTTP",connection_url:Q,icon:"https://github.com/decocms.png",app_name:"commerce-discovery",app_id:null,connection_token:Z,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!1,type:"commerce-discovery"}}}function B8$($,Z=s8.REPORTS($)){return{title:"Deco Score Agent",description:"Ask anything about your store's Deco Score",icon:"https://github.com/decocms.png",status:"active",pinned:!0,metadata:{type:"commerce-discovery",isDefault:!1,ui:{pinnedViews:[{connectionId:Z,toolName:"get_my_diagnostic",label:"Deco Score",icon:"https://github.com/decocms.png"}],layout:{defaultMainView:{type:"ext-apps",id:Z,toolName:"get_my_diagnostic"},chatDefaultOpen:!0}}},connections:[{connection_id:Z,selected_tools:null,selected_resources:null,selected_prompts:null}]}}function Ga0($){if(!$)return!1;return Object.values(lc).some((Z)=>Z.is($)!==null)}function rQ4($){if(!$)return!1;return sQ4.some((Z)=>Z.is($)!==null)}function XW0($){return!BQ($.id)&&!Ga0($.id)&&!rQ4($.id)}function D8$($){let Z=Ja0($);return{...Z,id:Z.id,connection_type:"VIRTUAL",connection_url:`virtual://${Z.id}`,app_name:"decopilot",app_id:"decopilot",connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDefault:!0,type:"decopilot"},tools:[],bindings:[]}}var s8,X8$="https://reports.decocms.com/api/v2/mcp",YW0="get_my_diagnostic",W8$,BQ,V3,nQ4,K8$,H8$,Xa0,tQ4="https://assets.decocache.com/decocms/fd07a578-6b1c-40f1-bc05-88a3b981695d/f7fc4ffa81aec04e37ae670c3cd4936643a7b269.png",oQ4="#6366f1",ph5,F8$,nh5,th5,U8$,oh5,cc,lc,pU,Wa0,sQ4;var L8$=L(()=>{s8={SELF:($)=>`${$}_self`,REGISTRY:($)=>`${$}_registry`,COMMUNITY_REGISTRY:($)=>`${$}_community-registry`,DEV_ASSETS:($)=>`${$}_dev-assets`,SITE_DIAGNOSTICS:($)=>`site-diagnostics_${$}`,REPORTS:($)=>`${$}_commerce-discovery`};W8$=iU("decopilot_"),BQ=W8$.is,V3=W8$.get,nQ4=new Set(["mcp.figma.com"]);K8$=iU("dev_"),H8$=K8$.get,Xa0=K8$.is,ph5=`https://api.iconify.design/lucide:file-search.svg?color=${encodeURIComponent(oQ4)}`;F8$=iU("site-diagnostics_"),nh5=F8$.is,th5=F8$.get,U8$=iU("commerce-discovery_"),oh5=U8$.is,cc=U8$.get;lc={AUTOMATION_MANAGER:iU("studio-automation-manager_"),CONNECTION_MANAGER:iU("studio-connection-manager_"),API_KEY_MANAGER:iU("studio-api-key-manager_"),STORE_MANAGER:iU("studio-store-manager_"),USAGE_MANAGER:iU("studio-usage-manager_")},pU={AUTOMATION_MANAGER:lc.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:lc.CONNECTION_MANAGER.get,API_KEY_MANAGER:lc.API_KEY_MANAGER.get,STORE_MANAGER:lc.STORE_MANAGER.get,USAGE_MANAGER:lc.USAGE_MANAGER.get};Wa0=["studio-agent-manager_","studio-task-manager_","studio-brand-manager_"],sQ4=Wa0.map(iU)});function aQ4($){return $.capabilities?.includes("decisions")===!0}function O8$($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function JY4($){return O8$($).includes("deepresearch")}function j8$($){let Z=O8$($);if(Z.includes("deepresearch"))return!1;return GY4.some((Q)=>Z.includes(Q))}function WY4($){return $.asyncResearch!==!0&&j8$($.modelId)}function KY4($){return $.asyncResearch===!0||JY4($.modelId)||j8$($.modelId)}function mc($,Z,Q,Y){for(let X of Q){let J=$.find((G)=>G.modelId===X);if(J)return{keyId:Z,modelId:J.modelId,title:J.title}}for(let X of Q){let J=$.find((G)=>G.modelId.includes(X));if(J)return{keyId:Z,modelId:J.modelId,title:J.title}}if(Y){let X=$.find(Y);if(X)return{keyId:Z,modelId:X.modelId,title:X.title}}return null}function w8$($,Z){let Q={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Y of $){let X=(Z[Y.id]??[]).filter((G)=>!aQ4(G)),J=Y.providerId;if(!Q.chat.fast)Q.chat.fast=mc(X,Y.id,eQ4[J]??[]);if(!Q.chat.smart)Q.chat.smart=mc(X,Y.id,$Y4[J]??[]);if(!Q.chat.thinking)Q.chat.thinking=mc(X,Y.id,ZY4[J]??[]);if(!Q.image)Q.image=mc(X,Y.id,QY4[J]??[],(G)=>G.capabilities?.includes("image")===!0&&!G.modelId.startsWith("openrouter/auto"));if(!Q.webSearch)Q.webSearch=mc(X,Y.id,YY4[J]??[],WY4);if(!Q.deepResearch)Q.deepResearch=mc(X,Y.id,XY4[J]??[],KY4)}return Q}var eQ4,$Y4,ZY4,QY4,YY4,XY4,GY4;var E8$=L(()=>{eQ4={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},$Y4={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},ZY4={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},QY4={openrouter:["google/gemini-3-pro-image","openai/gpt-5-image","google/gemini-2.5-flash-image"],deco:["google/gemini-3-pro-image","openai/gpt-5-image","google/gemini-2.5-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},YY4={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},XY4={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};GY4=["sonar","searchpreview","online"]});function JW0($){if(!$)return;let Z={};for(let Q in $){let Y=$[Q];if(typeof Y==="object"&&Y!==null){let X={};for(let J of HY4)if(J in Y)X[J]=Y[J];Z[Q]=X}}return Object.keys(Z).length>0?Z:void 0}var HY4;var P8$=L(()=>{HY4=["usage","cost","model"]});var q8=L(()=>{$W0();L8$();E8$();P8$()});function dA($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Y=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return Cc(Y)}catch{return Cc($.connection_url)}if($.title)return Cc($.title);return $.id??"unknown"}var GW0=()=>{};var dc=300000,qw=5000,WW0=1e4,Ka0=3,Ha0=30000,z8$=65000,KW0=1000,ic=3,A8$=5,T8$=60000,q8$=300000,Fa0=60000;function R8$(){if(oD.size<KW0)return;let $=null,Z=1/0;for(let[Q,Y]of oD)if(Y.lastFailureAt<Z)Z=Y.lastFailureAt,$=Q;if($)oD.delete($)}function M8$($){let Z=oD.get($);if(!Z)return R8$(),oD.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=ic};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=ic}}function Ua0($){let Z=oD.get($);if(Z){Z.disabled=!0;return}R8$(),oD.set($,{consecutiveFailures:ic,disabled:!0,lastFailureAt:Date.now()})}function V8$($){return oD.get($)?.disabled??!1}function I8$($){oD.delete($)}var oD;var k8$=L(()=>{oD=new Map});function Na0($){try{let Z=new URL($.url);if(Z.protocol!=="https:"&&Z.protocol!=="http:")return null;let Q=Z.pathname.replace(/\/+$/,"").replace(/\.git$/i,"");return Q?{host:Z.host.toLowerCase(),path:Q.slice(1)}:null}catch{return null}}function Je($){let Z=Na0($);return Z?`${Z.host}/${Z.path}`.toLowerCase():null}function sD($,Z){if($.repositoryId&&Z.repositoryId)return $.repositoryId===Z.repositoryId;let Q=Je($);return Q!==null&&Q===Je(Z)}function Rw($){let Z=$.startsWith("./")?$.slice(2):$;for(let Q of["/app/org/","org/"]){if(!Z.startsWith(Q))continue;let Y=Z.slice(Q.length);return Y.split("/").includes("..")?null:Y}return null}var rY="/app/org",aY="home";var XG=()=>{};var Mw="New chat";function S8$(){return`<platform>
|
|
80
80
|
You are an AI agent running on Deco CMS \u2014 a control plane for connecting
|
|
81
81
|
AI agents to external services via the Model Context Protocol (MCP).
|
|
82
82
|
|
|
@@ -947,8 +947,8 @@ ${w$}`,...H$[O9].promptCacheBreakpoint!=null&&{prompt_cache_breakpoint:H$[O9].pr
|
|
|
947
947
|
${H.description??""}`,D=J.get(B);if(D){D.connections.push(G),D.score=Math.max(D.score,N);continue}J.set(B,{name:H.name,description:(H.description??"").slice(0,$d4),...Y?{inputSchema:H.inputSchema}:{},connections:[G],score:N})}}return[...J.values()].sort((G,W)=>W.score-G.score).slice(0,Q)}var em4=8,$d4=400,m2$=262144,G71,W71;var p2$=L(()=>{R0();DP();TJ();G71=u({name:"CONNECTION_TOOLS_SEARCH",description:"Search the tools of every connection you can use (GitHub, Slack, VTEX, Linear, ...) by keywords. Returns tool names, descriptions and the connections that offer them. Set withSchema to get the input schema before calling one with CONNECTION_TOOL_CALL.",annotations:{title:"Search Connection Tools",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:R9.object({query:R9.string().min(1).describe("Keywords, e.g. 'github pull request search'"),limit:R9.number().int().min(1).max(25).default(8),withSchema:R9.boolean().default(!1).describe("Include each tool's input schema")}),outputSchema:R9.object({tools:R9.array(R9.object({name:R9.string(),description:R9.string(),inputSchema:R9.unknown().optional(),connections:R9.array(R9.object({id:R9.string(),title:R9.string()}))}))}),handler:async($,Z)=>{let Q=Q0(Z);await Z.access.check();let Y=await i2$(Z,Q.id),X=[];return await bE(Y,em4,async(G)=>{X.push({connection:{id:G.id,title:G.title},tools:await Zd4(Z,G)})}),{tools:Qd4($.query,X,$.limit,$.withSchema).map(({score:G,...W})=>W)}}}),W71=u({name:"CONNECTION_TOOL_CALL",description:"Call a tool on one of your connections. Find the tool, its connection id and its input schema with CONNECTION_TOOLS_SEARCH first.",annotations:{title:"Call Connection Tool",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:R9.object({connectionId:R9.string(),toolName:R9.string(),arguments:R9.record(R9.string(),R9.unknown()).default({}).refine(($)=>new TextEncoder().encode(JSON.stringify($)).byteLength<=m2$,{message:`arguments exceeds ${m2$} bytes`})}),outputSchema:R9.object({content:R9.array(R9.unknown()),structuredContent:R9.unknown().optional(),isError:R9.boolean().optional()}),handler:async($,Z)=>{let Q=Q0(Z);await Z.access.check();let Y=(await i2$(Z,Q.id)).find((G)=>G.id===$.connectionId);if(!Y)throw Error(`Connection not found: ${$.connectionId}`);let J=await(await EY(Y,Z,!1)).callTool({name:$.toolName,arguments:$.arguments});return{content:Array.isArray(J.content)?J.content:[],...J.structuredContent!==void 0?{structuredContent:J.structuredContent}:{},...typeof J.isError==="boolean"?{isError:J.isError}:{}}}})});var n2$=L(()=>{bz$();dZ1();iZ1();h2$();u2$();c2$();p2$()});function PB0($){let Z=$.access.getRole();if(!kZ(Z))throw new c6("Only organization owners and admins can change org-wide pin status")}var K71=L(()=>{YX();XX()});async function zB0($,Z,Q){let Y=[...new Set(Q)],X=await Promise.all(Y.map((G)=>$.storage.connections.findById(G,Z))),J=Y.filter((G,W)=>!X[W]);if(J.length>0)throw Error(`Connection not found: ${J.join(", ")}`)}function uL($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function AB0($){let Z=2166136261;for(let Q=0;Q<$.length;Q++)Z=Math.imul(Z^$.charCodeAt(Q),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function TB0($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function qB0($,Z){if(!Z)return $;let Q=`${AB0(Z)}_`;return $.startsWith(Q)?$.slice(Q.length):$}function Xd4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}function Jd4($,Z,Q){let Y,X=new Promise((J,G)=>{Y=setTimeout(()=>G(Error(Q)),Z)});return Promise.race([$,X]).finally(()=>clearTimeout(Y))}var uq;var t2$=L(()=>{GN();uq=class uq extends u7{static MAX_PAGES_PER_CLIENT=1000;static DEFAULT_LIST_TIMEOUT_MS=30000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;listTimeoutMs;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$,this.listTimeoutMs=Z?.listTimeoutMs??uq.DEFAULT_LIST_TIMEOUT_MS;for(let Q of Object.keys($)){let Y=AB0(Q);if(this.slugToKey.has(Y))throw Error(`GatewayClient: duplicate namespace code "${Y}" from keys "${this.slugToKey.get(Y)}" and "${Q}"`);this.slugToKey.set(Y,Q)}}namespace($,Z){return`${AB0($)}_${Z}`}async resolveNamespacedTarget($,Z,Q){let Y=$.indexOf("_");if(Y!==-1){let X=$.slice(0,Y),J=this.slugToKey.get(X);if(J)return[J,$.slice(Y+1)]}for(let X of await Q()){let J=TB0(X._meta);if(!J)continue;if(qB0(X.name,J)===$)return[J,$]}if(Y===-1)throw Error(`GatewayClient: could not resolve ${Z} "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Y)}" in "${$}" and not found by original name in any client`)}resolveToolTarget($){return this.resolveNamespacedTarget($,"tool",async()=>(await this.listTools()).tools)}resolvePromptTarget($){return this.resolveNamespacedTarget($,"prompt",async()=>(await this.listPrompts()).prompts)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let Q=this.clients[$];if(!Q)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Y=Q.client,X;try{X=typeof Y==="function"?Promise.resolve(Y()):Promise.resolve(Y)}catch(G){return Promise.reject(G)}let J=X.catch((G)=>{throw this.resolvedClients.delete($),G});return this.resolvedClients.set($,J),J}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,Q){try{return await Jd4((async()=>{let Y=await this.resolveClient($);return await Z(Y)})(),this.listTimeoutMs,`timed out after ${this.listTimeoutMs}ms`)}catch(Y){return console.warn(`GatewayClient: skipping ${Q} from client "${$}" \u2014 ${Y?.message??Y}`),[]}}listFromAllClients($,Z){return Promise.all(Object.entries(this.clients).map(async([Q,Y])=>[Q,Y,await this.listFromClient(Q,(X)=>$(X,Q),Z)]))}async paginate($,Z,Q){let Y=[],X,J=0;do{let G=await Q(X);Y.push(...G.items),X=G.nextCursor,J++}while(X&&J<uq.MAX_PAGES_PER_CLIENT);if(X)console.warn(`GatewayClient: client "${$}" exceeded ${uq.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Y}fetchAllTools($,Z){return this.paginate(Z,"tools",async(Q)=>{let Y=await $.listTools(Q?{cursor:Q}:void 0);return{items:Y.tools,nextCursor:Y.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(Q)=>{let Y=await $.listResources(Q?{cursor:Q}:void 0);return{items:Y.resources,nextCursor:Y.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(Q)=>{let Y=await $.listResourceTemplates(Q?{cursor:Q}:void 0);return{items:Y.resourceTemplates,nextCursor:Y.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(Q)=>{let Y=await $.listPrompts(Q?{cursor:Q}:void 0);return{items:Y.prompts,nextCursor:Y.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[],Z=await this.listFromAllClients((Q,Y)=>this.fetchAllTools(Q,Y),"tools");for(let[Q,Y,X]of Z){let J=Y.tools,G=J?new Set(J):null;for(let W of X){if(G&&!G.has(W.name))continue;$.push({...W,name:this.namespace(Q,W.name),_meta:{...W._meta??{},gatewayClientId:Q}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],Q=new Map,Y=await this.listFromAllClients((X,J)=>this.fetchAllResources(X,J),"resources");for(let[X,J,G]of Y){let W=J.resources,K=W?new Set(W):null;for(let H of G){if(K&&!K.has(H.uri)&&!(H.name&&K.has(H.name)))continue;if($.has(H.uri)){console.warn(`GatewayClient: duplicate resource "${H.uri}" from client "${X}" \u2014 skipping`);continue}$.add(H.uri),Q.set(H.uri,X),Z.push({...H,_meta:{...H._meta??{},gatewayClientId:X}})}}return this.resourceRouteMap=Q,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[],Q=await this.listFromAllClients((Y,X)=>this.fetchAllResourceTemplates(Y,X),"resource templates");for(let[Y,X,J]of Q)for(let G of J){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${Y}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:Y}})}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[],Z=await this.listFromAllClients((Q,Y)=>this.fetchAllPrompts(Q,Y),"prompts");for(let[Q,Y,X]of Z){let J=Y.prompts,G=J?new Set(J):null;for(let W of X){if(G&&!G.has(W.name))continue;$.push({...W,name:this.namespace(Q,W.name),title:W.title??Xd4(W.name),_meta:{...W._meta??{},gatewayClientId:Q}})}}return{prompts:$}}async callTool($,Z,Q){let[Y,X]=await this.resolveToolTarget($.name);return(await this.resolveClient(Y)).callTool({...$,name:X},Z,Q)}async readResource($,Z){let Q=await this.resolveResourceRoute($.uri);return(await this.resolveClient(Q)).readResource($)}async getPrompt($,Z){let[Q,Y]=await this.resolvePromptTarget($.name);return(await this.resolveClient(Q)).getPrompt({...$,name:Y})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((Q)=>Q.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var RB0=L(()=>{t2$()});function F71($){return uL($)}function Wd4($,Z){let Q=uL(Z)||"prompt";return`${String($).padStart(Gd4,"0")}-${Q}`}async function U71($,Z,Q){try{await $.delete(MB0,F71(Z),{actor:Q})}catch(Y){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Y})}}async function VB0($,Z,Q,Y){let X=F71(Z);await U71($,Z,Q),await Promise.all(Y.slice(0,H71).map(async(J,G)=>{let W=Wd4(G,J.title),K={name:W,title:J.title,description:J.description,text:J.text};try{await $.write(MB0,`${X}/${W}.json`,JSON.stringify(K),{actor:Q,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:W,err:H})}}))}async function o2$($,Z){let Q=F71(Z),Y;try{Y=await $.listDir(MB0,Q)}catch{return[]}let X=Y.filter((G)=>G.kind==="file"&&G.path.endsWith(".json")).slice(0,H71),J=[];for(let G of X)try{let W=await $.read(MB0,G.path),K=JSON.parse(new TextDecoder().decode(W));if(K&&typeof K.name==="string"&&typeof K.title==="string"&&typeof K.text==="string")J.push(K)}catch{}return J}var MB0="agent-prompts",H71=20,Gd4;var W40=L(()=>{RB0();Gd4=String(H71-1).length});function IB0($){return`!${$}`}function B71($){return $.startsWith("!")?$.slice(1):null}function oi($,Z){if(!$)return!1;return $.includes(IB0("*"))||$.includes(IB0(Z))}function K40($,Z){if(!$)return!1;return $.includes("*")||$.includes(Z)}function si($,Z){if($.some((Q)=>oi(Q,Z)))return!1;return $.some((Q)=>K40(Q,Z))}function kB0($){if($.includes(IB0("*")))return{kind:"only",names:[]};let Z=new Set,Q=new Set;for(let Y of $){let X=B71(Y);if(X!==null)Z.add(X);else if(Y!=="*")Q.add(Y)}if($.includes("*"))return Z.size===0?{kind:"all"}:{kind:"except",names:[...Z]};return{kind:"only",names:[...Q].filter((Y)=>!Z.has(Y))}}function CB0($){let Z=null,Q=new Set;for(let X of $){if(X.kind==="all")return X;if(X.kind==="only"){for(let J of X.names)Q.add(J);continue}Z=Z?new Set(X.names.filter((J)=>Z?.has(J))):new Set(X.names)}if(Z===null)return{kind:"only",names:[...Q]};let Y=[...Z].filter((X)=>!Q.has(X));return Y.length===0?{kind:"all"}:{kind:"except",names:Y}}function SB0($){if($.kind==="all")return["*"];if($.kind==="except")return["*",...$.names.map(IB0)];return[...$.names]}var N71="*";function D71($){if(!$)return null;let Z=$[Kd4];return Array.isArray(Z)?Z:null}function MQ($,Z){if($===null)return!0;return si([$],Z)}function L71($){return $===null?{kind:"all"}:kB0($)}function s2$($){if($.some((Z)=>Z===null))return null;return SB0(CB0($.map(L71)))}var Kd4="projects";var SF=()=>{};function r2$($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function Fd4($){return $.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function a2$($){return $!=="."&&$!==".."&&!/[/\\%]/.test($)}function e2$($){return r2$($.metadata)?$.metadata:{}}function Ud4($){let Z=e2$($),Q=r2$(Z.project)?Z.project:{};if(typeof Q.folder!=="string")return null;let Y=Q.folder.split("/").map((X)=>X.trim()).filter(Boolean);if(Y.length===0||!Y.every(a2$))return null;return Y.join("/")}function ri($){let Z=e2$($).projectFolderName;if(typeof Z!=="string")return null;let Q=Z.trim();return Q&&a2$(Q)?Q:null}function O71($){return ri($)??(Fd4($.title??"")||$.id)}function wP($){let Z=Ud4($);return[Hd4,Z,O71($)].filter((Q)=>!!Q).join("/")}var Hd4="projects",$A$,ZA$="memory.md";var j71=L(()=>{$A$=["Documents","Notes","Work","Delivered"]});async function r7($){if($.auth.apiKey)return null;let Z=$.organization?.id;if(!Z)return null;let Q=$.access.getRole()??$.organization?.role??$.auth.user?.role;if(!Q||kZ(Q))return null;if($.auth.permissions&&$.auth.permissionsOrganizationId===Z)return D71($.auth.permissions);let Y=await Promise.all(YE(Q).map(async(X)=>D71(await EP($.db,Z,X))));return s2$(Y)}async function YA$($){let Z=L71(await r7($));if(Z.kind==="all")return QA$;if(Z.kind==="except")return new Set(Z.names);let Q=$.organization?.id;if(!Q)return QA$;let Y=new Set(Z.names),X=await $.storage.virtualMcps.list(Q);return new Set(X.filter((J)=>XW0(J)).map((J)=>J.id).filter((J)=>!Y.has(J)))}function XA$($,Z){if($.size===0)return!0;return![Z.virtualMcpId,Z.repo?.trim(),...Z.threads.map((Y)=>Y.virtualMcpId)].some((Y)=>Y&&$.has(Y))}var QA$;var _F=L(()=>{SF();q8();YX();vF();QA$=new Set});class w71{options;kv=null;codec=NP();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new GA$.Kvm($).create(Nd4,{storage:JA$.StorageType.Memory,ttl:Bd4,maxValueSize:Dd4})}async get($){if(!this.kv)return{catalog:null};try{let Z=await this.kv.get($);if(!Z)return{catalog:null};if(Z.operation==="DEL"||Z.operation==="PURGE"||!Z.value?.length)return{catalog:null,revision:Z.revision};let Q=this.codec.decode(Z.value);if(Q===null)return{catalog:null,revision:Z.revision};return WA$.add(1,{outcome:"hit"}),{catalog:Q,revision:Z.revision}}catch{return{catalog:null}}}async set($,Z,Q){if(!this.kv)return;try{let Y=this.codec.encode(Z);if(Q===void 0)await this.kv.create($,Y);else await this.kv.update($,Y,Q)}catch{}}async invalidate($){if(!this.kv)return;try{await this.kv.put($,Ld4)}catch{}}teardown(){this.kv=null}}function KA$(){WA$.add(1,{outcome:"miss"})}function P71($){E71=$}function HA$(){return E71}async function FA$($){await E71?.invalidate($)}var JA$,GA$,WA$,Nd4="DECOCMS_SKILL_CATALOGS",Bd4=60000,Dd4=1048576,Ld4,E71=null;var _B0=L(()=>{b6();JA$=_(xH(),1),GA$=_(_q(),1),WA$=G$.createCounter("skill_catalog_cache.fetches",{description:"Skill catalog cache fetch outcomes (hit, miss)",unit:"{fetches}"}),Ld4=new TextEncoder().encode("null")});function z71($,Z){if(/[.*>\s]/.test($)||/[.*>\s]/.test(Z))return[];return Od4.map((Q)=>`${Q}.${$}.${Z}`)}async function lq($,Z,Q){if($)try{for(let Y of z71(Z,Q))$.publish(Y)}catch{}await FA$(Z)}function A71($){UA$=$}async function H40($,Z){await lq(UA$?.()??null,$,Z)}var Od4,UA$=null;var F40=L(()=>{_B0();Od4=["studio.org-fs.changes","mesh.org-fs.changes"]});function jd4($){return`# ${$}
|
|
948
948
|
|
|
949
949
|
Notes worth keeping about this project: goals, decisions, people and context.
|
|
950
|
-
`}function NA$($,Z){let Q=typeof $.metadata==="object"&&$.metadata!==null?$.metadata:{};return{...$,metadata:{...Q,projectFolderName:Z}}}function wd4($,Z){let Q=new Set(Z.map(wP)),Y=O71($);for(let X=1;;X++){let J=X===1?Y:`${Y}-${X}`;if(!Q.has(wP(NA$($,J))))return J}}async function Ed4($,Z,Q,Y){let X=new Set((await $.listDir(aY,Z)).map((W)=>W.path)),J=$A$.map((W)=>`${Z}/${W}`).filter((W)=>!X.has(W)),G=`${Z}/${ZA$}`;await Promise.all([...J.map((W)=>$.mkdir(aY,W,{actor:Y})),X.has(G)?null:$.write(aY,G,jd4(Q),{actor:Y,contentType:"text/markdown",expect:{absent:!0}}).catch((W)=>{if(!(W instanceof Ic))throw W})])}async function BA$($){let{orgFs:Z,organizationId:Q,project:Y,actor:X}=$;if(ri(Y))return null;let J=wd4(Y,$.projects.filter((G)=>G.id!==Y.id));if(!$.homeIsSynced){let G=N5(wP(NA$(Y,J)));await Ed4(Z,G,Y.title?.trim()||"Memory",X),await H40(Q,aY)}return J}async function DA$($,Z,Q,Y){if(!ri(Q))return;await $.delete(aY,wP(Q),{actor:Y}),await H40(Z,aY)}var T71=L(()=>{XG();j71();yU();F40();YY()});import{z as U40}from"zod";async function N40($,Z,Q,Y){if(!$.orgFs||ri(Q))return null;let[X,J]=await Promise.all([$.storage.virtualMcps.list(Z),$.storage.orgRepoSyncs.isSyncVolume(Z,aY)]);return BA$({orgFs:$.orgFs,organizationId:Z,project:Q,projects:X,homeIsSynced:J,actor:Y})}async function q71($,Z,Q,Y,X){await $.storage.virtualMcps.patchMetadata({id:Q,organizationId:Z,set:{projectFolderName:Y},unset:[],by:X})}var R71;var vB0=L(()=>{SF();XG();j71();R0();_F();T71();R71=u({name:"PROJECT_FOLDER_ENSURE",description:"Give a project's folder in the org's home volume its subfolders and memory.md, once. A project whose folder was already given its shape is left as it is.",annotations:{title:"Ensure Project Folder",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:U40.object({id:U40.string().min(1)}),outputSchema:U40.object({path:U40.string().describe("The folder's path inside the home volume"),created:U40.boolean().describe("Whether this call gave the folder its shape")}),handler:async($,Z)=>{n(Z);let Q=Q0(Z);await Z.access.check();let Y=await Z.storage.virtualMcps.findById($.id,Q.id),X=await r7(Z);if(!Y||Y.organization_id!==Q.id||!MQ(X,Y.id))throw Error(`Project not found: ${$.id}`);if(!Z.orgFs)throw Error("Organization filesystem is not configured");let J=S0(Z)??"system",G=await N40(Z,Q.id,Y,J);if(G===null)return{path:wP(Y),created:!1};return await q71(Z,Q.id,Y.id,G,J),{path:wP({...Y,metadata:{...Y.metadata,projectFolderName:G}}),created:!0}}})});function PP($){return $?`${$}/.deco/schema.gen.json`:".deco/schema.gen.json"}function Pd4($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&$.blocksMajor===8}function ai($){if(typeof $!=="string")return!1;try{return Pd4(JSON.parse($))}catch{return!1}}function zP($){return $?.[cq]===8}var M71=8,cq="blocksMajor",LA$="x-deco-main-schema",OA$="main_schema_changed",jA$="hosted_delivery_unconfigured";function ei($){if(!$)return $;let Z={...$};for(let Q of wA$)delete Z[Q];return Z}function EA$($){if(!$)return null;let Z={};for(let Q of[...wA$,"siteSlug"])if($[Q])Z[Q]=$[Q];return Object.keys(Z).length>0?Z:null}var wA$;var bB0=L(()=>{wA$=["sandboxMap",cq]});function xB0($){let Z=$?.trim();if(!Z)return null;try{let Q=new URL(Z);if(Q.protocol!=="http:"&&Q.protocol!=="https:")return null;return Q.href}catch{return null}}function AP($){return xB0($?.previewServerUrl)??xB0($?.productionUrl)}var $p=()=>{};function zd4($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;return!1}catch{return!0}}function fB0($){if(zd4($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function V71($){return/\.(?:tsx?|jsx?|mts|cts|mjs|cjs)$/.test($)}function B40($){try{return decodeURIComponent($)}catch{return $}}function I71($){return fB0($),encodeURIComponent($)}function D40($){let Z=$.map((G)=>({file:G,name:`${G.stem}.json`})).sort((G,W)=>G.name<W.name?-1:G.name>W.name?1:0),Q=[],Y=new Set,X="{",J=!0;for(let{file:G}of Z){let W=G.content.trim();if(W.length===0)continue;let K=B40(G.stem);if(Y.has(K)){Q.push({key:K,stem:G.stem,error:`duplicate block key "${K}" (another file already maps to it)`});continue}try{JSON.parse(W)}catch(H){Q.push({key:K,stem:G.stem,error:H instanceof Error?H.message:String(H)});continue}if(Y.add(K),!J)X+=",";J=!1,X+=`${JSON.stringify(K)}:${W}`}return{decofile:`${X}}`,skipped:Q}}var PA$=()=>{};function zA$($){if(!$||typeof $!=="object"||Array.isArray($))return!1;let Z=$.__resolveType;return typeof Z==="string"&&(Z.endsWith("/secret.ts")||Z.includes("loaders/secret"))}function AA$($){return typeof $==="string"&&Ad4.test($)}function mq($,Z=""){if(Array.isArray($))return $.map((Y,X)=>mq(Y,`${Z}/${X}`));if(!$||typeof $!=="object")return $;let Q=Object.entries($);if(zA$($)){let Y=$.encrypted;if(Y!==void 0&&!AA$(Y))throw new L40(Z||"/");return Object.fromEntries(Q.filter(([X])=>X!=="value"))}return Object.fromEntries(Q.map(([Y,X])=>[Y,mq(X,`${Z}/${Y}`)]))}var Ad4,L40;var k71=L(()=>{Ad4=/^(?:[0-9a-f]{2})*$/i;L40=class L40 extends Error{path;constructor($){super(`Secret at "${$}" is not encrypted. Re-enter it in the Secret field so it is encrypted before saving.`);this.path=$;this.name="PlaintextSecretError"}}});function O40($){return JSON.stringify($,(Z,Q)=>{if(!Q||typeof Q!=="object"||Array.isArray(Q))return Q;let Y={};for(let X of Object.keys(Q).sort())Y[X]=Q[X];return Y})}async function yB0($){let Z=O40(mq($)),Q=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(Z));return Array.from(new Uint8Array(Q),(Y)=>Y.toString(16).padStart(2,"0")).join("")}var C71=L(()=>{k71()});function _71($,Z,Q,Y={}){return qA$("",$,Z,Q,Y)}function qA$($,Z,Q,Y,X){if(Zp(Q,Y)||Zp(Z,Y))return Q;if(Zp(Z,Q))return Y;if(S71(Q)&&S71(Y)){let J=S71(Z)?Z:{},G={},W=[...Object.keys(Q),...Object.keys(Y).filter((K)=>!(K in Q))];for(let K of W){let H=qA$(`${$}/${Td4(K)}`,J[K],Q[K],Y[K],X);if(H!==void 0)G[K]=H}return G}if(Array.isArray(Z)&&Array.isArray(Q)&&Array.isArray(Y)&&Q.length===Z.length&&Y.length===Z.length){let J=[];for(let[G,W]of Z.entries()){let K=!Zp(W,Q[G]),H=!Zp(W,Y[G]);if(K&&H&&!Zp(Q[G],Y[G]))return TA$($,Q,Y,X);J.push(K?Q[G]:Y[G])}return J}return TA$($,Q,Y,X)}function TA$($,Z,Q,Y){return Y.conflicts?.push($),Y.prefer==="theirs"?Q:Z}function Td4($){return $.replaceAll("~","~0").replaceAll("/","~1")}function Zp($,Z){return O40($)===O40(Z)}function S71($){return!!$&&typeof $==="object"&&!Array.isArray($)}var RA$=L(()=>{C71()});var Qp=L(()=>{PA$();k71();C71();RA$()});function _G($){let Z=$?.status;return typeof Z==="number"?Z:null}function gB0($){let Z=$;if(Z?.isRateLimited!==!0)return;return typeof Z.retryAfterMs==="number"?Z.retryAfterMs:null}async function $9($,Z){let Q=await $.getBranch(Z);if(Q)return Q.sha;throw new b0({provider:$.repo.provider,status:404,message:`Branch ${Z} does not exist in ${$.repo.path}`})}var h6;var j40=L(()=>{S5();h6=class h6 extends Error{constructor($,Z){super($,Z);this.name="RepoWriteConflict"}}});function Yp($){if($.length===0)return null;let Z=!1;for(let Q of $){if(Q.state!=="completed"){Z=!0;continue}if(Q.conclusion&&qd4.has(Q.conclusion))return"failing"}return Z?"pending":"passing"}var qd4,dq;var w40=L(()=>{qd4=new Set(["failure","cancelled","timed_out","action_required"]);dq=class dq extends Error{existing;constructor($,Z){super($);this.name="ChangeRequestExists",this.existing=Z}}});function Xp($){return Rd4.test($.trim())}function Q7($,Z,Q){if($===void 0||!Number.isFinite($)||$<=0)return Math.min(Z,Q);return Math.min(Math.floor($),Q)}async function Jp($,Z){let Q=$.headers.get("content-length"),Y=Q===null?Number.NaN:Number(Q),X=Number.isFinite(Y)&&Y>=0?Y:null,J=$.body;if(!J)return{content:"",size:X??0,truncated:!1};let G=J.getReader(),W=[],K=0,H=!1;try{for(;;){let{done:U,value:N}=await G.read();if(U)break;if(!N)continue;let B=Z-K;if(N.byteLength>=B){W.push(N.subarray(0,B)),K+=B,H=N.byteLength>B||!(await G.read()).done;break}W.push(N),K+=N.byteLength}}finally{await G.cancel().catch(()=>{})}return{content:new TextDecoder().decode(Md4(W,K)),size:X??K,truncated:H||X!==null&&X>K}}function Md4($,Z){let Q=new Uint8Array(Z),Y=0;for(let X of $)Q.set(X,Y),Y+=X.byteLength;return Q}function a3($){return $.split("/").map(encodeURIComponent).join("/")}function v71($){let Z=Number($);return Number.isInteger(Z)&&Z>1?Z:1}var TP=400,lL=2000,qP=60000,cL=200000,RP=50,MP=50,r3=100,Rd4;var iq=L(()=>{Rd4=/\[bot\]$|[-_.]bot$|^bot[-_.]|^(dependabot|renovate)$/i});var nN;var b71=L(()=>{nN={name:"Deco Bot",email:"114028756+decobot@users.noreply.github.com"}});import{sql as E40}from"kysely";function MA$($){return $ instanceof Date?$.toISOString():String($)}function P40($){let Z=$.installation_id===null||$.installation_id===void 0?null:Number($.installation_id);return{id:$.id,organizationId:$.organization_id,type:$.type,host:$.host,authKind:$.auth_kind,externalAccountId:$.external_account_id,login:$.login,avatarUrl:$.avatar_url,installationId:Number.isFinite(Z)?Z:null,status:$.status,installationAuthorizedBy:$.installation_authorized_by??null,installationRepositoryIds:$.installation_repository_ids??null,credentialConnectionId:$.credential_connection_id,connectedBy:$.connected_by_name?{name:$.connected_by_name}:null,createdAt:MA$($.created_at),updatedAt:MA$($.updated_at)}}class pq{db;constructor($){this.db=$}async upsert($){let Z=new Date,Q=await this.db.insertInto("git_provider_accounts").values({organization_id:$.organizationId,type:$.type,host:$.host.toLowerCase(),auth_kind:$.authKind,external_account_id:$.externalAccountId,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",created_by:$.createdBy??null}).onConflict((Y)=>Y.columns(["organization_id","host","external_account_id"]).doUpdateSet({type:$.type,auth_kind:$.authKind,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",updated_at:E40`GREATEST(${Z}, git_provider_accounts.updated_at + interval '1 millisecond')`})).returningAll().executeTakeFirstOrThrow();return P40(Q)}async get($,Z){let Q=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?P40(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).executeTakeFirst();return Z?P40(Z):null}async listByOrg($){return(await this.db.selectFrom("git_provider_accounts").leftJoin("user as connector","connector.id","git_provider_accounts.created_by").selectAll("git_provider_accounts").select("connector.name as connected_by_name").where("git_provider_accounts.organization_id","=",$).orderBy("git_provider_accounts.created_at","asc").execute()).map(P40)}async findByExternalId($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("organization_id","=",$.organizationId).where("host","=",$.host.toLowerCase()).where("external_account_id","=",$.externalAccountId).executeTakeFirst();return Z?P40(Z):null}async setStatus($,Z,Q){await this.db.updateTable("git_provider_accounts").set({status:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).execute()}async grantRepository($,Z,Q){let Y=E40`jsonb_build_array(${Q}::bigint)`;await this.db.updateTable("git_provider_accounts").set({installation_repository_ids:E40`installation_repository_ids || ${Y}`,updated_at:E40`GREATEST(${new Date}, updated_at + interval '1 millisecond')`}).where("id","=",$).where("organization_id","=",Z).where("installation_repository_ids","is not",null).where(E40`NOT installation_repository_ids @> ${Y}`).execute()}async delete($,Z){return(await this.db.deleteFrom("git_provider_accounts").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}}var hB0=()=>{};class z40{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("git_provider_account_credentials").selectAll().where("account_id","=",$).executeTakeFirst();if(!Z)return null;return Vd4(this.vault,Z)}async upsert($){let Z=new Date,Q=await this.vault.encrypt($.accessToken),Y=$.refreshToken?await this.vault.encrypt($.refreshToken):null,X=$.clientSecret?await this.vault.encrypt($.clientSecret):null;await this.db.insertInto("git_provider_account_credentials").values({account_id:$.connectionId,access_token:Q,refresh_token:Y,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:X,token_endpoint:$.tokenEndpoint}).onConflict((J)=>J.column("account_id").doUpdateSet({access_token:Q,refresh_token:Y,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:X,token_endpoint:$.tokenEndpoint,updated_at:Z})).execute()}async delete($){await this.db.deleteFrom("git_provider_account_credentials").where("account_id","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let Y=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(Y))return!0;return Y-Z<Date.now()}}async function Vd4($,Z){try{let Q=await $.decrypt(Z.access_token),Y=Z.refresh_token?await $.decrypt(Z.refresh_token):null,X=Z.client_secret?await $.decrypt(Z.client_secret):null;return{id:Z.account_id,connectionId:Z.account_id,accessToken:Q,refreshToken:Y,scope:Z.scope,expiresAt:Z.expires_at,createdAt:Z.created_at,updatedAt:Z.updated_at,clientId:Z.client_id,clientSecret:X,tokenEndpoint:Z.token_endpoint}}catch(Q){return console.warn("[GitProviderAccountCredential] failed to decrypt credential row",{accountId:Z.account_id,message:Q instanceof Error?Q.message:String(Q)}),null}}import{sql as Id4}from"kysely";function VA$($){return $ instanceof Date?$.toISOString():String($)}function nq($){return{id:$.id,organizationId:$.organization_id,accountId:$.account_id,provider:$.provider,host:$.host,path:$.path,externalId:$.external_id,defaultBranch:$.default_branch,webUrl:$.web_url,visibility:$.visibility,sandboxImage:lN.catch("default").parse($.sandbox_image),legacyConnectionId:$.legacy_connection_id,createdAt:VA$($.created_at),updatedAt:VA$($.updated_at)}}function mL($){return{provider:$.provider,host:$.host,path:$.path}}class A40{db;constructor($){this.db=$}async upsert($){let Z=$.ref.host.toLowerCase(),Q=await this.findByRef($.organizationId,$.ref);if(Q){let X=await this.db.updateTable("repositories").set({path:$.ref.path,provider:$.ref.provider,web_url:CG({...$.ref,host:Z}),...$.accountId!==void 0?{account_id:$.accountId}:{},...$.externalId!==void 0?{external_id:$.externalId}:{},...$.defaultBranch!==void 0?{default_branch:$.defaultBranch}:{},...$.visibility!==void 0?{visibility:$.visibility}:{},...$.sandboxImage!==void 0?{sandbox_image:$.sandboxImage}:{},...$.legacyConnectionId!==void 0?{legacy_connection_id:$.legacyConnectionId}:{},updated_at:new Date}).where("id","=",Q.id).where("organization_id","=",$.organizationId).returningAll().executeTakeFirstOrThrow();return nq(X)}let Y=await this.db.insertInto("repositories").values({organization_id:$.organizationId,account_id:$.accountId??null,provider:$.ref.provider,host:Z,path:$.ref.path,external_id:$.externalId??null,default_branch:$.defaultBranch??null,web_url:CG({...$.ref,host:Z}),visibility:$.visibility??null,sandbox_image:$.sandboxImage??null,legacy_connection_id:$.legacyConnectionId??null,created_by:$.createdBy??null}).returningAll().executeTakeFirstOrThrow();return nq(Y)}async get($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?nq(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("repositories").selectAll().where("id","=",$).executeTakeFirst();return Z?nq(Z):null}async findByRef($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("organization_id","=",$).where("host","=",Z.host.toLowerCase()).where(Id4`lower(path)`,"=",Z.path.toLowerCase()).executeTakeFirst();return Q?nq(Q):null}async listByOrg($,Z){let Q=this.db.selectFrom("repositories").selectAll().where("organization_id","=",$);if(Z?.accountId)Q=Q.where("account_id","=",Z.accountId);return(await Q.orderBy("path","asc").execute()).map(nq)}async setSandboxImage($,Z,Q){let Y=await this.db.updateTable("repositories").set({sandbox_image:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).returningAll().executeTakeFirst();return Y?nq(Y):null}async delete($,Z){try{return(await this.db.deleteFrom("repositories").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}catch(Q){if(Q instanceof Error&&"constraint"in Q&&Q.constraint==="org_repo_sync_source_present")throw Error("Remove this repository's sync configurations before unlinking it");throw Q}}}var Gp=L(()=>{t4()});function kA$($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kd4($,Z){let{owner:Q}=A5(Z),Y=kA$(Z.host),X=new RegExp(`(?:https?://(?:[^@\\s/]*@)?${Y}/|git@${Y}:)${kA$(Q)}/([A-Za-z0-9._-]+)`,"gi");return[...$.matchAll(X)].flatMap((J)=>J[1]?.replace(/\.git$/i,"")||[])}async function CA$($,Z){let{owner:Q,name:Y}=A5(Z),X=new Set,J=[Z.path];while(J.length>0&&X.size<IA$){let G=J.shift();if(!G)break;let W=await $(G,"pubspec.yaml").catch(()=>null);if(!W)continue;for(let K of kd4(W,Z)){if(K===Y||X.has(K))continue;if(X.size>=IA$)break;X.add(K),J.push(`${Q}/${K}`)}}return[...X]}var IA$=20;var SA$=L(()=>{t4()});function f71($){if(!$)return!1;let Z=T40.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function _A$($){let Z={...$};for(let Q of T40)Z[Q]="read";return Z}async function vA$($,Z){let Q={...Z};for(;;){let Y=await $(Q);if(!Y.isError)return{result:Y,grantedPermissions:Q};let X=Y.content?.find((K)=>K.type==="text")?.text,J=T40.find((K)=>(K in Q));if(!J||!f71(X))return{result:Y,grantedPermissions:Q};let{[J]:G,...W}=Q;Q=W}}function Cd4($){if(!$||typeof $!=="object"||Array.isArray($))return uB0;let Z=$;if(Object.values(Z).some((Q)=>typeof Q!=="string"))return uB0;return Z}function Sd4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function UZ($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let Q=Sd4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:Q,owner:Z.owner,repo:Z.repo,permissions:Cd4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function VP($){return $.metadata?.orgShared===!0}function bA$($){let Z=new Set,Q=[];for(let Y of $??[]){if(Y.status!=="active")continue;let X=UZ(Y);if(X===null)continue;let J=x71(X.owner,X.repo);if(Z.has(J))continue;Z.add(J),Q.push(`${X.owner}/${X.repo}`)}return Q}function lB0($,Z,Q){let Y=x71(Z,Q),X=($??[]).filter((J)=>{if(J.status&&J.status!=="active")return!1;let G=UZ(J);return G!==null&&x71(G.owner,G.repo)===Y});return X.find(VP)??X[0]??null}var uB0,T40,x71=($,Z)=>`${$}/${Z}`.toLowerCase();var vG=L(()=>{uB0={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read",statuses:"read"},T40=["statuses","deployments","checks"]});function fA$($){return Bun.hash($).toString(36)}function _d4($){for(let[Z,Q]of IP)if(Q.expiresAt<=$)IP.delete(Z);while(IP.size>=512){let Z=IP.keys().next();if(Z.done)break;IP.delete(Z.value)}}function g71($,Z,Q,Y=Date.now()){_d4(Y),IP.set(fA$($),{owner:Z,expiresAt:Q})}function Wp($,Z=Date.now()){let Q=fA$($),Y=IP.get(Q);if(!Y)return"unknown";if(Y.expiresAt<=Z)return IP.delete(Q),"unknown";return Y.owner}var xA$="app",y71="user",IP;var Kp=L(()=>{IP=new Map});function kP($=process.env){let Z=$.GITHUB_APP_ID?.trim(),Q=$.GITHUB_APP_PRIVATE_KEY?.trim(),Y=$.GITHUB_APP_CLIENT_ID?.trim(),X=$.GITHUB_APP_CLIENT_SECRET?.trim(),J=$.GITHUB_APP_SLUG?.trim();if(!Z||!Q||!Y||!X||!J)return null;return{appId:Z,privateKeyPem:Q.replace(/\\n/g,`
|
|
951
|
-
`),clientId:Y,clientSecret:X,slug:J}}function tq($,Z){let Q=$.get(Z);if(Q===null)return null;let Y=Number(Q);return Number.isFinite(Y)?Y:null}function vd4($){return{limit:tq($,"x-ratelimit-limit"),remaining:tq($,"x-ratelimit-remaining"),reset:tq($,"x-ratelimit-reset"),used:tq($,"x-ratelimit-used"),resource:$.get("x-ratelimit-resource")}}function CP($){if($.status===429)return!0;if($.status!==403)return!1;if($.headers.get("retry-after")!==null)return!0;return tq($.headers,"x-ratelimit-remaining")===0}function SP($,Z=Date.now()){let Q=tq($,"retry-after");if(Q!==null)return Math.max(0,Q*1000);let Y=tq($,"x-ratelimit-reset");if(Y!==null)return Math.max(0,Y*1000-Z);return null}function _P($,Z){let Q=vd4($),Y=Q.resource??"unknown",X={installation:Z.installation,resource:Y},J={...X,lane:Z.lane,operation:Z.operation};if(hA$??=G$.createCounter("github_api_calls",{description:"Calls to the GitHub API, by transport and operation",unit:"{calls}"}),hA$.add(1,J),Q.remaining!==null)yA$??=G$.createGauge("github_rate_limit_remaining",{description:"Requests (REST) or points (GraphQL) left in the window",unit:"{requests}"}),yA$.record(Q.remaining,X);if(Q.used!==null)gA$??=G$.createGauge("github_rate_limit_used",{description:"Requests (REST) or points (GraphQL) spent in the window",unit:"{requests}"}),gA$.record(Q.used,X);return Q}function vP($){uA$??=G$.createCounter("github_rate_limited",{description:"GitHub responses refused for rate-limit reasons",unit:"{responses}"}),uA$.add(1,$)}var yA$=null,gA$=null,hA$=null,uA$=null;var q40=L(()=>{b6()});function yK($){return process.env.GITHUB_API_BASE_URL??fL("github",$)}async function NZ($,Z){let Q={Authorization:`Bearer ${Z.token}`,Accept:Z.accept??xd4,"X-GitHub-Api-Version":bd4};if(Z.body!==void 0)Q["Content-Type"]="application/json";let Y;try{Y=await fetch($,{method:Z.method??"GET",headers:Q,body:Z.body===void 0?void 0:JSON.stringify(Z.body),signal:AbortSignal.timeout(Z.timeoutMs??h71)})}catch(J){throw new b0({provider:"github",status:0,message:`GitHub ${Z.operation} failed: ${J instanceof Error?J.message:String(J)}`,cause:J})}let X=Wp(Z.token);if(_P(Y.headers,{lane:"rest",operation:Z.operation,installation:X}),CP(Y)){await Y.body?.cancel().catch(()=>{});let J=Y.headers.get("retry-after")!==null?"secondary":"primary";vP({lane:"rest",operation:Z.operation,installation:X,kind:J});let G=SP(Y.headers);throw new b0({provider:"github",status:Y.status,retryAfterMs:G,message:`GitHub ${J} rate limit reached${G===null?"":`; retry in ${Math.ceil(G/1000)}s`}`})}return Y}function R40($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"&&"message"in Z&&typeof Z.message==="string"&&Z.message.length>0){let Q="errors"in Z&&Array.isArray(Z.errors)?Z.errors.flatMap((Y)=>Y!==null&&typeof Y==="object"&&("message"in Y)&&typeof Y.message==="string"&&Y.message.length>0?[Y.message]:[]):[];return Q.length>0?`${Z.message}: ${Q.join("; ")}`:Z.message}}catch{}return $.slice(0,300)}function M40($,Z,Q){let Y=R40(Z);return new b0({provider:"github",status:$,message:`GitHub ${Q} failed: ${$}${Y?` ${Y}`:""}`})}async function Y7($,Z){let Q=await $.text().catch(()=>"");return M40($.status,Q,Z)}async function VQ($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new b0({provider:"github",status:$.status,message:`GitHub ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}var bd4="2022-11-28",xd4="application/vnd.github+json",h71=15000;var bP=L(()=>{t4();q40();Kp();S5()});function dd4($){return $==="public"||$==="private"||$==="internal"}function u71($,Z){let Q="public";if($.private)Q="private";else if($.visibility&&dd4($.visibility))Q=$.visibility;return{ref:{provider:"github",host:Z,path:$.full_name},externalId:String($.id),defaultBranch:$.default_branch??null,webUrl:$.html_url,visibility:Q,description:$.description??null,updatedAt:$.pushed_at??$.updated_at??null}}function c71($,Z){let Q=Z?.trim().toLowerCase();if(!Q)return!0;return $.toLowerCase().includes(Q)}function id4($){return{name:$.name||$.login,email:$.email||`${$.login}@users.noreply.github.com`}}function pd4($){return $.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function nd4($,Z){let{owner:Q,name:Y}=A5($),X=`/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}/tarball`;return Z?`${X}/${encodeURIComponent(Z)}`:X}function cA$($,Z,Q){return new b0({provider:"github",status:Z,message:Q?`Studio cannot create repositories in ${$}. The GitHub App needs the Administration permission there; ask an owner of ${$} to accept it.`:`The connected GitHub account cannot create repositories in ${$}.`})}class sq{kind="github";host;apiBaseUrl;options;grantedIds=new Map;constructor($){this.options=$,this.host=$.host.toLowerCase(),this.apiBaseUrl=yK($.host)}async tokenForRepo($,Z={}){let Q=this.options;if("appAuth"in Q){let Y=Q.repositoryIds??null,X=Z.alsoRepositories??[],J=await Q.appAuth.installationToken(Q.installationId,{...Y?{repositoryIds:[await this.grantedRepositoryId($,Y),...await this.grantedSiblingIds($,X,Y)]}:{repositories:[TZ1($),...X]},permissions:uB0,bufferMs:Z.bufferMs,forceRefresh:Z.forceRefresh});return{token:J.token,kind:"installation",expiresAt:J.expiresAt}}return this.sourceToken(Q.tokenSource,Z)}async accountToken($={}){let Z=this.options;if("appAuth"in Z){let Q=await Z.appAuth.installationToken(Z.installationId,{...Z.repositoryIds?{repositoryIds:Z.repositoryIds}:{},permissions:fd4,bufferMs:$.bufferMs,forceRefresh:$.forceRefresh});return{token:Q.token,kind:"installation",expiresAt:Q.expiresAt}}return this.sourceToken(Z.tokenSource,$)}async grantedRepositoryId($,Z){let Q=$.path.toLowerCase(),Y=this.grantedIds.get(Q);if(Y!==void 0)return Y;let X=Number((await this.getRepo($))?.externalId);if(!Number.isSafeInteger(X)||!Z.includes(X)){let{owner:J}=A5($);throw new b0({provider:"github",status:403,message:`Studio's GitHub App is installed on ${J} without access to ${$.path}. Someone who administers ${J} on GitHub has to add it to the app's repository access, then reconnect the account in Studio.`})}return this.grantedIds.set(Q,X),X}async grantedSiblingIds($,Z,Q){let{owner:Y}=A5($),X=[];for(let J of Z){let G=await this.getRepo({...$,path:`${Y}/${J}`}).catch(()=>null),W=Number(G?.externalId);if(Number.isSafeInteger(W)&&Q.includes(W))X.push(W)}return X}async createRepoFromTemplate($){let{template:Q,owner:Y,name:X}=$,J=await this.creationToken(Y),G=await NZ(`${this.apiBaseUrl}/repos/${encodeURIComponent(Q.owner)}/${encodeURIComponent(Q.name)}/generate`,{method:"POST",token:J,operation:"create_repo_from_template",body:{owner:Y,name:X,private:$.private,include_all_branches:!1}});if(!G.ok){let K=await G.text().catch(()=>"");if(G.status===422&&/already exists/i.test(R40(K)))throw new b0({provider:"github",status:409,message:`${Y}/${X} already exists on GitHub. Choose another name.`});if(G.status===403||G.status===404)throw cA$(Y,G.status,"appAuth"in this.options);throw M40(G.status,K,"create_repo_from_template")}let W=u71(await VQ(G,"create_repo_from_template"),this.host);return await this.waitForTemplateCopy(W.ref,J).catch(()=>{}),W}async creationToken($){let Z=this.options;if(!("appAuth"in Z))return(await this.sourceToken(Z.tokenSource,{})).token;if((Z.repositoryIds?.length??0)>=oq)throw new b0({provider:"github",status:409,message:`This GitHub account already grants Studio ${oq} repositories, the most one account can. Create the site with another account.`});try{return(await Z.appAuth.installationToken(Z.installationId,{permissions:yd4})).token}catch(Q){if(Q instanceof b0&&Q.status===422)throw cA$($,403,!0);throw Q}}async waitForTemplateCopy($,Z){let{owner:Q,name:Y}=A5($),X=`${this.apiBaseUrl}/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}/commits?per_page=1`;await e$(async()=>{let J=await NZ(X,{token:Z,operation:"wait_template_copy"});if(await J.body?.cancel().catch(()=>{}),!J.ok)throw new l71},{maxAttempts:gd4,minTimeout:hd4,maxTimeout:ud4,isRetriable:(J)=>J instanceof l71})}async sourceToken($,Z){let Q=await $.get(Z);if(!Q)throw new b0({provider:"github",status:401,message:`No usable GitHub token for ${this.host}; reconnect the account`});return Q}async getRepo($){let{owner:Q,name:Y}=A5($),X=await this.request(`/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}`,{operation:"get_repo"});if(X.status===404)return await X.body?.cancel().catch(()=>{}),null;if(!X.ok)throw await Y7(X,"get_repo");return u71(await VQ(X,"get_repo"),this.host)}async listRepos($={}){let Z=Math.max(1,Math.floor($.page??1)),Q=Math.min(cd4,Math.max(1,Math.floor($.perPage??ld4))),Y=`per_page=${Q}&page=${Z}`,X;if("appAuth"in this.options){let G=await this.request(`/installation/repositories?${Y}`,{operation:"list_installation_repositories"});if(!G.ok)throw await Y7(G,"list_installation_repositories");let W=await VQ(G,"list_installation_repositories");X=Array.isArray(W.repositories)?W.repositories:[]}else{let G=await this.request(`/user/repos?affiliation=owner,collaborator,organization_member&sort=pushed&${Y}`,{operation:"list_user_repositories"});if(!G.ok)throw await Y7(G,"list_user_repositories");let W=await VQ(G,"list_user_repositories");X=Array.isArray(W)?W:[]}return{repositories:X.filter((J)=>c71(J.full_name,$.query)).map((J)=>u71(J,this.host)),hasMore:X.length===Q}}async readFile($,Z,Q){let{owner:X,name:J}=A5($),G=Q?`?ref=${encodeURIComponent(Q)}`:"",W=await this.request(`/repos/${encodeURIComponent(X)}/${encodeURIComponent(J)}/contents/${pd4(Z)}${G}`,{operation:"read_file",accept:md4});if(W.status===404)return await W.body?.cancel().catch(()=>{}),null;if(!W.ok)throw await Y7(W,"read_file");return W.text()}async archiveTarball($,Z){let Y=`${this.apiBaseUrl}${nd4($,Z)}`,X=await this.tokenForRepo($),J=await NZ(Y,{operation:"archive_tarball",token:X.token,timeoutMs:lA$});if(J.status===401){await J.body?.cancel().catch(()=>{});let G=await this.tokenForRepo($,{forceRefresh:!0});J=await NZ(Y,{operation:"archive_tarball",token:G.token,timeoutMs:lA$})}if(J.status===404)return await J.body?.cancel().catch(()=>{}),null;if(!J.ok)throw await Y7(J,"archive_tarball");return J.body}async identity(){if("appAuth"in this.options)return null;let $="get_user",Z=await this.request("/user",{operation:$});if(!Z.ok)throw await Y7(Z,$);return id4(await VQ(Z,$))}async request($,Z){let Q=`${this.apiBaseUrl}${$}`,Y=await this.accountToken(),X=await NZ(Q,{...Z,token:Y.token});if(X.status!==401)return X;await X.body?.cancel().catch(()=>{});let J=await this.accountToken({forceRefresh:!0});return NZ(Q,{...Z,token:J.token})}}var fd4,yd4,gd4=8,hd4=500,ud4=4000,l71,ld4=30,cd4=100,md4="application/vnd.github.raw+json",lA$=60000;var cB0=L(()=>{t4();vG();p$();S5();V40();bP();fd4={metadata:"read",contents:"read"},yd4={administration:"write",contents:"read",metadata:"read"};l71=class l71 extends Error{}});import{z as xP}from"zod";function mB0($){return $.repositories.filter((Z)=>Z.permissions?.admin===!0).map((Z)=>({id:Z.id,name:Z.full_name}))}function dB0($){if($.total_count===void 0)return-1;return Math.max(0,Math.ceil($.total_count/rq)-1)}function dA$($){return dB0($)===0&&mB0($).length===0}function iA$($,Z,Q){let Y=$.filter((J)=>c71(J.name,Q)),X=(Z-1)*rq;return{repositories:Y.slice(X,X+rq),hasMore:Y.length>X+rq}}function pA$($,Z){let Q=new Set($.map((Y)=>Y.id));return Z.every((Y)=>Q.has(Y))}function nA$($,Z,Q){if(Z!==null){let J=new Set(Z);return $.filter((G)=>J.has(G.id)).map((G)=>G.id)}let Y=new Set(Q.flatMap((J)=>J.externalId?[J.externalId]:[])),X=new Set(Q.filter((J)=>!J.externalId).map((J)=>J.path.toLowerCase()));return $.filter((J)=>Y.has(String(J.id))||X.has(J.name.toLowerCase())).map((J)=>J.id)}class m71{ttlMs;entries=new Map;constructor($){this.ttlMs=$}installations($){return this.live($)?.installations}repositories($,Z){return this.live($)?.repositories.get(Z)}rememberInstallations($,Z){this.entry($).installations=Z}rememberRepositories($,Z,Q){this.entry($).repositories.set(Z,Q)}forget($){this.entries.delete($)}live($){let Z=this.entries.get($);if(!Z)return;if(Z.expiresAt<=Date.now()){this.entries.delete($);return}return Z}entry($){let Z=Date.now();for(let[Y,X]of this.entries)if(X.expiresAt<=Z)this.entries.delete(Y);let Q=this.entries.get($);if(!Q)Q={expiresAt:Z+this.ttlMs,repositories:new Map},this.entries.set($,Q);return Q}}var rq=100,mA$;var d71=L(()=>{cB0();mA$=xP.object({total_count:xP.number().int().nonnegative().optional(),repositories:xP.array(xP.object({id:xP.number().int().positive().safe(),full_name:xP.string().min(1),permissions:xP.object({admin:xP.boolean().optional()}).optional()}))})});import{createPrivateKey as sA$,sign as td4}from"crypto";import{z as tA$}from"zod";function i71($){return Buffer.from($).toString("base64url")}function $i4($){let Z=i71(JSON.stringify({alg:"RS256",typ:"JWT"})),Q=i71(JSON.stringify({iat:$.nowSeconds-sd4,exp:$.nowSeconds+n71,iss:$.appId})),Y=`${Z}.${Q}`,X=td4("RSA-SHA256",Buffer.from(Y),sA$($.privateKeyPem));return`${Y}.${i71(X)}`}function Zi4($){let Z=T40.find((X)=>(X in $));if(!Z)return null;let{[Z]:Q,...Y}=$;return Y}function Qi4($){let{repositories:Z,repositoryIds:Q}=$;if(Z&&Q)return"A GitHub installation token is scoped by repository name or by id, never both";let Y=Z?.length??Q?.length;if(Y!==void 0&&(Y===0||Y>oq))return`A GitHub installation token covers 1 to ${oq} repositories, not ${Y}`;if(Q?.some((X)=>!Number.isSafeInteger(X)||X<=0))return"A GitHub repository id must be a positive integer";return null}function Yi4($,Z){let Q=(Z.repositories??[]).map((J)=>J.toLowerCase()).sort(),Y=Object.entries(Z.permissions??{}).map(([J,G])=>`${J}=${G}`).sort(),X=Z.repositoryIds?`ids:${[...Z.repositoryIds].sort((J,G)=>J-G).join(",")}`:"all";return`${$}|${Q.join(",")}|${X}|${Y.join(",")}`}function Xi4($,Z){for(let[Q,Y]of $)if(Y.expiresAt.getTime()<=Z)$.delete(Q)}function oA$($){let Z=$.account;if(typeof $.id!=="number"||!Z||typeof Z.id!=="number"||typeof Z.login!=="string")return null;return{installationId:$.id,externalAccountId:String(Z.id),login:Z.login,avatarUrl:typeof Z.avatar_url==="string"?Z.avatar_url:null,accountType:typeof Z.type==="string"?Z.type:"User",htmlUrl:typeof $.html_url==="string"?$.html_url:null}}function Ji4($){if(!$||typeof $!=="object"||Array.isArray($))return null;let Z={};for(let[Q,Y]of Object.entries($))if(typeof Y==="string")Z[Q]=Y;return Z}class rA${appId;privateKeyPem;apiBaseUrl;jwt=null;cache=new Map;inFlight=new Map;flowAccess=new m71(ed4);constructor($,Z){this.appId=$.appId,this.privateKeyPem=$.privateKeyPem,this.apiBaseUrl=(Z?.apiBaseUrl??od4).replace(/\/+$/,"")}appJwt(){let $=Math.floor(Date.now()/1000);if(this.jwt&&this.jwt.exp-$>rd4)return this.jwt.value;let Z=$i4({appId:this.appId,privateKeyPem:this.privateKeyPem,nowSeconds:$});return this.jwt={value:Z,exp:$+n71},g71(Z,xA$,($+n71)*1000),Z}installationToken($,Z={}){let Q=Qi4(Z);if(Q)return Promise.reject(new b0({provider:"github",status:403,message:Q}));let Y=Yi4($,Z),X=Z.bufferMs??ad4;if(!Z.forceRefresh){let W=this.cache.get(Y);if(W&&W.expiresAt.getTime()-Date.now()>X)return Promise.resolve(W)}let J=this.inFlight.get(Y);if(J)return J;let G=this.mint($,Z).then((W)=>{return this.cache.set(Y,W),g71(W.token,String($),W.expiresAt.getTime()),Xi4(this.cache,Date.now()),W}).finally(()=>{this.inFlight.delete(Y)});return this.inFlight.set(Y,G),G}async mint($,Z){let Y=`${this.apiBaseUrl}/app/installations/${$}/access_tokens`,X=Z.repositories&&Z.repositories.length>0?Z.repositories:void 0,J=Z.permissions?{...Z.permissions}:void 0;for(;;){let G=await NZ(Y,{method:"POST",token:this.appJwt(),body:{...X&&{repositories:X},...Z.repositoryIds&&{repository_ids:Z.repositoryIds},...J&&{permissions:J}},operation:"installation_access_token"});if(G.ok){let W=await VQ(G,"installation_access_token");if(typeof W.token!=="string"||W.token.length===0||typeof W.expires_at!=="string"||W.expires_at.length===0)throw new b0({provider:"github",status:G.status,message:"GitHub installation_access_token returned no token"});let K=new Date(W.expires_at);if(isNaN(K.getTime()))throw new b0({provider:"github",status:G.status,message:"GitHub installation_access_token returned invalid token expiration"});return{token:W.token,expiresAt:K,permissions:Ji4(W.permissions)??J??{}}}if(G.status===422&&J){let W=await G.text().catch(()=>""),K=Zi4(J);if(K&&f71(R40(W))){J=K;continue}throw M40(G.status,W,"installation_access_token")}throw await Y7(G,"installation_access_token")}}async getInstallation($){let Q=await NZ(`${this.apiBaseUrl}/app/installations/${$}`,{token:this.appJwt(),operation:"get_installation"});if(Q.status===404)return null;if(!Q.ok)throw await Y7(Q,"get_installation");let Y=oA$(await VQ(Q,"get_installation"));if(!Y)throw new b0({provider:"github",status:Q.status,message:"GitHub get_installation returned an installation without a user or organization account"});return Y}async connectingUserId($){let Z=tA$.object({id:tA$.number().int().positive().safe()}).parse(await this.userGet("/user",$,"get_connecting_user"));return String(Z.id)}async listConnectableInstallations($,Z){this.flowAccess.forget($);let Q=await this.listUserInstallations(Z);return this.flowAccess.rememberInstallations($,Q),(await k5(Q,4,async(X)=>{let J=await this.repositoryPage(Z,X.installationId,1);if(dB0(J)===0)this.flowAccess.rememberRepositories($,X.installationId,mB0(J));return dA$(J)?null:X})).filter((X)=>X!==null)}async connectableInstallation($,Z,Q,Y={}){let X=Y.fresh?void 0:this.flowAccess.installations($);if(!X)X=await this.listUserInstallations(Z),this.flowAccess.rememberInstallations($,X);return X.find((J)=>J.installationId===Q)??null}async delegableRepositories($,Z,Q,Y={}){if(!Y.fresh){let K=this.flowAccess.repositories($,Q);if(K)return K}let X=await this.repositoryPage(Z,Q,1),J=[X],G=dB0(X);if(G>0)J.push(...await k5(Array.from({length:G},(K,H)=>H+2),4,(K)=>this.repositoryPage(Z,Q,K)));else if(G<0)for(let K=2;J[J.length-1].repositories.length===rq;K++)J.push(await this.repositoryPage(Z,Q,K));let W=J.flatMap(mB0);return this.flowAccess.rememberRepositories($,Q,W),W}forgetFlow($){this.flowAccess.forget($)}async repositoryPage($,Z,Q){return mA$.parse(await this.userGet(`/user/installations/${Z}/repositories?per_page=${rq}&page=${Q}`,$,"list_connecting_user_repositories"))}async userGet($,Z,Q){let Y=await NZ(`${this.apiBaseUrl}${$}`,{token:Z,operation:Q});if(!Y.ok)throw await Y7(Y,Q);return VQ(Y,Q)}async listUserInstallations($){let Y=[];for(let X=1;;X++){let J=await NZ(`${this.apiBaseUrl}/user/installations?per_page=100&page=${X}`,{token:$,operation:"list_user_installations"});if(!J.ok)throw await Y7(J,"list_user_installations");let G=await VQ(J,"list_user_installations"),W=Array.isArray(G.installations)?G.installations:[];for(let K of W){let H=oA$(K);if(H)Y.push(H)}if(W.length<100)return Y}}}function bF(){if(p71===void 0){let $=kP();p71=$&&Gi4($)?new rA$($,{apiBaseUrl:yK("github.com")}):null}return p71}function Gi4($){try{return sA$($.privateKeyPem),!0}catch(Z){return console.error("[git-providers] GITHUB_APP_PRIVATE_KEY is not a usable private key \u2014 "+"the GitHub App stays disabled and orgs keep their existing connections. Check that newlines survived the secret store.",Z),!1}}function aA$(){let $=kP()!==null&&bF()!==null;return{configured:$,hosts:$?[Wi4]:[]}}var od4="https://api.github.com",sd4=60,n71=540,rd4=60,ad4=300000,ed4=600000,oq=500,p71,Wi4="github.com";var V40=L(()=>{p$();vG();Kp();S5();d71();bP()});import{execFile as Ki4}from"child_process";import{promisify as Hi4}from"util";import{z as iB0}from"zod";function aq(){return B0().localMode}function I40($){return new b0({provider:"github",status:403,message:$})}async function eA$($){if(!aq())throw I40("GitHub CLI connections are only available in local mode.");let Z={...process.env,GH_PROMPT_DISABLED:"1"};delete Z.GH_TOKEN,delete Z.GITHUB_TOKEN,delete Z.GH_DEBUG,delete Z.DEBUG;try{let{stdout:Q}=await Fi4("gh",["auth","token","--hostname",t71,...$?["--user",$]:[]],{env:Z,timeout:1e4,maxBuffer:16384}),Y=Q.trim();if(!Y||/\s/.test(Y))throw Error("Invalid CLI token");return Y}catch{throw I40("Could not read your GitHub CLI login. Install gh and run gh auth login --hostname github.com, then connect again.")}}async function $T$($){try{let Z=await NZ(`${yK(t71)}/user`,{token:$,operation:"cli_current_user"});if(!Z.ok)throw Error("GitHub rejected the CLI token");return Ui4.parse(await Z.json())}catch{throw I40("Could not verify your GitHub CLI account. Run gh auth login --hostname github.com and connect again.")}}async function ZT$(){let $=await $T$(await eA$());return{externalAccountId:`cli:user:${$.id}`,login:$.login,avatarUrl:$.avatar_url??null}}function QT$($){return{kind:"token",async get(){if($.host!==t71)throw I40("Unsupported GitHub CLI host.");let Z=await eA$($.login);if(`cli:user:${(await $T$(Z)).id}`!==$.externalAccountId)throw I40("Your GitHub CLI account changed. Connect it again.");return{token:Z,kind:"token",expiresAt:null}}}}var Fi4,t71="github.com",Ui4;var pB0=L(()=>{u1();S5();bP();Fi4=Hi4(Ki4),Ui4=iB0.object({id:iB0.number().int().positive().safe(),login:iB0.string().min(1),avatar_url:iB0.string().url().nullable().optional()})});function Hp($){return fL("gitlab",$)}function Bi4($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"){let Q=Z,Y=[...dD(Q.message),...dD(Q.error),...dD(Q.error_description)];if(Y.length>0)return Y.join("; ")}}catch{}return $.slice(0,300)}async function e3($){let Z=await $.text().catch(()=>""),Q=Z?Bi4(Z):$.statusText;return new b0({provider:"gitlab",status:$.status,message:`GitLab API ${$.status}: ${Q}`,retryAfterMs:$.status===429?YT$($.headers):null})}async function gK($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new b0({provider:"gitlab",status:$.status,message:`GitLab ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}async function dL($,Z,Q={}){let Y={Authorization:`Bearer ${Z}`,Accept:Q.accept??"application/json"};if(Q.body!==void 0)Y["Content-Type"]="application/json";try{return await fetch($,{method:Q.method??"GET",headers:Y,body:Q.body===void 0?void 0:JSON.stringify(Q.body),signal:AbortSignal.timeout(Q.timeoutMs??Ni4)})}catch(X){throw new b0({provider:"gitlab",status:0,message:`GitLab request failed: ${X instanceof Error?X.message:String(X)}`,cause:X})}}var Ni4=15000;var k40=L(()=>{t4();S5();fP()});import{z as jX}from"zod";function iL($){return encodeURIComponent($)}function C40($){return encodeURIComponent($.replace(/^\/+/,""))}function ji4($,Z){let Q=`/projects/${iL($.path)}/repository/archive.tar.gz`;return Z?`${Q}?sha=${encodeURIComponent(Z)}`:Q}function YT$($,Z=Date.now()){let Q=$.get("retry-after");if(Q!==null){let X=Number(Q);if(Number.isFinite(X))return Math.max(0,X*1000);let J=Date.parse(Q);if(Number.isFinite(J))return Math.max(0,J-Z)}let Y=$.get("ratelimit-reset");if(Y!==null){let X=Number(Y);if(Number.isFinite(X))return Math.max(0,X*1000-Z)}return null}function XT$($,Z){let Q=wi4.parse($),Y={provider:"gitlab",host:Z,path:Q.path_with_namespace};return{ref:Y,externalId:String(Q.id),defaultBranch:Q.default_branch??null,webUrl:Q.web_url??CG(Y),visibility:Q.visibility,description:Q.description??null,updatedAt:Q.last_activity_at??null}}async function Ei4($,Z,Q={}){let Y=await dL($,Z,Q);if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),null;if(!Y.ok)throw await e3(Y);return Y}async function Pi4($,Z){let Q=await Ei4(`${fL("gitlab",$)}/user`,Z);if(!Q)throw new b0({provider:"gitlab",status:404,message:"GitLab did not recognise the authenticated user"});return JT$.parse(await gK(Q,"get_user"))}async function nB0($,Z){let Q=await Pi4($,Z);return{externalAccountId:String(Q.id),login:Q.username,avatarUrl:Q.avatar_url??null}}class S40{kind="gitlab";host;apiBase;tokenSource;constructor($){this.host=$.host,this.apiBase=fL("gitlab",$.host),this.tokenSource=$.tokenSource}async tokenForRepo($,Z){return this.accountToken(Z)}async accountToken($){let Z=await this.tokenSource.get($);if(!Z)throw new b0({provider:"gitlab",status:401,message:"GitLab account is not authenticated"});return Z}async getRepo($){let Z=await this.get(`/projects/${iL($.path)}`);if(!Z)return null;return XT$(await gK(Z,"get_repo"),this.host)}async listRepos($={}){let Z=new URLSearchParams({membership:"true",simple:"true",order_by:"id",sort:"desc",per_page:String(Math.min(Oi4,Math.max(1,$.perPage??Li4))),page:String(Math.max(1,$.page??1))}),Q=$.query?.trim();if(Q)Z.set("search",Q);let Y=await this.get(`/projects?${Z}`);if(!Y)return{repositories:[],hasMore:!1};let X=await gK(Y,"list_repos");if(!Array.isArray(X))throw new b0({provider:"gitlab",status:502,message:"GitLab /projects returned a non-array payload"});return{repositories:X.map((J)=>XT$(J,this.host)),hasMore:X.length===Number(Z.get("per_page"))}}async readFile($,Z,Q){let Y=Q;if(!Y){let J=await this.getRepo($);if(!J?.defaultBranch)return null;Y=J.defaultBranch}let X=await this.get(`/projects/${iL($.path)}/repository/files/${C40(Z)}/raw?ref=${encodeURIComponent(Y)}`,{accept:"text/plain, */*"});if(!X)return null;return X.text()}async archiveTarball($,Z){let Q=await this.authedFetch(`${this.apiBase}${ji4($,Z)}`,{accept:"application/octet-stream, */*",timeoutMs:Di4});if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q.body}async identity(){let $=await this.authedFetch(`${this.apiBase}/user`);if(!$.ok)throw await e3($);let Z=JT$.parse(await gK($,"identity"));return{name:Z.name||Z.username,email:Z.commit_email||Z.public_email||Z.email||`${Z.username}@users.noreply.${this.host}`}}async get($,Z){let Q=await this.authedFetch(`${this.apiBase}${$}`,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q}async authedFetch($,Z={}){let Q=await this.accountToken(),Y=await dL($,Q.token,Z);if(Y.status!==401)return Y;await Y.body?.cancel().catch(()=>{});let X=await this.accountToken({forceRefresh:!0});return dL($,X.token,Z)}}var Di4=60000,Li4=30,Oi4=100,wi4,JT$;var fP=L(()=>{t4();S5();k40();wi4=jX.object({id:jX.number(),path_with_namespace:jX.string().min(1),default_branch:jX.string().nullish(),web_url:jX.string().nullish(),visibility:jX.enum(["public","private","internal"]),description:jX.string().nullish(),last_activity_at:jX.string().nullish()});JT$=jX.object({id:jX.number(),username:jX.string().min(1),name:jX.string().nullish(),avatar_url:jX.string().nullish(),email:jX.string().nullish(),public_email:jX.string().nullish(),commit_email:jX.string().nullish()})});function tB0($=process.env){let Z=$.BITBUCKET_OAUTH_CLIENT_ID?.trim(),Q=$.BITBUCKET_OAUTH_CLIENT_SECRET?.trim();if(!Z||!Q)return null;return{host:pL,clientId:Z,clientSecret:Q}}function GT$(){let $=tB0();return{configured:$!==null,hosts:$?[$.host]:[]}}var pL;var Fp=L(()=>{t4();pL=pN0.bitbucket});function _40($){if($.toLowerCase()===pL)return;throw new b0({provider:"bitbucket",status:400,message:`${$} is not Bitbucket Cloud. Only bitbucket.org is supported; Bitbucket Data Center has a different API.`})}function Ai4($,Z=Date.now()){let Q=$.get("retry-after");if(Q===null)return null;let Y=Number(Q);if(Number.isFinite(Y))return Math.max(0,Y*1000);let X=Date.parse(Q);return Number.isFinite(X)?Math.max(0,X-Z):null}function Ti4($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"){let Q=Z,Y=[...dD(Q.error),...dD(Q.error_description)];if(Y.length>0)return Y.join("; ")}}catch{}return $.slice(0,300)}async function qJ($){let Z=await $.text().catch(()=>""),Q=Z?Ti4(Z):$.statusText;return new b0({provider:"bitbucket",status:$.status,message:`Bitbucket API ${$.status}: ${Q}`,retryAfterMs:$.status===429?Ai4($.headers):null})}async function tN($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new b0({provider:"bitbucket",status:$.status,message:`Bitbucket ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}async function wX($,Z,Q={}){let Y={Authorization:Q.basicAuth?`Basic ${Buffer.from(`x-token-auth:${Z}`).toString("base64")}`:`Bearer ${Z}`,Accept:Q.accept??"application/json"},X=Q.body instanceof FormData;if(Q.body!==void 0&&!X)Y["Content-Type"]="application/json";try{return await fetch($,{method:Q.method??"GET",headers:Y,body:Q.body===void 0?void 0:X?Q.body:JSON.stringify(Q.body),signal:AbortSignal.timeout(Q.timeoutMs??zi4)})}catch(J){throw new b0({provider:"bitbucket",status:0,message:`Bitbucket request failed: ${J instanceof Error?J.message:String(J)}`,cause:J})}}function WT$($){if(!$.next)return null;try{let Z=new URL($.next).searchParams.get("page"),Q=Number(Z);return Z!==null&&Number.isInteger(Q)&&Q>0?Q:null}catch{return null}}function $W($){return`"${$.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}var zi4=15000,IQ;var v40=L(()=>{t4();S5();Fp();IQ=fL("bitbucket",pL)});import{z as X7}from"zod";function r71($){let{owner:Z,name:Q}=A5({path:$});if(!Z||!Q||Z.includes("/"))throw new b0({provider:"bitbucket",status:400,message:`${$} is not a Bitbucket repository path (expected workspace/repo_slug)`});return{workspace:Z,slug:Q}}function yP($){let{workspace:Z,slug:Q}=r71($.path);return`/repositories/${encodeURIComponent(Z)}/${encodeURIComponent(Q)}`}function Mi4($,Z){return`${CG($)}/get/${encodeURIComponent(Z)}.tar.gz`}function KT$($,Z){let Q=Vi4.parse($),Y={provider:"bitbucket",host:Z,path:Q.full_name};return{ref:Y,externalId:Q.uuid,defaultBranch:Q.mainbranch?.name??null,webUrl:Q.links?.html?.href??CG(Y),visibility:Q.is_private?"private":"public",description:Q.description??null,updatedAt:Q.updated_on??null}}async function oB0($,Z,Q){_40($);let Y=Q?.trim().toLowerCase();if(Y){let G=await s71(`${IQ}/workspaces/${encodeURIComponent(Y)}`,Z);if(G.ok)return HT$(G.json);throw G.failure}let X=await s71(`${IQ}/user`,Z);if(X.ok){let G=UT$.parse(X.json);return{externalAccountId:G.uuid,login:G.nickname,avatarUrl:G.links?.avatar?.href??null}}let J=await s71(`${IQ}/user/workspaces?pagelen=1`,Z);if(J.ok){let G=J.json.values?.[0];if(G?.workspace!==void 0)return HT$(G.workspace)}throw J.ok?new b0({provider:"bitbucket",status:401,message:"Bitbucket did not recognise this token. An access token cannot name itself \u2014 say which workspace it belongs to and connect it again."}):J.failure}function HT$($){let Z=Ii4.parse($);return{externalAccountId:Z.uuid,login:Z.slug,avatarUrl:Z.links?.avatar?.href??null}}async function s71($,Z){let Q=await wX($,Z);if(!Q.ok)return{ok:!1,failure:await qJ(Q)};return{ok:!0,json:await tN(Q,"principal")}}class b40{kind="bitbucket";host;tokenSource;workspace;constructor($){_40($.host),this.host=pL,this.tokenSource=$.tokenSource,this.workspace=$.workspace?.trim().toLowerCase()||null}async tokenForRepo($,Z){return this.accountToken(Z)}async accountToken($){let Z=await this.tokenSource.get($);if(!Z)throw new b0({provider:"bitbucket",status:401,message:"Bitbucket account is not authenticated"});return Z}async getRepo($){let Z=await this.get(yP($));if(!Z)return null;return KT$(await tN(Z,"get_repo"),this.host)}async listRepos($={}){let Z=Math.min(o71,Math.max(1,$.perPage??Ri4)),Q=new URLSearchParams({role:"member",sort:"-updated_on",pagelen:String(Z),page:String(Math.max(1,$.page??1))}),Y=$.query?.trim();if(Y)Q.set("q",`name ~ ${$W(Y)}`);let X=await this.workspaceSlugs(),J=await Promise.all(X.map(async(K)=>{let H=await this.get(`/repositories/${encodeURIComponent(K)}?${Q}`);if(!H)return{values:[],next:null};let F=await tN(H,"list_repos");if(!Array.isArray(F.values))throw new b0({provider:"bitbucket",status:502,message:`Bitbucket /repositories/${K} returned no values array`});return F})),G=J.flatMap((K)=>K.values??[]).map((K)=>KT$(K,this.host)).sort((K,H)=>(H.updatedAt??"").localeCompare(K.updatedAt??"")),W=X.length<=1;return{repositories:W?G:G.slice(0,Z),hasMore:J.some((K)=>!!K.next)||!W&&G.length>Z}}async workspaceSlugs(){if(this.workspace)return[this.workspace];let $=await this.get(`/user/workspaces?pagelen=${o71}`);if(!$)return[];return((await tN($,"list_workspaces")).values??[]).flatMap((Q)=>typeof Q.workspace?.slug==="string"?[Q.workspace.slug]:[])}async readFile($,Z,Q){let Y=Q;if(!Y){let J=await this.getRepo($);if(!J?.defaultBranch)return null;Y=J.defaultBranch}let X=await this.get(`${yP($)}/src/${encodeURIComponent(Y)}/${Up(Z)}`,{accept:"text/plain, */*"});if(!X)return null;return X.text()}async archiveTarball($,Z){let Q=Z;if(!Q){let G=await this.getRepo($);if(!G?.defaultBranch)return null;Q=G.defaultBranch}let Y=Mi4($,Q),X={accept:"application/octet-stream, */*",timeoutMs:qi4},J=await this.authedFetch(Y,X);if(J.status===401||J.status===403){await J.body?.cancel().catch(()=>{});let{token:G}=await this.accountToken();J=await wX(Y,G,{...X,basicAuth:!0})}if(J.status===404)return await J.body?.cancel().catch(()=>{}),null;if(!J.ok)throw await qJ(J);return J.body}async identity(){let $=await this.authedFetch(`${IQ}/user`);if($.status===401||$.status===403)return await $.body?.cancel().catch(()=>{}),null;if(!$.ok)throw await qJ($);let Z=UT$.parse(await tN($,"identity"));return{name:Z.display_name||Z.nickname,email:await this.primaryEmail()??`${Z.nickname}@users.noreply.${this.host}`}}async primaryEmail(){let $=await this.authedFetch(`${IQ}/user/emails?pagelen=${o71}`);if(!$.ok)return await $.body?.cancel().catch(()=>{}),null;let Q=(await tN($,"user_emails").catch(()=>null))?.values??[],Y=Q.find((X)=>X.is_primary===!0&&X.is_confirmed!==!1)??Q.find((X)=>X.is_confirmed!==!1);return typeof Y?.email==="string"&&Y.email?Y.email:null}async get($,Z){let Q=await this.authedFetch(`${IQ}${$}`,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await qJ(Q);return Q}async authedFetch($,Z={}){let Q=await this.accountToken(),Y=await wX($,Q.token,Z);if(Y.status!==401)return Y;await Y.body?.cancel().catch(()=>{});let X=await this.accountToken({forceRefresh:!0});return wX($,X.token,Z)}}function Up($){return $.replace(/^\/+/,"").split("/").map((Z)=>encodeURIComponent(Z)).join("/")}var qi4=60000,Ri4=30,o71=100,Vi4,FT$,UT$,Ii4;var eq=L(()=>{t4();S5();Fp();v40();Vi4=X7.object({uuid:X7.string().min(1),full_name:X7.string().min(1),is_private:X7.boolean(),description:X7.string().nullish(),mainbranch:X7.object({name:X7.string().nullish()}).nullish(),links:X7.object({html:X7.object({href:X7.string()}).nullish()}).nullish(),updated_on:X7.string().nullish()});FT$=X7.object({avatar:X7.object({href:X7.string().nullish()}).nullish()}).nullish(),UT$=X7.object({uuid:X7.string().min(1),nickname:X7.string().min(1),display_name:X7.string().nullish(),links:FT$}),Ii4=X7.object({uuid:X7.string().min(1),slug:X7.string().min(1),links:FT$})});function a71($,Z,Q){return{kind:Q,async get(Y){let X=Y?.forceRefresh?await $.get(Z):null,J=await RJ({connectionId:Z,tokenStorage:$,bufferMs:Y?.bufferMs,force:Y?.forceRefresh===!0&&X!==null&&gP(X)});if(!J.accessToken)return null;return{token:J.accessToken,kind:Q,expiresAt:null}}}}function sB0($){return $==="token"?"token":"oauth"}function x40($){return $Q1($)===null}function e71($,Z){if($.authKind!=="github_app")return!0;if($.installationRepositoryIds===null)return!0;return Z.externalId!==null&&$.installationRepositoryIds.includes(Number(Z.externalId))}function $Q1($){if($.status!=="active")return"revoked";if($.authKind==="github_cli")return $.type==="github"&&$.host==="github.com"&&aq()?null:"provider_unavailable";if($.type==="github"&&$.authKind==="github_app"){if(bF()===null)return"provider_unavailable";if($.installationId===null)return"installation_missing";if(!$.installationAuthorizedBy)return"authorization_required";if($.installationRepositoryIds?.length===0)return"no_repositories"}return null}function oN($,Z){if(Z.status!=="active")throw new b0({provider:Z.type,status:403,message:"This git account was revoked. Reconnect it before accessing repositories."});if(Z.authKind==="github_app"&&(!Z.installationAuthorizedBy||Z.installationRepositoryIds?.length===0))throw new b0({provider:Z.type,status:403,message:"Reconnect this git account. A GitHub installation must be authorized by its account owner or by someone who administers repositories in it."});let Q=new z40($.db,$.vault);switch(Z.type){case"github":{if(Z.authKind==="github_cli")return new sq({host:Z.host,tokenSource:QT$(Z)});if(Z.authKind==="github_app"){let Y=bF();if(!Y)throw new b0({provider:"github",status:503,message:"GitHub App credentials are not configured on this deployment"});if(Z.installationId===null)throw new b0({provider:"github",status:403,message:"This GitHub account has no installation linked. Reconnect it to select repositories."});return new sq({host:Z.host,installationId:Z.installationId,repositoryIds:Z.installationRepositoryIds,appAuth:Y})}return new sq({host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))})}case"gitlab":return new S40({host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))});case"bitbucket":return new b40({workspace:Z.authKind==="token"?Z.login:null,host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))})}}function NT$($){if($.authKind==="github_app")return"installation";if($.authKind==="github_cli")return"token";return sB0($.authKind)}function f40($,Z,Q="installation"){return{ref:$,tokenSource:{kind:Q,get:()=>Promise.resolve({token:Z,kind:Q,expiresAt:null})}}}async function rB0($,Z){let Q=mL(Z);if(!Z.accountId)throw new b0({provider:Z.provider,status:401,message:`${Z.path} is linked without an account; link it again to read and write it`});let Y=await BT$($,Z,Z.accountId),X=oN($,Y),J=NT$(Y);return{ref:Q,tokenSource:{kind:J,get:(G)=>X.tokenForRepo(Q,G)}}}async function sN($,Z,Q){let Y=mL(Z);if(!Z.accountId)return ki4(Y);let X=await BT$($,Z,Z.accountId),J=oN($,X),W=NT$(X)==="installation"?await CA$((F,U)=>J.readFile({...Y,path:F},U),Y):[],K=await J.tokenForRepo(Y,{...Q,alsoRepositories:W}),H=K.kind==="installation"?null:await J.identity().catch(()=>null);return{cloneUrl:y80(Y,K.token),expiresAt:K.expiresAt,gitUserName:H?.name??nN.name,gitUserEmail:H?.email??nN.email}}function ki4($){return{cloneUrl:y80($),gitUserName:nN.name,gitUserEmail:nN.email}}async function BT$($,Z,Q){let Y=await new pq($.db).getUnscoped(Q);if(!Y||Y.organizationId!==Z.organizationId)throw new b0({provider:Z.provider,status:404,message:`The account backing ${Z.path} no longer exists. Link the repository again.`});return Y}async function aB0($,Z,Q){let Y=Q.repositoryId?await $.repositories.get(Q.repositoryId,Z):Q.ref?await $.repositories.findByRef(Z,Q.ref):null,X=Y?mL(Y):Q.ref??null;if(!X)return null;return{ref:X,repository:Y,servable:Y?await nL($,Y):!1}}async function nL($,Z){if(!Z.accountId)return!1;let Q=await $.gitProviderAccounts.getUnscoped(Z.accountId);if(Q===null||!x40(Q))return!1;return!Z.legacyConnectionId||e71(Q,Z)}var eB0=L(()=>{t4();s3();b71();hB0();Gp();SA$();V40();cB0();pB0();fP();eq();S5()});async function Ci4($,Z){let Q=$.organization?.id;if(!Q)throw Error(a7);if(!Z.sourceConnectionId)throw Error(a7);let Y=await $.storage.connections.findById(Z.sourceConnectionId,Q);if(!Y)throw Error(a7);let{clientFromConnection:X}=await Promise.resolve().then(() => (g80(),jT$)),J=await X(Y,$,!0);try{let{result:G}=await vA$((H)=>J.callTool({name:"MINT_REPO_TOKEN",arguments:{installationId:Z.installationId,owner:Z.owner,repo:Z.repo,permissions:H}}),_A$(Z.permissions)),W=G.structuredContent?.token;if(G.isError||!W)throw Error(a7);let K=G.structuredContent?.expiresAt;return{accessToken:W,expiresAt:K?new Date(K):null}}finally{await J.close().catch(()=>{})}}function Si4($,Z){return($?.getTime()??0)>Z?$:new Date(Z+OT$)}async function _i4($,Z,Q,Y){let X=Date.now(),J=await Ci4($,Q),G=Si4(J.expiresAt,X);try{await Y.upsert({connectionId:Z,accessToken:J.accessToken,refreshToken:null,scope:null,expiresAt:G,clientId:null,clientSecret:null,tokenEndpoint:null})}catch(W){console.warn("[GithubMint] failed to persist minted token",{connectionId:Z,message:W instanceof Error?W.message:String(W)})}return J.accessToken}async function y40($,Z,Q){let Y=UZ(Z);if(!Y)throw Error("Connection is not repo-scoped");if(!Y.sourceConnectionId)throw Error(a7);let X=new e5($.db,$.vault),J=await X.get(Z.id);if(!Q?.forceRefresh&&J&&!X.isExpired(J,h40))return J.accessToken;let G=ZQ1.get(Z.id);if(G)return G;let W=_i4($,Z.id,Y,X).finally(()=>{ZQ1.delete(Z.id)});return ZQ1.set(Z.id,W),W}function DT$($){return $.slug==="mcp-github"}async function LT$($,Z,Q){if(UZ(Z)?.sourceConnectionId)return y40($,Z,Q);return(await RJ({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new e5($.db,$.vault),force:Q?.forceRefresh})).accessToken}var ZQ1;var g40=L(()=>{s3();vG();xK();ZQ1=new Map});function vi4(){return process.env.GITHUB_GRAPHQL_URL??"https://api.github.com/graphql"}function xi4($){return $>=500&&$<600}function fi4($){return $ instanceof e6?$.cause:$}function yi4($,Z){try{return JSON.parse($)}catch(Q){throw Error(`GitHub GraphQL ${Z} returned invalid JSON: ${$.slice(0,300)}`,{cause:Q})}}function gi4($,Z){let Q=$.errors?.[0]?.message;if(Q)throw Error(`GitHub GraphQL ${Z} failed: ${Q}`);if($.data==null)throw Error(`GitHub GraphQL ${Z} returned no data`);return $.data}async function Np($){let Z=await $.getToken();if(!Z)throw Error($.missingTokenMessage);let Q=(W)=>fetch(vi4(),{method:"POST",headers:{Authorization:`Bearer ${W}`,Accept:"application/vnd.github+json","Content-Type":"application/json"},body:JSON.stringify({query:$.query,variables:$.variables}),signal:AbortSignal.timeout(bi4)}),Y=async(W)=>{try{return await e$(async()=>{let K=await Q(W);if(xi4(K.status)){let H=K.status;throw await K.body?.cancel().catch(()=>{}),Error(`GitHub GraphQL transient error: ${H}`)}return K},{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1})}catch(K){throw fi4(K)}},X=await Y(Z),J=Z;if(X.status===401){try{await X.body?.cancel()}catch{}let W=await $.getToken(!0);if(!W)throw Error($.missingTokenMessage);if(X=await Y(W),J=W,X.status===401)throw Error($.missingTokenMessage)}let G=Wp(J);if(_P(X.headers,{lane:"graphql",operation:$.operation,installation:G}),CP(X)){let W=X.headers.get("retry-after")!==null?"secondary":"primary";vP({lane:"graphql",operation:$.operation,installation:G,kind:W});let K=SP(X.headers);throw await X.body?.cancel().catch(()=>{}),new b0({provider:"github",status:X.status,retryAfterMs:K,message:`GitHub ${W} rate limit reached${K===null?"":`; retry in ${Math.ceil(K/1000)}s`}`})}if(!X.ok)throw await X.body?.cancel().catch(()=>{}),new b0({provider:"github",status:X.status,message:`GitHub GraphQL ${$.label} failed: ${X.status}`});return gi4(yi4(await X.text(),$.label),$.label)}var bi4=15000;var $D0=L(()=>{p$();S5();q40();Kp()});function li4($){if(!$)return null;if($.state!=="open")return!1;if(typeof $.mergeable==="boolean")return!$.mergeable;let Z=$.mergeable_state;if(typeof Z!=="string"||Z===""||Z==="unknown")return null;return Z==="dirty"}function ci4($){if($==="clean")return"passing";if($==="unstable")return"failing";return null}function QQ1($){let Z=$.merged===!0||typeof $.merged_at==="string";return{number:$.number??0,url:$.html_url??"",title:$.title??"",body:$.body??"",state:Z?"merged":$.state==="closed"?"closed":"open",draft:$.draft===!0,mergedAt:$.merged_at??null,updatedAt:$.updated_at??null,base:$.base?.ref??"main",head:$.head?.ref??"",headSha:$.head?.sha??"",headRepoPath:$.head?.repo?.full_name??null,author:$.user?.login??"",conflicting:li4($),checks:ci4($.mergeable_state),changedFiles:typeof $.changed_files==="number"?$.changed_files:null}}function mi4($){if($==="IN_PROGRESS")return"running";if($==="COMPLETED")return"completed";return"queued"}function di4($){switch($){case"SUCCESS":return"success";case"FAILURE":case"STARTUP_FAILURE":return"failure";case"NEUTRAL":case"STALE":return"neutral";case"CANCELLED":return"cancelled";case"SKIPPED":return"skipped";case"TIMED_OUT":return"timed_out";case"ACTION_REQUIRED":return"action_required";default:return null}}function ti4($){let Z=$.state;return{id:null,name:$.context??"",state:Z==="PENDING"||Z==="EXPECTED"?"running":"completed",conclusion:Z==="SUCCESS"?"success":Z==="FAILURE"||Z==="ERROR"?"failure":Z==="PENDING"||Z==="EXPECTED"?null:"neutral",url:$.targetUrl??null,durationMs:null,summary:$.description??null}}function oi4($){let Z=$.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[],Q=[];for(let Y of Z){if(!Y)continue;if(Y.__typename==="StatusContext"){Q.push(ti4(Y));continue}if(Y.__typename!=="CheckRun")continue;let{startedAt:X,completedAt:J}=Y;Q.push({id:Y.databaseId==null?null:String(Y.databaseId),name:Y.name??"",state:mi4(Y.status),conclusion:di4(Y.conclusion),url:Y.detailsUrl??null,durationMs:X&&J?new Date(J).getTime()-new Date(X).getTime():null,summary:Y.summary??null})}return Q}function si4($,Z){let Q=($.reviewThreads?.nodes??[]).filter((K)=>K?.isResolved===!1).length,Y=$.reviewDecision,X=Y==="REVIEW_REQUIRED"||Y==="CHANGES_REQUESTED",J=oi4($),G=$.number??0,W=$.merged===!0;return{number:G,url:$.url??_K(Z,G),title:$.title??"",body:$.body??"",state:W?"merged":$.state==="OPEN"?"open":"closed",draft:$.isDraft===!0,mergedAt:$.mergedAt??null,updatedAt:$.updatedAt??null,base:$.baseRefName??"main",head:$.headRefName??"",headSha:$.headRefOid??"",headRepoPath:$.headRepository?.nameWithOwner??null,author:$.author?.login??"",conflicting:$.state!=="OPEN"?!1:$.mergeable==="CONFLICTING"?!0:$.mergeable==="MERGEABLE"?!1:null,checks:Yp(J),changedFiles:$.changedFiles??null,checkRuns:J,comments:($.comments?.nodes??[]).flatMap((K)=>K?[{id:String(K.databaseId??0),author:K.author?.login??"",body:K.body??"",createdAt:K.createdAt??"",updatedAt:K.updatedAt??K.createdAt??"",url:K.url??""}]:[]),unresolvedConversations:Q,reviewBlocked:X}}function ri4($){let Z=null,Q=-1/0;for(let Y of $??[]){if(!Y?.mergedAt)continue;let X=Date.parse(Y.mergedAt);if(Number.isNaN(X)||X<=Q)continue;Z=Y,Q=X}return Z}function wT$($){return/not allowed on this repository/i.test($)}class YQ1{repo;tokenSource;apiBaseUrl;owner;name;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBaseUrl=yK($.repo.host);let{owner:Z,name:Q}=A5($.repo);this.owner=Z,this.name=Q}async token($){return(await this.tokenSource.get($?{forceRefresh:!0}:void 0))?.token??null}async requireToken(){let $=await this.token();if($)return $;throw new b0({provider:"github",status:401,message:`No usable GitHub token for ${this.repo.path}; reconnect the account`})}get base(){return`${this.apiBaseUrl}/repos/${this.owner}/${this.name}`}async rest($,Z){let Q=await NZ(`${this.base}${$}`,{method:Z.method,body:Z.body,token:await this.requireToken(),operation:Z.operation});if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await Y7(Q,Z.operation);if(Q.status===204)return null;return VQ(Q,Z.operation)}graphql($){return Np({getToken:(Z)=>this.token(Z),missingTokenMessage:`No usable GitHub token for ${this.repo.path}; reconnect the account`,...$})}async read($){let Z=await this.rest(`/pulls/${$}`,{operation:"change_request_read"});return Z?QQ1(Z):null}async readForBranch($){return await this.readDetailed({branch:$})}async readDetailed($){let Z="number"in $,Y=(await this.graphql({query:Z?pi4:ii4,variables:Z?{owner:this.owner,repo:this.name,number:$.number}:{owner:this.owner,repo:this.name,branch:$.branch},label:`change request for ${this.repo.path}`,operation:"change_request_detail"})).repository;if(!Y)throw new b0({provider:"github",status:404,message:`${this.repo.path} is not accessible with this credential`});let X=Z?Y.pullRequest:Y.pullRequests?.nodes?.[0];return X?si4(X,this.repo):null}async listOpen($){return(await this.rest(`/pulls?state=open&sort=updated&direction=desc&per_page=${Math.min($,100)}`,{operation:"change_request_list"})??[]).map(QQ1)}async lastMergedInto($){let Z=await this.graphql({query:ni4,variables:{owner:this.owner,repo:this.name,base:$},label:`last merged into ${$} on ${this.repo.path}`,operation:"change_request_last_merged"});if(!Z.repository)throw new b0({provider:"github",status:404,message:`${this.repo.path} is not accessible with this credential`});let Q=ri4(Z.repository.pullRequests?.nodes);if(!Q)return null;let Y=Q.number??0;return{number:Y,url:Q.url??_K(this.repo,Y),title:Q.title??"",body:Q.body??"",state:"merged",draft:!1,mergedAt:Q.mergedAt??null,updatedAt:Q.mergedAt??null,base:Q.baseRefName??$,head:Q.headRefName??"",headSha:Q.headRefOid??"",headRepoPath:null,author:Q.author?.login??"",conflicting:!1,checks:null,changedFiles:null}}async open($){let Z=await NZ(`${this.base}/pulls`,{method:"POST",token:await this.requireToken(),operation:"change_request_open",body:{title:$.title,body:$.body||void 0,head:$.head,base:$.base}});if(Z.ok)return QQ1(await VQ(Z,"change_request_open"));let Q=await Y7(Z,"change_request_open");if(/already exists|pull request already/i.test(Q.message))throw new dq(Q.message,await this.readForBranch($.head).catch(()=>null));throw Q}async describe($,Z){await this.rest(`/pulls/${$}`,{method:"PATCH",body:{body:Z},operation:"change_request_describe"})}async merge($,Z={}){let Q=hi4[Z.strategy??"any"],Y="";for(let X of Q){let J=await this.attemptMerge($,X,Z);if(J.merged)return J;if(J.reason==="blocked"&&wT$(J.detail)){Y=J.detail;continue}return J}return{merged:!1,reason:"blocked",detail:Y}}async attemptMerge($,Z,Q){let Y;try{Y=await NZ(`${this.base}/pulls/${$}/merge`,{method:"PUT",token:await this.requireToken(),operation:"change_request_merge",body:{merge_method:Z,...Q.commitTitle?{commit_title:Q.commitTitle}:{},...Q.commitMessage?{commit_message:Q.commitMessage}:{}}})}catch(G){return{merged:!1,...ai4(G)}}if(Y.ok)return await Y.body?.cancel().catch(()=>{}),{merged:!0};let X=await Y7(Y,"change_request_merge");if(Y.status===404)return{merged:!1,reason:"not_found",detail:X.message};if(wT$(X.message))return{merged:!1,reason:"blocked",detail:X.message};return{merged:!1,reason:await this.read($).then((G)=>G?.conflicting??null).catch(()=>null)===!0?"conflict":"blocked",detail:X.message}}async readCheckLog($){let Z=await this.rest(`/check-runs/${encodeURIComponent($)}`,{operation:"change_request_check_log"});return Z?.output?.summary??Z?.output?.text??null}async readDeployedUrl($){let Z=await this.rest(`/deployments?sha=${encodeURIComponent($)}&per_page=${ui4}`,{operation:"change_request_deployments"});for(let Q of Z??[]){if(typeof Q.id!=="number")continue;let X=(await this.rest(`/deployments/${Q.id}/statuses?per_page=10`,{operation:"change_request_deployment_statuses"})??[]).find((J)=>J.state==="success"&&typeof J.environment_url==="string"&&J.environment_url.length>0);if(X?.environment_url)return X.environment_url}return null}}function ai4($){let Z=$ instanceof Error?$.message:String($);if($ instanceof b0&&$.isRateLimited)return{reason:"rate_limited",detail:Z};return{reason:"error",detail:Z}}var hi4,ui4=3,ET$=`
|
|
950
|
+
`}function NA$($,Z){let Q=typeof $.metadata==="object"&&$.metadata!==null?$.metadata:{};return{...$,metadata:{...Q,projectFolderName:Z}}}function wd4($,Z){let Q=new Set(Z.map(wP)),Y=O71($);for(let X=1;;X++){let J=X===1?Y:`${Y}-${X}`;if(!Q.has(wP(NA$($,J))))return J}}async function Ed4($,Z,Q,Y){let X=new Set((await $.listDir(aY,Z)).map((W)=>W.path)),J=$A$.map((W)=>`${Z}/${W}`).filter((W)=>!X.has(W)),G=`${Z}/${ZA$}`;await Promise.all([...J.map((W)=>$.mkdir(aY,W,{actor:Y})),X.has(G)?null:$.write(aY,G,jd4(Q),{actor:Y,contentType:"text/markdown",expect:{absent:!0}}).catch((W)=>{if(!(W instanceof Ic))throw W})])}async function BA$($){let{orgFs:Z,organizationId:Q,project:Y,actor:X}=$;if(ri(Y))return null;let J=wd4(Y,$.projects.filter((G)=>G.id!==Y.id));if(!$.homeIsSynced){let G=N5(wP(NA$(Y,J)));await Ed4(Z,G,Y.title?.trim()||"Memory",X),await H40(Q,aY)}return J}async function DA$($,Z,Q,Y){if(!ri(Q))return;await $.delete(aY,wP(Q),{actor:Y}),await H40(Z,aY)}var T71=L(()=>{XG();j71();yU();F40();YY()});import{z as U40}from"zod";async function N40($,Z,Q,Y){if(!$.orgFs||ri(Q))return null;let[X,J]=await Promise.all([$.storage.virtualMcps.list(Z),$.storage.orgRepoSyncs.isSyncVolume(Z,aY)]);return BA$({orgFs:$.orgFs,organizationId:Z,project:Q,projects:X,homeIsSynced:J,actor:Y})}async function q71($,Z,Q,Y,X){await $.storage.virtualMcps.patchMetadata({id:Q,organizationId:Z,set:{projectFolderName:Y},unset:[],by:X})}var R71;var vB0=L(()=>{SF();XG();j71();R0();_F();T71();R71=u({name:"PROJECT_FOLDER_ENSURE",description:"Give a project's folder in the org's home volume its subfolders and memory.md, once. A project whose folder was already given its shape is left as it is.",annotations:{title:"Ensure Project Folder",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:U40.object({id:U40.string().min(1)}),outputSchema:U40.object({path:U40.string().describe("The folder's path inside the home volume"),created:U40.boolean().describe("Whether this call gave the folder its shape")}),handler:async($,Z)=>{n(Z);let Q=Q0(Z);await Z.access.check();let Y=await Z.storage.virtualMcps.findById($.id,Q.id),X=await r7(Z);if(!Y||Y.organization_id!==Q.id||!MQ(X,Y.id))throw Error(`Project not found: ${$.id}`);if(!Z.orgFs)throw Error("Organization filesystem is not configured");let J=S0(Z)??"system",G=await N40(Z,Q.id,Y,J);if(G===null)return{path:wP(Y),created:!1};return await q71(Z,Q.id,Y.id,G,J),{path:wP({...Y,metadata:{...Y.metadata,projectFolderName:G}}),created:!0}}})});function PP($){return $?`${$}/.deco/schema.gen.json`:".deco/schema.gen.json"}function Pd4($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&$.blocksMajor===8}function ai($){if(typeof $!=="string")return!1;try{return Pd4(JSON.parse($))}catch{return!1}}function zP($){return $?.[cq]===8}var M71=8,cq="blocksMajor",LA$="x-deco-main-schema",OA$="main_schema_changed",jA$="hosted_delivery_unconfigured";function ei($){if(!$)return $;let Z={...$};for(let Q of wA$)delete Z[Q];return Z}function EA$($){if(!$)return null;let Z={};for(let Q of[...wA$,"siteSlug"])if($[Q])Z[Q]=$[Q];return Object.keys(Z).length>0?Z:null}var wA$;var bB0=L(()=>{wA$=["sandboxMap",cq]});function xB0($){let Z=$?.trim();if(!Z)return null;try{let Q=new URL(Z);if(Q.protocol!=="http:"&&Q.protocol!=="https:")return null;return Q.href}catch{return null}}function AP($){return xB0($?.previewServerUrl)??xB0($?.productionUrl)}var $p=()=>{};function zd4($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;return!1}catch{return!0}}function fB0($){if(zd4($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function V71($){return/\.(?:tsx?|jsx?|mts|cts|mjs|cjs)$/.test($)}function B40($){try{return decodeURIComponent($)}catch{return $}}function I71($){return fB0($),encodeURIComponent($)}function D40($){let Z=$.map((G)=>({file:G,name:`${G.stem}.json`})).sort((G,W)=>G.name<W.name?-1:G.name>W.name?1:0),Q=[],Y=new Set,X="{",J=!0;for(let{file:G}of Z){let W=G.content.trim();if(W.length===0)continue;let K=B40(G.stem);if(Y.has(K)){Q.push({key:K,stem:G.stem,error:`duplicate block key "${K}" (another file already maps to it)`});continue}try{JSON.parse(W)}catch(H){Q.push({key:K,stem:G.stem,error:H instanceof Error?H.message:String(H)});continue}if(Y.add(K),!J)X+=",";J=!1,X+=`${JSON.stringify(K)}:${W}`}return{decofile:`${X}}`,skipped:Q}}var PA$=()=>{};function zA$($){if(!$||typeof $!=="object"||Array.isArray($))return!1;let Z=$.__resolveType;return typeof Z==="string"&&(Z.endsWith("/secret.ts")||Z.includes("loaders/secret"))}function AA$($){return typeof $==="string"&&Ad4.test($)}function mq($,Z=""){if(Array.isArray($))return $.map((Y,X)=>mq(Y,`${Z}/${X}`));if(!$||typeof $!=="object")return $;let Q=Object.entries($);if(zA$($)){let Y=$.encrypted;if(Y!==void 0&&!AA$(Y))throw new L40(Z||"/");return Object.fromEntries(Q.filter(([X])=>X!=="value"))}return Object.fromEntries(Q.map(([Y,X])=>[Y,mq(X,`${Z}/${Y}`)]))}var Ad4,L40;var k71=L(()=>{Ad4=/^(?:[0-9a-f]{2})*$/i;L40=class L40 extends Error{path;constructor($){super(`Secret at "${$}" is not encrypted. Re-enter it in the Secret field so it is encrypted before saving.`);this.path=$;this.name="PlaintextSecretError"}}});function O40($){return JSON.stringify($,(Z,Q)=>{if(!Q||typeof Q!=="object"||Array.isArray(Q))return Q;let Y={};for(let X of Object.keys(Q).sort())Y[X]=Q[X];return Y})}async function yB0($){let Z=O40(mq($)),Q=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(Z));return Array.from(new Uint8Array(Q),(Y)=>Y.toString(16).padStart(2,"0")).join("")}var C71=L(()=>{k71()});function _71($,Z,Q,Y={}){return qA$("",$,Z,Q,Y)}function qA$($,Z,Q,Y,X){if(Zp(Q,Y)||Zp(Z,Y))return Q;if(Zp(Z,Q))return Y;if(S71(Q)&&S71(Y)){let J=S71(Z)?Z:{},G={},W=[...Object.keys(Q),...Object.keys(Y).filter((K)=>!(K in Q))];for(let K of W){let H=qA$(`${$}/${Td4(K)}`,J[K],Q[K],Y[K],X);if(H!==void 0)G[K]=H}return G}if(Array.isArray(Z)&&Array.isArray(Q)&&Array.isArray(Y)&&Q.length===Z.length&&Y.length===Z.length){let J=[];for(let[G,W]of Z.entries()){let K=!Zp(W,Q[G]),H=!Zp(W,Y[G]);if(K&&H&&!Zp(Q[G],Y[G]))return TA$($,Q,Y,X);J.push(K?Q[G]:Y[G])}return J}return TA$($,Q,Y,X)}function TA$($,Z,Q,Y){return Y.conflicts?.push($),Y.prefer==="theirs"?Q:Z}function Td4($){return $.replaceAll("~","~0").replaceAll("/","~1")}function Zp($,Z){return O40($)===O40(Z)}function S71($){return!!$&&typeof $==="object"&&!Array.isArray($)}var RA$=L(()=>{C71()});var Qp=L(()=>{PA$();k71();C71();RA$()});function _G($){let Z=$?.status;return typeof Z==="number"?Z:null}function gB0($){let Z=$;if(Z?.isRateLimited!==!0)return;return typeof Z.retryAfterMs==="number"?Z.retryAfterMs:null}async function $9($,Z){let Q=await $.getBranch(Z);if(Q)return Q.sha;throw new v0({provider:$.repo.provider,status:404,message:`Branch ${Z} does not exist in ${$.repo.path}`})}var h6;var j40=L(()=>{S5();h6=class h6 extends Error{constructor($,Z){super($,Z);this.name="RepoWriteConflict"}}});function Yp($){if($.length===0)return null;let Z=!1;for(let Q of $){if(Q.state!=="completed"){Z=!0;continue}if(Q.conclusion&&qd4.has(Q.conclusion))return"failing"}return Z?"pending":"passing"}var qd4,dq;var w40=L(()=>{qd4=new Set(["failure","cancelled","timed_out","action_required"]);dq=class dq extends Error{existing;constructor($,Z){super($);this.name="ChangeRequestExists",this.existing=Z}}});function Xp($){return Rd4.test($.trim())}function Q7($,Z,Q){if($===void 0||!Number.isFinite($)||$<=0)return Math.min(Z,Q);return Math.min(Math.floor($),Q)}async function Jp($,Z){let Q=$.headers.get("content-length"),Y=Q===null?Number.NaN:Number(Q),X=Number.isFinite(Y)&&Y>=0?Y:null,J=$.body;if(!J)return{content:"",size:X??0,truncated:!1};let G=J.getReader(),W=[],K=0,H=!1;try{for(;;){let{done:U,value:N}=await G.read();if(U)break;if(!N)continue;let B=Z-K;if(N.byteLength>=B){W.push(N.subarray(0,B)),K+=B,H=N.byteLength>B||!(await G.read()).done;break}W.push(N),K+=N.byteLength}}finally{await G.cancel().catch(()=>{})}return{content:new TextDecoder().decode(Md4(W,K)),size:X??K,truncated:H||X!==null&&X>K}}function Md4($,Z){let Q=new Uint8Array(Z),Y=0;for(let X of $)Q.set(X,Y),Y+=X.byteLength;return Q}function a3($){return $.split("/").map(encodeURIComponent).join("/")}function v71($){let Z=Number($);return Number.isInteger(Z)&&Z>1?Z:1}var TP=400,lL=2000,qP=60000,cL=200000,RP=50,MP=50,r3=100,Rd4;var iq=L(()=>{Rd4=/\[bot\]$|[-_.]bot$|^bot[-_.]|^(dependabot|renovate)$/i});var nN;var b71=L(()=>{nN={name:"Deco Bot",email:"114028756+decobot@users.noreply.github.com"}});import{sql as E40}from"kysely";function MA$($){return $ instanceof Date?$.toISOString():String($)}function P40($){let Z=$.installation_id===null||$.installation_id===void 0?null:Number($.installation_id);return{id:$.id,organizationId:$.organization_id,type:$.type,host:$.host,authKind:$.auth_kind,externalAccountId:$.external_account_id,login:$.login,avatarUrl:$.avatar_url,installationId:Number.isFinite(Z)?Z:null,status:$.status,installationAuthorizedBy:$.installation_authorized_by??null,installationRepositoryIds:$.installation_repository_ids??null,credentialConnectionId:$.credential_connection_id,connectedBy:$.connected_by_name?{name:$.connected_by_name}:null,createdAt:MA$($.created_at),updatedAt:MA$($.updated_at)}}class pq{db;constructor($){this.db=$}async upsert($){let Z=new Date,Q=await this.db.insertInto("git_provider_accounts").values({organization_id:$.organizationId,type:$.type,host:$.host.toLowerCase(),auth_kind:$.authKind,external_account_id:$.externalAccountId,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",created_by:$.createdBy??null}).onConflict((Y)=>Y.columns(["organization_id","host","external_account_id"]).doUpdateSet({type:$.type,auth_kind:$.authKind,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",updated_at:E40`GREATEST(${Z}, git_provider_accounts.updated_at + interval '1 millisecond')`})).returningAll().executeTakeFirstOrThrow();return P40(Q)}async get($,Z){let Q=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?P40(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).executeTakeFirst();return Z?P40(Z):null}async listByOrg($){return(await this.db.selectFrom("git_provider_accounts").leftJoin("user as connector","connector.id","git_provider_accounts.created_by").selectAll("git_provider_accounts").select("connector.name as connected_by_name").where("git_provider_accounts.organization_id","=",$).orderBy("git_provider_accounts.created_at","asc").execute()).map(P40)}async findByExternalId($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("organization_id","=",$.organizationId).where("host","=",$.host.toLowerCase()).where("external_account_id","=",$.externalAccountId).executeTakeFirst();return Z?P40(Z):null}async setStatus($,Z,Q){await this.db.updateTable("git_provider_accounts").set({status:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).execute()}async grantRepository($,Z,Q){let Y=E40`jsonb_build_array(${Q}::bigint)`;await this.db.updateTable("git_provider_accounts").set({installation_repository_ids:E40`installation_repository_ids || ${Y}`,updated_at:E40`GREATEST(${new Date}, updated_at + interval '1 millisecond')`}).where("id","=",$).where("organization_id","=",Z).where("installation_repository_ids","is not",null).where(E40`NOT installation_repository_ids @> ${Y}`).execute()}async delete($,Z){return(await this.db.deleteFrom("git_provider_accounts").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}}var hB0=()=>{};class z40{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("git_provider_account_credentials").selectAll().where("account_id","=",$).executeTakeFirst();if(!Z)return null;return Vd4(this.vault,Z)}async upsert($){let Z=new Date,Q=await this.vault.encrypt($.accessToken),Y=$.refreshToken?await this.vault.encrypt($.refreshToken):null,X=$.clientSecret?await this.vault.encrypt($.clientSecret):null;await this.db.insertInto("git_provider_account_credentials").values({account_id:$.connectionId,access_token:Q,refresh_token:Y,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:X,token_endpoint:$.tokenEndpoint}).onConflict((J)=>J.column("account_id").doUpdateSet({access_token:Q,refresh_token:Y,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:X,token_endpoint:$.tokenEndpoint,updated_at:Z})).execute()}async delete($){await this.db.deleteFrom("git_provider_account_credentials").where("account_id","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let Y=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(Y))return!0;return Y-Z<Date.now()}}async function Vd4($,Z){try{let Q=await $.decrypt(Z.access_token),Y=Z.refresh_token?await $.decrypt(Z.refresh_token):null,X=Z.client_secret?await $.decrypt(Z.client_secret):null;return{id:Z.account_id,connectionId:Z.account_id,accessToken:Q,refreshToken:Y,scope:Z.scope,expiresAt:Z.expires_at,createdAt:Z.created_at,updatedAt:Z.updated_at,clientId:Z.client_id,clientSecret:X,tokenEndpoint:Z.token_endpoint}}catch(Q){return console.warn("[GitProviderAccountCredential] failed to decrypt credential row",{accountId:Z.account_id,message:Q instanceof Error?Q.message:String(Q)}),null}}import{sql as Id4}from"kysely";function VA$($){return $ instanceof Date?$.toISOString():String($)}function nq($){return{id:$.id,organizationId:$.organization_id,accountId:$.account_id,provider:$.provider,host:$.host,path:$.path,externalId:$.external_id,defaultBranch:$.default_branch,webUrl:$.web_url,visibility:$.visibility,sandboxImage:lN.catch("default").parse($.sandbox_image),legacyConnectionId:$.legacy_connection_id,createdAt:VA$($.created_at),updatedAt:VA$($.updated_at)}}function mL($){return{provider:$.provider,host:$.host,path:$.path}}class A40{db;constructor($){this.db=$}async upsert($){let Z=$.ref.host.toLowerCase(),Q=await this.findByRef($.organizationId,$.ref);if(Q){let X=await this.db.updateTable("repositories").set({path:$.ref.path,provider:$.ref.provider,web_url:CG({...$.ref,host:Z}),...$.accountId!==void 0?{account_id:$.accountId}:{},...$.externalId!==void 0?{external_id:$.externalId}:{},...$.defaultBranch!==void 0?{default_branch:$.defaultBranch}:{},...$.visibility!==void 0?{visibility:$.visibility}:{},...$.sandboxImage!==void 0?{sandbox_image:$.sandboxImage}:{},...$.legacyConnectionId!==void 0?{legacy_connection_id:$.legacyConnectionId}:{},updated_at:new Date}).where("id","=",Q.id).where("organization_id","=",$.organizationId).returningAll().executeTakeFirstOrThrow();return nq(X)}let Y=await this.db.insertInto("repositories").values({organization_id:$.organizationId,account_id:$.accountId??null,provider:$.ref.provider,host:Z,path:$.ref.path,external_id:$.externalId??null,default_branch:$.defaultBranch??null,web_url:CG({...$.ref,host:Z}),visibility:$.visibility??null,sandbox_image:$.sandboxImage??null,legacy_connection_id:$.legacyConnectionId??null,created_by:$.createdBy??null}).returningAll().executeTakeFirstOrThrow();return nq(Y)}async get($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?nq(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("repositories").selectAll().where("id","=",$).executeTakeFirst();return Z?nq(Z):null}async findByRef($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("organization_id","=",$).where("host","=",Z.host.toLowerCase()).where(Id4`lower(path)`,"=",Z.path.toLowerCase()).executeTakeFirst();return Q?nq(Q):null}async listByOrg($,Z){let Q=this.db.selectFrom("repositories").selectAll().where("organization_id","=",$);if(Z?.accountId)Q=Q.where("account_id","=",Z.accountId);return(await Q.orderBy("path","asc").execute()).map(nq)}async setSandboxImage($,Z,Q){let Y=await this.db.updateTable("repositories").set({sandbox_image:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).returningAll().executeTakeFirst();return Y?nq(Y):null}async delete($,Z){try{return(await this.db.deleteFrom("repositories").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}catch(Q){if(Q instanceof Error&&"constraint"in Q&&Q.constraint==="org_repo_sync_source_present")throw Error("Remove this repository's sync configurations before unlinking it");throw Q}}}var Gp=L(()=>{t4()});function kA$($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kd4($,Z){let{owner:Q}=A5(Z),Y=kA$(Z.host),X=new RegExp(`(?:https?://(?:[^@\\s/]*@)?${Y}/|git@${Y}:)${kA$(Q)}/([A-Za-z0-9._-]+)`,"gi");return[...$.matchAll(X)].flatMap((J)=>J[1]?.replace(/\.git$/i,"")||[])}async function CA$($,Z){let{owner:Q,name:Y}=A5(Z),X=new Set,J=[Z.path];while(J.length>0&&X.size<IA$){let G=J.shift();if(!G)break;let W=await $(G,"pubspec.yaml").catch(()=>null);if(!W)continue;for(let K of kd4(W,Z)){if(K===Y||X.has(K))continue;if(X.size>=IA$)break;X.add(K),J.push(`${Q}/${K}`)}}return[...X]}var IA$=20;var SA$=L(()=>{t4()});function f71($){if(!$)return!1;let Z=T40.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function _A$($){let Z={...$};for(let Q of T40)Z[Q]="read";return Z}async function vA$($,Z){let Q={...Z};for(;;){let Y=await $(Q);if(!Y.isError)return{result:Y,grantedPermissions:Q};let X=Y.content?.find((K)=>K.type==="text")?.text,J=T40.find((K)=>(K in Q));if(!J||!f71(X))return{result:Y,grantedPermissions:Q};let{[J]:G,...W}=Q;Q=W}}function Cd4($){if(!$||typeof $!=="object"||Array.isArray($))return uB0;let Z=$;if(Object.values(Z).some((Q)=>typeof Q!=="string"))return uB0;return Z}function Sd4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function UZ($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let Q=Sd4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:Q,owner:Z.owner,repo:Z.repo,permissions:Cd4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function VP($){return $.metadata?.orgShared===!0}function bA$($){let Z=new Set,Q=[];for(let Y of $??[]){if(Y.status!=="active")continue;let X=UZ(Y);if(X===null)continue;let J=x71(X.owner,X.repo);if(Z.has(J))continue;Z.add(J),Q.push(`${X.owner}/${X.repo}`)}return Q}function lB0($,Z,Q){let Y=x71(Z,Q),X=($??[]).filter((J)=>{if(J.status&&J.status!=="active")return!1;let G=UZ(J);return G!==null&&x71(G.owner,G.repo)===Y});return X.find(VP)??X[0]??null}var uB0,T40,x71=($,Z)=>`${$}/${Z}`.toLowerCase();var vG=L(()=>{uB0={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read",statuses:"read"},T40=["statuses","deployments","checks"]});function fA$($){return Bun.hash($).toString(36)}function _d4($){for(let[Z,Q]of IP)if(Q.expiresAt<=$)IP.delete(Z);while(IP.size>=512){let Z=IP.keys().next();if(Z.done)break;IP.delete(Z.value)}}function g71($,Z,Q,Y=Date.now()){_d4(Y),IP.set(fA$($),{owner:Z,expiresAt:Q})}function Wp($,Z=Date.now()){let Q=fA$($),Y=IP.get(Q);if(!Y)return"unknown";if(Y.expiresAt<=Z)return IP.delete(Q),"unknown";return Y.owner}var xA$="app",y71="user",IP;var Kp=L(()=>{IP=new Map});function kP($=process.env){let Z=$.GITHUB_APP_ID?.trim(),Q=$.GITHUB_APP_PRIVATE_KEY?.trim(),Y=$.GITHUB_APP_CLIENT_ID?.trim(),X=$.GITHUB_APP_CLIENT_SECRET?.trim(),J=$.GITHUB_APP_SLUG?.trim();if(!Z||!Q||!Y||!X||!J)return null;return{appId:Z,privateKeyPem:Q.replace(/\\n/g,`
|
|
951
|
+
`),clientId:Y,clientSecret:X,slug:J}}function tq($,Z){let Q=$.get(Z);if(Q===null)return null;let Y=Number(Q);return Number.isFinite(Y)?Y:null}function vd4($){return{limit:tq($,"x-ratelimit-limit"),remaining:tq($,"x-ratelimit-remaining"),reset:tq($,"x-ratelimit-reset"),used:tq($,"x-ratelimit-used"),resource:$.get("x-ratelimit-resource")}}function CP($){if($.status===429)return!0;if($.status!==403)return!1;if($.headers.get("retry-after")!==null)return!0;return tq($.headers,"x-ratelimit-remaining")===0}function SP($,Z=Date.now()){let Q=tq($,"retry-after");if(Q!==null)return Math.max(0,Q*1000);let Y=tq($,"x-ratelimit-reset");if(Y!==null)return Math.max(0,Y*1000-Z);return null}function _P($,Z){let Q=vd4($),Y=Q.resource??"unknown",X={installation:Z.installation,resource:Y},J={...X,lane:Z.lane,operation:Z.operation};if(hA$??=G$.createCounter("github_api_calls",{description:"Calls to the GitHub API, by transport and operation",unit:"{calls}"}),hA$.add(1,J),Q.remaining!==null)yA$??=G$.createGauge("github_rate_limit_remaining",{description:"Requests (REST) or points (GraphQL) left in the window",unit:"{requests}"}),yA$.record(Q.remaining,X);if(Q.used!==null)gA$??=G$.createGauge("github_rate_limit_used",{description:"Requests (REST) or points (GraphQL) spent in the window",unit:"{requests}"}),gA$.record(Q.used,X);return Q}function vP($){uA$??=G$.createCounter("github_rate_limited",{description:"GitHub responses refused for rate-limit reasons",unit:"{responses}"}),uA$.add(1,$)}var yA$=null,gA$=null,hA$=null,uA$=null;var q40=L(()=>{b6()});function yK($){return process.env.GITHUB_API_BASE_URL??fL("github",$)}async function NZ($,Z){let Q={Authorization:`Bearer ${Z.token}`,Accept:Z.accept??xd4,"X-GitHub-Api-Version":bd4};if(Z.body!==void 0)Q["Content-Type"]="application/json";let Y;try{Y=await fetch($,{method:Z.method??"GET",headers:Q,body:Z.body===void 0?void 0:JSON.stringify(Z.body),signal:AbortSignal.timeout(Z.timeoutMs??h71)})}catch(J){throw new v0({provider:"github",status:0,message:`GitHub ${Z.operation} failed: ${J instanceof Error?J.message:String(J)}`,cause:J})}let X=Wp(Z.token);if(_P(Y.headers,{lane:"rest",operation:Z.operation,installation:X}),CP(Y)){await Y.body?.cancel().catch(()=>{});let J=Y.headers.get("retry-after")!==null?"secondary":"primary";vP({lane:"rest",operation:Z.operation,installation:X,kind:J});let G=SP(Y.headers);throw new v0({provider:"github",status:Y.status,retryAfterMs:G,message:`GitHub ${J} rate limit reached${G===null?"":`; retry in ${Math.ceil(G/1000)}s`}`})}return Y}function R40($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"&&"message"in Z&&typeof Z.message==="string"&&Z.message.length>0){let Q="errors"in Z&&Array.isArray(Z.errors)?Z.errors.flatMap((Y)=>Y!==null&&typeof Y==="object"&&("message"in Y)&&typeof Y.message==="string"&&Y.message.length>0?[Y.message]:[]):[];return Q.length>0?`${Z.message}: ${Q.join("; ")}`:Z.message}}catch{}return $.slice(0,300)}function M40($,Z,Q){let Y=R40(Z);return new v0({provider:"github",status:$,message:`GitHub ${Q} failed: ${$}${Y?` ${Y}`:""}`})}async function Y7($,Z){let Q=await $.text().catch(()=>"");return M40($.status,Q,Z)}async function VQ($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new v0({provider:"github",status:$.status,message:`GitHub ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}var bd4="2022-11-28",xd4="application/vnd.github+json",h71=15000;var bP=L(()=>{t4();q40();Kp();S5()});function dd4($){return $==="public"||$==="private"||$==="internal"}function u71($,Z){let Q="public";if($.private)Q="private";else if($.visibility&&dd4($.visibility))Q=$.visibility;return{ref:{provider:"github",host:Z,path:$.full_name},externalId:String($.id),defaultBranch:$.default_branch??null,webUrl:$.html_url,visibility:Q,description:$.description??null,updatedAt:$.pushed_at??$.updated_at??null}}function c71($,Z){let Q=Z?.trim().toLowerCase();if(!Q)return!0;return $.toLowerCase().includes(Q)}function id4($){return{name:$.name||$.login,email:$.email||`${$.login}@users.noreply.github.com`}}function pd4($){return $.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function nd4($,Z){let{owner:Q,name:Y}=A5($),X=`/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}/tarball`;return Z?`${X}/${encodeURIComponent(Z)}`:X}function cA$($,Z,Q){return new v0({provider:"github",status:Z,message:Q?`Studio cannot create repositories in ${$}. The GitHub App needs the Administration permission there; ask an owner of ${$} to accept it.`:`The connected GitHub account cannot create repositories in ${$}.`})}class sq{kind="github";host;apiBaseUrl;options;grantedIds=new Map;constructor($){this.options=$,this.host=$.host.toLowerCase(),this.apiBaseUrl=yK($.host)}async tokenForRepo($,Z={}){let Q=this.options;if("appAuth"in Q){let Y=Q.repositoryIds??null,X=Z.alsoRepositories??[],J=await Q.appAuth.installationToken(Q.installationId,{...Y?{repositoryIds:[await this.grantedRepositoryId($,Y),...await this.grantedSiblingIds($,X,Y)]}:{repositories:[TZ1($),...X]},permissions:uB0,bufferMs:Z.bufferMs,forceRefresh:Z.forceRefresh});return{token:J.token,kind:"installation",expiresAt:J.expiresAt}}return this.sourceToken(Q.tokenSource,Z)}async accountToken($={}){let Z=this.options;if("appAuth"in Z){let Q=await Z.appAuth.installationToken(Z.installationId,{...Z.repositoryIds?{repositoryIds:Z.repositoryIds}:{},permissions:fd4,bufferMs:$.bufferMs,forceRefresh:$.forceRefresh});return{token:Q.token,kind:"installation",expiresAt:Q.expiresAt}}return this.sourceToken(Z.tokenSource,$)}async grantedRepositoryId($,Z){let Q=$.path.toLowerCase(),Y=this.grantedIds.get(Q);if(Y!==void 0)return Y;let X=Number((await this.getRepo($))?.externalId);if(!Number.isSafeInteger(X)||!Z.includes(X)){let{owner:J}=A5($);throw new v0({provider:"github",status:403,message:`Studio's GitHub App is installed on ${J} without access to ${$.path}. Someone who administers ${J} on GitHub has to add it to the app's repository access, then reconnect the account in Studio.`})}return this.grantedIds.set(Q,X),X}async grantedSiblingIds($,Z,Q){let{owner:Y}=A5($),X=[];for(let J of Z){let G=await this.getRepo({...$,path:`${Y}/${J}`}).catch(()=>null),W=Number(G?.externalId);if(Number.isSafeInteger(W)&&Q.includes(W))X.push(W)}return X}async createRepoFromTemplate($){let{template:Q,owner:Y,name:X}=$,J=await this.creationToken(Y),G=await NZ(`${this.apiBaseUrl}/repos/${encodeURIComponent(Q.owner)}/${encodeURIComponent(Q.name)}/generate`,{method:"POST",token:J,operation:"create_repo_from_template",body:{owner:Y,name:X,private:$.private,include_all_branches:!1}});if(!G.ok){let K=await G.text().catch(()=>"");if(G.status===422&&/already exists/i.test(R40(K)))throw new v0({provider:"github",status:409,message:`${Y}/${X} already exists on GitHub. Choose another name.`});if(G.status===403||G.status===404)throw cA$(Y,G.status,"appAuth"in this.options);throw M40(G.status,K,"create_repo_from_template")}let W=u71(await VQ(G,"create_repo_from_template"),this.host);return await this.waitForTemplateCopy(W.ref,J).catch(()=>{}),W}async creationToken($){let Z=this.options;if(!("appAuth"in Z))return(await this.sourceToken(Z.tokenSource,{})).token;if((Z.repositoryIds?.length??0)>=oq)throw new v0({provider:"github",status:409,message:`This GitHub account already grants Studio ${oq} repositories, the most one account can. Create the site with another account.`});try{return(await Z.appAuth.installationToken(Z.installationId,{permissions:yd4})).token}catch(Q){if(Q instanceof v0&&Q.status===422)throw cA$($,403,!0);throw Q}}async waitForTemplateCopy($,Z){let{owner:Q,name:Y}=A5($),X=`${this.apiBaseUrl}/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}/commits?per_page=1`;await e$(async()=>{let J=await NZ(X,{token:Z,operation:"wait_template_copy"});if(await J.body?.cancel().catch(()=>{}),!J.ok)throw new l71},{maxAttempts:gd4,minTimeout:hd4,maxTimeout:ud4,isRetriable:(J)=>J instanceof l71})}async sourceToken($,Z){let Q=await $.get(Z);if(!Q)throw new v0({provider:"github",status:401,message:`No usable GitHub token for ${this.host}; reconnect the account`});return Q}async getRepo($){let{owner:Q,name:Y}=A5($),X=await this.request(`/repos/${encodeURIComponent(Q)}/${encodeURIComponent(Y)}`,{operation:"get_repo"});if(X.status===404)return await X.body?.cancel().catch(()=>{}),null;if(!X.ok)throw await Y7(X,"get_repo");return u71(await VQ(X,"get_repo"),this.host)}async listRepos($={}){let Z=Math.max(1,Math.floor($.page??1)),Q=Math.min(cd4,Math.max(1,Math.floor($.perPage??ld4))),Y=`per_page=${Q}&page=${Z}`,X;if("appAuth"in this.options){let G=await this.request(`/installation/repositories?${Y}`,{operation:"list_installation_repositories"});if(!G.ok)throw await Y7(G,"list_installation_repositories");let W=await VQ(G,"list_installation_repositories");X=Array.isArray(W.repositories)?W.repositories:[]}else{let G=await this.request(`/user/repos?affiliation=owner,collaborator,organization_member&sort=pushed&${Y}`,{operation:"list_user_repositories"});if(!G.ok)throw await Y7(G,"list_user_repositories");let W=await VQ(G,"list_user_repositories");X=Array.isArray(W)?W:[]}return{repositories:X.filter((J)=>c71(J.full_name,$.query)).map((J)=>u71(J,this.host)),hasMore:X.length===Q}}async readFile($,Z,Q){let{owner:X,name:J}=A5($),G=Q?`?ref=${encodeURIComponent(Q)}`:"",W=await this.request(`/repos/${encodeURIComponent(X)}/${encodeURIComponent(J)}/contents/${pd4(Z)}${G}`,{operation:"read_file",accept:md4});if(W.status===404)return await W.body?.cancel().catch(()=>{}),null;if(!W.ok)throw await Y7(W,"read_file");return W.text()}async archiveTarball($,Z){let Y=`${this.apiBaseUrl}${nd4($,Z)}`,X=await this.tokenForRepo($),J=await NZ(Y,{operation:"archive_tarball",token:X.token,timeoutMs:lA$});if(J.status===401){await J.body?.cancel().catch(()=>{});let G=await this.tokenForRepo($,{forceRefresh:!0});J=await NZ(Y,{operation:"archive_tarball",token:G.token,timeoutMs:lA$})}if(J.status===404)return await J.body?.cancel().catch(()=>{}),null;if(!J.ok)throw await Y7(J,"archive_tarball");return J.body}async identity(){if("appAuth"in this.options)return null;let $="get_user",Z=await this.request("/user",{operation:$});if(!Z.ok)throw await Y7(Z,$);return id4(await VQ(Z,$))}async request($,Z){let Q=`${this.apiBaseUrl}${$}`,Y=await this.accountToken(),X=await NZ(Q,{...Z,token:Y.token});if(X.status!==401)return X;await X.body?.cancel().catch(()=>{});let J=await this.accountToken({forceRefresh:!0});return NZ(Q,{...Z,token:J.token})}}var fd4,yd4,gd4=8,hd4=500,ud4=4000,l71,ld4=30,cd4=100,md4="application/vnd.github.raw+json",lA$=60000;var cB0=L(()=>{t4();vG();p$();S5();V40();bP();fd4={metadata:"read",contents:"read"},yd4={administration:"write",contents:"read",metadata:"read"};l71=class l71 extends Error{}});import{z as xP}from"zod";function mB0($){return $.repositories.filter((Z)=>Z.permissions?.admin===!0).map((Z)=>({id:Z.id,name:Z.full_name}))}function dB0($){if($.total_count===void 0)return-1;return Math.max(0,Math.ceil($.total_count/rq)-1)}function dA$($){return dB0($)===0&&mB0($).length===0}function iA$($,Z,Q){let Y=$.filter((J)=>c71(J.name,Q)),X=(Z-1)*rq;return{repositories:Y.slice(X,X+rq),hasMore:Y.length>X+rq}}function pA$($,Z){let Q=new Set($.map((Y)=>Y.id));return Z.every((Y)=>Q.has(Y))}function nA$($,Z,Q){if(Z!==null){let J=new Set(Z);return $.filter((G)=>J.has(G.id)).map((G)=>G.id)}let Y=new Set(Q.flatMap((J)=>J.externalId?[J.externalId]:[])),X=new Set(Q.filter((J)=>!J.externalId).map((J)=>J.path.toLowerCase()));return $.filter((J)=>Y.has(String(J.id))||X.has(J.name.toLowerCase())).map((J)=>J.id)}class m71{ttlMs;entries=new Map;constructor($){this.ttlMs=$}installations($){return this.live($)?.installations}repositories($,Z){return this.live($)?.repositories.get(Z)}rememberInstallations($,Z){this.entry($).installations=Z}rememberRepositories($,Z,Q){this.entry($).repositories.set(Z,Q)}forget($){this.entries.delete($)}live($){let Z=this.entries.get($);if(!Z)return;if(Z.expiresAt<=Date.now()){this.entries.delete($);return}return Z}entry($){let Z=Date.now();for(let[Y,X]of this.entries)if(X.expiresAt<=Z)this.entries.delete(Y);let Q=this.entries.get($);if(!Q)Q={expiresAt:Z+this.ttlMs,repositories:new Map},this.entries.set($,Q);return Q}}var rq=100,mA$;var d71=L(()=>{cB0();mA$=xP.object({total_count:xP.number().int().nonnegative().optional(),repositories:xP.array(xP.object({id:xP.number().int().positive().safe(),full_name:xP.string().min(1),permissions:xP.object({admin:xP.boolean().optional()}).optional()}))})});import{createPrivateKey as sA$,sign as td4}from"crypto";import{z as tA$}from"zod";function i71($){return Buffer.from($).toString("base64url")}function $i4($){let Z=i71(JSON.stringify({alg:"RS256",typ:"JWT"})),Q=i71(JSON.stringify({iat:$.nowSeconds-sd4,exp:$.nowSeconds+n71,iss:$.appId})),Y=`${Z}.${Q}`,X=td4("RSA-SHA256",Buffer.from(Y),sA$($.privateKeyPem));return`${Y}.${i71(X)}`}function Zi4($){let Z=T40.find((X)=>(X in $));if(!Z)return null;let{[Z]:Q,...Y}=$;return Y}function Qi4($){let{repositories:Z,repositoryIds:Q}=$;if(Z&&Q)return"A GitHub installation token is scoped by repository name or by id, never both";let Y=Z?.length??Q?.length;if(Y!==void 0&&(Y===0||Y>oq))return`A GitHub installation token covers 1 to ${oq} repositories, not ${Y}`;if(Q?.some((X)=>!Number.isSafeInteger(X)||X<=0))return"A GitHub repository id must be a positive integer";return null}function Yi4($,Z){let Q=(Z.repositories??[]).map((J)=>J.toLowerCase()).sort(),Y=Object.entries(Z.permissions??{}).map(([J,G])=>`${J}=${G}`).sort(),X=Z.repositoryIds?`ids:${[...Z.repositoryIds].sort((J,G)=>J-G).join(",")}`:"all";return`${$}|${Q.join(",")}|${X}|${Y.join(",")}`}function Xi4($,Z){for(let[Q,Y]of $)if(Y.expiresAt.getTime()<=Z)$.delete(Q)}function oA$($){let Z=$.account;if(typeof $.id!=="number"||!Z||typeof Z.id!=="number"||typeof Z.login!=="string")return null;return{installationId:$.id,externalAccountId:String(Z.id),login:Z.login,avatarUrl:typeof Z.avatar_url==="string"?Z.avatar_url:null,accountType:typeof Z.type==="string"?Z.type:"User",htmlUrl:typeof $.html_url==="string"?$.html_url:null}}function Ji4($){if(!$||typeof $!=="object"||Array.isArray($))return null;let Z={};for(let[Q,Y]of Object.entries($))if(typeof Y==="string")Z[Q]=Y;return Z}class rA${appId;privateKeyPem;apiBaseUrl;jwt=null;cache=new Map;inFlight=new Map;flowAccess=new m71(ed4);constructor($,Z){this.appId=$.appId,this.privateKeyPem=$.privateKeyPem,this.apiBaseUrl=(Z?.apiBaseUrl??od4).replace(/\/+$/,"")}appJwt(){let $=Math.floor(Date.now()/1000);if(this.jwt&&this.jwt.exp-$>rd4)return this.jwt.value;let Z=$i4({appId:this.appId,privateKeyPem:this.privateKeyPem,nowSeconds:$});return this.jwt={value:Z,exp:$+n71},g71(Z,xA$,($+n71)*1000),Z}installationToken($,Z={}){let Q=Qi4(Z);if(Q)return Promise.reject(new v0({provider:"github",status:403,message:Q}));let Y=Yi4($,Z),X=Z.bufferMs??ad4;if(!Z.forceRefresh){let W=this.cache.get(Y);if(W&&W.expiresAt.getTime()-Date.now()>X)return Promise.resolve(W)}let J=this.inFlight.get(Y);if(J)return J;let G=this.mint($,Z).then((W)=>{return this.cache.set(Y,W),g71(W.token,String($),W.expiresAt.getTime()),Xi4(this.cache,Date.now()),W}).finally(()=>{this.inFlight.delete(Y)});return this.inFlight.set(Y,G),G}async mint($,Z){let Y=`${this.apiBaseUrl}/app/installations/${$}/access_tokens`,X=Z.repositories&&Z.repositories.length>0?Z.repositories:void 0,J=Z.permissions?{...Z.permissions}:void 0;for(;;){let G=await NZ(Y,{method:"POST",token:this.appJwt(),body:{...X&&{repositories:X},...Z.repositoryIds&&{repository_ids:Z.repositoryIds},...J&&{permissions:J}},operation:"installation_access_token"});if(G.ok){let W=await VQ(G,"installation_access_token");if(typeof W.token!=="string"||W.token.length===0||typeof W.expires_at!=="string"||W.expires_at.length===0)throw new v0({provider:"github",status:G.status,message:"GitHub installation_access_token returned no token"});let K=new Date(W.expires_at);if(isNaN(K.getTime()))throw new v0({provider:"github",status:G.status,message:"GitHub installation_access_token returned invalid token expiration"});return{token:W.token,expiresAt:K,permissions:Ji4(W.permissions)??J??{}}}if(G.status===422&&J){let W=await G.text().catch(()=>""),K=Zi4(J);if(K&&f71(R40(W))){J=K;continue}throw M40(G.status,W,"installation_access_token")}throw await Y7(G,"installation_access_token")}}async getInstallation($){let Q=await NZ(`${this.apiBaseUrl}/app/installations/${$}`,{token:this.appJwt(),operation:"get_installation"});if(Q.status===404)return null;if(!Q.ok)throw await Y7(Q,"get_installation");let Y=oA$(await VQ(Q,"get_installation"));if(!Y)throw new v0({provider:"github",status:Q.status,message:"GitHub get_installation returned an installation without a user or organization account"});return Y}async connectingUserId($){let Z=tA$.object({id:tA$.number().int().positive().safe()}).parse(await this.userGet("/user",$,"get_connecting_user"));return String(Z.id)}async listConnectableInstallations($,Z){this.flowAccess.forget($);let Q=await this.listUserInstallations(Z);return this.flowAccess.rememberInstallations($,Q),(await k5(Q,4,async(X)=>{let J=await this.repositoryPage(Z,X.installationId,1);if(dB0(J)===0)this.flowAccess.rememberRepositories($,X.installationId,mB0(J));return dA$(J)?null:X})).filter((X)=>X!==null)}async connectableInstallation($,Z,Q,Y={}){let X=Y.fresh?void 0:this.flowAccess.installations($);if(!X)X=await this.listUserInstallations(Z),this.flowAccess.rememberInstallations($,X);return X.find((J)=>J.installationId===Q)??null}async delegableRepositories($,Z,Q,Y={}){if(!Y.fresh){let K=this.flowAccess.repositories($,Q);if(K)return K}let X=await this.repositoryPage(Z,Q,1),J=[X],G=dB0(X);if(G>0)J.push(...await k5(Array.from({length:G},(K,H)=>H+2),4,(K)=>this.repositoryPage(Z,Q,K)));else if(G<0)for(let K=2;J[J.length-1].repositories.length===rq;K++)J.push(await this.repositoryPage(Z,Q,K));let W=J.flatMap(mB0);return this.flowAccess.rememberRepositories($,Q,W),W}forgetFlow($){this.flowAccess.forget($)}async repositoryPage($,Z,Q){return mA$.parse(await this.userGet(`/user/installations/${Z}/repositories?per_page=${rq}&page=${Q}`,$,"list_connecting_user_repositories"))}async userGet($,Z,Q){let Y=await NZ(`${this.apiBaseUrl}${$}`,{token:Z,operation:Q});if(!Y.ok)throw await Y7(Y,Q);return VQ(Y,Q)}async listUserInstallations($){let Y=[];for(let X=1;;X++){let J=await NZ(`${this.apiBaseUrl}/user/installations?per_page=100&page=${X}`,{token:$,operation:"list_user_installations"});if(!J.ok)throw await Y7(J,"list_user_installations");let G=await VQ(J,"list_user_installations"),W=Array.isArray(G.installations)?G.installations:[];for(let K of W){let H=oA$(K);if(H)Y.push(H)}if(W.length<100)return Y}}}function bF(){if(p71===void 0){let $=kP();p71=$&&Gi4($)?new rA$($,{apiBaseUrl:yK("github.com")}):null}return p71}function Gi4($){try{return sA$($.privateKeyPem),!0}catch(Z){return console.error("[git-providers] GITHUB_APP_PRIVATE_KEY is not a usable private key \u2014 "+"the GitHub App stays disabled and orgs keep their existing connections. Check that newlines survived the secret store.",Z),!1}}function aA$(){let $=kP()!==null&&bF()!==null;return{configured:$,hosts:$?[Wi4]:[]}}var od4="https://api.github.com",sd4=60,n71=540,rd4=60,ad4=300000,ed4=600000,oq=500,p71,Wi4="github.com";var V40=L(()=>{p$();vG();Kp();S5();d71();bP()});import{execFile as Ki4}from"child_process";import{promisify as Hi4}from"util";import{z as iB0}from"zod";function aq(){return B0().localMode}function I40($){return new v0({provider:"github",status:403,message:$})}async function eA$($){if(!aq())throw I40("GitHub CLI connections are only available in local mode.");let Z={...process.env,GH_PROMPT_DISABLED:"1"};delete Z.GH_TOKEN,delete Z.GITHUB_TOKEN,delete Z.GH_DEBUG,delete Z.DEBUG;try{let{stdout:Q}=await Fi4("gh",["auth","token","--hostname",t71,...$?["--user",$]:[]],{env:Z,timeout:1e4,maxBuffer:16384}),Y=Q.trim();if(!Y||/\s/.test(Y))throw Error("Invalid CLI token");return Y}catch{throw I40("Could not read your GitHub CLI login. Install gh and run gh auth login --hostname github.com, then connect again.")}}async function $T$($){try{let Z=await NZ(`${yK(t71)}/user`,{token:$,operation:"cli_current_user"});if(!Z.ok)throw Error("GitHub rejected the CLI token");return Ui4.parse(await Z.json())}catch{throw I40("Could not verify your GitHub CLI account. Run gh auth login --hostname github.com and connect again.")}}async function ZT$(){let $=await $T$(await eA$());return{externalAccountId:`cli:user:${$.id}`,login:$.login,avatarUrl:$.avatar_url??null}}function QT$($){return{kind:"token",async get(){if($.host!==t71)throw I40("Unsupported GitHub CLI host.");let Z=await eA$($.login);if(`cli:user:${(await $T$(Z)).id}`!==$.externalAccountId)throw I40("Your GitHub CLI account changed. Connect it again.");return{token:Z,kind:"token",expiresAt:null}}}}var Fi4,t71="github.com",Ui4;var pB0=L(()=>{u1();S5();bP();Fi4=Hi4(Ki4),Ui4=iB0.object({id:iB0.number().int().positive().safe(),login:iB0.string().min(1),avatar_url:iB0.string().url().nullable().optional()})});function Hp($){return fL("gitlab",$)}function Bi4($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"){let Q=Z,Y=[...dD(Q.message),...dD(Q.error),...dD(Q.error_description)];if(Y.length>0)return Y.join("; ")}}catch{}return $.slice(0,300)}async function e3($){let Z=await $.text().catch(()=>""),Q=Z?Bi4(Z):$.statusText;return new v0({provider:"gitlab",status:$.status,message:`GitLab API ${$.status}: ${Q}`,retryAfterMs:$.status===429?YT$($.headers):null})}async function gK($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new v0({provider:"gitlab",status:$.status,message:`GitLab ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}async function dL($,Z,Q={}){let Y={Authorization:`Bearer ${Z}`,Accept:Q.accept??"application/json"};if(Q.body!==void 0)Y["Content-Type"]="application/json";try{return await fetch($,{method:Q.method??"GET",headers:Y,body:Q.body===void 0?void 0:JSON.stringify(Q.body),signal:AbortSignal.timeout(Q.timeoutMs??Ni4)})}catch(X){throw new v0({provider:"gitlab",status:0,message:`GitLab request failed: ${X instanceof Error?X.message:String(X)}`,cause:X})}}var Ni4=15000;var k40=L(()=>{t4();S5();fP()});import{z as jX}from"zod";function iL($){return encodeURIComponent($)}function C40($){return encodeURIComponent($.replace(/^\/+/,""))}function ji4($,Z){let Q=`/projects/${iL($.path)}/repository/archive.tar.gz`;return Z?`${Q}?sha=${encodeURIComponent(Z)}`:Q}function YT$($,Z=Date.now()){let Q=$.get("retry-after");if(Q!==null){let X=Number(Q);if(Number.isFinite(X))return Math.max(0,X*1000);let J=Date.parse(Q);if(Number.isFinite(J))return Math.max(0,J-Z)}let Y=$.get("ratelimit-reset");if(Y!==null){let X=Number(Y);if(Number.isFinite(X))return Math.max(0,X*1000-Z)}return null}function XT$($,Z){let Q=wi4.parse($),Y={provider:"gitlab",host:Z,path:Q.path_with_namespace};return{ref:Y,externalId:String(Q.id),defaultBranch:Q.default_branch??null,webUrl:Q.web_url??CG(Y),visibility:Q.visibility,description:Q.description??null,updatedAt:Q.last_activity_at??null}}async function Ei4($,Z,Q={}){let Y=await dL($,Z,Q);if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),null;if(!Y.ok)throw await e3(Y);return Y}async function Pi4($,Z){let Q=await Ei4(`${fL("gitlab",$)}/user`,Z);if(!Q)throw new v0({provider:"gitlab",status:404,message:"GitLab did not recognise the authenticated user"});return JT$.parse(await gK(Q,"get_user"))}async function nB0($,Z){let Q=await Pi4($,Z);return{externalAccountId:String(Q.id),login:Q.username,avatarUrl:Q.avatar_url??null}}class S40{kind="gitlab";host;apiBase;tokenSource;constructor($){this.host=$.host,this.apiBase=fL("gitlab",$.host),this.tokenSource=$.tokenSource}async tokenForRepo($,Z){return this.accountToken(Z)}async accountToken($){let Z=await this.tokenSource.get($);if(!Z)throw new v0({provider:"gitlab",status:401,message:"GitLab account is not authenticated"});return Z}async getRepo($){let Z=await this.get(`/projects/${iL($.path)}`);if(!Z)return null;return XT$(await gK(Z,"get_repo"),this.host)}async listRepos($={}){let Z=new URLSearchParams({membership:"true",simple:"true",order_by:"id",sort:"desc",per_page:String(Math.min(Oi4,Math.max(1,$.perPage??Li4))),page:String(Math.max(1,$.page??1))}),Q=$.query?.trim();if(Q)Z.set("search",Q);let Y=await this.get(`/projects?${Z}`);if(!Y)return{repositories:[],hasMore:!1};let X=await gK(Y,"list_repos");if(!Array.isArray(X))throw new v0({provider:"gitlab",status:502,message:"GitLab /projects returned a non-array payload"});return{repositories:X.map((J)=>XT$(J,this.host)),hasMore:X.length===Number(Z.get("per_page"))}}async readFile($,Z,Q){let Y=Q;if(!Y){let J=await this.getRepo($);if(!J?.defaultBranch)return null;Y=J.defaultBranch}let X=await this.get(`/projects/${iL($.path)}/repository/files/${C40(Z)}/raw?ref=${encodeURIComponent(Y)}`,{accept:"text/plain, */*"});if(!X)return null;return X.text()}async archiveTarball($,Z){let Q=await this.authedFetch(`${this.apiBase}${ji4($,Z)}`,{accept:"application/octet-stream, */*",timeoutMs:Di4});if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q.body}async identity(){let $=await this.authedFetch(`${this.apiBase}/user`);if(!$.ok)throw await e3($);let Z=JT$.parse(await gK($,"identity"));return{name:Z.name||Z.username,email:Z.commit_email||Z.public_email||Z.email||`${Z.username}@users.noreply.${this.host}`}}async get($,Z){let Q=await this.authedFetch(`${this.apiBase}${$}`,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q}async authedFetch($,Z={}){let Q=await this.accountToken(),Y=await dL($,Q.token,Z);if(Y.status!==401)return Y;await Y.body?.cancel().catch(()=>{});let X=await this.accountToken({forceRefresh:!0});return dL($,X.token,Z)}}var Di4=60000,Li4=30,Oi4=100,wi4,JT$;var fP=L(()=>{t4();S5();k40();wi4=jX.object({id:jX.number(),path_with_namespace:jX.string().min(1),default_branch:jX.string().nullish(),web_url:jX.string().nullish(),visibility:jX.enum(["public","private","internal"]),description:jX.string().nullish(),last_activity_at:jX.string().nullish()});JT$=jX.object({id:jX.number(),username:jX.string().min(1),name:jX.string().nullish(),avatar_url:jX.string().nullish(),email:jX.string().nullish(),public_email:jX.string().nullish(),commit_email:jX.string().nullish()})});function tB0($=process.env){let Z=$.BITBUCKET_OAUTH_CLIENT_ID?.trim(),Q=$.BITBUCKET_OAUTH_CLIENT_SECRET?.trim();if(!Z||!Q)return null;return{host:pL,clientId:Z,clientSecret:Q}}function GT$(){let $=tB0();return{configured:$!==null,hosts:$?[$.host]:[]}}var pL;var Fp=L(()=>{t4();pL=pN0.bitbucket});function _40($){if($.toLowerCase()===pL)return;throw new v0({provider:"bitbucket",status:400,message:`${$} is not Bitbucket Cloud. Only bitbucket.org is supported; Bitbucket Data Center has a different API.`})}function Ai4($,Z=Date.now()){let Q=$.get("retry-after");if(Q===null)return null;let Y=Number(Q);if(Number.isFinite(Y))return Math.max(0,Y*1000);let X=Date.parse(Q);return Number.isFinite(X)?Math.max(0,X-Z):null}function Ti4($){try{let Z=JSON.parse($);if(Z!==null&&typeof Z==="object"){let Q=Z,Y=[...dD(Q.error),...dD(Q.error_description)];if(Y.length>0)return Y.join("; ")}}catch{}return $.slice(0,300)}async function qJ($){let Z=await $.text().catch(()=>""),Q=Z?Ti4(Z):$.statusText;return new v0({provider:"bitbucket",status:$.status,message:`Bitbucket API ${$.status}: ${Q}`,retryAfterMs:$.status===429?Ai4($.headers):null})}async function tN($,Z){let Q=await $.text();try{return JSON.parse(Q)}catch(Y){throw new v0({provider:"bitbucket",status:$.status,message:`Bitbucket ${Z} returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}}async function wX($,Z,Q={}){let Y={Authorization:Q.basicAuth?`Basic ${Buffer.from(`x-token-auth:${Z}`).toString("base64")}`:`Bearer ${Z}`,Accept:Q.accept??"application/json"},X=Q.body instanceof FormData;if(Q.body!==void 0&&!X)Y["Content-Type"]="application/json";try{return await fetch($,{method:Q.method??"GET",headers:Y,body:Q.body===void 0?void 0:X?Q.body:JSON.stringify(Q.body),signal:AbortSignal.timeout(Q.timeoutMs??zi4)})}catch(J){throw new v0({provider:"bitbucket",status:0,message:`Bitbucket request failed: ${J instanceof Error?J.message:String(J)}`,cause:J})}}function WT$($){if(!$.next)return null;try{let Z=new URL($.next).searchParams.get("page"),Q=Number(Z);return Z!==null&&Number.isInteger(Q)&&Q>0?Q:null}catch{return null}}function $W($){return`"${$.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}var zi4=15000,IQ;var v40=L(()=>{t4();S5();Fp();IQ=fL("bitbucket",pL)});import{z as X7}from"zod";function r71($){let{owner:Z,name:Q}=A5({path:$});if(!Z||!Q||Z.includes("/"))throw new v0({provider:"bitbucket",status:400,message:`${$} is not a Bitbucket repository path (expected workspace/repo_slug)`});return{workspace:Z,slug:Q}}function yP($){let{workspace:Z,slug:Q}=r71($.path);return`/repositories/${encodeURIComponent(Z)}/${encodeURIComponent(Q)}`}function Mi4($,Z){return`${CG($)}/get/${encodeURIComponent(Z)}.tar.gz`}function KT$($,Z){let Q=Vi4.parse($),Y={provider:"bitbucket",host:Z,path:Q.full_name};return{ref:Y,externalId:Q.uuid,defaultBranch:Q.mainbranch?.name??null,webUrl:Q.links?.html?.href??CG(Y),visibility:Q.is_private?"private":"public",description:Q.description??null,updatedAt:Q.updated_on??null}}async function oB0($,Z,Q){_40($);let Y=Q?.trim().toLowerCase();if(Y){let G=await s71(`${IQ}/workspaces/${encodeURIComponent(Y)}`,Z);if(G.ok)return HT$(G.json);throw G.failure}let X=await s71(`${IQ}/user`,Z);if(X.ok){let G=UT$.parse(X.json);return{externalAccountId:G.uuid,login:G.nickname,avatarUrl:G.links?.avatar?.href??null}}let J=await s71(`${IQ}/user/workspaces?pagelen=1`,Z);if(J.ok){let G=J.json.values?.[0];if(G?.workspace!==void 0)return HT$(G.workspace)}throw J.ok?new v0({provider:"bitbucket",status:401,message:"Bitbucket did not recognise this token. An access token cannot name itself \u2014 say which workspace it belongs to and connect it again."}):J.failure}function HT$($){let Z=Ii4.parse($);return{externalAccountId:Z.uuid,login:Z.slug,avatarUrl:Z.links?.avatar?.href??null}}async function s71($,Z){let Q=await wX($,Z);if(!Q.ok)return{ok:!1,failure:await qJ(Q)};return{ok:!0,json:await tN(Q,"principal")}}class b40{kind="bitbucket";host;tokenSource;workspace;constructor($){_40($.host),this.host=pL,this.tokenSource=$.tokenSource,this.workspace=$.workspace?.trim().toLowerCase()||null}async tokenForRepo($,Z){return this.accountToken(Z)}async accountToken($){let Z=await this.tokenSource.get($);if(!Z)throw new v0({provider:"bitbucket",status:401,message:"Bitbucket account is not authenticated"});return Z}async getRepo($){let Z=await this.get(yP($));if(!Z)return null;return KT$(await tN(Z,"get_repo"),this.host)}async listRepos($={}){let Z=Math.min(o71,Math.max(1,$.perPage??Ri4)),Q=new URLSearchParams({role:"member",sort:"-updated_on",pagelen:String(Z),page:String(Math.max(1,$.page??1))}),Y=$.query?.trim();if(Y)Q.set("q",`name ~ ${$W(Y)}`);let X=await this.workspaceSlugs(),J=await Promise.all(X.map(async(K)=>{let H=await this.get(`/repositories/${encodeURIComponent(K)}?${Q}`);if(!H)return{values:[],next:null};let F=await tN(H,"list_repos");if(!Array.isArray(F.values))throw new v0({provider:"bitbucket",status:502,message:`Bitbucket /repositories/${K} returned no values array`});return F})),G=J.flatMap((K)=>K.values??[]).map((K)=>KT$(K,this.host)).sort((K,H)=>(H.updatedAt??"").localeCompare(K.updatedAt??"")),W=X.length<=1;return{repositories:W?G:G.slice(0,Z),hasMore:J.some((K)=>!!K.next)||!W&&G.length>Z}}async workspaceSlugs(){if(this.workspace)return[this.workspace];let $=await this.get(`/user/workspaces?pagelen=${o71}`);if(!$)return[];return((await tN($,"list_workspaces")).values??[]).flatMap((Q)=>typeof Q.workspace?.slug==="string"?[Q.workspace.slug]:[])}async readFile($,Z,Q){let Y=Q;if(!Y){let J=await this.getRepo($);if(!J?.defaultBranch)return null;Y=J.defaultBranch}let X=await this.get(`${yP($)}/src/${encodeURIComponent(Y)}/${Up(Z)}`,{accept:"text/plain, */*"});if(!X)return null;return X.text()}async archiveTarball($,Z){let Q=Z;if(!Q){let G=await this.getRepo($);if(!G?.defaultBranch)return null;Q=G.defaultBranch}let Y=Mi4($,Q),X={accept:"application/octet-stream, */*",timeoutMs:qi4},J=await this.authedFetch(Y,X);if(J.status===401||J.status===403){await J.body?.cancel().catch(()=>{});let{token:G}=await this.accountToken();J=await wX(Y,G,{...X,basicAuth:!0})}if(J.status===404)return await J.body?.cancel().catch(()=>{}),null;if(!J.ok)throw await qJ(J);return J.body}async identity(){let $=await this.authedFetch(`${IQ}/user`);if($.status===401||$.status===403)return await $.body?.cancel().catch(()=>{}),null;if(!$.ok)throw await qJ($);let Z=UT$.parse(await tN($,"identity"));return{name:Z.display_name||Z.nickname,email:await this.primaryEmail()??`${Z.nickname}@users.noreply.${this.host}`}}async primaryEmail(){let $=await this.authedFetch(`${IQ}/user/emails?pagelen=${o71}`);if(!$.ok)return await $.body?.cancel().catch(()=>{}),null;let Q=(await tN($,"user_emails").catch(()=>null))?.values??[],Y=Q.find((X)=>X.is_primary===!0&&X.is_confirmed!==!1)??Q.find((X)=>X.is_confirmed!==!1);return typeof Y?.email==="string"&&Y.email?Y.email:null}async get($,Z){let Q=await this.authedFetch(`${IQ}${$}`,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await qJ(Q);return Q}async authedFetch($,Z={}){let Q=await this.accountToken(),Y=await wX($,Q.token,Z);if(Y.status!==401)return Y;await Y.body?.cancel().catch(()=>{});let X=await this.accountToken({forceRefresh:!0});return wX($,X.token,Z)}}function Up($){return $.replace(/^\/+/,"").split("/").map((Z)=>encodeURIComponent(Z)).join("/")}var qi4=60000,Ri4=30,o71=100,Vi4,FT$,UT$,Ii4;var eq=L(()=>{t4();S5();Fp();v40();Vi4=X7.object({uuid:X7.string().min(1),full_name:X7.string().min(1),is_private:X7.boolean(),description:X7.string().nullish(),mainbranch:X7.object({name:X7.string().nullish()}).nullish(),links:X7.object({html:X7.object({href:X7.string()}).nullish()}).nullish(),updated_on:X7.string().nullish()});FT$=X7.object({avatar:X7.object({href:X7.string().nullish()}).nullish()}).nullish(),UT$=X7.object({uuid:X7.string().min(1),nickname:X7.string().min(1),display_name:X7.string().nullish(),links:FT$}),Ii4=X7.object({uuid:X7.string().min(1),slug:X7.string().min(1),links:FT$})});function a71($,Z,Q){return{kind:Q,async get(Y){let X=Y?.forceRefresh?await $.get(Z):null,J=await RJ({connectionId:Z,tokenStorage:$,bufferMs:Y?.bufferMs,force:Y?.forceRefresh===!0&&X!==null&&gP(X)});if(!J.accessToken)return null;return{token:J.accessToken,kind:Q,expiresAt:null}}}}function sB0($){return $==="token"?"token":"oauth"}function x40($){return $Q1($)===null}function e71($,Z){if($.authKind!=="github_app")return!0;if($.installationRepositoryIds===null)return!0;return Z.externalId!==null&&$.installationRepositoryIds.includes(Number(Z.externalId))}function $Q1($){if($.status!=="active")return"revoked";if($.authKind==="github_cli")return $.type==="github"&&$.host==="github.com"&&aq()?null:"provider_unavailable";if($.type==="github"&&$.authKind==="github_app"){if(bF()===null)return"provider_unavailable";if($.installationId===null)return"installation_missing";if(!$.installationAuthorizedBy)return"authorization_required";if($.installationRepositoryIds?.length===0)return"no_repositories"}return null}function oN($,Z){if(Z.status!=="active")throw new v0({provider:Z.type,status:403,message:"This git account was revoked. Reconnect it before accessing repositories."});if(Z.authKind==="github_app"&&(!Z.installationAuthorizedBy||Z.installationRepositoryIds?.length===0))throw new v0({provider:Z.type,status:403,message:"Reconnect this git account. A GitHub installation must be authorized by its account owner or by someone who administers repositories in it."});let Q=new z40($.db,$.vault);switch(Z.type){case"github":{if(Z.authKind==="github_cli")return new sq({host:Z.host,tokenSource:QT$(Z)});if(Z.authKind==="github_app"){let Y=bF();if(!Y)throw new v0({provider:"github",status:503,message:"GitHub App credentials are not configured on this deployment"});if(Z.installationId===null)throw new v0({provider:"github",status:403,message:"This GitHub account has no installation linked. Reconnect it to select repositories."});return new sq({host:Z.host,installationId:Z.installationId,repositoryIds:Z.installationRepositoryIds,appAuth:Y})}return new sq({host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))})}case"gitlab":return new S40({host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))});case"bitbucket":return new b40({workspace:Z.authKind==="token"?Z.login:null,host:Z.host,tokenSource:a71(Q,Z.id,sB0(Z.authKind))})}}function NT$($){if($.authKind==="github_app")return"installation";if($.authKind==="github_cli")return"token";return sB0($.authKind)}function f40($,Z,Q="installation"){return{ref:$,tokenSource:{kind:Q,get:()=>Promise.resolve({token:Z,kind:Q,expiresAt:null})}}}async function rB0($,Z){let Q=mL(Z);if(!Z.accountId)throw new v0({provider:Z.provider,status:401,message:`${Z.path} is linked without an account; link it again to read and write it`});let Y=await BT$($,Z,Z.accountId),X=oN($,Y),J=NT$(Y);return{ref:Q,tokenSource:{kind:J,get:(G)=>X.tokenForRepo(Q,G)}}}async function sN($,Z,Q){let Y=mL(Z);if(!Z.accountId)return ki4(Y);let X=await BT$($,Z,Z.accountId),J=oN($,X),W=NT$(X)==="installation"?await CA$((F,U)=>J.readFile({...Y,path:F},U),Y):[],K=await J.tokenForRepo(Y,{...Q,alsoRepositories:W}),H=K.kind==="installation"?null:await J.identity().catch(()=>null);return{cloneUrl:y80(Y,K.token),expiresAt:K.expiresAt,gitUserName:H?.name??nN.name,gitUserEmail:H?.email??nN.email}}function ki4($){return{cloneUrl:y80($),gitUserName:nN.name,gitUserEmail:nN.email}}async function BT$($,Z,Q){let Y=await new pq($.db).getUnscoped(Q);if(!Y||Y.organizationId!==Z.organizationId)throw new v0({provider:Z.provider,status:404,message:`The account backing ${Z.path} no longer exists. Link the repository again.`});return Y}async function aB0($,Z,Q){let Y=Q.repositoryId?await $.repositories.get(Q.repositoryId,Z):Q.ref?await $.repositories.findByRef(Z,Q.ref):null,X=Y?mL(Y):Q.ref??null;if(!X)return null;return{ref:X,repository:Y,servable:Y?await nL($,Y):!1}}async function nL($,Z){if(!Z.accountId)return!1;let Q=await $.gitProviderAccounts.getUnscoped(Z.accountId);if(Q===null||!x40(Q))return!1;return!Z.legacyConnectionId||e71(Q,Z)}var eB0=L(()=>{t4();s3();b71();hB0();Gp();SA$();V40();cB0();pB0();fP();eq();S5()});async function Ci4($,Z){let Q=$.organization?.id;if(!Q)throw Error(a7);if(!Z.sourceConnectionId)throw Error(a7);let Y=await $.storage.connections.findById(Z.sourceConnectionId,Q);if(!Y)throw Error(a7);let{clientFromConnection:X}=await Promise.resolve().then(() => (g80(),jT$)),J=await X(Y,$,!0);try{let{result:G}=await vA$((H)=>J.callTool({name:"MINT_REPO_TOKEN",arguments:{installationId:Z.installationId,owner:Z.owner,repo:Z.repo,permissions:H}}),_A$(Z.permissions)),W=G.structuredContent?.token;if(G.isError||!W)throw Error(a7);let K=G.structuredContent?.expiresAt;return{accessToken:W,expiresAt:K?new Date(K):null}}finally{await J.close().catch(()=>{})}}function Si4($,Z){return($?.getTime()??0)>Z?$:new Date(Z+OT$)}async function _i4($,Z,Q,Y){let X=Date.now(),J=await Ci4($,Q),G=Si4(J.expiresAt,X);try{await Y.upsert({connectionId:Z,accessToken:J.accessToken,refreshToken:null,scope:null,expiresAt:G,clientId:null,clientSecret:null,tokenEndpoint:null})}catch(W){console.warn("[GithubMint] failed to persist minted token",{connectionId:Z,message:W instanceof Error?W.message:String(W)})}return J.accessToken}async function y40($,Z,Q){let Y=UZ(Z);if(!Y)throw Error("Connection is not repo-scoped");if(!Y.sourceConnectionId)throw Error(a7);let X=new e5($.db,$.vault),J=await X.get(Z.id);if(!Q?.forceRefresh&&J&&!X.isExpired(J,h40))return J.accessToken;let G=ZQ1.get(Z.id);if(G)return G;let W=_i4($,Z.id,Y,X).finally(()=>{ZQ1.delete(Z.id)});return ZQ1.set(Z.id,W),W}function DT$($){return $.slug==="mcp-github"}async function LT$($,Z,Q){if(UZ(Z)?.sourceConnectionId)return y40($,Z,Q);return(await RJ({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new e5($.db,$.vault),force:Q?.forceRefresh})).accessToken}var ZQ1;var g40=L(()=>{s3();vG();xK();ZQ1=new Map});function vi4(){return process.env.GITHUB_GRAPHQL_URL??"https://api.github.com/graphql"}function xi4($){return $>=500&&$<600}function fi4($){return $ instanceof e6?$.cause:$}function yi4($,Z){try{return JSON.parse($)}catch(Q){throw Error(`GitHub GraphQL ${Z} returned invalid JSON: ${$.slice(0,300)}`,{cause:Q})}}function gi4($,Z){let Q=$.errors?.[0]?.message;if(Q)throw Error(`GitHub GraphQL ${Z} failed: ${Q}`);if($.data==null)throw Error(`GitHub GraphQL ${Z} returned no data`);return $.data}async function Np($){let Z=await $.getToken();if(!Z)throw Error($.missingTokenMessage);let Q=(W)=>fetch(vi4(),{method:"POST",headers:{Authorization:`Bearer ${W}`,Accept:"application/vnd.github+json","Content-Type":"application/json"},body:JSON.stringify({query:$.query,variables:$.variables}),signal:AbortSignal.timeout(bi4)}),Y=async(W)=>{try{return await e$(async()=>{let K=await Q(W);if(xi4(K.status)){let H=K.status;throw await K.body?.cancel().catch(()=>{}),Error(`GitHub GraphQL transient error: ${H}`)}return K},{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1})}catch(K){throw fi4(K)}},X=await Y(Z),J=Z;if(X.status===401){try{await X.body?.cancel()}catch{}let W=await $.getToken(!0);if(!W)throw Error($.missingTokenMessage);if(X=await Y(W),J=W,X.status===401)throw Error($.missingTokenMessage)}let G=Wp(J);if(_P(X.headers,{lane:"graphql",operation:$.operation,installation:G}),CP(X)){let W=X.headers.get("retry-after")!==null?"secondary":"primary";vP({lane:"graphql",operation:$.operation,installation:G,kind:W});let K=SP(X.headers);throw await X.body?.cancel().catch(()=>{}),new v0({provider:"github",status:X.status,retryAfterMs:K,message:`GitHub ${W} rate limit reached${K===null?"":`; retry in ${Math.ceil(K/1000)}s`}`})}if(!X.ok)throw await X.body?.cancel().catch(()=>{}),new v0({provider:"github",status:X.status,message:`GitHub GraphQL ${$.label} failed: ${X.status}`});return gi4(yi4(await X.text(),$.label),$.label)}var bi4=15000;var $D0=L(()=>{p$();S5();q40();Kp()});function li4($){if(!$)return null;if($.state!=="open")return!1;if(typeof $.mergeable==="boolean")return!$.mergeable;let Z=$.mergeable_state;if(typeof Z!=="string"||Z===""||Z==="unknown")return null;return Z==="dirty"}function ci4($){if($==="clean")return"passing";if($==="unstable")return"failing";return null}function QQ1($){let Z=$.merged===!0||typeof $.merged_at==="string";return{number:$.number??0,url:$.html_url??"",title:$.title??"",body:$.body??"",state:Z?"merged":$.state==="closed"?"closed":"open",draft:$.draft===!0,mergedAt:$.merged_at??null,updatedAt:$.updated_at??null,base:$.base?.ref??"main",head:$.head?.ref??"",headSha:$.head?.sha??"",headRepoPath:$.head?.repo?.full_name??null,author:$.user?.login??"",conflicting:li4($),checks:ci4($.mergeable_state),changedFiles:typeof $.changed_files==="number"?$.changed_files:null}}function mi4($){if($==="IN_PROGRESS")return"running";if($==="COMPLETED")return"completed";return"queued"}function di4($){switch($){case"SUCCESS":return"success";case"FAILURE":case"STARTUP_FAILURE":return"failure";case"NEUTRAL":case"STALE":return"neutral";case"CANCELLED":return"cancelled";case"SKIPPED":return"skipped";case"TIMED_OUT":return"timed_out";case"ACTION_REQUIRED":return"action_required";default:return null}}function ti4($){let Z=$.state;return{id:null,name:$.context??"",state:Z==="PENDING"||Z==="EXPECTED"?"running":"completed",conclusion:Z==="SUCCESS"?"success":Z==="FAILURE"||Z==="ERROR"?"failure":Z==="PENDING"||Z==="EXPECTED"?null:"neutral",url:$.targetUrl??null,durationMs:null,summary:$.description??null}}function oi4($){let Z=$.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[],Q=[];for(let Y of Z){if(!Y)continue;if(Y.__typename==="StatusContext"){Q.push(ti4(Y));continue}if(Y.__typename!=="CheckRun")continue;let{startedAt:X,completedAt:J}=Y;Q.push({id:Y.databaseId==null?null:String(Y.databaseId),name:Y.name??"",state:mi4(Y.status),conclusion:di4(Y.conclusion),url:Y.detailsUrl??null,durationMs:X&&J?new Date(J).getTime()-new Date(X).getTime():null,summary:Y.summary??null})}return Q}function si4($,Z){let Q=($.reviewThreads?.nodes??[]).filter((K)=>K?.isResolved===!1).length,Y=$.reviewDecision,X=Y==="REVIEW_REQUIRED"||Y==="CHANGES_REQUESTED",J=oi4($),G=$.number??0,W=$.merged===!0;return{number:G,url:$.url??_K(Z,G),title:$.title??"",body:$.body??"",state:W?"merged":$.state==="OPEN"?"open":"closed",draft:$.isDraft===!0,mergedAt:$.mergedAt??null,updatedAt:$.updatedAt??null,base:$.baseRefName??"main",head:$.headRefName??"",headSha:$.headRefOid??"",headRepoPath:$.headRepository?.nameWithOwner??null,author:$.author?.login??"",conflicting:$.state!=="OPEN"?!1:$.mergeable==="CONFLICTING"?!0:$.mergeable==="MERGEABLE"?!1:null,checks:Yp(J),changedFiles:$.changedFiles??null,checkRuns:J,comments:($.comments?.nodes??[]).flatMap((K)=>K?[{id:String(K.databaseId??0),author:K.author?.login??"",body:K.body??"",createdAt:K.createdAt??"",updatedAt:K.updatedAt??K.createdAt??"",url:K.url??""}]:[]),unresolvedConversations:Q,reviewBlocked:X}}function ri4($){let Z=null,Q=-1/0;for(let Y of $??[]){if(!Y?.mergedAt)continue;let X=Date.parse(Y.mergedAt);if(Number.isNaN(X)||X<=Q)continue;Z=Y,Q=X}return Z}function wT$($){return/not allowed on this repository/i.test($)}class YQ1{repo;tokenSource;apiBaseUrl;owner;name;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBaseUrl=yK($.repo.host);let{owner:Z,name:Q}=A5($.repo);this.owner=Z,this.name=Q}async token($){return(await this.tokenSource.get($?{forceRefresh:!0}:void 0))?.token??null}async requireToken(){let $=await this.token();if($)return $;throw new v0({provider:"github",status:401,message:`No usable GitHub token for ${this.repo.path}; reconnect the account`})}get base(){return`${this.apiBaseUrl}/repos/${this.owner}/${this.name}`}async rest($,Z){let Q=await NZ(`${this.base}${$}`,{method:Z.method,body:Z.body,token:await this.requireToken(),operation:Z.operation});if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await Y7(Q,Z.operation);if(Q.status===204)return null;return VQ(Q,Z.operation)}graphql($){return Np({getToken:(Z)=>this.token(Z),missingTokenMessage:`No usable GitHub token for ${this.repo.path}; reconnect the account`,...$})}async read($){let Z=await this.rest(`/pulls/${$}`,{operation:"change_request_read"});return Z?QQ1(Z):null}async readForBranch($){return await this.readDetailed({branch:$})}async readDetailed($){let Z="number"in $,Y=(await this.graphql({query:Z?pi4:ii4,variables:Z?{owner:this.owner,repo:this.name,number:$.number}:{owner:this.owner,repo:this.name,branch:$.branch},label:`change request for ${this.repo.path}`,operation:"change_request_detail"})).repository;if(!Y)throw new v0({provider:"github",status:404,message:`${this.repo.path} is not accessible with this credential`});let X=Z?Y.pullRequest:Y.pullRequests?.nodes?.[0];return X?si4(X,this.repo):null}async listOpen($){return(await this.rest(`/pulls?state=open&sort=updated&direction=desc&per_page=${Math.min($,100)}`,{operation:"change_request_list"})??[]).map(QQ1)}async lastMergedInto($){let Z=await this.graphql({query:ni4,variables:{owner:this.owner,repo:this.name,base:$},label:`last merged into ${$} on ${this.repo.path}`,operation:"change_request_last_merged"});if(!Z.repository)throw new v0({provider:"github",status:404,message:`${this.repo.path} is not accessible with this credential`});let Q=ri4(Z.repository.pullRequests?.nodes);if(!Q)return null;let Y=Q.number??0;return{number:Y,url:Q.url??_K(this.repo,Y),title:Q.title??"",body:Q.body??"",state:"merged",draft:!1,mergedAt:Q.mergedAt??null,updatedAt:Q.mergedAt??null,base:Q.baseRefName??$,head:Q.headRefName??"",headSha:Q.headRefOid??"",headRepoPath:null,author:Q.author?.login??"",conflicting:!1,checks:null,changedFiles:null}}async open($){let Z=await NZ(`${this.base}/pulls`,{method:"POST",token:await this.requireToken(),operation:"change_request_open",body:{title:$.title,body:$.body||void 0,head:$.head,base:$.base}});if(Z.ok)return QQ1(await VQ(Z,"change_request_open"));let Q=await Y7(Z,"change_request_open");if(/already exists|pull request already/i.test(Q.message))throw new dq(Q.message,await this.readForBranch($.head).catch(()=>null));throw Q}async describe($,Z){await this.rest(`/pulls/${$}`,{method:"PATCH",body:{body:Z},operation:"change_request_describe"})}async merge($,Z={}){let Q=hi4[Z.strategy??"any"],Y="";for(let X of Q){let J=await this.attemptMerge($,X,Z);if(J.merged)return J;if(J.reason==="blocked"&&wT$(J.detail)){Y=J.detail;continue}return J}return{merged:!1,reason:"blocked",detail:Y}}async attemptMerge($,Z,Q){let Y;try{Y=await NZ(`${this.base}/pulls/${$}/merge`,{method:"PUT",token:await this.requireToken(),operation:"change_request_merge",body:{merge_method:Z,...Q.commitTitle?{commit_title:Q.commitTitle}:{},...Q.commitMessage?{commit_message:Q.commitMessage}:{}}})}catch(G){return{merged:!1,...ai4(G)}}if(Y.ok)return await Y.body?.cancel().catch(()=>{}),{merged:!0};let X=await Y7(Y,"change_request_merge");if(Y.status===404)return{merged:!1,reason:"not_found",detail:X.message};if(wT$(X.message))return{merged:!1,reason:"blocked",detail:X.message};return{merged:!1,reason:await this.read($).then((G)=>G?.conflicting??null).catch(()=>null)===!0?"conflict":"blocked",detail:X.message}}async readCheckLog($){let Z=await this.rest(`/check-runs/${encodeURIComponent($)}`,{operation:"change_request_check_log"});return Z?.output?.summary??Z?.output?.text??null}async readDeployedUrl($){let Z=await this.rest(`/deployments?sha=${encodeURIComponent($)}&per_page=${ui4}`,{operation:"change_request_deployments"});for(let Q of Z??[]){if(typeof Q.id!=="number")continue;let X=(await this.rest(`/deployments/${Q.id}/statuses?per_page=10`,{operation:"change_request_deployment_statuses"})??[]).find((J)=>J.state==="success"&&typeof J.environment_url==="string"&&J.environment_url.length>0);if(X?.environment_url)return X.environment_url}return null}}function ai4($){let Z=$ instanceof Error?$.message:String($);if($ instanceof v0&&$.isRateLimited)return{reason:"rate_limited",detail:Z};return{reason:"error",detail:Z}}var hi4,ui4=3,ET$=`
|
|
952
952
|
fragment CrDetail on PullRequest {
|
|
953
953
|
number
|
|
954
954
|
title
|
|
@@ -1103,18 +1103,18 @@ query RepoCommits($owner: String!, $name: String!, $since: GitTimestamp!, $limit
|
|
|
1103
1103
|
}
|
|
1104
1104
|
}
|
|
1105
1105
|
}
|
|
1106
|
-
}`}function jp4($){let Z=$.author?.login??"";return{number:$.number,title:$.title,url:$.url,state:$.state==="MERGED"?"merged":$.state==="OPEN"?"open":"closed",author:{login:Z,isBot:$.author?.__typename==="Bot"||Xp(Z)},createdAt:$.createdAt,updatedAt:$.updatedAt,mergedAt:$.mergedAt,closedAt:$.closedAt,base:$.baseRefName,head:$.headRefName,additions:$.additions??null,deletions:$.deletions??null,commits:$.commits?{count:$.commits.totalCount??null,items:($.commits.nodes??[]).flatMap((Q)=>Q.commit?.oid&&Q.commit.committedDate?[{sha:Q.commit.oid,date:Q.commit.committedDate}]:[])}:null}}function wp4($){return($??[]).flatMap((Z)=>Z?[jp4(Z)]:[])}function Ep4($){return{sha:$.oid,date:$.committedDate,message:$.messageHeadline??"",...$.messageBody?{body:$.messageBody}:{},author:{name:$.author?.name??null,email:$.author?.email??null,login:$.author?.user?.login??null}}}function Pp4($){return($??[]).flatMap((Z)=>Z?[Ep4(Z)]:[])}function zp4($,Z){if(!Z)return{items:$,reachedWindowEnd:!1};let Q=Date.parse(Z);if(!Number.isFinite(Q))return{items:$,reachedWindowEnd:!1};let Y=[];for(let X of $){if(Date.parse(X.updatedAt)<Q)return{items:Y,reachedWindowEnd:!0};Y.push(X)}return{items:Y,reachedWindowEnd:!1}}function Ap4($,Z){let Q=[],Y=$.tree??[];for(let X of Y){if(Q.length>=Z)return{entries:Q,truncated:!0};if(!X.path)continue;if(X.type!=="blob"&&X.type!=="tree")continue;Q.push({path:X.path,type:X.type,...typeof X.size==="number"?{size:X.size}:{}})}return{entries:Q,truncated:$.truncated===!0}}function Tp4($){return{supported:!0,incomplete:$.incomplete_results===!0,hits:($.items??[]).flatMap((Z)=>{if(!Z.path)return[];let Q=Z.text_matches?.[0]?.fragment;return[{path:Z.path,...Q?{fragment:Q}:{}}]})}}class WQ1{repo;tokenSource;apiBaseUrl;owner;name;defaultBranch=null;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBaseUrl=yK($.repo.host);let{owner:Z,name:Q}=A5($.repo);this.owner=Z,this.name=Q}capabilities(){return{codeSearch:!0,lineStats:"inline"}}async token($){return(await this.tokenSource.get($?{forceRefresh:!0}:void 0))?.token??null}get missingTokenMessage(){return`No usable GitHub token for ${this.repo.path}; reconnect the account`}async requireToken(){let $=await this.token();if($)return $;throw new b0({provider:"github",status:401,message:this.missingTokenMessage})}graphql($){return Np({getToken:(Z)=>this.token(Z),missingTokenMessage:this.missingTokenMessage,...$})}get repoBase(){return`${this.apiBaseUrl}/repos/${this.owner}/${this.name}`}async resolveDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await NZ(this.repoBase,{token:await this.requireToken(),operation:"insights_repo"});if(!$.ok)throw await Y7($,"insights_repo");let Z=await VQ($,"insights_repo");if(!Z.default_branch)throw new b0({provider:"github",status:409,message:`GitHub repository ${this.repo.path} has no default branch (empty repository)`});return this.defaultBranch=Z.default_branch,this.defaultBranch}async listTree($={}){let Z=Q7($.maxEntries,TP,lL),Q=$.ref??await this.resolveDefaultBranch(),Y=await NZ(`${this.repoBase}/git/trees/${encodeURIComponent(Q)}?recursive=1`,{token:await this.requireToken(),operation:"insights_tree"});if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),{ref:Q,entries:[],truncated:!1};if(!Y.ok)throw await Y7(Y,"insights_tree");let X=await VQ(Y,"insights_tree");return{ref:Q,...Ap4(X,Z)}}async readFile($){let Z=Q7($.maxBytes,qP,cL),Q=$.ref??await this.resolveDefaultBranch(),Y=new URLSearchParams({ref:Q}),X=await NZ(`${this.repoBase}/contents/${a3($.path)}?${Y}`,{token:await this.requireToken(),operation:"insights_file",accept:"application/vnd.github.raw"});if(X.status===404)return await X.body?.cancel().catch(()=>{}),{content:null,size:null,truncated:!1};if(!X.ok)throw await Y7(X,"insights_file");return Jp(X,Z)}async searchCode($){let Z=Q7($.limit,20,RP),Q=new URLSearchParams({q:`${$.query} repo:${this.repo.path}`,per_page:String(Z)}),Y=await NZ(`${this.apiBaseUrl}/search/code?${Q}`,{token:await this.requireToken(),operation:"insights_search",accept:"application/vnd.github.text-match+json"});if(Y.status===422)return await Y.body?.cancel().catch(()=>{}),{supported:!0,incomplete:!1,hits:[]};if(!Y.ok)throw await Y7(Y,"insights_search");return Tp4(await VQ(Y,"insights_search"))}async listChangeRequests($){let Z=Q7($.limit,50,MP),Y=(await this.graphql({query:Lp4({includeCommits:$.includeCommits===!0,includeStats:$.includeStats===!0}),variables:{owner:this.owner,name:this.name,limit:Z,after:$.cursor??null,states:Dp4($.state)},label:`change request history for ${this.repo.path}`,operation:"insights_change_requests"})).repository?.pullRequests;if(!Y)return{items:[],nextCursor:null};let{items:X,reachedWindowEnd:J}=zp4(wp4(Y.nodes),$.updatedAfter);return{items:X,nextCursor:J||!Y.pageInfo.hasNextPage?null:Y.pageInfo.endCursor}}async listCommits($){let Z=Q7($.limit,r3,r3),Q=$.ref!==void 0,Y=await this.graphql({query:Op4(Q),variables:{owner:this.owner,name:this.name,since:$.since,limit:Z,after:$.cursor??null,...Q?{ref:$.ref}:{}},label:`commit history for ${this.repo.path}`,operation:"insights_commits"}),J=(Q?Y.repository?.ref?.target:Y.repository?.defaultBranchRef?.target)?.history;if(!J)return{items:[],nextCursor:null};return{items:Pp4(J.nodes),nextCursor:J.pageInfo.hasNextPage?J.pageInfo.endCursor:null}}}var Bp4=100;var IT$=L(()=>{t4();$D0();bP();S5();iq()});function qp4($,Z){let Q=$.find((X)=>UZ(X)===null)??null;if(!Z)return Q??$[0]??null;return $.find((X)=>{let J=UZ(X);return J?.owner===Z.owner&&J?.repo===Z.name})??Q}async function kT$($,Z,Q,Y){if(Q.provider!=="github")return null;if(Y){let J=await $.storage.connections.findById(Y,Z);if(J&&J.status==="active"&&DT$(J))return J}let{items:X}=await $.storage.connections.list(Z,{slug:"mcp-github"});return qp4(X.filter((J)=>J.status==="active"),A5(Q))}function Rp4($){return[...$.filter(VP),...$.filter((Z)=>!VP(Z))]}function Mp4($){let Z=[];for(let Q of Rp4($)){if(Q.status!=="active")continue;let Y=UZ(Q);if(!Y)continue;Z.push({connectionId:Q.id,ref:hi(Y.owner,Y.repo),installationId:Y.installationId})}return Z}async function CT$($,Z){let{items:Q}=await $.storage.connections.list(Z,{slug:"mcp-github"});return Mp4(Q)}var KQ1=L(()=>{vG();t4();g40()});function _T$($){if($==="merged")return"merged";if($==="closed")return"closed";return"open"}function kp4($){if(!$)return null;if(_T$($.state)!=="open")return!1;if(typeof $.has_conflicts==="boolean")return $.has_conflicts;let Z=$.detailed_merge_status;if(Z==="conflict"||Z==="broken_status")return!0;if(Z==="mergeable")return!1;if($.merge_status==="can_be_merged")return!1;if($.merge_status==="cannot_be_merged")return!0;return null}function Cp4($){switch($){case"success":return"passing";case"failed":case"canceled":return"failing";case"created":case"waiting_for_resource":case"preparing":case"pending":case"running":case"scheduled":return"pending";default:return null}}function Sp4($){switch($){case"success":return{state:"completed",conclusion:"success"};case"failed":return{state:"completed",conclusion:"failure"};case"canceled":return{state:"completed",conclusion:"cancelled"};case"skipped":return{state:"completed",conclusion:"skipped"};case"manual":return{state:"completed",conclusion:"action_required"};case"running":return{state:"running",conclusion:null};default:return{state:"queued",conclusion:null}}}function _p4($){if(typeof $==="number")return Number.isFinite($)?$:null;if(typeof $!=="string")return null;let Z=Number.parseInt($,10);return Number.isFinite(Z)?Z:null}function vp4($){let{state:Z,conclusion:Q}=Sp4($.status),Y=$.started_at?Date.parse($.started_at):NaN,X=$.finished_at?Date.parse($.finished_at):NaN;return{id:$.id==null?null:String($.id),name:$.name??"",state:Z,conclusion:Q,url:$.web_url??null,durationMs:Number.isFinite(Y)&&Number.isFinite(X)?X-Y:null,summary:null}}function bp4($,Z){return $.filter((Q)=>Q.system!==!0&&typeof Q.body==="string").map((Q)=>({id:String(Q.id??0),author:Q.author?.username??"",body:Q.body??"",createdAt:Q.created_at??"",updatedAt:Q.updated_at??Q.created_at??"",url:Q.id==null?Z:`${Z}#note_${Q.id}`}))}function xp4($){let Z=0;for(let Q of $){let X=(Q.notes??[]).filter((J)=>J.resolvable===!0);if(X.length===0)continue;if(X.some((J)=>J.resolved!==!0))Z+=1}return Z}function fp4($,Z){if($===406)return!0;return/conflict|cannot be merged/i.test(Z)}class FQ1{repo;tokenSource;apiBase;projectBase;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBase=Hp($.repo.host),this.projectBase=`/projects/${iL($.repo.path)}`}async token($){let Z=await this.tokenSource.get($?{forceRefresh:!0}:void 0);if(Z)return Z.token;throw new b0({provider:"gitlab",status:401,message:`No usable GitLab token for ${this.repo.path}; reconnect the account`})}async authedFetch($,Z={}){let Q=`${this.apiBase}${this.projectBase}${$}`,Y=await dL(Q,await this.token(),Z);if(Y.status===401)await Y.body?.cancel().catch(()=>{}),Y=await dL(Q,await this.token(!0),Z);return Y}async call($,Z={}){let Q=await this.authedFetch($,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q}async json($,Z){let Q=await this.call($,Z);return Q===null?null:await gK(Q,$)}mrPath($){return`/merge_requests/${$}`}map($){if(!$.iid||$.iid<=0)throw new b0({provider:"gitlab",status:422,message:"Invalid merge request: missing or invalid iid"});if(!$.source_branch)throw new b0({provider:"gitlab",status:422,message:`Invalid merge request ${$.iid}: missing source branch`});if(!$.target_branch)throw new b0({provider:"gitlab",status:422,message:`Invalid merge request ${$.iid}: missing target branch`});let Z=$.iid,Q=$.source_project_id==null||$.project_id==null||$.source_project_id===$.project_id;return{number:Z,url:$.web_url??_K(this.repo,Z),title:$.title??"",body:$.description??"",state:_T$($.state),draft:$.draft===!0||$.work_in_progress===!0,mergedAt:$.merged_at??null,updatedAt:$.updated_at??null,base:$.target_branch,head:$.source_branch,headSha:$.sha??"",headRepoPath:Q?this.repo.path:null,author:$.author?.username??"",conflicting:kp4($),checks:Cp4(($.head_pipeline??$.pipeline)?.status),changedFiles:_p4($.changes_count)}}async read($){let Z=await this.json(this.mrPath($));return Z?this.map(Z):null}async readForBranch($){let Q=(await this.json(`/merge_requests?source_branch=${encodeURIComponent($)}&state=all&order_by=updated_at&sort=desc&per_page=1`))?.[0];return Q?this.map(Q):null}async readDetailed($){let Z="number"in $?$.number:(await this.readForBranch($.branch))?.number??null;if(Z===null)return null;let Q=await this.json(this.mrPath(Z));if(!Q)return null;let Y=this.map(Q),X=(Q.head_pipeline??Q.pipeline)?.id??null,[J,G,W]=await Promise.all([this.json(`${this.mrPath(Z)}/notes?sort=desc&order_by=created_at&per_page=${Vp4}`),this.json(`${this.mrPath(Z)}/discussions?per_page=${HQ1}`),X===null?Promise.resolve(null):this.json(`/pipelines/${X}/jobs?per_page=${HQ1}`)]),K=(W??[]).map(vp4),H=xp4(G??[]);return{...Y,checks:K.length>0?Yp(K):Y.checks,checkRuns:K,comments:bp4(J??[],Y.url).reverse(),unresolvedConversations:H,reviewBlocked:Q.detailed_merge_status==="not_approved"||Q.blocking_discussions_resolved===!1}}async listOpen($){return(await this.json(`/merge_requests?state=opened&order_by=updated_at&sort=desc&per_page=${Math.min($,HQ1)}`)??[]).map((Q)=>this.map(Q))}async lastMergedInto($){let Z=await this.json(`/merge_requests?state=merged&target_branch=${encodeURIComponent($)}&order_by=updated_at&sort=desc&per_page=20`),Q=null,Y=-1/0;for(let X of Z??[]){let J=X.merged_at?Date.parse(X.merged_at):NaN;if(Number.isNaN(J)||J<=Y)continue;Q=X,Y=J}return Q?this.map(Q):null}async open($){let Z=await this.authedFetch("/merge_requests",{method:"POST",body:{source_branch:$.head,target_branch:$.base,title:$.title,description:$.body||void 0}});if(Z.ok)return this.map(await gK(Z,"open_merge_request"));let Q=await e3(Z);if(/already exists/i.test(Q.message))throw new dq(Q.message,await this.readForBranch($.head).catch(()=>null));throw Q}async describe($,Z){await this.call(this.mrPath($),{method:"PUT",body:{description:Z}})}async merge($,Z={}){let Q=Z.strategy==="squash",Y;try{Y=await this.authedFetch(`${this.mrPath($)}/merge`,{method:"PUT",body:{squash:Q,...Z.commitTitle||Z.commitMessage?{[Q?"squash_commit_message":"merge_commit_message"]:[Z.commitTitle,Z.commitMessage].filter(Boolean).join(`
|
|
1106
|
+
}`}function jp4($){let Z=$.author?.login??"";return{number:$.number,title:$.title,url:$.url,state:$.state==="MERGED"?"merged":$.state==="OPEN"?"open":"closed",author:{login:Z,isBot:$.author?.__typename==="Bot"||Xp(Z)},createdAt:$.createdAt,updatedAt:$.updatedAt,mergedAt:$.mergedAt,closedAt:$.closedAt,base:$.baseRefName,head:$.headRefName,additions:$.additions??null,deletions:$.deletions??null,commits:$.commits?{count:$.commits.totalCount??null,items:($.commits.nodes??[]).flatMap((Q)=>Q.commit?.oid&&Q.commit.committedDate?[{sha:Q.commit.oid,date:Q.commit.committedDate}]:[])}:null}}function wp4($){return($??[]).flatMap((Z)=>Z?[jp4(Z)]:[])}function Ep4($){return{sha:$.oid,date:$.committedDate,message:$.messageHeadline??"",...$.messageBody?{body:$.messageBody}:{},author:{name:$.author?.name??null,email:$.author?.email??null,login:$.author?.user?.login??null}}}function Pp4($){return($??[]).flatMap((Z)=>Z?[Ep4(Z)]:[])}function zp4($,Z){if(!Z)return{items:$,reachedWindowEnd:!1};let Q=Date.parse(Z);if(!Number.isFinite(Q))return{items:$,reachedWindowEnd:!1};let Y=[];for(let X of $){if(Date.parse(X.updatedAt)<Q)return{items:Y,reachedWindowEnd:!0};Y.push(X)}return{items:Y,reachedWindowEnd:!1}}function Ap4($,Z){let Q=[],Y=$.tree??[];for(let X of Y){if(Q.length>=Z)return{entries:Q,truncated:!0};if(!X.path)continue;if(X.type!=="blob"&&X.type!=="tree")continue;Q.push({path:X.path,type:X.type,...typeof X.size==="number"?{size:X.size}:{}})}return{entries:Q,truncated:$.truncated===!0}}function Tp4($){return{supported:!0,incomplete:$.incomplete_results===!0,hits:($.items??[]).flatMap((Z)=>{if(!Z.path)return[];let Q=Z.text_matches?.[0]?.fragment;return[{path:Z.path,...Q?{fragment:Q}:{}}]})}}class WQ1{repo;tokenSource;apiBaseUrl;owner;name;defaultBranch=null;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBaseUrl=yK($.repo.host);let{owner:Z,name:Q}=A5($.repo);this.owner=Z,this.name=Q}capabilities(){return{codeSearch:!0,lineStats:"inline"}}async token($){return(await this.tokenSource.get($?{forceRefresh:!0}:void 0))?.token??null}get missingTokenMessage(){return`No usable GitHub token for ${this.repo.path}; reconnect the account`}async requireToken(){let $=await this.token();if($)return $;throw new v0({provider:"github",status:401,message:this.missingTokenMessage})}graphql($){return Np({getToken:(Z)=>this.token(Z),missingTokenMessage:this.missingTokenMessage,...$})}get repoBase(){return`${this.apiBaseUrl}/repos/${this.owner}/${this.name}`}async resolveDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await NZ(this.repoBase,{token:await this.requireToken(),operation:"insights_repo"});if(!$.ok)throw await Y7($,"insights_repo");let Z=await VQ($,"insights_repo");if(!Z.default_branch)throw new v0({provider:"github",status:409,message:`GitHub repository ${this.repo.path} has no default branch (empty repository)`});return this.defaultBranch=Z.default_branch,this.defaultBranch}async listTree($={}){let Z=Q7($.maxEntries,TP,lL),Q=$.ref??await this.resolveDefaultBranch(),Y=await NZ(`${this.repoBase}/git/trees/${encodeURIComponent(Q)}?recursive=1`,{token:await this.requireToken(),operation:"insights_tree"});if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),{ref:Q,entries:[],truncated:!1};if(!Y.ok)throw await Y7(Y,"insights_tree");let X=await VQ(Y,"insights_tree");return{ref:Q,...Ap4(X,Z)}}async readFile($){let Z=Q7($.maxBytes,qP,cL),Q=$.ref??await this.resolveDefaultBranch(),Y=new URLSearchParams({ref:Q}),X=await NZ(`${this.repoBase}/contents/${a3($.path)}?${Y}`,{token:await this.requireToken(),operation:"insights_file",accept:"application/vnd.github.raw"});if(X.status===404)return await X.body?.cancel().catch(()=>{}),{content:null,size:null,truncated:!1};if(!X.ok)throw await Y7(X,"insights_file");return Jp(X,Z)}async searchCode($){let Z=Q7($.limit,20,RP),Q=new URLSearchParams({q:`${$.query} repo:${this.repo.path}`,per_page:String(Z)}),Y=await NZ(`${this.apiBaseUrl}/search/code?${Q}`,{token:await this.requireToken(),operation:"insights_search",accept:"application/vnd.github.text-match+json"});if(Y.status===422)return await Y.body?.cancel().catch(()=>{}),{supported:!0,incomplete:!1,hits:[]};if(!Y.ok)throw await Y7(Y,"insights_search");return Tp4(await VQ(Y,"insights_search"))}async listChangeRequests($){let Z=Q7($.limit,50,MP),Y=(await this.graphql({query:Lp4({includeCommits:$.includeCommits===!0,includeStats:$.includeStats===!0}),variables:{owner:this.owner,name:this.name,limit:Z,after:$.cursor??null,states:Dp4($.state)},label:`change request history for ${this.repo.path}`,operation:"insights_change_requests"})).repository?.pullRequests;if(!Y)return{items:[],nextCursor:null};let{items:X,reachedWindowEnd:J}=zp4(wp4(Y.nodes),$.updatedAfter);return{items:X,nextCursor:J||!Y.pageInfo.hasNextPage?null:Y.pageInfo.endCursor}}async listCommits($){let Z=Q7($.limit,r3,r3),Q=$.ref!==void 0,Y=await this.graphql({query:Op4(Q),variables:{owner:this.owner,name:this.name,since:$.since,limit:Z,after:$.cursor??null,...Q?{ref:$.ref}:{}},label:`commit history for ${this.repo.path}`,operation:"insights_commits"}),J=(Q?Y.repository?.ref?.target:Y.repository?.defaultBranchRef?.target)?.history;if(!J)return{items:[],nextCursor:null};return{items:Pp4(J.nodes),nextCursor:J.pageInfo.hasNextPage?J.pageInfo.endCursor:null}}}var Bp4=100;var IT$=L(()=>{t4();$D0();bP();S5();iq()});function qp4($,Z){let Q=$.find((X)=>UZ(X)===null)??null;if(!Z)return Q??$[0]??null;return $.find((X)=>{let J=UZ(X);return J?.owner===Z.owner&&J?.repo===Z.name})??Q}async function kT$($,Z,Q,Y){if(Q.provider!=="github")return null;if(Y){let J=await $.storage.connections.findById(Y,Z);if(J&&J.status==="active"&&DT$(J))return J}let{items:X}=await $.storage.connections.list(Z,{slug:"mcp-github"});return qp4(X.filter((J)=>J.status==="active"),A5(Q))}function Rp4($){return[...$.filter(VP),...$.filter((Z)=>!VP(Z))]}function Mp4($){let Z=[];for(let Q of Rp4($)){if(Q.status!=="active")continue;let Y=UZ(Q);if(!Y)continue;Z.push({connectionId:Q.id,ref:hi(Y.owner,Y.repo),installationId:Y.installationId})}return Z}async function CT$($,Z){let{items:Q}=await $.storage.connections.list(Z,{slug:"mcp-github"});return Mp4(Q)}var KQ1=L(()=>{vG();t4();g40()});function _T$($){if($==="merged")return"merged";if($==="closed")return"closed";return"open"}function kp4($){if(!$)return null;if(_T$($.state)!=="open")return!1;if(typeof $.has_conflicts==="boolean")return $.has_conflicts;let Z=$.detailed_merge_status;if(Z==="conflict"||Z==="broken_status")return!0;if(Z==="mergeable")return!1;if($.merge_status==="can_be_merged")return!1;if($.merge_status==="cannot_be_merged")return!0;return null}function Cp4($){switch($){case"success":return"passing";case"failed":case"canceled":return"failing";case"created":case"waiting_for_resource":case"preparing":case"pending":case"running":case"scheduled":return"pending";default:return null}}function Sp4($){switch($){case"success":return{state:"completed",conclusion:"success"};case"failed":return{state:"completed",conclusion:"failure"};case"canceled":return{state:"completed",conclusion:"cancelled"};case"skipped":return{state:"completed",conclusion:"skipped"};case"manual":return{state:"completed",conclusion:"action_required"};case"running":return{state:"running",conclusion:null};default:return{state:"queued",conclusion:null}}}function _p4($){if(typeof $==="number")return Number.isFinite($)?$:null;if(typeof $!=="string")return null;let Z=Number.parseInt($,10);return Number.isFinite(Z)?Z:null}function vp4($){let{state:Z,conclusion:Q}=Sp4($.status),Y=$.started_at?Date.parse($.started_at):NaN,X=$.finished_at?Date.parse($.finished_at):NaN;return{id:$.id==null?null:String($.id),name:$.name??"",state:Z,conclusion:Q,url:$.web_url??null,durationMs:Number.isFinite(Y)&&Number.isFinite(X)?X-Y:null,summary:null}}function bp4($,Z){return $.filter((Q)=>Q.system!==!0&&typeof Q.body==="string").map((Q)=>({id:String(Q.id??0),author:Q.author?.username??"",body:Q.body??"",createdAt:Q.created_at??"",updatedAt:Q.updated_at??Q.created_at??"",url:Q.id==null?Z:`${Z}#note_${Q.id}`}))}function xp4($){let Z=0;for(let Q of $){let X=(Q.notes??[]).filter((J)=>J.resolvable===!0);if(X.length===0)continue;if(X.some((J)=>J.resolved!==!0))Z+=1}return Z}function fp4($,Z){if($===406)return!0;return/conflict|cannot be merged/i.test(Z)}class FQ1{repo;tokenSource;apiBase;projectBase;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBase=Hp($.repo.host),this.projectBase=`/projects/${iL($.repo.path)}`}async token($){let Z=await this.tokenSource.get($?{forceRefresh:!0}:void 0);if(Z)return Z.token;throw new v0({provider:"gitlab",status:401,message:`No usable GitLab token for ${this.repo.path}; reconnect the account`})}async authedFetch($,Z={}){let Q=`${this.apiBase}${this.projectBase}${$}`,Y=await dL(Q,await this.token(),Z);if(Y.status===401)await Y.body?.cancel().catch(()=>{}),Y=await dL(Q,await this.token(!0),Z);return Y}async call($,Z={}){let Q=await this.authedFetch($,Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await e3(Q);return Q}async json($,Z){let Q=await this.call($,Z);return Q===null?null:await gK(Q,$)}async jsonArray($,Z){let Q=await this.json($,Z);if(Q===null)return null;if(!Array.isArray(Q))throw new v0({provider:"gitlab",status:502,message:`GitLab ${$} returned a non-array payload`});return Q}mrPath($){return`/merge_requests/${$}`}map($){if(!$.iid||$.iid<=0)throw new v0({provider:"gitlab",status:422,message:"Invalid merge request: missing or invalid iid"});if(!$.source_branch)throw new v0({provider:"gitlab",status:422,message:`Invalid merge request ${$.iid}: missing source branch`});if(!$.target_branch)throw new v0({provider:"gitlab",status:422,message:`Invalid merge request ${$.iid}: missing target branch`});let Z=$.iid,Q=$.source_project_id==null||$.project_id==null||$.source_project_id===$.project_id;return{number:Z,url:$.web_url??_K(this.repo,Z),title:$.title??"",body:$.description??"",state:_T$($.state),draft:$.draft===!0||$.work_in_progress===!0,mergedAt:$.merged_at??null,updatedAt:$.updated_at??null,base:$.target_branch,head:$.source_branch,headSha:$.sha??"",headRepoPath:Q?this.repo.path:null,author:$.author?.username??"",conflicting:kp4($),checks:Cp4(($.head_pipeline??$.pipeline)?.status),changedFiles:_p4($.changes_count)}}async read($){let Z=await this.json(this.mrPath($));return Z?this.map(Z):null}async readForBranch($){let Q=(await this.jsonArray(`/merge_requests?source_branch=${encodeURIComponent($)}&state=all&order_by=updated_at&sort=desc&per_page=1`))?.[0];return Q?this.map(Q):null}async readDetailed($){let Z="number"in $?$.number:(await this.readForBranch($.branch))?.number??null;if(Z===null)return null;let Q=await this.json(this.mrPath(Z));if(!Q)return null;let Y=this.map(Q),X=(Q.head_pipeline??Q.pipeline)?.id??null,[J,G,W]=await Promise.all([this.jsonArray(`${this.mrPath(Z)}/notes?sort=desc&order_by=created_at&per_page=${Vp4}`),this.jsonArray(`${this.mrPath(Z)}/discussions?per_page=${HQ1}`),X===null?Promise.resolve(null):this.jsonArray(`/pipelines/${X}/jobs?per_page=${HQ1}`)]),K=(W??[]).map(vp4),H=xp4(G??[]);return{...Y,checks:K.length>0?Yp(K):Y.checks,checkRuns:K,comments:bp4(J??[],Y.url).reverse(),unresolvedConversations:H,reviewBlocked:Q.detailed_merge_status==="not_approved"||Q.blocking_discussions_resolved===!1}}async listOpen($){return(await this.jsonArray(`/merge_requests?state=opened&order_by=updated_at&sort=desc&per_page=${Math.min($,HQ1)}`)??[]).map((Q)=>this.map(Q))}async lastMergedInto($){let Z=await this.jsonArray(`/merge_requests?state=merged&target_branch=${encodeURIComponent($)}&order_by=updated_at&sort=desc&per_page=20`),Q=null,Y=-1/0;for(let X of Z??[]){let J=X.merged_at?Date.parse(X.merged_at):NaN;if(Number.isNaN(J)||J<=Y)continue;Q=X,Y=J}return Q?this.map(Q):null}async open($){let Z=await this.authedFetch("/merge_requests",{method:"POST",body:{source_branch:$.head,target_branch:$.base,title:$.title,description:$.body||void 0}});if(Z.ok)return this.map(await gK(Z,"open_merge_request"));let Q=await e3(Z);if(/already exists/i.test(Q.message))throw new dq(Q.message,await this.readForBranch($.head).catch(()=>null));throw Q}async describe($,Z){await this.call(this.mrPath($),{method:"PUT",body:{description:Z}})}async merge($,Z={}){let Q=Z.strategy==="squash",Y;try{Y=await this.authedFetch(`${this.mrPath($)}/merge`,{method:"PUT",body:{squash:Q,...Z.commitTitle||Z.commitMessage?{[Q?"squash_commit_message":"merge_commit_message"]:[Z.commitTitle,Z.commitMessage].filter(Boolean).join(`
|
|
1107
1107
|
|
|
1108
|
-
`)}:{}}})}catch(J){let G=J instanceof Error?J.message:String(J);return{merged:!1,reason:J instanceof
|
|
1109
|
-
`)[0]||Q,J=await this.findOpenChangeRequest($,Z)??await this.createChangeRequest({base:$,head:Z,title:X});return this.mergeChangeRequest(J.number,$,Q)}async createChangeRequest($){let Z=await this.json(`${this.projectBase}/merge_requests`,{method:"POST",body:{source_branch:$.head,target_branch:$.base,title:$.title}});if(!Z)throw new
|
|
1108
|
+
`)}:{}}})}catch(J){let G=J instanceof Error?J.message:String(J);return{merged:!1,reason:J instanceof v0&&J.isRateLimited?"rate_limited":"error",detail:G}}if(Y.ok)return await Y.body?.cancel().catch(()=>{}),{merged:!0};let X=await e3(Y);return{merged:!1,reason:await this.classifyRefusal($,Y.status,X.message),detail:X.message}}async classifyRefusal($,Z,Q){if(Z===404)return"not_found";if(Z===429)return"rate_limited";if(fp4(Z,Q))return"conflict";return await this.read($).then((X)=>X?.conflicting??null).catch(()=>null)===!0?"conflict":"blocked"}async readCheckLog($){let Z=await this.call(`/jobs/${encodeURIComponent($)}/trace`,{accept:"text/plain"});if(Z===null)return null;let Q=await Z.text();if(!Q)return null;return Q.length>ST$?Q.slice(Q.length-ST$):Q}async readDeployedUrl($){let Z=await this.jsonArray(`/deployments?order_by=id&sort=desc&per_page=${Ip4}`);for(let Q of Z??[]){if(Q.sha!==$)continue;if(Q.status!=="success")continue;let Y=Q.environment?.external_url;if(typeof Y==="string"&&Y.length>0)return Y}return null}}var HQ1=100,Vp4=50,Ip4=30,ST$=8000;var vT$=L(()=>{t4();fP();k40();S5();w40()});function yp4($){let Z=$.replace(/^\/+/,""),Q=Z.lastIndexOf("/");return Q===-1?"":Z.slice(0,Q)}function ZD0($){let Z=new Map,Q=new Set;for(let Y of $){let X=Y.replace(/^\/+/,"");if(X===""||Q.has(X))continue;Q.add(X);let J=yp4(X),G=Z.get(J);if(G)G.push(X);else Z.set(J,[X])}return Z}function QD0($){return $?`${$}/.deco`:".deco"}function up4($){return/not allowed to force push|protected branch/i.test($)}function cp4($){if($.length===0)throw new v0({provider:"gitlab",status:400,message:"Path cannot be empty"});if($.length>bT$)throw new v0({provider:"gitlab",status:400,message:`Path exceeds maximum length of ${bT$}: ${$}`});if($.includes("\x00"))throw new v0({provider:"gitlab",status:400,message:"Path cannot contain null bytes"});let Z=$.split("/").at(-1)??"";if(lp4.has(Z))throw new v0({provider:"gitlab",status:400,message:`"${Z}" is a reserved Git file name and cannot be written`})}function mp4($,Z){let Q=new Map;for(let X of $)Q.set(X.path,X);let Y=[];for(let[X,J]of Q){cp4(X);let G=Z.get(X)??null;if("deleted"in J){if(G===null)continue;Y.push({action:"delete",file_path:X,last_commit_id:G});continue}let W=J.mode===void 0?{}:{execute_filemode:J.mode==="100755"};Y.push(G===null?{action:"create",file_path:X,content:J.content,...W}:{action:"update",file_path:X,content:J.content,...W,last_commit_id:G})}return Y}function dp4($,Z){if($!==400&&$!==409)return!1;return/has changed since you started editing it/i.test(Z)||/file with this name already exists/i.test(Z)||/file with this name doesn'?t exist/i.test(Z)}function ip4($,Z){return $===400&&/already exists/i.test(Z)}function pp4($){if($==="opened")return"open";if($==="merged")return"merged";return"closed"}function xT$($){return{number:$.iid,url:$.web_url??"",title:$.title??"",state:pp4($.state)}}function np4($,Z){let Q=$.new_file?"added":$.deleted_file?"removed":$.renamed_file?"renamed":"modified";return{filename:$.new_path,status:Q,sha:Z.get($.new_path)??"",...$.renamed_file&&$.old_path?{previousFilename:$.old_path}:{}}}async function BQ1($,Z,Q){let Y=Array($.length),X=0,J=async()=>{while(!0){let W=X++;if(W>=$.length)return;Y[W]=await Q($[W])}},G=Math.max(1,Math.min(Z,$.length));return await Promise.all(Array.from({length:G},J)),Y}class LQ1{repo;apiBase;projectBase;provider;defaultBranch=null;constructor($){this.repo=$.repo,this.apiBase=Hp($.repo.host),this.projectBase=`/projects/${iL($.repo.path)}`,this.provider=new S40({host:$.repo.host,tokenSource:$.tokenSource})}async getDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await this.json(this.projectBase);if($===null)throw new v0({provider:"gitlab",status:404,message:`GitLab project ${this.repo.path} not found`});if(!$.default_branch)throw new v0({provider:"gitlab",status:409,message:`GitLab project ${this.repo.path} has no default branch (empty repository)`});return this.defaultBranch=$.default_branch,this.defaultBranch}async getBranch($){let Q=(await this.json(`${this.projectBase}/repository/branches/${DQ1($)}`))?.commit?.id;return Q?{sha:Q}:null}async searchBranches($){let Z=Number($.cursor)||1,Q=await this.call(`${this.projectBase}/repository/branches?search=${encodeURIComponent($.query)}&per_page=${Math.min($.limit,UQ1)}&page=${Z}`);if(Q===null)return{branches:[],totalCount:0,nextCursor:null};let Y=await gK(Q,"searchBranches");if(!Array.isArray(Y))throw new v0({provider:"gitlab",status:502,message:"GitLab /repository/branches returned a non-array payload"});let X=Y.flatMap((W)=>typeof W.name==="string"?[{name:W.name,author:W.commit?.author_name??null}]:[]),J=Number(Q.headers.get("x-total")),G=Q.headers.get("x-next-page");return{branches:X,totalCount:Number.isFinite(J)?J:X.length,nextCursor:G?G:null}}getArchive($){return this.provider.archiveTarball(this.repo,$)}async listDecofileEntries($,Z){let Q=QD0(Z),Y=await this.listTree($,Q),X=[],J=Y.find((W)=>W.type==="blob"&&W.path===`${Q}/blocks.gen.json`);if(J)X.push(J);if(!Y.some((W)=>W.type==="tree"&&W.path===`${Q}/blocks`))return X;for(let W of await this.listTree($,`${Q}/blocks`))if(W.type==="blob")X.push(W);return X}async getEntriesAtPaths($,Z){let Q=ZD0(Z),Y=await BQ1([...Q.keys()],NQ1,(G)=>this.listTree($,G)),X=new Map,J=0;for(let G of Q.values()){let W=new Map((Y[J++]??[]).map((K)=>[K.path,K]));for(let K of G){let H=W.get(K);if(H?.type==="blob")X.set(K,H)}}return X}async readBlob($){let Z=await this.call(`${this.projectBase}/repository/blobs/${encodeURIComponent($)}/raw`,{accept:"text/plain, */*"});if(Z===null)throw new v0({provider:"gitlab",status:404,message:`GitLab blob ${$} not found in ${this.repo.path}`});return Z.text()}async readCommit($){let Z=await this.json(`${this.projectBase}/repository/commits/${DQ1($)}`);if(typeof Z?.message!=="string")return null;return{message:Z.message,date:Z.committed_date??Z.created_at??""}}async readFileAtRef($,Z){let Q=await this.call(`${this.projectBase}/repository/files/${C40(Z)}/raw?ref=${encodeURIComponent($)}`,{accept:"text/plain, */*"});return Q===null?null:Q.text()}async commitFiles($){let{branch:Z,message:Q,expectedHead:Y,rewriteFrom:X}=$,J=await this.getBranch(Z);if(Y!==null&&J?.sha!==Y)throw new h6(`GitLab branch ${Z} is at ${J?.sha??"(absent)"}, expected ${Y}`);let G=await this.resolveCopies($.changes);if(X!==void 0)return this.rewriteBranch({branch:Z,message:Q,expectedHead:Y,rewriteFrom:X,changes:G});let W=J?.sha??Z,K=await this.commitOnto({branch:Z,base:W,message:Q,changes:G});if(K===null){if(J===null)throw new v0({provider:"gitlab",status:404,message:`GitLab branch ${Z} does not exist in ${this.repo.path}`});return{sha:J.sha}}return{sha:K}}async rewriteBranch($){let{branch:Z,message:Q,expectedHead:Y,rewriteFrom:X,changes:J}=$;await this.assertHeadIs(Z,Y);let G=await this.commitOnto({branch:Z,base:X,message:Q,changes:J,startSha:X,force:!0}).catch((H)=>{if(H instanceof v0&&up4(H.message))return;throw H});if(G!==void 0)return{sha:G??X};let W=`studio-rewrite-${crypto.randomUUID().replaceAll("-","").slice(0,12)}`;await this.createBranch(W,X);let K;try{K=await this.commitOnto({branch:W,base:X,message:Q,changes:J})??X;let H=await this.getBranch(Z);if(Y!==null&&H?.sha!==Y)throw new h6(`GitLab branch ${Z} moved to ${H?.sha??"(absent)"} while rewriting it`)}catch(H){throw await this.deleteBranch(W).catch(()=>{}),H}return await this.deleteBranch(Z),await this.createBranchAt(Z,K),await this.deleteBranch(W).catch(()=>{}),{sha:K}}async assertHeadIs($,Z){if(Z===null)return;let Q=await this.getBranch($);if(Q?.sha!==Z)throw new h6(`GitLab branch ${$} is at ${Q?.sha??"(absent)"}, not ${Z}`)}async commitOnto($){let{branch:Z,base:Q,message:Y,changes:X,startSha:J,force:G}=$,W=[...new Set(X.map((U)=>U.path))],K=new Map(await BQ1(W,NQ1,async(U)=>[U,await this.lastCommitIdFor(Q,U)])),H=mp4(X,K);if(H.length===0)return null;let F;try{F=await this.json(`${this.projectBase}/repository/commits`,{method:"POST",body:{branch:Z,commit_message:Y,actions:H,...J?{start_sha:J}:{},...G?{force:!0}:{}}})}catch(U){if(U instanceof v0&&dp4(U.status,U.message))throw new h6(`GitLab refused the commit on ${Z}: ${U.message}`,{cause:U});throw U}if(!F?.id)throw new v0({provider:"gitlab",status:502,message:`GitLab accepted the commit on ${Z} without returning a sha`});return F.id}resolveCopies($){return BQ1($,NQ1,async(Z)=>{if(!("copyFromRef"in Z))return Z;let Q=await this.fileAtRef(Z.copyFromRef,Z.path);if(Q===null)throw new v0({provider:"gitlab",status:404,message:`${Z.path} does not exist at ${Z.copyFromRef} in ${this.repo.path}`});return{path:Z.path,content:Q.content,mode:Z.mode??Q.mode}})}async createBranch($,Z){try{await this.createBranchAt($,Z)}catch(Q){if(Q instanceof v0&&ip4(Q.status,Q.message))throw new h6(`GitLab branch ${$} already exists in ${this.repo.path}`,{cause:Q});throw Q}}async forceBranchHead($,Z){await this.deleteBranch($),await this.createBranchAt($,Z)}async mergeBranches($,Z,Q){if((await this.compareRaw($,Z)).commits.length===0)return null;let X=Q.split(`
|
|
1109
|
+
`)[0]||Q,J=await this.findOpenChangeRequest($,Z)??await this.createChangeRequest({base:$,head:Z,title:X});return this.mergeChangeRequest(J.number,$,Q)}async createChangeRequest($){let Z=await this.json(`${this.projectBase}/merge_requests`,{method:"POST",body:{source_branch:$.head,target_branch:$.base,title:$.title}});if(!Z)throw new v0({provider:"gitlab",status:404,message:`GitLab project ${this.repo.path} not found`});return xT$(Z)}async findOpenChangeRequest($,Z){let Q=new URLSearchParams({state:"opened",source_branch:Z,target_branch:$,per_page:"1"}),Y=await this.json(`${this.projectBase}/merge_requests?${Q}`),X=Array.isArray(Y)?Y[0]:void 0;return X?xT$(X):null}async compare($,Z){let[Q,Y]=await Promise.all([this.compareRaw($,Z),this.compareRaw(Z,$)]);return{aheadBy:Q.commits.length,behindBy:Y.commits.length}}async compareDetailed($,Z){let[Q,Y,X]=await Promise.all([this.compareRaw($,Z),this.compareRaw(Z,$),this.mergeBaseSha($,Z)]),J=Q.diffs.filter((K)=>!K.deleted_file).map((K)=>K.new_path),G=await this.getEntriesAtPaths(Z,J),W=new Map([...G].map(([K,H])=>[K,H.sha]));return{aheadBy:Q.commits.length,behindBy:Y.commits.length,mergeBaseSha:X,files:Q.diffs.map((K)=>np4(K,W)),commitMessages:Q.commits.map((K)=>K.title??"").filter((K)=>K.length>0)}}async createBranchAt($,Z){let Q=new URLSearchParams({branch:$,ref:Z});if(await this.call(`${this.projectBase}/repository/branches?${Q}`,{method:"POST"})===null)throw new v0({provider:"gitlab",status:404,message:`GitLab could not branch ${$} from ${Z}: project or ref not found`})}async mergeChangeRequest($,Z,Q){let Y=async()=>{let X=await this.json(`${this.projectBase}/merge_requests/${$}/merge`,{method:"PUT",body:{merge_commit_message:Q}});if(!X)throw new v0({provider:"gitlab",status:404,message:`GitLab merge request !${$} not found in ${this.repo.path}`});if(X.state!=="merged")throw new v0({provider:"gitlab",status:409,message:`GitLab left merge request !${$} in state ${X.state??"unknown"}`});if(X.merge_commit_sha)return X.merge_commit_sha;let G=(await this.getBranch(Z))?.sha??X.sha;if(!G)throw new v0({provider:"gitlab",status:502,message:`GitLab merged !${$} without reporting a commit sha`});return G};try{return await e$(Y,{maxAttempts:4,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:(X)=>X instanceof v0&&X.status===405})}catch(X){if(X instanceof e6&&X.cause instanceof v0)throw X.cause;throw X}}async deleteBranch($){await this.call(`${this.projectBase}/repository/branches/${DQ1($)}`,{method:"DELETE"})}async lastCommitIdFor($,Z){return(await this.json(`${this.projectBase}/repository/files/${C40(Z)}?ref=${encodeURIComponent($)}`))?.last_commit_id??null}async fileAtRef($,Z){let Q=await this.json(`${this.projectBase}/repository/files/${C40(Z)}?ref=${encodeURIComponent($)}`);if(!Q||Q.content===void 0)return null;if(Q.encoding!=="base64")throw new v0({provider:"gitlab",status:502,message:`GitLab served ${Z} at ${$} with unexpected encoding ${Q.encoding}`});return{content:Buffer.from(Q.content,"base64").toString("utf-8"),mode:Q.execute_filemode===!0?"100755":"100644"}}async listTree($,Z){let Q=[],Y=1;for(let X=0;X<hp4;X++){let J=new URLSearchParams({ref:$,per_page:String(UQ1),page:String(Y)});if(Z)J.set("path",Z);let G=await this.call(`${this.projectBase}/repository/tree?${J}`);if(G===null)return Q;let W=await gK(G,"listTree");if(!Array.isArray(W))throw new v0({provider:"gitlab",status:502,message:"GitLab /repository/tree returned a non-array payload"});for(let H of W)Q.push({path:H.path,sha:H.id,type:H.type==="tree"?"tree":"blob"});let K=Number(G.headers.get("x-next-page")??"");if(W.length<UQ1||!Number.isFinite(K)||K<=Y)break;Y=K}return Q}async compareRaw($,Z){let Q=new URLSearchParams({from:$,to:Z,straight:"false"}),Y=await this.json(`${this.projectBase}/repository/compare?${Q}`);if(!Y)throw new v0({provider:"gitlab",status:404,message:`GitLab cannot compare ${$}...${Z} in ${this.repo.path}`});return{commits:Y.commits??[],diffs:Y.diffs??[]}}async mergeBaseSha($,Z){let Q=new URLSearchParams;return Q.append("refs[]",$),Q.append("refs[]",Z),(await this.json(`${this.projectBase}/repository/merge_base?${Q}`))?.id??""}async json($,Z){let Q=await this.call($,Z);if(Q===null)return null;return gK(Q,$)}async call($,Z={}){let{token:Q}=await this.provider.tokenForRepo(this.repo),Y={Authorization:`Bearer ${Q}`,Accept:Z.accept??"application/json"};if(Z.body!==void 0)Y["Content-Type"]="application/json";let X;try{X=await fetch(`${this.apiBase}${$}`,{method:Z.method??"GET",headers:Y,body:Z.body===void 0?void 0:JSON.stringify(Z.body),signal:AbortSignal.timeout(gp4)})}catch(J){throw new v0({provider:"gitlab",status:0,message:`GitLab request failed: ${J instanceof Error?J.message:String(J)}`,cause:J})}if(X.status===404)return null;if(!X.ok)throw await e3(X);return X}}function DQ1($){return encodeURIComponent($)}var gp4=15000,UQ1=100,hp4=100,NQ1=8,lp4,bT$=1024;var fT$=L(()=>{p$();fP();k40();S5();j40();lp4=new Set([".gitmodules"])});function sp4($){if($==="merged")return"merged";if($==="closed")return"closed";return"open"}function rp4($){switch($){case"merged":return"merged";case"open":return"opened";case"all":return null}}function ap4($){return typeof $.iid==="number"&&$.iid>0}function ep4($,Z){let Q=$.iid??0,Y=$.author?.username??"";return{number:Q,title:$.title??"",url:$.web_url??Z(Q),state:sp4($.state),author:{login:Y,isBot:$.author?.bot===!0||Xp(Y)},createdAt:$.created_at??"",updatedAt:$.updated_at??$.created_at??"",mergedAt:$.merged_at??null,closedAt:$.closed_at??null,base:$.target_branch??"",head:$.source_branch??"",additions:null,deletions:null,commits:null}}function $n4($){return{sha:$.id??"",date:$.committed_date??$.created_at??"",message:$.title??Qn4($.message??""),...Zn4($.message),author:{name:$.author_name??null,email:$.author_email??null,login:null}}}function Zn4($=""){let Z=$.indexOf(`
|
|
1110
1110
|
`),Q=Z===-1?"":$.slice(Z+1).trim();return Q?{body:Q}:{}}function Qn4($){let Z=$.indexOf(`
|
|
1111
|
-
`);return Z===-1?$:$.slice(0,Z)}function Yn4($){let Z=$.get("x-next-page");if(!Z)return null;let Q=Number(Z);return Number.isInteger(Q)&&Q>0?String(Q):null}function Xn4($){return $.flatMap((Z)=>Z.path?[{path:Z.path,type:Z.type==="tree"?"tree":"blob"}]:[])}class OQ1{repo;tokenSource;apiBase;projectBase;defaultBranch=null;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBase=Hp($.repo.host),this.projectBase=`/projects/${iL($.repo.path)}`}capabilities(){return{codeSearch:!0,lineStats:"none"}}async token(){let $=await this.tokenSource.get();if($)return $.token;throw new
|
|
1111
|
+
`);return Z===-1?$:$.slice(0,Z)}function Yn4($){let Z=$.get("x-next-page");if(!Z)return null;let Q=Number(Z);return Number.isInteger(Q)&&Q>0?String(Q):null}function Xn4($){return $.flatMap((Z)=>Z.path?[{path:Z.path,type:Z.type==="tree"?"tree":"blob"}]:[])}class OQ1{repo;tokenSource;apiBase;projectBase;defaultBranch=null;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.apiBase=Hp($.repo.host),this.projectBase=`/projects/${iL($.repo.path)}`}capabilities(){return{codeSearch:!0,lineStats:"none"}}async token(){let $=await this.tokenSource.get();if($)return $.token;throw new v0({provider:"gitlab",status:401,message:`No usable GitLab token for ${this.repo.path}; reconnect the account`})}async call($,Z={}){let Q=await dL(`${this.apiBase}${this.projectBase}${$}`,await this.token(),{accept:Z.accept});if(!Q.ok&&!Z.allow?.includes(Q.status))throw await e3(Q);return Q}async json($){return await(await this.call($)).json()}async rows($){let Z=await this.call($),Q=await Z.json();if(!Array.isArray(Q))throw new v0({provider:"gitlab",status:502,message:`GitLab ${$} returned a non-array payload`});return{rows:Q,nextCursor:Yn4(Z.headers)}}async resolveDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await this.json("");if(!$.default_branch)throw new v0({provider:"gitlab",status:409,message:`GitLab project ${this.repo.path} has no default branch (empty repository)`});return this.defaultBranch=$.default_branch,this.defaultBranch}async listTree($={}){let Z=Q7($.maxEntries,TP,lL),Q=$.ref??await this.resolveDefaultBranch(),Y=[],X="1",J=0;while(X!==null&&Y.length<Z){if(J++>=op4)break;let W=new URLSearchParams({ref:Q,recursive:"true",per_page:String(yT$),page:X}),K=await this.rows(`/repository/tree?${W}`);Y.push(...Xn4(K.rows)),X=K.nextCursor}let G=Y.length>Z||X!==null;return{ref:Q,entries:Y.slice(0,Z),truncated:G}}async readFile($){let Z=Q7($.maxBytes,qP,cL),Q=$.ref??await this.resolveDefaultBranch(),Y=new URLSearchParams({ref:Q}),X=await this.call(`/repository/files/${Jn4($.path)}/raw?${Y}`,{allow:[404]});if(X.status===404)return await X.body?.cancel().catch(()=>{}),{content:null,size:null,truncated:!1};return Jp(X,Z)}async searchCode($){let Z=Q7($.limit,20,RP),Q=new URLSearchParams({scope:"blobs",search:$.query,per_page:String(Z)}),Y=await this.call(`/search?${Q}`,{allow:[400,403,404,501]});if(!Y.ok)return await Y.body?.cancel().catch(()=>{}),{supported:!1,incomplete:!1,hits:[]};let X=await Y.json();if(!Array.isArray(X))return{supported:!1,incomplete:!1,hits:[]};return{supported:!0,incomplete:X.length>=Z,hits:X.flatMap((J)=>J.path?[{path:J.path,...J.data?{fragment:J.data}:{}}]:[])}}async listChangeRequests($){let Z=Q7($.limit,50,MP),Q=new URLSearchParams({order_by:"updated_at",sort:"desc",per_page:String(Z),page:String(v71($.cursor))}),Y=rp4($.state);if(Y)Q.set("state",Y);if($.updatedAfter)Q.set("updated_after",$.updatedAfter);let X=await this.rows(`/merge_requests?${Q}`),J=X.rows.filter(ap4).map((W)=>ep4(W,(K)=>_K(this.repo,K)));if($.includeCommits!==!0)return{items:J,nextCursor:X.nextCursor};return{items:await k5(J,tp4,async(W)=>({...W,commits:await this.mergeRequestCommits(W.number)})),nextCursor:X.nextCursor}}async mergeRequestCommits($){let{rows:Z}=await this.rows(`/merge_requests/${$}/commits?per_page=${yT$}`),Q=Z.flatMap((Y)=>Y.id?[{sha:Y.id,date:Y.committed_date??Y.created_at??""}]:[]);return{count:Q.length,items:Q}}async listCommits($){let Z=Q7($.limit,r3,r3),Q=$.ref??await this.resolveDefaultBranch(),Y=new URLSearchParams({ref_name:Q,since:$.since,per_page:String(Z),page:String(v71($.cursor))}),X=await this.rows(`/repository/commits?${Y}`);return{items:X.rows.map($n4),nextCursor:X.nextCursor}}}function Jn4($){return encodeURIComponent($)}var tp4=4,yT$=100,op4=40;var gT$=L(()=>{p$();t4();fP();k40();S5();iq()});function Kn4($){if($==="MERGED")return"merged";if($==="DECLINED"||$==="SUPERSEDED")return"closed";return"open"}function Hn4($){switch($){case"SUCCESSFUL":return{state:"completed",conclusion:"success"};case"FAILED":return{state:"completed",conclusion:"failure"};case"STOPPED":return{state:"completed",conclusion:"cancelled"};case"INPROGRESS":return{state:"running",conclusion:null};default:return{state:"queued",conclusion:null}}}function Fn4($){let{state:Z,conclusion:Q}=Hn4($.state),Y=$.created_on?Date.parse($.created_on):NaN,X=$.updated_on?Date.parse($.updated_on):NaN;return{id:$.key??null,name:$.name??$.key??"",state:Z,conclusion:Q,url:$.url??null,durationMs:Z==="completed"&&Number.isFinite(Y)&&Number.isFinite(X)?Math.max(0,X-Y):null,summary:$.description??null}}function Un4($,Z){return $.filter((Q)=>Q.deleted!==!0&&!Q.inline&&typeof Q.content?.raw==="string").map((Q)=>({id:String(Q.id??0),author:Q.user?.nickname??"",body:Q.content?.raw??"",createdAt:Q.created_on??"",updatedAt:Q.updated_on??Q.created_on??"",url:Q.links?.html?.href??(Q.id==null?Z:`${Z}#comment-${Q.id}`)})).sort((Q,Y)=>Q.createdAt.localeCompare(Y.createdAt))}function Nn4($){let Z=0;for(let Q of $){if(Q.deleted===!0)continue;if(!Q.inline||Q.parent)continue;if(Q.resolution==null)Z+=1}return Z}function hT$($){if($===null)return null;return $.some((Z)=>Z.status==="merge conflict")}function Bn4($){return($.participants??[]).some((Z)=>Z.state==="changes_requested")}function Dn4($){return/conflict/i.test($)}class jQ1{repo;tokenSource;repoBase;constructor($){this.repo=$.repo,this.tokenSource=$.tokenSource,this.repoBase=`${IQ}${yP($.repo)}`}async token($){let Z=await this.tokenSource.get($?{forceRefresh:!0}:void 0);if(Z)return Z.token;throw new v0({provider:"bitbucket",status:401,message:`No usable Bitbucket token for ${this.repo.path}; reconnect the account`})}async call($,Z={}){let Q=await wX(`${this.repoBase}${$}`,await this.token(),Z);if(Q.status===401)await Q.body?.cancel().catch(()=>{}),Q=await wX(`${this.repoBase}${$}`,await this.token(!0),Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await qJ(Q);return Q}async json($,Z){let Q=await this.call($,Z);return Q===null?null:await Q.json()}async values($){let Z=await this.json($);return Z===null?null:Z.values??[]}prPath($){return`/pullrequests/${$}`}map($){let Z=$.id??0,Q=Kn4($.state);return{number:Z,url:$.links?.html?.href??_K(this.repo,Z),title:$.title??"",body:$.description??"",state:Q,draft:$.draft===!0,mergedAt:Q==="merged"?$.updated_on??null:null,updatedAt:$.updated_on??null,base:$.destination?.branch?.name??"main",head:$.source?.branch?.name??"",headSha:$.source?.commit?.hash??"",headRepoPath:$.source?.repository?.full_name??null,author:$.author?.nickname??"",conflicting:null,checks:null,changedFiles:null}}async read($){let Z=await this.json(this.prPath($));return Z?this.map(Z):null}async readForBranch($){let Z=new URLSearchParams({q:`source.branch.name = ${$W($)}`,sort:"-updated_on",pagelen:"1"});for(let X of["OPEN","MERGED","DECLINED","SUPERSEDED"])Z.append("state",X);let Y=(await this.values(`/pullrequests?${Z}`))?.[0];return Y?this.map(Y):null}async readDetailed($){let Z="number"in $?$.number:(await this.readForBranch($.branch))?.number??null;if(Z===null)return null;let Q=await this.json(this.prPath(Z));if(!Q)return null;let Y=this.map(Q),[X,J,G]=await Promise.all([Y.headSha?this.values(`/commit/${encodeURIComponent(Y.headSha)}/statuses?pagelen=${YD0}`):Promise.resolve(null),this.values(`${this.prPath(Z)}/comments?pagelen=${YD0}`),this.json(`${this.prPath(Z)}/diffstat?pagelen=${YD0}`)]),W=(X??[]).map(Fn4),K=G?.values??null;return{...Y,conflicting:hT$(K),checks:Yp(W),changedFiles:G?.size??K?.length??null,checkRuns:W,comments:Un4(J??[],Y.url),unresolvedConversations:Nn4(J??[]),reviewBlocked:Bn4(Q)}}async listOpen($){return(await this.values(`/pullrequests?state=OPEN&sort=-updated_on&pagelen=${Math.min($,Gn4)}`)??[]).map((Q)=>this.map(Q))}async lastMergedInto($){let Z=new URLSearchParams({state:"MERGED",q:`destination.branch.name = ${$W($)}`,sort:"-updated_on",pagelen:String(Wn4)}),Q=await this.values(`/pullrequests?${Z}`),Y=null,X=-1/0;for(let J of Q??[]){let G=this.map(J),W=G.mergedAt?Date.parse(G.mergedAt):NaN;if(Number.isNaN(W)||W<=X)continue;Y=G,X=W}return Y}async open($){let Z=await this.openFor($.head,$.base);if(Z)throw new dq(`Bitbucket already has an open pull request from ${$.head} to ${$.base}: #${Z.number}`,Z);let Q=await wX(`${this.repoBase}/pullrequests`,await this.token(),{method:"POST",body:{title:$.title,description:$.body||void 0,source:{branch:{name:$.head}},destination:{branch:{name:$.base}}}});if(Q.ok)return this.map(await Q.json());throw await qJ(Q)}async openFor($,Z){let Q=new URLSearchParams({state:"OPEN",q:`source.branch.name = ${$W($)} AND destination.branch.name = ${$W(Z)}`,pagelen:"1"}),X=(await this.values(`/pullrequests?${Q}`))?.[0];return X?this.map(X):null}async describe($,Z){let Q=await this.json(this.prPath($));if(!Q)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket pull request #${$} not found in ${this.repo.path}`});await this.call(this.prPath($),{method:"PUT",body:{title:Q.title??"",description:Z}})}async merge($,Z={}){let Q=[Z.commitTitle,Z.commitMessage].filter(Boolean).join(`
|
|
1112
1112
|
|
|
1113
|
-
`),Y;try{Y=await wX(`${this.repoBase}${this.prPath($)}/merge`,await this.token(),{method:"POST",body:{type:"pullrequest",merge_strategy:Z.strategy==="squash"?"squash":"merge_commit",close_source_branch:!1,...Q?{message:Q}:{}}})}catch(J){let G=J instanceof Error?J.message:String(J);return{merged:!1,reason:J instanceof
|
|
1114
|
-
`)[0]||Q,J=await this.findOpenChangeRequest($,Z)??await this.createChangeRequest({base:$,head:Z,title:X});return this.mergePullRequest(J.number,$,Q)}async createChangeRequest($){let Z=await this.json(`${this.repoBase}/pullrequests`,{method:"POST",body:{title:$.title,source:{branch:{name:$.head}},destination:{branch:{name:$.base}}}});if(!Z)throw new
|
|
1115
|
-
`)[0]??"").filter((W)=>W.length>0)}}async createBranchAt($,Z){let Q=await this.call(`${this.repoBase}/refs/branches`,{method:"POST",body:{name:$,target:{hash:Z}}});if(Q===null)throw new
|
|
1113
|
+
`),Y;try{Y=await wX(`${this.repoBase}${this.prPath($)}/merge`,await this.token(),{method:"POST",body:{type:"pullrequest",merge_strategy:Z.strategy==="squash"?"squash":"merge_commit",close_source_branch:!1,...Q?{message:Q}:{}}})}catch(J){let G=J instanceof Error?J.message:String(J);return{merged:!1,reason:J instanceof v0&&J.isRateLimited?"rate_limited":"error",detail:G}}if(Y.status===202)return await Y.body?.cancel().catch(()=>{}),this.awaitAsyncMerge($);if(Y.ok)return await Y.body?.cancel().catch(()=>{}),{merged:!0};let X=await qJ(Y);return{merged:!1,reason:await this.classifyRefusal($,Y.status,X.message),detail:X.message}}async awaitAsyncMerge($){try{let Z=await e$(async()=>{let Q=await this.read($);if(!Q)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket pull request #${$} vanished while merging`});if(Q.state==="open")throw new v0({provider:"bitbucket",status:202,message:"merge still in progress"});return Q.state},{maxAttempts:6,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:(Q)=>Q instanceof v0&&Q.status===202});return Z==="merged"?{merged:!0}:{merged:!1,reason:"blocked",detail:`Bitbucket left pull request #${$} ${Z}`}}catch(Z){let Q=Z instanceof e6?Z.cause:Z;if(Q instanceof v0&&Q.status===202)return{merged:!1,reason:"error",detail:`Bitbucket is still merging pull request #${$}; check again shortly`};if(Q instanceof v0&&Q.status===404)return{merged:!1,reason:"not_found",detail:Q.message};return{merged:!1,reason:"error",detail:Q instanceof Error?Q.message:String(Q)}}}async classifyRefusal($,Z,Q){if(Z===404)return"not_found";if(Z===429)return"rate_limited";if(Dn4(Q))return"conflict";let Y=await this.values(`${this.prPath($)}/diffstat?pagelen=${YD0}`).catch(()=>null);return hT$(Y)===!0?"conflict":"blocked"}async readCheckLog($){return null}async readDeployedUrl($){return null}}var Gn4=50,YD0=100,Wn4=20;var uT$=L(()=>{t4();p$();S5();w40();eq();v40()});function wQ1($,Z){return`${$}:${Z}`}function lT$($){let Z=$.indexOf(":");if(Z<=0||Z===$.length-1)throw new v0({provider:"bitbucket",status:400,message:`${$} is not a Bitbucket tree sha (expected <commit>:<path>)`});return{commit:$.slice(0,Z),path:$.slice(Z+1)}}function On4($,Z){if(typeof $.path!=="string"||$.path.length===0)return null;let Q=$.type==="commit_file"?"blob":$.type==="commit_directory"?"tree":null;if(Q===null)return null;let Y=$.commit?.hash??Z;return{path:$.path,sha:wQ1(Y,$.path),type:Q,...Q==="blob"&&typeof $.size==="number"?{size:$.size}:{}}}function jn4($){let Z=new Map;for(let X of $.changes)Z.set(X.path,X);let Q=new FormData,Y=0;for(let[X,J]of Z){if("deleted"in J){if(!$.existsAtParent(X))continue;Q.append("files",X)}else Q.append(X,J.content);Y+=1}if(Y===0)return null;return Q.append("message",$.message),Q.append("branch",$.branch),Q.append("parents",$.parent),Q}function wn4($,Z){if($!==400&&$!==409)return!1;return/parent|tip|fast[- ]?forward|behind|conflict|out of date/i.test(Z)}function En4($,Z){return $===400&&/already exists|BRANCH_ALREADY_EXISTS/i.test(Z)}function Pn4($){if($==="OPEN")return"open";if($==="MERGED")return"merged";return"closed"}function cT$($){return{number:$.id,url:$.links?.html?.href??"",title:$.title??"",state:Pn4($.state)}}function zn4($,Z){let Q=$.new?.path??$.old?.path;if(!Q)return null;let Y=$.status??"modified",X=Y==="renamed"&&$.old?.path&&$.old.path!==Q;return{filename:Q,status:Y,sha:Y==="removed"?"":wQ1(Z,Q),...X?{previousFilename:$.old.path}:{}}}function An4($){let Z=$.target?.author;if(Z?.user?.nickname)return Z.user.nickname;let Q=Z?.raw?.trim();if(!Q)return null;return Q.replace(/\s*<[^>]*>\s*$/,"").trim()||null}class EQ1{repo;repoBase;provider;defaultBranch=null;constructor($){this.repo=$.repo,this.repoBase=yP($.repo),this.provider=new b40({host:$.repo.host,tokenSource:$.tokenSource})}async getDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await this.json(this.repoBase);if($===null)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket repository ${this.repo.path} not found`});if(!$.mainbranch?.name)throw new v0({provider:"bitbucket",status:409,message:`Bitbucket repository ${this.repo.path} has no main branch (empty repository)`});return this.defaultBranch=$.mainbranch.name,this.defaultBranch}async getBranch($){let Q=(await this.json(`${this.repoBase}/refs/branches/${ZW($)}`))?.target?.hash;return Q?{sha:Q}:null}async searchBranches($){let Z=Number($.cursor)||1,Q=new URLSearchParams({sort:"name",pagelen:String(Math.min($.limit,XD0)),page:String(Z)});if($.query)Q.set("q",`name ~ ${$W($.query)}`);let Y=await this.json(`${this.repoBase}/refs/branches?${Q}`);if(Y===null)return{branches:[],totalCount:0,nextCursor:null};let X=(Y.values??[]).flatMap((G)=>typeof G.name==="string"?[{name:G.name,author:An4(G)}]:[]),J=WT$(Y);return{branches:X,totalCount:typeof Y.size==="number"?Y.size:X.length,nextCursor:J===null?null:String(J)}}getArchive($){return this.provider.archiveTarball(this.repo,$)}async listDecofileEntries($,Z){let Q=QD0(Z),Y=await this.listTree($,Q),X=[],J=Y.find((W)=>W.type==="blob"&&W.path===`${Q}/blocks.gen.json`);if(J)X.push(J);if(!Y.some((W)=>W.type==="tree"&&W.path===`${Q}/blocks`))return X;for(let W of await this.listTree($,`${Q}/blocks`))if(W.type==="blob")X.push(W);return X}async getEntriesAtPaths($,Z){let Q=ZD0(Z),Y=await k5([...Q.keys()],JD0,(W)=>this.listTree($,W)),X=[],J=0;for(let W of Q.values()){let K=new Map((Y[J++]??[]).map((H)=>[H.path,H]));for(let H of W){let F=K.get(H);if(F?.type==="blob")X.push(F)}}let G=await k5(X,JD0,async(W)=>{let{commit:K}=lT$(W.sha),H=await this.lastCommitTouching(K,W.path);return H?{...W,sha:wQ1(H,W.path)}:W});return new Map(G.map((W)=>[W.path,W]))}async readBlob($){let{commit:Z,path:Q}=lT$($),Y=await this.readFileAtRef(Z,Q);if(Y===null)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket has no ${Q} at ${Z} in ${this.repo.path}`});return Y}async readCommit($){let Z=await this.json(`${this.repoBase}/commit/${ZW($)}`);if(typeof Z?.message!=="string")return null;return{message:Z.message,date:Z.date??""}}async readFileAtRef($,Z){let Q=await this.call(`${this.repoBase}/src/${ZW($)}/${Up(Z)}`,{accept:"text/plain, */*"});return Q===null?null:Q.text()}async commitFiles($){let{branch:Z,message:Q,expectedHead:Y,rewriteFrom:X}=$,J=await this.getBranch(Z);if(Y!==null&&J?.sha!==Y)throw new h6(`Bitbucket branch ${Z} is at ${J?.sha??"(absent)"}, expected ${Y}`);let G=await this.resolveCopies($.changes);if(X!==void 0)return this.rewriteBranch({branch:Z,message:Q,expectedHead:Y,rewriteFrom:X,changes:G});if(J===null)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket branch ${Z} does not exist in ${this.repo.path}`});return{sha:await this.commitOnto({branch:Z,parent:J.sha,message:Q,changes:G})??J.sha}}async rewriteBranch($){let{branch:Z,message:Q,expectedHead:Y,rewriteFrom:X,changes:J}=$;await this.assertHeadIs(Z,Y);let G=await this.commitOnto({branch:Z,parent:X,message:Q,changes:J}).catch((H)=>{if(H instanceof v0&&H.status>=400&&H.status<500&&![401,403,404,429].includes(H.status))return;throw H});if(G===null)return await this.forceBranchHead(Z,X),{sha:X};if(G!==void 0)return{sha:G};let W=`studio-rewrite-${crypto.randomUUID().replaceAll("-","").slice(0,12)}`;await this.createBranch(W,X);let K;try{K=await this.commitOnto({branch:W,parent:X,message:Q,changes:J})??X;let H=await this.getBranch(Z);if(Y!==null&&H?.sha!==Y)throw new h6(`Bitbucket branch ${Z} moved to ${H?.sha??"(absent)"} while rewriting it`)}catch(H){throw await this.deleteBranch(W).catch(()=>{}),H}return await this.deleteBranch(Z),await this.createBranchAt(Z,K),await this.deleteBranch(W).catch(()=>{}),{sha:K}}async assertHeadIs($,Z){if(Z===null)return;let Q=await this.getBranch($);if(Q?.sha!==Z)throw new h6(`Bitbucket branch ${$} is at ${Q?.sha??"(absent)"}, not ${Z}`)}async commitOnto($){let{branch:Z,parent:Q,message:Y,changes:X}=$,J=X.flatMap((F)=>("deleted"in F)?[F.path]:[]),G=new Set((await k5(J,JD0,async(F)=>await this.existsAt(Q,F)?[F]:[])).flat()),W=jn4({branch:Z,parent:Q,message:Y,changes:X,existsAtParent:(F)=>G.has(F)});if(W===null)return null;let K=await wX(`${IQ}${this.repoBase}/src`,await this.token(),{method:"POST",body:W});if(!K.ok){let F=await qJ(K);if(wn4(F.status,F.message))throw new h6(`Bitbucket refused the commit on ${Z}: ${F.message}`,{cause:F});throw F}await K.body?.cancel().catch(()=>{});let H=await this.getBranch(Z);if(!H)throw new v0({provider:"bitbucket",status:502,message:`Bitbucket accepted the commit on ${Z} but the branch cannot be read back`});return H.sha}resolveCopies($){return k5([...$],JD0,async(Z)=>{if(!("copyFromRef"in Z))return Z;let Q=await this.readFileAtRef(Z.copyFromRef,Z.path);if(Q===null)throw new v0({provider:"bitbucket",status:404,message:`${Z.path} does not exist at ${Z.copyFromRef} in ${this.repo.path}`});return{path:Z.path,content:Q,mode:Z.mode}})}async createBranch($,Z){try{await this.createBranchAt($,Z)}catch(Q){if(Q instanceof v0&&En4(Q.status,Q.message))throw new h6(`Bitbucket branch ${$} already exists in ${this.repo.path}`,{cause:Q});throw Q}}async forceBranchHead($,Z){await this.deleteBranch($),await this.createBranchAt($,Z)}async mergeBranches($,Z,Q){if((await this.commitsIn(Z,$)).length===0)return null;let X=Q.split(`
|
|
1114
|
+
`)[0]||Q,J=await this.findOpenChangeRequest($,Z)??await this.createChangeRequest({base:$,head:Z,title:X});return this.mergePullRequest(J.number,$,Q)}async createChangeRequest($){let Z=await this.json(`${this.repoBase}/pullrequests`,{method:"POST",body:{title:$.title,source:{branch:{name:$.head}},destination:{branch:{name:$.base}}}});if(!Z)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket repository ${this.repo.path} not found`});return cT$(Z)}async findOpenChangeRequest($,Z){let Q=new URLSearchParams({state:"OPEN",q:`source.branch.name = ${$W(Z)} AND destination.branch.name = ${$W($)}`,pagelen:"1"}),X=(await this.json(`${this.repoBase}/pullrequests?${Q}`))?.values?.[0];return X?cT$(X):null}async compare($,Z){let[Q,Y]=await Promise.all([this.commitsIn(Z,$),this.commitsIn($,Z)]);return{aheadBy:Q.length,behindBy:Y.length}}async compareDetailed($,Z){let[Q,Y,X]=await Promise.all([this.commitsIn(Z,$),this.commitsIn($,Z),this.mergeBaseSha($,Z)]);if(Q.length===0)return{aheadBy:0,behindBy:Y.length,mergeBaseSha:X,files:[],commitMessages:[]};let J=Q[0].hash,G=await this.diffstat(Z,$);return{aheadBy:Q.length,behindBy:Y.length,mergeBaseSha:X,files:G.flatMap((W)=>{let K=zn4(W,J);return K?[K]:[]}),commitMessages:Q.map((W)=>(W.message??"").split(`
|
|
1115
|
+
`)[0]??"").filter((W)=>W.length>0)}}async createBranchAt($,Z){let Q=await this.call(`${this.repoBase}/refs/branches`,{method:"POST",body:{name:$,target:{hash:Z}}});if(Q===null)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket could not branch ${$} from ${Z}: repository or ref not found`});await Q.body?.cancel().catch(()=>{})}async deleteBranch($){await(await this.call(`${this.repoBase}/refs/branches/${ZW($)}`,{method:"DELETE"}))?.body?.cancel().catch(()=>{})}async mergePullRequest($,Z,Q){let Y=async()=>{let X=await wX(`${IQ}${this.repoBase}/pullrequests/${$}/merge`,await this.token(),{method:"POST",body:{type:"pullrequest",message:Q,merge_strategy:"merge_commit",close_source_branch:!1}});if(X.status===202)throw await X.body?.cancel().catch(()=>{}),new v0({provider:"bitbucket",status:202,message:`Bitbucket is still merging pull request #${$}`});if(!X.ok)throw await qJ(X);let J=await tN(X,"merge");if(J.state!=="MERGED")throw new v0({provider:"bitbucket",status:409,message:`Bitbucket left pull request #${$} in state ${J.state??"unknown"}`});if(J.merge_commit?.hash)return J.merge_commit.hash;let G=await this.getBranch(Z);if(!G)throw new v0({provider:"bitbucket",status:502,message:`Bitbucket merged #${$} without reporting a commit sha`});return G.sha};try{return await e$(Y,{maxAttempts:4,minTimeout:500,maxTimeout:4000,jitter:0.5,isRetriable:(X)=>X instanceof v0&&(X.status===202||X.status===409)})}catch(X){if(X instanceof e6&&X.cause instanceof v0)throw X.cause;throw X}}async existsAt($,Z){return(await this.json(`${this.repoBase}/src/${ZW($)}/${Up(Z)}?format=meta`))?.type==="commit_file"}async lastCommitTouching($,Z){return(await this.json(`${this.repoBase}/filehistory/${ZW($)}/${Up(Z)}?pagelen=1&fields=values.commit.hash`).catch(()=>null))?.values?.[0]?.commit?.hash??null}async listTree($,Z){let Q=Z?`${Up(Z)}/`:"",Y=await this.pages(`${this.repoBase}/src/${ZW($)}/${Q}?pagelen=${XD0}`);if(Y===null)return[];return Y.flatMap((X)=>{let J=On4(X,$);return J?[J]:[]})}async commitsIn($,Z){let Q=await this.pages(`${this.repoBase}/commits/${ZW($)}?exclude=${ZW(Z)}&pagelen=${XD0}&fields=values.hash,values.message,next`);if(Q===null)throw new v0({provider:"bitbucket",status:404,message:`Bitbucket cannot compare ${Z}...${$} in ${this.repo.path}`});return Q.flatMap((Y)=>typeof Y.hash==="string"?[{hash:Y.hash,message:Y.message}]:[])}async diffstat($,Z){let Q=`${ZW($)}..${ZW(Z)}`;return await this.pages(`${this.repoBase}/diffstat/${Q}?topic=true&pagelen=${XD0}`)??[]}async pages($){let Z=[],Q=`${IQ}${$}`;for(let Y=0;Q!==null&&Y<Ln4;Y++){let X=await this.jsonAt(Q);if(X===null)return Y===0?null:Z;if(!Array.isArray(X.values))throw new v0({provider:"bitbucket",status:502,message:`Bitbucket listing returned no values array: ${Q}`});Z.push(...X.values),Q=X.next&&X.next.startsWith(IQ)?X.next:null}return Z}async mergeBaseSha($,Z){return(await this.json(`${this.repoBase}/merge-base/${ZW(Z)}..${ZW($)}`))?.hash??""}async token(){return(await this.provider.tokenForRepo(this.repo)).token}json($,Z){return this.jsonAt(`${IQ}${$}`,Z)}async jsonAt($,Z){let Q=await this.callAt($,Z);if(Q===null)return null;return tN(Q,$)}call($,Z={}){return this.callAt(`${IQ}${$}`,Z)}async callAt($,Z={}){let Q=await wX($,await this.token(),Z);if(Q.status===404)return await Q.body?.cancel().catch(()=>{}),null;if(!Q.ok)throw await qJ(Q);return Q}}function ZW($){return encodeURIComponent($)}var XD0=100,Ln4=100,JD0=8;var mT$=L(()=>{p$();j40();S5();eq();v40()});function In4($){if($==="MERGED")return"merged";if($==="OPEN")return"open";return"closed"}function kn4($){switch($){case"merged":return["MERGED"];case"open":return["OPEN"];case"all":return["OPEN","MERGED","DECLINED","SUPERSEDED"]}}function u40($){if(!$.next)return null;try{return new URL($.next).searchParams.get("page")}catch{return null}}function Cn4($){if(!$)return{name:null,email:null};let Z=/^\s*(.*?)\s*<([^>]*)>\s*$/.exec($);if(!Z)return{name:$.trim()||null,email:null};return{name:Z[1]||null,email:Z[2]||null}}function Sn4($,Z){let Q=$.id??0,Y=$.author?.nickname??$.author?.display_name??"";return{number:Q,title:$.title??"",url:$.links?.html?.href??Z(Q),state:In4($.state),author:{login:Y,isBot:Xp(Y)},createdAt:$.created_on??"",updatedAt:$.updated_on??$.created_on??"",mergedAt:null,closedAt:null,base:$.destination?.branch?.name??"",head:$.source?.branch?.name??"",additions:null,deletions:null,commits:null}}function _n4($){let{name:Z,email:Q}=Cn4($.author?.raw);return{sha:$.hash??"",date:$.date??"",message:bn4($.message??""),...vn4($.message),author:{name:Z,email:Q,login:$.author?.user?.nickname??null}}}function vn4($=""){let Z=$.indexOf(`
|
|
1116
1116
|
`),Q=Z===-1?"":$.slice(Z+1).trim();return Q?{body:Q}:{}}function bn4($){let Z=$.indexOf(`
|
|
1117
|
-
`);return Z===-1?$:$.slice(0,Z)}function xn4($){return $.flatMap((Z)=>{if(!Z.path)return[];let Q=Z.type==="commit_directory"?"tree":"blob";return[{path:Z.path,type:Q,...typeof Z.size==="number"?{size:Z.size}:{}}]})}function fn4($){return $.flatMap((Z)=>{let Q=Z.file?.path;if(!Q)return[];let Y=Z.content_matches?.[0]?.lines?.flatMap((X)=>X.segments?.map((J)=>J.text??"")??[]).join("");return[{path:Q,...Y?{fragment:Y}:{}}]})}class zQ1{repo;tokenSource;repoBase;workspace;slug;defaultBranch=null;constructor($){_40($.repo.host),this.repo=$.repo,this.tokenSource=$.tokenSource,this.repoBase=yP($.repo);let{workspace:Z,slug:Q}=r71($.repo.path);this.workspace=Z,this.slug=Q}capabilities(){return{codeSearch:!0,lineStats:"per_request"}}async token(){let $=await this.tokenSource.get();if($)return $.token;throw new b0({provider:"bitbucket",status:401,message:`No usable Bitbucket token for ${this.repo.path}; reconnect the account`})}async callAt($,Z={}){let Q=await wX($,await this.token());if(!Q.ok&&!Z.allow?.includes(Q.status))throw await qJ(Q);return Q}call($,Z){return this.callAt(`${IQ}${$}`,Z)}async json($){return await(await this.call($)).json()}async resolveDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await this.json(this.repoBase);if(!$.mainbranch?.name)throw new b0({provider:"bitbucket",status:409,message:`Bitbucket repository ${this.repo.path} has no main branch (empty repository)`});return this.defaultBranch=$.mainbranch.name,this.defaultBranch}async listTree($={}){let Z=Q7($.maxEntries,TP,lL),Q=$.ref??await this.resolveDefaultBranch(),Y=[],X=null,J=!1,G=0;while(Y.length<Z){if(G++>=Rn4)break;let W=new URLSearchParams({max_depth:String(qn4),pagelen:String(GD0)});if(X)W.set("page",X);let K=await this.json(`${this.repoBase}/src/${PQ1(Q)}/?${W}`);if(Y.push(...xn4(K.values??[])),X=u40(K),X===null){J=!0;break}}return{ref:Q,entries:Y.slice(0,Z),truncated:!J||Y.length>Z}}async readFile($){let Z=Q7($.maxBytes,qP,cL),Q=$.ref??await this.resolveDefaultBranch(),Y=await this.call(`${this.repoBase}/src/${PQ1(Q)}/${a3($.path)}`,{allow:[404]});if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),{content:null,size:null,truncated:!1};return Jp(Y,Z)}async searchCode($){let Z=Q7($.limit,20,RP),Q=new URLSearchParams({search_query:`${$.query} repo:${this.slug}`,pagelen:String(Z)}),Y=await this.call(`/workspaces/${encodeURIComponent(this.workspace)}/search/code?${Q}`,{allow:[400,403,404]});if(!Y.ok)return await Y.body?.cancel().catch(()=>{}),{supported:!1,incomplete:!1,hits:[]};let X=await Y.json();return{supported:!0,incomplete:X.next!=null,hits:fn4(X.values??[])}}async listChangeRequests($){let Z=Q7($.limit,50,MP),Q=new URLSearchParams({sort:"-updated_on",pagelen:String(Z)});for(let K of kn4($.state))Q.append("state",K);if($.updatedAfter)Q.set("q",`updated_on >= ${$W($.updatedAfter)}`);if($.cursor)Q.set("page",$.cursor);let Y=await this.json(`${this.repoBase}/pullrequests?${Q}`),X=Y.values??[],J=X.map((K)=>Sn4(K,(H)=>_K(this.repo,H)));if(!($.includeCommits===!0||$.includeStats===!0))return{items:J,nextCursor:u40(Y)};return{items:await k5(J.map((K,H)=>({item:K,row:X[H]})),Tn4,async({item:K,row:H})=>({...K,...$.includeCommits===!0?{commits:await this.pullRequestCommits(K.number),mergedAt:await this.mergeCommitDate(H?.merge_commit?.hash)}:{},...$.includeStats===!0?await this.pullRequestStats(K.number):{}})),nextCursor:u40(Y)}}async pullRequestCommits($){let Z=await this.json(`${this.repoBase}/pullrequests/${$}/commits?pagelen=${GD0}`),Q=(Z.values??[]).flatMap((Y)=>Y.hash?[{sha:Y.hash,date:Y.date??""}]:[]);return{count:Z.size??Q.length,items:Q}}async mergeCommitDate($){if(!$)return null;let Z=await this.call(`${this.repoBase}/commit/${encodeURIComponent($)}`,{allow:[404]});if(Z.status===404)return await Z.body?.cancel().catch(()=>{}),null;return(await Z.json()).date??null}async pullRequestStats($){let Z=0,Q=0,Y=null;for(let X=0;X<Mn4;X++){let J=new URLSearchParams({pagelen:String(GD0)});if(Y)J.set("page",Y);let G=await this.json(`${this.repoBase}/pullrequests/${$}/diffstat?${J}`);for(let W of G.values??[])Z+=W.lines_added??0,Q+=W.lines_removed??0;if(Y=u40(G),Y===null)return{additions:Z,deletions:Q}}return{additions:null,deletions:null}}async listCommits($){let Z=Q7($.limit,r3,r3),Q=$.ref??await this.resolveDefaultBranch(),Y=Date.parse($.since),X=[],J=$.cursor??null;for(let G=0;G<Vn4;G++){let W=new URLSearchParams({pagelen:String(Math.min(Z,GD0))});if(J)W.set("page",J);let K=await this.json(`${this.repoBase}/commits/${PQ1(Q)}?${W}`);for(let H of K.values??[]){let F=_n4(H);if(Number.isFinite(Y)&&Date.parse(F.date)<Y)return{items:X,nextCursor:null};X.push(F)}if(J=u40(K),J===null)return{items:X,nextCursor:null};if(X.length>=Z)return{items:X,nextCursor:J}}return{items:X,nextCursor:J}}}function PQ1($){return encodeURIComponent($)}var Tn4=4,GD0=100,qn4=30,Rn4=40,Mn4=5,Vn4=20;var dT$=L(()=>{p$();t4();eq();v40();S5();iq()});function nT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new GQ1({repo:$,tokenSource:Z});case"gitlab":return new LQ1({repo:$,tokenSource:Z});case"bitbucket":return new EQ1({repo:$,tokenSource:Z})}}function iT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new YQ1({repo:$,tokenSource:Z});case"gitlab":return new FQ1({repo:$,tokenSource:Z});case"bitbucket":return new jQ1({repo:$,tokenSource:Z})}}function pT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new WQ1({repo:$,tokenSource:Z});case"gitlab":return new OQ1({repo:$,tokenSource:Z});case"bitbucket":return new zQ1({repo:$,tokenSource:Z})}}function yn4($,Z,Q="installation"){return nT$(f40($,Z,Q))}async function WD0($,Z,Q,Y){let X=await kT$($,Z,Q,Y);if(!X)return null;return LT$($,X)}function tT$($){let{ref:Z,repository:Q}=$,Y={provider:Z.provider,status:401};if(Q&&!Q.accountId)return new b0({...Y,message:`${Z.path} is linked without an account \u2014 connect one in Settings \u2192 Repositories to read it`});if(Z.provider!=="github")return new b0({...Y,message:`${Z.path} is not connected to this organization \u2014 link it in Settings \u2192 Repositories`});return new b0({...Y,message:a7})}async function AQ1($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)throw new b0({provider:"github",status:404,message:"No repository for this project \u2014 link one in Settings \u2192 Repositories"});if(Y.repository&&Y.servable)return nT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);if(!X)throw tT$(Y);return yn4(Y.ref,X)}function KD0($){return{repositoryId:$.repositoryId,ref:OX($.url),connectionId:$.connectionId}}function bG($,Z,Q){return AQ1($,Z,KD0(Q))}async function oT$($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)throw new b0({provider:"github",status:404,message:"No repository for this project \u2014 link one in Settings \u2192 Repositories"});if(Y.repository&&Y.servable)return pT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);if(!X)throw tT$(Y);return pT$(f40(Y.ref,X))}function sT$($,Z,Q){return oT$($,Z,KD0(Q))}function HD0($,Z){return oT$($,Z.organizationId,{repositoryId:Z.id,ref:mL(Z),connectionId:Z.legacyConnectionId})}function Dp($,Z,Q){return l40($,Z,{repositoryId:Q.repositoryId,ref:Q.repo,connectionId:Q.connectionId})}async function l40($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)return null;if(Y.repository&&Y.servable)return iT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);return X?iT$(f40(Y.ref,X)):null}function rT$($,Z,Q,Y){switch($){case"gitlab":return nB0(Z,Q);case"bitbucket":return oB0(Z,Q,Y);case"github":throw new b0({provider:$,status:400,message:"GitHub accounts connect through the GitHub App; tokens are accepted for GitLab and Bitbucket only"})}}async function aT$($,Z,Q){let Y=mL(Z);if(await nL($.storage,Z)){let J=Z.accountId?await $.storage.gitProviderAccounts.get(Z.accountId,Z.organizationId):null;if(!J)throw Error("Repository account no longer exists");return oN($,J).archiveTarball(Y,Q)}let X=await WD0($,Z.organizationId,Y,Z.legacyConnectionId);if(!X)throw Error("Connect the repository's provider account before syncing it");return new sq({host:Y.host,tokenSource:f40(Y,X).tokenSource}).archiveTarball(Y,Q)}var TQ1=L(()=>{Gp();cB0();t4();g40();s3();eB0();PT$();VT$();IT$();KQ1();vT$();fP();fT$();gT$();uT$();eq();mT$();dT$();S5()});function FD0($=process.env){let Z=$.GITLAB_OAUTH_CLIENT_ID?.trim(),Q=$.GITLAB_OAUTH_CLIENT_SECRET?.trim();if(!Z||!Q)return null;return{host:($.GITLAB_OAUTH_HOST?.trim()||"gitlab.com").toLowerCase(),clientId:Z,clientSecret:Q}}function eT$(){let $=FD0();return{configured:$!==null,hosts:$?[$.host]:[]}}function UD0(){return{github:{...aA$(),cli:aq()},gitlab:eT$(),bitbucket:GT$()}}var $q$=L(()=>{V40();pB0();Fp()});async function rN($,Z,Q){if(Q.repositoryId)return $.repositories.get(Q.repositoryId,Z);let Y=Na0(Q);return Y?$.repositories.findByRef(Z,Y):null}var qQ1=()=>{};var T5=L(()=>{qQ1();S5();j40();w40();iq();eB0();TQ1();$q$()});function gn4($){return $.startsWith("merged/")?"merged":"blobs"}function RQ1($,Z){let Q=new Map;for(let J of $){let G=Q.get(J.path);if(!G||J.mtimeMs>=G.mtimeMs)Q.set(J.path,{bytes:J.bytes,mtimeMs:J.mtimeMs})}let Y=[...Q.entries()].sort((J,G)=>J[1].mtimeMs-G[1].mtimeMs),X={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[J,{bytes:G}]of Y){let W=gn4(J);X.entries.set(J,{bytes:G,area:W}),X.totalBytes+=G,X.areaBytes[W]+=G}return X}function Zq$($,Z){let Q=$.entries.get(Z);if(!Q)return;$.entries.delete(Z),$.entries.set(Z,Q)}function Lp($,Z){let Q=$.entries.get(Z);if(!Q)return;$.entries.delete(Z),$.totalBytes-=Q.bytes,$.areaBytes[Q.area]-=Q.bytes}function Qq$($,Z){let{path:Q,bytes:Y,area:X}=Z,{config:J}=$;if(!Number.isFinite(Y)||Y<0||Y>J.maxEntryBytes[X]||Y>J.maxTotalBytes||X==="merged"&&Y>J.maxMergedBytes)return{admitted:!1,evict:[]};let W=$.entries.get(Q),K=$.totalBytes-(W?.bytes??0),H=$.areaBytes.merged-(W?.area==="merged"?W.bytes:0),F=[],U=new Set;if(X==="merged")for(let[N,B]of $.entries){if(H+Y<=J.maxMergedBytes)break;if(N===Q||B.area!=="merged")continue;F.push(N),U.add(N),H-=B.bytes,K-=B.bytes}for(let[N,B]of $.entries){if(K+Y<=J.maxTotalBytes)break;if(N===Q||U.has(N))continue;F.push(N),U.add(N),K-=B.bytes}for(let N of F)Lp($,N);return Lp($,Q),$.entries.set(Q,{bytes:Y,area:X}),$.totalBytes+=Y,$.areaBytes[X]+=Y,{admitted:!0,evict:F}}function c40($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),Q="";for(let Y of new TextEncoder().encode(Z)){let X=String.fromCharCode(Y);Q+=/[a-z0-9._-]/.test(X)?X:`%${Y.toString(16).padStart(2,"0")}`}if(Q==="."||Q==="..")Q=Q.replaceAll(".","%2e");return Q}function MQ1($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as Kq$}from"crypto";import{mkdir as m40,readdir as hn4,readFile as un4,rename as ln4,rm as Hq$,stat as Fq$,statfs as cn4,unlink as mn4,writeFile as dn4}from"fs/promises";import{tmpdir as in4}from"os";import{dirname as pn4,join as zY}from"path";function Op($,Z){let Q=Bun.env[$];if(Q===void 0||Q==="")return Z;let Y=Number(Q);return Number.isFinite(Y)&&Y>=0?Math.floor(Y):Z}function on4(){if(ND0)return ND0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?zY(in4(),"studio-fast-preview-cache"):$;return ND0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Op("FAST_PREVIEW_CACHE_MAX_BYTES",2*Yq$),maxMergedBytes:Op("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*BD0),maxEntryBytes:{blobs:Op("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",BD0),merged:Op("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*BD0)}},freeFloorBytes:Op("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",Yq$),sweepIntervalMs:Op("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},ND0}function sn4(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function rn4(){if(hP)return;hP={hits:G$.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:G$.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:G$.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:G$.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:G$.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},G$.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!jp)return;$.observe(jp.index.areaBytes.blobs,{area:"blobs"}),$.observe(jp.index.areaBytes.merged,{area:"merged"})}),G$.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!jp)return;let Z={blobs:0,merged:0};for(let Q of jp.index.entries.values())Z[Q.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function an4($){$R.hits[$]+=1,hP?.hits.add(1,{area:$})}function Xq$($){$R.misses[$]+=1,hP?.misses.add(1,{area:$})}function VQ1(){$R.evictions+=1,hP?.evictions.add(1)}function tL($){$R.errors+=1,hP?.errors.add(1,{op:$})}function en4($){$R.invalidKeySkips+=1,hP?.errors.add(1,{op:`${$}_invalid_key`})}function IQ1(){return Jq$??=Zt4(),Jq$}async function Zt4(){let $=on4();if(!$.enabled)return null;rn4();try{await m40(zY($.root,"blobs"),{recursive:!0}),await m40(zY($.root,"merged"),{recursive:!0}),await m40(zY($.root,"tmp"),{recursive:!0})}catch{return tL("init"),null}let Z=[];try{Z=await Uq$($.root)}catch{tL("scan"),Z=[]}let Q={root:$.root,index:RQ1(Z,$.index),cfg:$};return jp=Q,Xt4(Q),Q}async function DD0($){try{return await hn4($)}catch{return[]}}async function Uq$($){let Z=[];for(let Q of["blobs","merged"]){let Y=zY($,Q);for(let X of await DD0(Y)){let J=zY(Y,X);for(let G of await DD0(J)){let W=zY(J,G);for(let K of await DD0(W))try{let H=await Fq$(zY(W,K));if(!H.isFile())continue;Z.push({path:`${Q}/${X}/${G}/${K}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function Nq$($,Z,Q){if(!MQ1(Q))return null;try{return`blobs/${c40($)}/${c40(Z)}/${Q}`}catch{return null}}function Bq$($,Z,Q){if(!MQ1(Q))return null;try{return`merged/${c40($)}/${c40(Z)}/${Q}.json`}catch{return null}}async function Dq$($,Z){try{let Q=await IQ1();if(!Q)return null;if(Z===null)return Xq$($),null;try{let Y=await un4(zY(Q.root,Z),"utf8");return Zq$(Q.index,Z),an4($),Y}catch{return Xq$($),null}}catch{return tL(`get_${$}`),null}}function kQ1($,Z,Q){return Dq$("blobs",Nq$($,Z,Q))}function Lq$($,Z,Q){return Dq$("merged",Bq$($,Z,Q))}async function Qt4($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await cn4($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function LD0($){try{await mn4($)}catch{}}async function Yt4($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let Q=$.index.entries.keys().next();if(Q.done)break;Lp($.index,Q.value),await LD0(zY($.root,Q.value)),VQ1()}}catch{tL("emergency_evict")}}async function Oq$($,Z,Q,Y){try{let X=await IQ1();if(!X)return;if(Q===null){en4(Z);return}if(!await Qt4(X)){$R.floorSkips+=1,hP?.floorSkips.add(1);return}let J=Buffer.byteLength(Y,"utf8"),G=Qq$(X.index,{path:Q,bytes:J,area:$});if(!G.admitted){$R.admissionRefusals+=1;return}for(let K of G.evict)await LD0(zY(X.root,K)),VQ1();let W=zY(X.root,"tmp",`stage-${Kq$()}`);try{await dn4(W,Y,"utf8");let K=zY(X.root,Q);await m40(pn4(K),{recursive:!0}),await ln4(W,K)}catch(K){if(Lp(X.index,Q),await LD0(W),tL(Z),K?.code==="ENOSPC")await Yt4(X)}}catch{tL(Z)}}function d40($,Z,Q,Y){return Oq$("blobs","put_blob",Nq$($,Z,Q),Y)}function jq$($,Z,Q,Y){return Oq$("merged","put_merged",Bq$($,Z,Q),Y)}async function wq$(){try{let $=await IQ1();if(!$)return null;let Z=zY($.root,"tmp",Kq$());return await m40(Z,{recursive:!0}),Z}catch{return tL("make_scratch"),null}}async function Eq$($){try{await Hq$($,{recursive:!0,force:!0})}catch{tL("remove_scratch")}}function Xt4($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;Gq$=new AbortController,J$(Math.random()*Z,{signal:Gq$.signal}).then(()=>{Wq$($);let Q=setInterval(()=>void Wq$($),Z);Q.unref?.(),$t4=Q}).catch(()=>{})}async function Wq$($){try{let Z=RQ1(await Uq$($.root),$.cfg.index),Q=$.cfg.index;for(let[J,G]of Z.entries){let W=Z.totalBytes>Q.maxTotalBytes,K=Z.areaBytes.merged>Q.maxMergedBytes;if(!W&&!K)break;if(!W&&K&&G.area!=="merged")continue;Lp(Z,J),await LD0(zY($.root,J)),VQ1()}$.index=Z;let Y=zY($.root,"tmp"),X=Date.now();for(let J of await DD0(Y)){let G=zY(Y,J);try{let W=await Fq$(G);if(X-W.mtimeMs>tn4)await Hq$(G,{recursive:!0,force:!0})}catch{}}}catch{tL("sweep")}}var nn4=1024,BD0,Yq$,tn4=3600000,ND0=null,hP=null,$R,Jq$=null,jp=null,$t4=null,Gq$=null;var Pq$=L(()=>{p$();b6();BD0=1024*nn4,Yq$=1024*BD0;$R=sn4()});function zq$(){let $=new Map;return{run(Z,Q){let Y=$.get(Z);if(Y)return Y;let X=Promise.resolve().then(Q).finally(()=>{$.delete(Z)});return $.set(Z,X),X}}}import{readdir as Jt4,stat as Gt4}from"fs/promises";import{join as Aq$}from"path";function Wt4($,Z,Q){let Y=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Y,"--wildcards",Q]:[...Y,Q]}function Kt4(){return Tq$??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),Tq$}async function qq$($,Z,Q){let Y=Q.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Y===""||Y.split("/").includes(".."))throw new i40(`invalid blocks path prefix: ${Q}`);let X=await Kt4(),J=`*/${Y}/*.json`,G=()=>Bun.spawn(["tar",...Wt4(X,Z,J)],{stdin:$,stdout:"ignore",stderr:"pipe"}),W;try{W=G()}catch(U){throw new i40("failed to spawn tar",{cause:U})}let K=new Response(W.stderr).text().catch(()=>""),H=await W.exited;if(H!==0){let U=(await K).trim().slice(0,500);throw new i40(`tar exited with code ${H}${U?`: ${U}`:""}`)}let F=await Ht4(Z,Y);if(F.length===0)throw new i40(`tar extracted no ${J} members into ${Z}`);return F}async function Ht4($,Z){let Q=Aq$($,...Z.split("/")),Y;try{Y=await Jt4(Q)}catch{return[]}let X=[];for(let J of Y){if(!J.endsWith(".json"))continue;let G=Aq$(Q,J);try{if(!(await Gt4(G)).isFile())continue}catch{continue}X.push({path:`${Z}/${J}`,diskPath:G})}return X.sort((J,G)=>J.path.localeCompare(G.path))}var i40,Tq$=null;var Rq$=L(()=>{i40=class i40 extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as kq$}from"crypto";import{readFile as Ft4}from"fs/promises";function OD0($){return[$.host,$.path]}async function wp($,Z){let Q=await $.getBranch(Z);if(Q)return Q.sha;let Y=await $9($,await $.getDefaultBranch());try{return await $.createBranch(Z,Y),Y}catch(X){if(X instanceof h6)return $9($,Z);throw X}}function Nt4(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Mq$;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Mq$}function Bt4($){Vq$??=G$.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),Vq$.add(1,{path:$})}function Dt4($){Iq$??=G$.createCounter("decofile_skipped_blocks",{description:"Decofile blocks dropped from a merge for not being valid JSON",unit:"{blocks}"}),Iq$.add($)}function aN($){return $?`${$}/.deco/blocks`:".deco/blocks"}function hK($,Z){let Q=`${aN(Z)}/`,Y=[];for(let X of $){if(X.type!=="blob"||!X.path.startsWith(Q))continue;let J=X.path.slice(Q.length);if(J.includes("/"))continue;if(!J.toLowerCase().endsWith(".json"))continue;Y.push({stem:J.slice(0,-5),sha:X.sha,path:X.path,size:X.size})}return Y}function jD0($,Z){return $.filter((Q)=>B40(Q.stem)===Z).map((Q)=>Q.path).sort()}function uP($){let Z=Buffer.from($,"utf-8");return kq$("sha1").update(`blob ${Z.length}\x00`).update(Z).digest("hex")}function wD0($,Z){return d40(...OD0($),uP(Z),Z)}async function xF($,Z,Q=new Map){let[Y,X]=OD0($.repo),J=[...Z],G=[...new Set(J.flatMap((W)=>("content"in W)||Q.has(W.sha)?[]:[W.sha]))];return await k5(G,CQ1,async(W)=>{let K=await kQ1(Y,X,W);if(K!==null){Q.set(W,K);return}let H=await $.readBlob(W);await d40(Y,X,W,H),Q.set(W,H)}),J.map((W)=>{if("content"in W)return{stem:W.stem,content:W.content};let K=Q.get(W.sha);if(K===void 0)throw Error(`decofile: unresolved block blob ${W.sha}`);return{stem:W.stem,content:K}})}function Ot4($,Z){return kq$("sha1").update(`${Lt4}:${$}:${Z??""}`).digest("hex")}async function Cq$($,Z,Q,Y){let X=Y?.createBranchIfMissing?await wp($,Z):await $9($,Z);return jt4.run(`${IF($.repo)}@${X}:${Q??""}`,()=>wt4($,X,Q))}async function wt4($,Z,Q){let[Y,X]=OD0($.repo),J=Ot4(Z,Q),G=await Lq$(Y,X,J);if(G!==null)return{sha:Z,decofile:G};let W=await $.listDecofileEntries(Z,Q),K=hK(W,Q),H=new Map;if(await k5(K,CQ1,async(D)=>{let O=await kQ1(Y,X,D.sha);if(O!==null)H.set(D.path,O)}),K.length-H.size>Ut4){let D=await Et4($,Z,Q,K);if(Bt4(D!==null?"tarball":"blobs"),D!==null)for(let[O,j]of D)H.set(O,j)}let U=await k5(K,CQ1,async(D)=>{let O=H.get(D.path);if(O!==void 0)return{stem:D.stem,content:O};let j=await $.readBlob(D.sha);return await d40(Y,X,D.sha,j),{stem:D.stem,content:j}}),{decofile:N,skipped:B}=D40(U);if(B.length>0)Dt4(B.length),console.warn("decofile read: dropped blocks that were not valid JSON",{repo:`${Y}/${X}`,sha:Z,packagePath:Q,blocks:B.map((D)=>D.key)});return await jq$(Y,X,J,N),{sha:Z,decofile:N}}async function Et4($,Z,Q,Y){let[X,J]=OD0($.repo),G=IF($.repo),W=Nt4(),K=0;for(let F of Y){if(F.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:G,sha:Z,path:F.path}),null;K+=F.size}if(K>W)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:G,sha:Z,aggregateBytes:K,maxBytes:W}),null;let H=await wq$();if(H===null)return null;try{let F=await $.getArchive(Z);if(F===null)return null;let U=await qq$(F,H,aN(Q)),N=new Map(Y.map((D)=>[D.path,D.sha])),B=new Map;for(let D of U){let O=N.get(D.path);if(O===void 0)continue;let j=await Ft4(D.diskPath,"utf8");await d40(X,J,O,j),B.set(D.path,j)}return B}catch(F){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:G,sha:Z,error:F instanceof Error?F.message:String(F)}),null}finally{await Eq$(H)}}var CQ1=12,Ut4=50,Mq$=134217728,Vq$=null,Iq$=null,Lt4="3",jt4;var fF=L(()=>{p$();Qp();t4();T5();b6();Pq$();Rq$();jt4=zq$()});function eN($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,Y=$?.updateRecencyOnGet??!1,X=new Map;function J(){if(X.size<=Q)return;let G=Date.now();for(let[W,K]of X)if(K.expiresAt<=G)X.delete(W);while(X.size>Q){let W=X.keys().next().value;if(W===void 0)break;X.delete(W)}}return{get(G){let W=X.get(G);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(G);return}if(Y)X.delete(G),X.set(G,W);return W.value},set(G,W){X.delete(G),X.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){X.delete(G)},clear(){X.clear()},size(){return X.size}}}function zD0($){return Pt4.test($)}function ED0($){if(!_5($))throw Error(`invalid site id: ${$}`);return`sites/${$}`}function bq$(){return Buffer.from(crypto.getRandomValues(new Uint8Array(16))).toString("base64url")}function AD0($){if(!$)return null;return $.replace(/^W\//,"").replace(/^"|"$/g,"")}async function xq$($,Z){let Q=yF.revisions(Z),Y=new Set;for(let X of await $.listKeys(Q)){let J=X.slice(Q.length).replace(/\.json$/,"");if(zD0(J))Y.add(J)}return Y}async function fq$($,Z){let Q=await $.get(Z);if(!Q)return null;return{value:JSON.parse(Q.text),etag:Q.etag}}function At4($){let Z=$;return Z?.name==="NoSuchKey"||Z?.$metadata?.httpStatusCode===404}function Tt4($){let Z=new QY({endpoint:$.endpoint,region:"auto",credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},forcePathStyle:!0}),Q=$.bucket;return{async putJson(Y,X,J,G){return{etag:(await Z.send(new z3({Bucket:Q,Key:Y,Body:Buffer.from(JSON.stringify(X),"utf-8"),ContentType:"application/json; charset=utf-8",CacheControl:J,...G&&Object.keys(G).length>0?{Metadata:G}:{}}))).ETag??null}},async get(Y){try{let X=await Z.send(new bU({Bucket:Q,Key:Y}));return{text:await X.Body?.transformToString("utf-8")??"",etag:X.ETag??null,...X.Metadata?{metadata:X.Metadata}:{}}}catch(X){if(At4(X))return null;throw X}},async delete(Y){await Z.send(new mD({Bucket:Q,Key:Y}))},async listKeys(Y){let X=[],J;do{let G=await Z.send(new aW({Bucket:Q,Prefix:Y,ContinuationToken:J}));for(let W of G.Contents??[])if(W.Key)X.push(W.Key);J=G.IsTruncated?G.NextContinuationToken:void 0}while(J);return X}}}function Ep(){if(PD0!==void 0)return PD0;let $=B0(),Z=$.deliveryR2Endpoint??($.deliveryR2AccountId?`https://${$.deliveryR2AccountId}.r2.cloudflarestorage.com`:void 0);return PD0=Z&&$.deliveryR2Bucket&&$.deliveryR2AccessKeyId&&$.deliveryR2SecretAccessKey?Tt4({endpoint:Z,bucket:$.deliveryR2Bucket,accessKeyId:$.deliveryR2AccessKeyId,secretAccessKey:$.deliveryR2SecretAccessKey}):null,PD0}function yq$($,Z){return`${new URL(B0().deliveryPublicOrigin??SQ1).host}/${yF.draft($,Z)}`}var SQ1="https://delivery.decocms.com",Pt4,zt4,Sq$="public, max-age=0, s-maxage=3600, must-revalidate",_q$="public, max-age=31536000, immutable",vq$="no-cache, max-age=0, must-revalidate",yF,PD0;var $B=L(()=>{va();eY();u1();Pt4=/^[0-9a-f]{40}$/,zt4=/^[A-Za-z0-9_-]{22}$/;yF={latest:($)=>`${ED0($)}/latest.json`,revisions:($)=>`${ED0($)}/revisions/`,revision:($,Z)=>{if(!zD0(Z))throw Error(`invalid revision: ${Z}`);return`${ED0($)}/revisions/${Z}.json`},draft:($,Z)=>{if(!zt4.test(Z))throw Error("invalid draft slug");return`${ED0($)}/drafts/${Z}.json`}}});function gq$($,Z=1900){let Q=Object.entries($).sort(([X,J],[G,W])=>J.at-W.at||(X<G?-1:X>G?1:0)).map(([X,{userId:J,at:G}])=>`${encodeURIComponent(X)},${encodeURIComponent(J)},${Math.max(0,Math.floor(G)).toString(36)}`),Y=Q.join(";");while(Y.length>Z&&Q.length>0)Q.shift(),Y=Q.join(";");return Y}function vQ1($){if(!$)return{};let Z=[];for(let Q of $.split(";")){let[Y,X,J]=Q.split(",");if(!Y||!X||!J||Q.split(",").length!==3)continue;let G=Number.parseInt(J,36);if(!Number.isFinite(G)||!/^[0-9a-z]+$/.test(J))continue;try{Z.push([decodeURIComponent(Y),{userId:decodeURIComponent(X),at:G}])}catch{}}return Object.fromEntries(Z)}function hq$($,Z,Q,Y,X){let J=new Set(Z.delete),G=new Set(Q.delete),W=[];for(let K of new Set([...Object.keys(Q.set),...Q.delete])){let H=J.has(K)!==G.has(K)||Object.hasOwn(Z.set,K)!==Object.hasOwn(Q.set,K)||JSON.stringify(Z.set[K])!==JSON.stringify(Q.set[K]),F=Object.hasOwn($,K)?$[K]:void 0;if(!H){if(F)W.push([K,F])}else if(Y)W.push([K,{userId:Y,at:X}])}return Object.fromEntries(W)}var _Q1="deco-edited";function uq$(){return{set:{},delete:[]}}function cq$($){return Object.keys($.set).length===0&&$.delete.length===0}function qt4($){let Z=$;if(typeof Z!=="object"||Z===null||typeof Z.set!=="object"||Z.set===null||Array.isArray(Z.set)||!Array.isArray(Z.delete)||!Z.delete.every((Q)=>typeof Q==="string"))throw Error("stored draft isn't { set, delete }");return{set:Object.fromEntries(Object.entries(Z.set)),delete:[...Z.delete]}}function p40($){return`v8-draft:${$.virtualMcpId}:${$.branch}`}function lq$($,Z){let Y=(TD0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return TD0.set($,X),X.finally(()=>{if(TD0.get($)===X)TD0.delete($)}),Y}function mq$($){let{kv:Z,store:Q}=$,Y=async(J)=>{let G=await Z.get(J.organizationId,p40(J));return typeof G?.slug==="string"?G.slug:null},X=async(J)=>{let G=await Y(J);if(!G)return null;let W=await Q.get(yF.draft(J.site,G));if(!W)return{slug:G,body:uq$(),etag:null,editors:{}};return{slug:G,body:qt4(JSON.parse(W.text)),etag:W.etag,editors:vQ1(W.metadata?.[_Q1])}};return{load:X,update:(J,G)=>lq$(`${J.organizationId}\x00${p40(J)}`,async()=>{let W=await X(J),K=W?.slug??bq$();if(!W)await Z.set(J.organizationId,p40(J),{slug:K});let H=W?.body??uq$(),F=G(H),U=hq$(W?.editors??{},H,F,J.editor,Math.floor(Date.now()/1000)),N=gq$(U),{etag:B}=await Q.putJson(yF.draft(J.site,K),F,vq$,N?{[_Q1]:N}:void 0);return{slug:K,body:F,etag:B,editors:vQ1(N)}}),remove:(J,G)=>lq$(`${J.organizationId}\x00${p40(J)}`,async()=>{let W=await X(J);if(!W)return!1;if(G!==void 0&&W.etag!==G)return!1;return await Q.delete(yF.draft(J.site,W.slug)),await Z.delete(J.organizationId,p40(J)),!0})}}var TD0;var bQ1=L(()=>{$B();TD0=new Map});function n40($){let Z=$?.siteSlug;return typeof Z==="string"&&_5(Z)?Z:null}async function qD0($,Z,Q){let Y=await $.getByProject(Z);return Y&&Y.organizationId===Q?Y.slug:null}function nq$($){let Z=Ep();return Z?mq$({kv:$,store:Z}):null}async function ZR($,Z,Q,Y={}){let X=PP(Z),J=`${$.repo.provider}:${$.repo.host}/${$.repo.path}`,G=`${J}#${Q}:${X}`;if(Y.recentIf!==void 0){let F=pq$.get(G);if(F===Y.recentIf)return F}let W=await $9($,Q),K=`${J}@${W}:${X}`,H=iq$.get(K);if(H===void 0)H=await Mt4($,J,W,X),iq$.set(K,H);return pq$.set(G,H),H}async function Mt4($,Z,Q,Y){let X=(await $.getEntriesAtPaths(Q,[Y])).get(Y);if(X?.type!=="blob")return!1;let J=`${Z}@${X.sha}`,G=dq$.get(J);if(G!==void 0)return G;let[W]=await xF($,[{stem:Y,sha:X.sha}]),K=ai(W?.content);return dq$.set(J,K),K}var Pp,dq$,iq$,Rt4=60000,pq$;var zp=L(()=>{eY();fF();T5();$B();bQ1();Pp={error:"This site is linked to another project",code:"site_not_owned"};dq$=eN({ttlMs:86400000,maxSize:5000}),iq$=eN({ttlMs:86400000,maxSize:5000}),pq$=eN({ttlMs:Rt4,maxSize:5000})});async function Ap($,Z,Q,Y){if(zP(Z.metadata)===Q)return!0;try{return await $.patchMetadata({id:Z.id,organizationId:Z.organizationId,set:Q?{[cq]:M71}:{},unset:Q?[]:[cq],by:Y})}catch(X){return console.warn("hosted: blocks v8 marker write failed",{organizationId:Z.organizationId,projectId:Z.id,isV8:Q,error:X instanceof Error?X.message:String(X)}),!1}}async function Vt4($){let Z=await $.client();if(!Z)return"no-repository";let Q=await ZR(Z,ZB($.project.metadata),await Z.getDefaultBranch()),Y=await Ap($.projects,$.project,Q,$.by);return{isV8:Q,stored:Y}}async function xQ1($){try{let Z=await Vt4($);if(Z==="no-repository")return null;return Z.stored?Z.isV8:null}catch(Z){return console.warn("hosted: blocks v8 detection failed",{organizationId:$.project.organizationId,projectId:$.project.id,error:Z instanceof Error?Z.message:String(Z)}),null}}async function RD0($){let Z=await ZR($.client,ZB($.project.metadata),$.mainBranch,$.fresh?{}:{recentIf:zP($.project.metadata)});if($.projects&&$.by)await Ap($.projects,$.project,Z,$.by);return Z}async function It4($,Z=kt4){let Q=new AbortController;try{return await Promise.race([xQ1($),J$(Z,{signal:Q.signal}).then(()=>null)])}finally{Q.abort()}}function Ct4($){return!!$?.repository&&!!AP($)&&!zP($)&&$?.fastPreview!==!0}async function tq$($,Z){let Q=$.project.metadata;if(!Ct4(Q))return Q;return await It4($,Z)?{...Q,[cq]:M71}:Q}function ZB($){return $?.runtime?.path?.replace(/^\/+|\/+$/g,"")||null}var kt4=3000;var QR=L(()=>{$p();p$();zp()});var YR=y((ft4)=>{var fQ1;(function($){$.HEADER="header",$.QUERY="query"})(fQ1||(fQ1={}));var yQ1;(function($){$.HEADER="header",$.QUERY="query"})(yQ1||(yQ1={}));var gQ1;(function($){$.HTTP="http",$.HTTPS="https"})(gQ1||(gQ1={}));var t40;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(t40||(t40={}));var St4=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>t40.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>t40.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},_t4=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},vt4=($)=>{return St4($)},bt4=($)=>{return _t4($)},hQ1;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(hQ1||(hQ1={}));var xt4="__smithy_context",uQ1;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(uQ1||(uQ1={}));var lQ1;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(lQ1||(lQ1={}));ft4.AlgorithmId=t40;ft4.EndpointURLScheme=gQ1;ft4.FieldPosition=hQ1;ft4.HttpApiKeyAuthLocation=yQ1;ft4.HttpAuthLocation=fQ1;ft4.IniSectionType=uQ1;ft4.RequestHandlerProtocol=lQ1;ft4.SMITHY_CONTEXT_KEY=xt4;ft4.getDefaultClientConfiguration=vt4;ft4.resolveDefaultRuntimeConfig=bt4});var QB=y((et4)=>{var{SMITHY_CONTEXT_KEY:oq$}=YR(),nt4=($)=>$[oq$]||($[oq$]={});class MD0{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor($){this.method=$.method||"GET",this.hostname=$.hostname||"localhost",this.port=$.port,this.query=$.query||{},this.headers=$.headers||{},this.body=$.body,this.protocol=$.protocol?$.protocol.slice(-1)!==":"?`${$.protocol}:`:$.protocol:"https:",this.path=$.path?$.path.charAt(0)!=="/"?`/${$.path}`:$.path:"/",this.username=$.username,this.password=$.password,this.fragment=$.fragment}static clone($){let Z=new MD0({...$,headers:{...$.headers}});if(Z.query)Z.query=tt4(Z.query);return Z}static isInstance($){if(!$)return!1;let Z=$;return"method"in Z&&"protocol"in Z&&"hostname"in Z&&"path"in Z&&typeof Z.query==="object"&&typeof Z.headers==="object"}clone(){return MD0.clone(this)}}function tt4($){return Object.keys($).reduce((Z,Q)=>{let Y=$[Q];return{...Z,[Q]:Array.isArray(Y)?[...Y]:Y}},{})}class sq${statusCode;reason;headers;body;constructor($){this.statusCode=$.statusCode,this.reason=$.reason,this.headers=$.headers||{},this.body=$.body}static isInstance($){if(!$)return!1;let Z=$;return typeof Z.statusCode==="number"&&typeof Z.headers==="object"}}var ot4=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),rq$=($,Z=!1)=>{if(!Z)return ot4.test($);let Q=$.split(".");for(let Y of Q)if(!rq$(Y))return!1;return!0};function st4($){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test($)}var rt4=($)=>{if(typeof $==="function")return $;let Z=Promise.resolve($);return()=>Z};function aq$($){let Z={};if($=$.replace(/^\?/,""),$)for(let Q of $.split("&")){let[Y,X=null]=Q.split("=");if(Y=decodeURIComponent(Y),X)X=decodeURIComponent(X);if(!(Y in Z))Z[Y]=X;else if(Array.isArray(Z[Y]))Z[Y].push(X);else Z[Y]=[Z[Y],X]}return Z}var VD0=($)=>{if(typeof $==="string")return VD0(new URL($));let{hostname:Z,pathname:Q,port:Y,protocol:X,search:J}=$,G;if(J)G=aq$(J);return{hostname:Z,port:Y?parseInt(Y):void 0,protocol:X,path:Q,query:G}},at4=($)=>{if(typeof $==="object"){if("url"in $){let Z=VD0($.url);if($.headers){Z.headers={};for(let Q in $.headers)Z.headers[Q.toLowerCase()]=$.headers[Q].join(", ")}return Z}return $}return VD0($)};et4.HttpRequest=MD0;et4.HttpResponse=sq$;et4.getSmithyContext=nt4;et4.isValidHostLabel=rq$;et4.isValidHostname=st4;et4.normalizeProvider=rt4;et4.parseQueryString=aq$;et4.parseUrl=VD0;et4.toEndpointV1=at4});var gF=y((Ao4)=>{var{getSmithyContext:eq$,HttpResponse:Ho4,toEndpointV1:Fo4}=QB(),ID0=($)=>{if(typeof $==="function")return $();return $},dQ1=($,Z,Q,Y,X)=>({name:Z,namespace:$,traits:Q,input:Y,output:X}),Uo4=($)=>(Z,Q)=>async(Y)=>{let{response:X}=await Z(Y),{operationSchema:J}=eq$(Q),[,G,W,K,H,F]=J??[];try{let U=await $.protocol.deserializeResponse(dQ1(G,W,K,H,F),{...$,...Q},X);return{response:X,output:U}}catch(U){if(Object.defineProperty(U,"$response",{value:X,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in U)){try{U.message+=`
|
|
1117
|
+
`);return Z===-1?$:$.slice(0,Z)}function xn4($){return $.flatMap((Z)=>{if(!Z.path)return[];let Q=Z.type==="commit_directory"?"tree":"blob";return[{path:Z.path,type:Q,...typeof Z.size==="number"?{size:Z.size}:{}}]})}function fn4($){return $.flatMap((Z)=>{let Q=Z.file?.path;if(!Q)return[];let Y=Z.content_matches?.[0]?.lines?.flatMap((X)=>X.segments?.map((J)=>J.text??"")??[]).join("");return[{path:Q,...Y?{fragment:Y}:{}}]})}class zQ1{repo;tokenSource;repoBase;workspace;slug;defaultBranch=null;constructor($){_40($.repo.host),this.repo=$.repo,this.tokenSource=$.tokenSource,this.repoBase=yP($.repo);let{workspace:Z,slug:Q}=r71($.repo.path);this.workspace=Z,this.slug=Q}capabilities(){return{codeSearch:!0,lineStats:"per_request"}}async token(){let $=await this.tokenSource.get();if($)return $.token;throw new v0({provider:"bitbucket",status:401,message:`No usable Bitbucket token for ${this.repo.path}; reconnect the account`})}async callAt($,Z={}){let Q=await wX($,await this.token());if(!Q.ok&&!Z.allow?.includes(Q.status))throw await qJ(Q);return Q}call($,Z){return this.callAt(`${IQ}${$}`,Z)}async json($){return await(await this.call($)).json()}async resolveDefaultBranch(){if(this.defaultBranch)return this.defaultBranch;let $=await this.json(this.repoBase);if(!$.mainbranch?.name)throw new v0({provider:"bitbucket",status:409,message:`Bitbucket repository ${this.repo.path} has no main branch (empty repository)`});return this.defaultBranch=$.mainbranch.name,this.defaultBranch}async listTree($={}){let Z=Q7($.maxEntries,TP,lL),Q=$.ref??await this.resolveDefaultBranch(),Y=[],X=null,J=!1,G=0;while(Y.length<Z){if(G++>=Rn4)break;let W=new URLSearchParams({max_depth:String(qn4),pagelen:String(GD0)});if(X)W.set("page",X);let K=await this.json(`${this.repoBase}/src/${PQ1(Q)}/?${W}`);if(Y.push(...xn4(K.values??[])),X=u40(K),X===null){J=!0;break}}return{ref:Q,entries:Y.slice(0,Z),truncated:!J||Y.length>Z}}async readFile($){let Z=Q7($.maxBytes,qP,cL),Q=$.ref??await this.resolveDefaultBranch(),Y=await this.call(`${this.repoBase}/src/${PQ1(Q)}/${a3($.path)}`,{allow:[404]});if(Y.status===404)return await Y.body?.cancel().catch(()=>{}),{content:null,size:null,truncated:!1};return Jp(Y,Z)}async searchCode($){let Z=Q7($.limit,20,RP),Q=new URLSearchParams({search_query:`${$.query} repo:${this.slug}`,pagelen:String(Z)}),Y=await this.call(`/workspaces/${encodeURIComponent(this.workspace)}/search/code?${Q}`,{allow:[400,403,404]});if(!Y.ok)return await Y.body?.cancel().catch(()=>{}),{supported:!1,incomplete:!1,hits:[]};let X=await Y.json();return{supported:!0,incomplete:X.next!=null,hits:fn4(X.values??[])}}async listChangeRequests($){let Z=Q7($.limit,50,MP),Q=new URLSearchParams({sort:"-updated_on",pagelen:String(Z)});for(let K of kn4($.state))Q.append("state",K);if($.updatedAfter)Q.set("q",`updated_on >= ${$W($.updatedAfter)}`);if($.cursor)Q.set("page",$.cursor);let Y=await this.json(`${this.repoBase}/pullrequests?${Q}`),X=Y.values??[],J=X.map((K)=>Sn4(K,(H)=>_K(this.repo,H)));if(!($.includeCommits===!0||$.includeStats===!0))return{items:J,nextCursor:u40(Y)};return{items:await k5(J.map((K,H)=>({item:K,row:X[H]})),Tn4,async({item:K,row:H})=>({...K,...$.includeCommits===!0?{commits:await this.pullRequestCommits(K.number),mergedAt:await this.mergeCommitDate(H?.merge_commit?.hash)}:{},...$.includeStats===!0?await this.pullRequestStats(K.number):{}})),nextCursor:u40(Y)}}async pullRequestCommits($){let Z=await this.json(`${this.repoBase}/pullrequests/${$}/commits?pagelen=${GD0}`),Q=(Z.values??[]).flatMap((Y)=>Y.hash?[{sha:Y.hash,date:Y.date??""}]:[]);return{count:Z.size??Q.length,items:Q}}async mergeCommitDate($){if(!$)return null;let Z=await this.call(`${this.repoBase}/commit/${encodeURIComponent($)}`,{allow:[404]});if(Z.status===404)return await Z.body?.cancel().catch(()=>{}),null;return(await Z.json()).date??null}async pullRequestStats($){let Z=0,Q=0,Y=null;for(let X=0;X<Mn4;X++){let J=new URLSearchParams({pagelen:String(GD0)});if(Y)J.set("page",Y);let G=await this.json(`${this.repoBase}/pullrequests/${$}/diffstat?${J}`);for(let W of G.values??[])Z+=W.lines_added??0,Q+=W.lines_removed??0;if(Y=u40(G),Y===null)return{additions:Z,deletions:Q}}return{additions:null,deletions:null}}async listCommits($){let Z=Q7($.limit,r3,r3),Q=$.ref??await this.resolveDefaultBranch(),Y=Date.parse($.since),X=[],J=$.cursor??null;for(let G=0;G<Vn4;G++){let W=new URLSearchParams({pagelen:String(Math.min(Z,GD0))});if(J)W.set("page",J);let K=await this.json(`${this.repoBase}/commits/${PQ1(Q)}?${W}`);for(let H of K.values??[]){let F=_n4(H);if(Number.isFinite(Y)&&Date.parse(F.date)<Y)return{items:X,nextCursor:null};X.push(F)}if(J=u40(K),J===null)return{items:X,nextCursor:null};if(X.length>=Z)return{items:X,nextCursor:J}}return{items:X,nextCursor:J}}}function PQ1($){return encodeURIComponent($)}var Tn4=4,GD0=100,qn4=30,Rn4=40,Mn4=5,Vn4=20;var dT$=L(()=>{p$();t4();eq();v40();S5();iq()});function nT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new GQ1({repo:$,tokenSource:Z});case"gitlab":return new LQ1({repo:$,tokenSource:Z});case"bitbucket":return new EQ1({repo:$,tokenSource:Z})}}function iT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new YQ1({repo:$,tokenSource:Z});case"gitlab":return new FQ1({repo:$,tokenSource:Z});case"bitbucket":return new jQ1({repo:$,tokenSource:Z})}}function pT$({ref:$,tokenSource:Z}){switch($.provider){case"github":return new WQ1({repo:$,tokenSource:Z});case"gitlab":return new OQ1({repo:$,tokenSource:Z});case"bitbucket":return new zQ1({repo:$,tokenSource:Z})}}function yn4($,Z,Q="installation"){return nT$(f40($,Z,Q))}async function WD0($,Z,Q,Y){let X=await kT$($,Z,Q,Y);if(!X)return null;return LT$($,X)}function tT$($){let{ref:Z,repository:Q}=$,Y={provider:Z.provider,status:401};if(Q&&!Q.accountId)return new v0({...Y,message:`${Z.path} is linked without an account \u2014 connect one in Settings \u2192 Repositories to read it`});if(Z.provider!=="github")return new v0({...Y,message:`${Z.path} is not connected to this organization \u2014 link it in Settings \u2192 Repositories`});return new v0({...Y,message:a7})}async function AQ1($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)throw new v0({provider:"github",status:404,message:"No repository for this project \u2014 link one in Settings \u2192 Repositories"});if(Y.repository&&Y.servable)return nT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);if(!X)throw tT$(Y);return yn4(Y.ref,X)}function KD0($){return{repositoryId:$.repositoryId,ref:OX($.url),connectionId:$.connectionId}}function bG($,Z,Q){return AQ1($,Z,KD0(Q))}async function oT$($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)throw new v0({provider:"github",status:404,message:"No repository for this project \u2014 link one in Settings \u2192 Repositories"});if(Y.repository&&Y.servable)return pT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);if(!X)throw tT$(Y);return pT$(f40(Y.ref,X))}function sT$($,Z,Q){return oT$($,Z,KD0(Q))}function HD0($,Z){return oT$($,Z.organizationId,{repositoryId:Z.id,ref:mL(Z),connectionId:Z.legacyConnectionId})}function Dp($,Z,Q){return l40($,Z,{repositoryId:Q.repositoryId,ref:Q.repo,connectionId:Q.connectionId})}async function l40($,Z,Q){let Y=await aB0($.storage,Z,Q);if(!Y)return null;if(Y.repository&&Y.servable)return iT$(await rB0($,Y.repository));let X=await WD0($,Z,Y.ref,Q.connectionId??Y.repository?.legacyConnectionId??null);return X?iT$(f40(Y.ref,X)):null}function rT$($,Z,Q,Y){switch($){case"gitlab":return nB0(Z,Q);case"bitbucket":return oB0(Z,Q,Y);case"github":throw new v0({provider:$,status:400,message:"GitHub accounts connect through the GitHub App; tokens are accepted for GitLab and Bitbucket only"})}}async function aT$($,Z,Q){let Y=mL(Z);if(await nL($.storage,Z)){let J=Z.accountId?await $.storage.gitProviderAccounts.get(Z.accountId,Z.organizationId):null;if(!J)throw Error("Repository account no longer exists");return oN($,J).archiveTarball(Y,Q)}let X=await WD0($,Z.organizationId,Y,Z.legacyConnectionId);if(!X)throw Error("Connect the repository's provider account before syncing it");return new sq({host:Y.host,tokenSource:f40(Y,X).tokenSource}).archiveTarball(Y,Q)}var TQ1=L(()=>{Gp();cB0();t4();g40();s3();eB0();PT$();VT$();IT$();KQ1();vT$();fP();fT$();gT$();uT$();eq();mT$();dT$();S5()});function FD0($=process.env){let Z=$.GITLAB_OAUTH_CLIENT_ID?.trim(),Q=$.GITLAB_OAUTH_CLIENT_SECRET?.trim();if(!Z||!Q)return null;return{host:($.GITLAB_OAUTH_HOST?.trim()||"gitlab.com").toLowerCase(),clientId:Z,clientSecret:Q}}function eT$(){let $=FD0();return{configured:$!==null,hosts:$?[$.host]:[]}}function UD0(){return{github:{...aA$(),cli:aq()},gitlab:eT$(),bitbucket:GT$()}}var $q$=L(()=>{V40();pB0();Fp()});async function rN($,Z,Q){if(Q.repositoryId)return $.repositories.get(Q.repositoryId,Z);let Y=Na0(Q);return Y?$.repositories.findByRef(Z,Y):null}var qQ1=()=>{};var T5=L(()=>{qQ1();S5();j40();w40();iq();eB0();TQ1();$q$()});function gn4($){return $.startsWith("merged/")?"merged":"blobs"}function RQ1($,Z){let Q=new Map;for(let J of $){let G=Q.get(J.path);if(!G||J.mtimeMs>=G.mtimeMs)Q.set(J.path,{bytes:J.bytes,mtimeMs:J.mtimeMs})}let Y=[...Q.entries()].sort((J,G)=>J[1].mtimeMs-G[1].mtimeMs),X={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[J,{bytes:G}]of Y){let W=gn4(J);X.entries.set(J,{bytes:G,area:W}),X.totalBytes+=G,X.areaBytes[W]+=G}return X}function Zq$($,Z){let Q=$.entries.get(Z);if(!Q)return;$.entries.delete(Z),$.entries.set(Z,Q)}function Lp($,Z){let Q=$.entries.get(Z);if(!Q)return;$.entries.delete(Z),$.totalBytes-=Q.bytes,$.areaBytes[Q.area]-=Q.bytes}function Qq$($,Z){let{path:Q,bytes:Y,area:X}=Z,{config:J}=$;if(!Number.isFinite(Y)||Y<0||Y>J.maxEntryBytes[X]||Y>J.maxTotalBytes||X==="merged"&&Y>J.maxMergedBytes)return{admitted:!1,evict:[]};let W=$.entries.get(Q),K=$.totalBytes-(W?.bytes??0),H=$.areaBytes.merged-(W?.area==="merged"?W.bytes:0),F=[],U=new Set;if(X==="merged")for(let[N,B]of $.entries){if(H+Y<=J.maxMergedBytes)break;if(N===Q||B.area!=="merged")continue;F.push(N),U.add(N),H-=B.bytes,K-=B.bytes}for(let[N,B]of $.entries){if(K+Y<=J.maxTotalBytes)break;if(N===Q||U.has(N))continue;F.push(N),U.add(N),K-=B.bytes}for(let N of F)Lp($,N);return Lp($,Q),$.entries.set(Q,{bytes:Y,area:X}),$.totalBytes+=Y,$.areaBytes[X]+=Y,{admitted:!0,evict:F}}function c40($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),Q="";for(let Y of new TextEncoder().encode(Z)){let X=String.fromCharCode(Y);Q+=/[a-z0-9._-]/.test(X)?X:`%${Y.toString(16).padStart(2,"0")}`}if(Q==="."||Q==="..")Q=Q.replaceAll(".","%2e");return Q}function MQ1($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as Kq$}from"crypto";import{mkdir as m40,readdir as hn4,readFile as un4,rename as ln4,rm as Hq$,stat as Fq$,statfs as cn4,unlink as mn4,writeFile as dn4}from"fs/promises";import{tmpdir as in4}from"os";import{dirname as pn4,join as zY}from"path";function Op($,Z){let Q=Bun.env[$];if(Q===void 0||Q==="")return Z;let Y=Number(Q);return Number.isFinite(Y)&&Y>=0?Math.floor(Y):Z}function on4(){if(ND0)return ND0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?zY(in4(),"studio-fast-preview-cache"):$;return ND0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Op("FAST_PREVIEW_CACHE_MAX_BYTES",2*Yq$),maxMergedBytes:Op("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*BD0),maxEntryBytes:{blobs:Op("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",BD0),merged:Op("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*BD0)}},freeFloorBytes:Op("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",Yq$),sweepIntervalMs:Op("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},ND0}function sn4(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function rn4(){if(hP)return;hP={hits:G$.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:G$.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:G$.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:G$.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:G$.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},G$.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!jp)return;$.observe(jp.index.areaBytes.blobs,{area:"blobs"}),$.observe(jp.index.areaBytes.merged,{area:"merged"})}),G$.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!jp)return;let Z={blobs:0,merged:0};for(let Q of jp.index.entries.values())Z[Q.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function an4($){$R.hits[$]+=1,hP?.hits.add(1,{area:$})}function Xq$($){$R.misses[$]+=1,hP?.misses.add(1,{area:$})}function VQ1(){$R.evictions+=1,hP?.evictions.add(1)}function tL($){$R.errors+=1,hP?.errors.add(1,{op:$})}function en4($){$R.invalidKeySkips+=1,hP?.errors.add(1,{op:`${$}_invalid_key`})}function IQ1(){return Jq$??=Zt4(),Jq$}async function Zt4(){let $=on4();if(!$.enabled)return null;rn4();try{await m40(zY($.root,"blobs"),{recursive:!0}),await m40(zY($.root,"merged"),{recursive:!0}),await m40(zY($.root,"tmp"),{recursive:!0})}catch{return tL("init"),null}let Z=[];try{Z=await Uq$($.root)}catch{tL("scan"),Z=[]}let Q={root:$.root,index:RQ1(Z,$.index),cfg:$};return jp=Q,Xt4(Q),Q}async function DD0($){try{return await hn4($)}catch{return[]}}async function Uq$($){let Z=[];for(let Q of["blobs","merged"]){let Y=zY($,Q);for(let X of await DD0(Y)){let J=zY(Y,X);for(let G of await DD0(J)){let W=zY(J,G);for(let K of await DD0(W))try{let H=await Fq$(zY(W,K));if(!H.isFile())continue;Z.push({path:`${Q}/${X}/${G}/${K}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function Nq$($,Z,Q){if(!MQ1(Q))return null;try{return`blobs/${c40($)}/${c40(Z)}/${Q}`}catch{return null}}function Bq$($,Z,Q){if(!MQ1(Q))return null;try{return`merged/${c40($)}/${c40(Z)}/${Q}.json`}catch{return null}}async function Dq$($,Z){try{let Q=await IQ1();if(!Q)return null;if(Z===null)return Xq$($),null;try{let Y=await un4(zY(Q.root,Z),"utf8");return Zq$(Q.index,Z),an4($),Y}catch{return Xq$($),null}}catch{return tL(`get_${$}`),null}}function kQ1($,Z,Q){return Dq$("blobs",Nq$($,Z,Q))}function Lq$($,Z,Q){return Dq$("merged",Bq$($,Z,Q))}async function Qt4($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await cn4($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function LD0($){try{await mn4($)}catch{}}async function Yt4($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let Q=$.index.entries.keys().next();if(Q.done)break;Lp($.index,Q.value),await LD0(zY($.root,Q.value)),VQ1()}}catch{tL("emergency_evict")}}async function Oq$($,Z,Q,Y){try{let X=await IQ1();if(!X)return;if(Q===null){en4(Z);return}if(!await Qt4(X)){$R.floorSkips+=1,hP?.floorSkips.add(1);return}let J=Buffer.byteLength(Y,"utf8"),G=Qq$(X.index,{path:Q,bytes:J,area:$});if(!G.admitted){$R.admissionRefusals+=1;return}for(let K of G.evict)await LD0(zY(X.root,K)),VQ1();let W=zY(X.root,"tmp",`stage-${Kq$()}`);try{await dn4(W,Y,"utf8");let K=zY(X.root,Q);await m40(pn4(K),{recursive:!0}),await ln4(W,K)}catch(K){if(Lp(X.index,Q),await LD0(W),tL(Z),K?.code==="ENOSPC")await Yt4(X)}}catch{tL(Z)}}function d40($,Z,Q,Y){return Oq$("blobs","put_blob",Nq$($,Z,Q),Y)}function jq$($,Z,Q,Y){return Oq$("merged","put_merged",Bq$($,Z,Q),Y)}async function wq$(){try{let $=await IQ1();if(!$)return null;let Z=zY($.root,"tmp",Kq$());return await m40(Z,{recursive:!0}),Z}catch{return tL("make_scratch"),null}}async function Eq$($){try{await Hq$($,{recursive:!0,force:!0})}catch{tL("remove_scratch")}}function Xt4($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;Gq$=new AbortController,J$(Math.random()*Z,{signal:Gq$.signal}).then(()=>{Wq$($);let Q=setInterval(()=>void Wq$($),Z);Q.unref?.(),$t4=Q}).catch(()=>{})}async function Wq$($){try{let Z=RQ1(await Uq$($.root),$.cfg.index),Q=$.cfg.index;for(let[J,G]of Z.entries){let W=Z.totalBytes>Q.maxTotalBytes,K=Z.areaBytes.merged>Q.maxMergedBytes;if(!W&&!K)break;if(!W&&K&&G.area!=="merged")continue;Lp(Z,J),await LD0(zY($.root,J)),VQ1()}$.index=Z;let Y=zY($.root,"tmp"),X=Date.now();for(let J of await DD0(Y)){let G=zY(Y,J);try{let W=await Fq$(G);if(X-W.mtimeMs>tn4)await Hq$(G,{recursive:!0,force:!0})}catch{}}}catch{tL("sweep")}}var nn4=1024,BD0,Yq$,tn4=3600000,ND0=null,hP=null,$R,Jq$=null,jp=null,$t4=null,Gq$=null;var Pq$=L(()=>{p$();b6();BD0=1024*nn4,Yq$=1024*BD0;$R=sn4()});function zq$(){let $=new Map;return{run(Z,Q){let Y=$.get(Z);if(Y)return Y;let X=Promise.resolve().then(Q).finally(()=>{$.delete(Z)});return $.set(Z,X),X}}}import{readdir as Jt4,stat as Gt4}from"fs/promises";import{join as Aq$}from"path";function Wt4($,Z,Q){let Y=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Y,"--wildcards",Q]:[...Y,Q]}function Kt4(){return Tq$??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),Tq$}async function qq$($,Z,Q){let Y=Q.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Y===""||Y.split("/").includes(".."))throw new i40(`invalid blocks path prefix: ${Q}`);let X=await Kt4(),J=`*/${Y}/*.json`,G=()=>Bun.spawn(["tar",...Wt4(X,Z,J)],{stdin:$,stdout:"ignore",stderr:"pipe"}),W;try{W=G()}catch(U){throw new i40("failed to spawn tar",{cause:U})}let K=new Response(W.stderr).text().catch(()=>""),H=await W.exited;if(H!==0){let U=(await K).trim().slice(0,500);throw new i40(`tar exited with code ${H}${U?`: ${U}`:""}`)}let F=await Ht4(Z,Y);if(F.length===0)throw new i40(`tar extracted no ${J} members into ${Z}`);return F}async function Ht4($,Z){let Q=Aq$($,...Z.split("/")),Y;try{Y=await Jt4(Q)}catch{return[]}let X=[];for(let J of Y){if(!J.endsWith(".json"))continue;let G=Aq$(Q,J);try{if(!(await Gt4(G)).isFile())continue}catch{continue}X.push({path:`${Z}/${J}`,diskPath:G})}return X.sort((J,G)=>J.path.localeCompare(G.path))}var i40,Tq$=null;var Rq$=L(()=>{i40=class i40 extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as kq$}from"crypto";import{readFile as Ft4}from"fs/promises";function OD0($){return[$.host,$.path]}async function wp($,Z){let Q=await $.getBranch(Z);if(Q)return Q.sha;let Y=await $9($,await $.getDefaultBranch());try{return await $.createBranch(Z,Y),Y}catch(X){if(X instanceof h6)return $9($,Z);throw X}}function Nt4(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Mq$;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Mq$}function Bt4($){Vq$??=G$.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),Vq$.add(1,{path:$})}function Dt4($){Iq$??=G$.createCounter("decofile_skipped_blocks",{description:"Decofile blocks dropped from a merge for not being valid JSON",unit:"{blocks}"}),Iq$.add($)}function aN($){return $?`${$}/.deco/blocks`:".deco/blocks"}function hK($,Z){let Q=`${aN(Z)}/`,Y=[];for(let X of $){if(X.type!=="blob"||!X.path.startsWith(Q))continue;let J=X.path.slice(Q.length);if(J.includes("/"))continue;if(!J.toLowerCase().endsWith(".json"))continue;Y.push({stem:J.slice(0,-5),sha:X.sha,path:X.path,size:X.size})}return Y}function jD0($,Z){return $.filter((Q)=>B40(Q.stem)===Z).map((Q)=>Q.path).sort()}function uP($){let Z=Buffer.from($,"utf-8");return kq$("sha1").update(`blob ${Z.length}\x00`).update(Z).digest("hex")}function wD0($,Z){return d40(...OD0($),uP(Z),Z)}async function xF($,Z,Q=new Map){let[Y,X]=OD0($.repo),J=[...Z],G=[...new Set(J.flatMap((W)=>("content"in W)||Q.has(W.sha)?[]:[W.sha]))];return await k5(G,CQ1,async(W)=>{let K=await kQ1(Y,X,W);if(K!==null){Q.set(W,K);return}let H=await $.readBlob(W);await d40(Y,X,W,H),Q.set(W,H)}),J.map((W)=>{if("content"in W)return{stem:W.stem,content:W.content};let K=Q.get(W.sha);if(K===void 0)throw Error(`decofile: unresolved block blob ${W.sha}`);return{stem:W.stem,content:K}})}function Ot4($,Z){return kq$("sha1").update(`${Lt4}:${$}:${Z??""}`).digest("hex")}async function Cq$($,Z,Q,Y){let X=Y?.createBranchIfMissing?await wp($,Z):await $9($,Z);return jt4.run(`${IF($.repo)}@${X}:${Q??""}`,()=>wt4($,X,Q))}async function wt4($,Z,Q){let[Y,X]=OD0($.repo),J=Ot4(Z,Q),G=await Lq$(Y,X,J);if(G!==null)return{sha:Z,decofile:G};let W=await $.listDecofileEntries(Z,Q),K=hK(W,Q),H=new Map;if(await k5(K,CQ1,async(D)=>{let O=await kQ1(Y,X,D.sha);if(O!==null)H.set(D.path,O)}),K.length-H.size>Ut4){let D=await Et4($,Z,Q,K);if(Bt4(D!==null?"tarball":"blobs"),D!==null)for(let[O,j]of D)H.set(O,j)}let U=await k5(K,CQ1,async(D)=>{let O=H.get(D.path);if(O!==void 0)return{stem:D.stem,content:O};let j=await $.readBlob(D.sha);return await d40(Y,X,D.sha,j),{stem:D.stem,content:j}}),{decofile:N,skipped:B}=D40(U);if(B.length>0)Dt4(B.length),console.warn("decofile read: dropped blocks that were not valid JSON",{repo:`${Y}/${X}`,sha:Z,packagePath:Q,blocks:B.map((D)=>D.key)});return await jq$(Y,X,J,N),{sha:Z,decofile:N}}async function Et4($,Z,Q,Y){let[X,J]=OD0($.repo),G=IF($.repo),W=Nt4(),K=0;for(let F of Y){if(F.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:G,sha:Z,path:F.path}),null;K+=F.size}if(K>W)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:G,sha:Z,aggregateBytes:K,maxBytes:W}),null;let H=await wq$();if(H===null)return null;try{let F=await $.getArchive(Z);if(F===null)return null;let U=await qq$(F,H,aN(Q)),N=new Map(Y.map((D)=>[D.path,D.sha])),B=new Map;for(let D of U){let O=N.get(D.path);if(O===void 0)continue;let j=await Ft4(D.diskPath,"utf8");await d40(X,J,O,j),B.set(D.path,j)}return B}catch(F){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:G,sha:Z,error:F instanceof Error?F.message:String(F)}),null}finally{await Eq$(H)}}var CQ1=12,Ut4=50,Mq$=134217728,Vq$=null,Iq$=null,Lt4="3",jt4;var fF=L(()=>{p$();Qp();t4();T5();b6();Pq$();Rq$();jt4=zq$()});function eN($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,Y=$?.updateRecencyOnGet??!1,X=new Map;function J(){if(X.size<=Q)return;let G=Date.now();for(let[W,K]of X)if(K.expiresAt<=G)X.delete(W);while(X.size>Q){let W=X.keys().next().value;if(W===void 0)break;X.delete(W)}}return{get(G){let W=X.get(G);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(G);return}if(Y)X.delete(G),X.set(G,W);return W.value},set(G,W){X.delete(G),X.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){X.delete(G)},clear(){X.clear()},size(){return X.size}}}function zD0($){return Pt4.test($)}function ED0($){if(!_5($))throw Error(`invalid site id: ${$}`);return`sites/${$}`}function bq$(){return Buffer.from(crypto.getRandomValues(new Uint8Array(16))).toString("base64url")}function AD0($){if(!$)return null;return $.replace(/^W\//,"").replace(/^"|"$/g,"")}async function xq$($,Z){let Q=yF.revisions(Z),Y=new Set;for(let X of await $.listKeys(Q)){let J=X.slice(Q.length).replace(/\.json$/,"");if(zD0(J))Y.add(J)}return Y}async function fq$($,Z){let Q=await $.get(Z);if(!Q)return null;return{value:JSON.parse(Q.text),etag:Q.etag}}function At4($){let Z=$;return Z?.name==="NoSuchKey"||Z?.$metadata?.httpStatusCode===404}function Tt4($){let Z=new QY({endpoint:$.endpoint,region:"auto",credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},forcePathStyle:!0}),Q=$.bucket;return{async putJson(Y,X,J,G){return{etag:(await Z.send(new z3({Bucket:Q,Key:Y,Body:Buffer.from(JSON.stringify(X),"utf-8"),ContentType:"application/json; charset=utf-8",CacheControl:J,...G&&Object.keys(G).length>0?{Metadata:G}:{}}))).ETag??null}},async get(Y){try{let X=await Z.send(new bU({Bucket:Q,Key:Y}));return{text:await X.Body?.transformToString("utf-8")??"",etag:X.ETag??null,...X.Metadata?{metadata:X.Metadata}:{}}}catch(X){if(At4(X))return null;throw X}},async delete(Y){await Z.send(new mD({Bucket:Q,Key:Y}))},async listKeys(Y){let X=[],J;do{let G=await Z.send(new aW({Bucket:Q,Prefix:Y,ContinuationToken:J}));for(let W of G.Contents??[])if(W.Key)X.push(W.Key);J=G.IsTruncated?G.NextContinuationToken:void 0}while(J);return X}}}function Ep(){if(PD0!==void 0)return PD0;let $=B0(),Z=$.deliveryR2Endpoint??($.deliveryR2AccountId?`https://${$.deliveryR2AccountId}.r2.cloudflarestorage.com`:void 0);return PD0=Z&&$.deliveryR2Bucket&&$.deliveryR2AccessKeyId&&$.deliveryR2SecretAccessKey?Tt4({endpoint:Z,bucket:$.deliveryR2Bucket,accessKeyId:$.deliveryR2AccessKeyId,secretAccessKey:$.deliveryR2SecretAccessKey}):null,PD0}function yq$($,Z){return`${new URL(B0().deliveryPublicOrigin??SQ1).host}/${yF.draft($,Z)}`}var SQ1="https://delivery.decocms.com",Pt4,zt4,Sq$="public, max-age=0, s-maxage=3600, must-revalidate",_q$="public, max-age=31536000, immutable",vq$="no-cache, max-age=0, must-revalidate",yF,PD0;var $B=L(()=>{va();eY();u1();Pt4=/^[0-9a-f]{40}$/,zt4=/^[A-Za-z0-9_-]{22}$/;yF={latest:($)=>`${ED0($)}/latest.json`,revisions:($)=>`${ED0($)}/revisions/`,revision:($,Z)=>{if(!zD0(Z))throw Error(`invalid revision: ${Z}`);return`${ED0($)}/revisions/${Z}.json`},draft:($,Z)=>{if(!zt4.test(Z))throw Error("invalid draft slug");return`${ED0($)}/drafts/${Z}.json`}}});function gq$($,Z=1900){let Q=Object.entries($).sort(([X,J],[G,W])=>J.at-W.at||(X<G?-1:X>G?1:0)).map(([X,{userId:J,at:G}])=>`${encodeURIComponent(X)},${encodeURIComponent(J)},${Math.max(0,Math.floor(G)).toString(36)}`),Y=Q.join(";");while(Y.length>Z&&Q.length>0)Q.shift(),Y=Q.join(";");return Y}function vQ1($){if(!$)return{};let Z=[];for(let Q of $.split(";")){let[Y,X,J]=Q.split(",");if(!Y||!X||!J||Q.split(",").length!==3)continue;let G=Number.parseInt(J,36);if(!Number.isFinite(G)||!/^[0-9a-z]+$/.test(J))continue;try{Z.push([decodeURIComponent(Y),{userId:decodeURIComponent(X),at:G}])}catch{}}return Object.fromEntries(Z)}function hq$($,Z,Q,Y,X){let J=new Set(Z.delete),G=new Set(Q.delete),W=[];for(let K of new Set([...Object.keys(Q.set),...Q.delete])){let H=J.has(K)!==G.has(K)||Object.hasOwn(Z.set,K)!==Object.hasOwn(Q.set,K)||JSON.stringify(Z.set[K])!==JSON.stringify(Q.set[K]),F=Object.hasOwn($,K)?$[K]:void 0;if(!H){if(F)W.push([K,F])}else if(Y)W.push([K,{userId:Y,at:X}])}return Object.fromEntries(W)}var _Q1="deco-edited";function uq$(){return{set:{},delete:[]}}function cq$($){return Object.keys($.set).length===0&&$.delete.length===0}function qt4($){let Z=$;if(typeof Z!=="object"||Z===null||typeof Z.set!=="object"||Z.set===null||Array.isArray(Z.set)||!Array.isArray(Z.delete)||!Z.delete.every((Q)=>typeof Q==="string"))throw Error("stored draft isn't { set, delete }");return{set:Object.fromEntries(Object.entries(Z.set)),delete:[...Z.delete]}}function p40($){return`v8-draft:${$.virtualMcpId}:${$.branch}`}function lq$($,Z){let Y=(TD0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return TD0.set($,X),X.finally(()=>{if(TD0.get($)===X)TD0.delete($)}),Y}function mq$($){let{kv:Z,store:Q}=$,Y=async(J)=>{let G=await Z.get(J.organizationId,p40(J));return typeof G?.slug==="string"?G.slug:null},X=async(J)=>{let G=await Y(J);if(!G)return null;let W=await Q.get(yF.draft(J.site,G));if(!W)return{slug:G,body:uq$(),etag:null,editors:{}};return{slug:G,body:qt4(JSON.parse(W.text)),etag:W.etag,editors:vQ1(W.metadata?.[_Q1])}};return{load:X,update:(J,G)=>lq$(`${J.organizationId}\x00${p40(J)}`,async()=>{let W=await X(J),K=W?.slug??bq$();if(!W)await Z.set(J.organizationId,p40(J),{slug:K});let H=W?.body??uq$(),F=G(H),U=hq$(W?.editors??{},H,F,J.editor,Math.floor(Date.now()/1000)),N=gq$(U),{etag:B}=await Q.putJson(yF.draft(J.site,K),F,vq$,N?{[_Q1]:N}:void 0);return{slug:K,body:F,etag:B,editors:vQ1(N)}}),remove:(J,G)=>lq$(`${J.organizationId}\x00${p40(J)}`,async()=>{let W=await X(J);if(!W)return!1;if(G!==void 0&&W.etag!==G)return!1;return await Q.delete(yF.draft(J.site,W.slug)),await Z.delete(J.organizationId,p40(J)),!0})}}var TD0;var bQ1=L(()=>{$B();TD0=new Map});function n40($){let Z=$?.siteSlug;return typeof Z==="string"&&_5(Z)?Z:null}async function qD0($,Z,Q){let Y=await $.getByProject(Z);return Y&&Y.organizationId===Q?Y.slug:null}function nq$($){let Z=Ep();return Z?mq$({kv:$,store:Z}):null}async function ZR($,Z,Q,Y={}){let X=PP(Z),J=`${$.repo.provider}:${$.repo.host}/${$.repo.path}`,G=`${J}#${Q}:${X}`;if(Y.recentIf!==void 0){let F=pq$.get(G);if(F===Y.recentIf)return F}let W=await $9($,Q),K=`${J}@${W}:${X}`,H=iq$.get(K);if(H===void 0)H=await Mt4($,J,W,X),iq$.set(K,H);return pq$.set(G,H),H}async function Mt4($,Z,Q,Y){let X=(await $.getEntriesAtPaths(Q,[Y])).get(Y);if(X?.type!=="blob")return!1;let J=`${Z}@${X.sha}`,G=dq$.get(J);if(G!==void 0)return G;let[W]=await xF($,[{stem:Y,sha:X.sha}]),K=ai(W?.content);return dq$.set(J,K),K}var Pp,dq$,iq$,Rt4=60000,pq$;var zp=L(()=>{eY();fF();T5();$B();bQ1();Pp={error:"This site is linked to another project",code:"site_not_owned"};dq$=eN({ttlMs:86400000,maxSize:5000}),iq$=eN({ttlMs:86400000,maxSize:5000}),pq$=eN({ttlMs:Rt4,maxSize:5000})});async function Ap($,Z,Q,Y){if(zP(Z.metadata)===Q)return!0;try{return await $.patchMetadata({id:Z.id,organizationId:Z.organizationId,set:Q?{[cq]:M71}:{},unset:Q?[]:[cq],by:Y})}catch(X){return console.warn("hosted: blocks v8 marker write failed",{organizationId:Z.organizationId,projectId:Z.id,isV8:Q,error:X instanceof Error?X.message:String(X)}),!1}}async function Vt4($){let Z=await $.client();if(!Z)return"no-repository";let Q=await ZR(Z,ZB($.project.metadata),await Z.getDefaultBranch()),Y=await Ap($.projects,$.project,Q,$.by);return{isV8:Q,stored:Y}}async function xQ1($){try{let Z=await Vt4($);if(Z==="no-repository")return null;return Z.stored?Z.isV8:null}catch(Z){return console.warn("hosted: blocks v8 detection failed",{organizationId:$.project.organizationId,projectId:$.project.id,error:Z instanceof Error?Z.message:String(Z)}),null}}async function RD0($){let Z=await ZR($.client,ZB($.project.metadata),$.mainBranch,$.fresh?{}:{recentIf:zP($.project.metadata)});if($.projects&&$.by)await Ap($.projects,$.project,Z,$.by);return Z}async function It4($,Z=kt4){let Q=new AbortController;try{return await Promise.race([xQ1($),J$(Z,{signal:Q.signal}).then(()=>null)])}finally{Q.abort()}}function Ct4($){return!!$?.repository&&!!AP($)&&!zP($)&&$?.fastPreview!==!0}async function tq$($,Z){let Q=$.project.metadata;if(!Ct4(Q))return Q;return await It4($,Z)?{...Q,[cq]:M71}:Q}function ZB($){return $?.runtime?.path?.replace(/^\/+|\/+$/g,"")||null}var kt4=3000;var QR=L(()=>{$p();p$();zp()});var YR=y((ft4)=>{var fQ1;(function($){$.HEADER="header",$.QUERY="query"})(fQ1||(fQ1={}));var yQ1;(function($){$.HEADER="header",$.QUERY="query"})(yQ1||(yQ1={}));var gQ1;(function($){$.HTTP="http",$.HTTPS="https"})(gQ1||(gQ1={}));var t40;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(t40||(t40={}));var St4=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>t40.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>t40.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},_t4=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},vt4=($)=>{return St4($)},bt4=($)=>{return _t4($)},hQ1;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(hQ1||(hQ1={}));var xt4="__smithy_context",uQ1;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(uQ1||(uQ1={}));var lQ1;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(lQ1||(lQ1={}));ft4.AlgorithmId=t40;ft4.EndpointURLScheme=gQ1;ft4.FieldPosition=hQ1;ft4.HttpApiKeyAuthLocation=yQ1;ft4.HttpAuthLocation=fQ1;ft4.IniSectionType=uQ1;ft4.RequestHandlerProtocol=lQ1;ft4.SMITHY_CONTEXT_KEY=xt4;ft4.getDefaultClientConfiguration=vt4;ft4.resolveDefaultRuntimeConfig=bt4});var QB=y((et4)=>{var{SMITHY_CONTEXT_KEY:oq$}=YR(),nt4=($)=>$[oq$]||($[oq$]={});class MD0{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor($){this.method=$.method||"GET",this.hostname=$.hostname||"localhost",this.port=$.port,this.query=$.query||{},this.headers=$.headers||{},this.body=$.body,this.protocol=$.protocol?$.protocol.slice(-1)!==":"?`${$.protocol}:`:$.protocol:"https:",this.path=$.path?$.path.charAt(0)!=="/"?`/${$.path}`:$.path:"/",this.username=$.username,this.password=$.password,this.fragment=$.fragment}static clone($){let Z=new MD0({...$,headers:{...$.headers}});if(Z.query)Z.query=tt4(Z.query);return Z}static isInstance($){if(!$)return!1;let Z=$;return"method"in Z&&"protocol"in Z&&"hostname"in Z&&"path"in Z&&typeof Z.query==="object"&&typeof Z.headers==="object"}clone(){return MD0.clone(this)}}function tt4($){return Object.keys($).reduce((Z,Q)=>{let Y=$[Q];return{...Z,[Q]:Array.isArray(Y)?[...Y]:Y}},{})}class sq${statusCode;reason;headers;body;constructor($){this.statusCode=$.statusCode,this.reason=$.reason,this.headers=$.headers||{},this.body=$.body}static isInstance($){if(!$)return!1;let Z=$;return typeof Z.statusCode==="number"&&typeof Z.headers==="object"}}var ot4=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),rq$=($,Z=!1)=>{if(!Z)return ot4.test($);let Q=$.split(".");for(let Y of Q)if(!rq$(Y))return!1;return!0};function st4($){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test($)}var rt4=($)=>{if(typeof $==="function")return $;let Z=Promise.resolve($);return()=>Z};function aq$($){let Z={};if($=$.replace(/^\?/,""),$)for(let Q of $.split("&")){let[Y,X=null]=Q.split("=");if(Y=decodeURIComponent(Y),X)X=decodeURIComponent(X);if(!(Y in Z))Z[Y]=X;else if(Array.isArray(Z[Y]))Z[Y].push(X);else Z[Y]=[Z[Y],X]}return Z}var VD0=($)=>{if(typeof $==="string")return VD0(new URL($));let{hostname:Z,pathname:Q,port:Y,protocol:X,search:J}=$,G;if(J)G=aq$(J);return{hostname:Z,port:Y?parseInt(Y):void 0,protocol:X,path:Q,query:G}},at4=($)=>{if(typeof $==="object"){if("url"in $){let Z=VD0($.url);if($.headers){Z.headers={};for(let Q in $.headers)Z.headers[Q.toLowerCase()]=$.headers[Q].join(", ")}return Z}return $}return VD0($)};et4.HttpRequest=MD0;et4.HttpResponse=sq$;et4.getSmithyContext=nt4;et4.isValidHostLabel=rq$;et4.isValidHostname=st4;et4.normalizeProvider=rt4;et4.parseQueryString=aq$;et4.parseUrl=VD0;et4.toEndpointV1=at4});var gF=y((Ao4)=>{var{getSmithyContext:eq$,HttpResponse:Ho4,toEndpointV1:Fo4}=QB(),ID0=($)=>{if(typeof $==="function")return $();return $},dQ1=($,Z,Q,Y,X)=>({name:Z,namespace:$,traits:Q,input:Y,output:X}),Uo4=($)=>(Z,Q)=>async(Y)=>{let{response:X}=await Z(Y),{operationSchema:J}=eq$(Q),[,G,W,K,H,F]=J??[];try{let U=await $.protocol.deserializeResponse(dQ1(G,W,K,H,F),{...$,...Q},X);return{response:X,output:U}}catch(U){if(Object.defineProperty(U,"$response",{value:X,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in U)){try{U.message+=`
|
|
1118
1118
|
Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`}catch(B){if(!Q.logger||Q.logger?.constructor?.name==="NoOpLogger")console.warn("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.");else Q.logger?.warn?.("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.")}if(typeof U.$responseBodyText<"u"){if(U.$response)U.$response.body=U.$responseBodyText}try{if(Ho4.isInstance(X)){let{headers:B={},statusCode:D}=X,O=Object.entries(B);U.$metadata={httpStatusCode:D,requestId:cQ1(/^x-[\w-]+-request-?id$/,O),extendedRequestId:cQ1(/^x-[\w-]+-id-2$/,O),cfId:cQ1(/^x-[\w-]+-cf-id$/,O)}}}catch(B){}}throw U}},cQ1=($,Z)=>{return(Z.find(([Q])=>{return Q.match($)})||[void 0,void 0])[1]},No4=($)=>(Z,Q)=>async(Y)=>{let{operationSchema:X}=eq$(Q),[,J,G,W,K,H]=X??[],F=Q.endpointV2?async()=>Fo4(Q.endpointV2):$.endpoint,U=await $.protocol.serializeRequest(dQ1(J,G,W,K,H),Y.input,{...$,...Q,endpoint:F});return Z({...Y,request:U})},$R$={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ZR$={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function Bo4($){return{applyToStack:(Z)=>{Z.add(No4($),ZR$),Z.add(Uo4($),$R$),$.protocol.setSerdeContext($)}}}class xG{name;namespace;traits;static assign($,Z){return Object.assign($,Z)}static[Symbol.hasInstance]($){let Z=this.prototype.isPrototypeOf($);if(!Z&&typeof $==="object"&&$!==null)return $.symbol===this.symbol;return Z}getName(){return this.namespace+"#"+this.name}}class _D0 extends xG{static symbol=Symbol.for("@smithy/lis");name;traits;valueSchema;symbol=_D0.symbol}var Do4=($,Z,Q,Y)=>xG.assign(new _D0,{name:Z,namespace:$,traits:Q,valueSchema:Y});class vD0 extends xG{static symbol=Symbol.for("@smithy/map");name;traits;keySchema;valueSchema;symbol=vD0.symbol}var Lo4=($,Z,Q,Y,X)=>xG.assign(new vD0,{name:Z,namespace:$,traits:Q,keySchema:Y,valueSchema:X});class bD0 extends xG{static symbol=Symbol.for("@smithy/ope");name;traits;input;output;symbol=bD0.symbol}var Oo4=($,Z,Q,Y,X)=>xG.assign(new bD0,{name:Z,namespace:$,traits:Q,input:Y,output:X});class a40 extends xG{static symbol=Symbol.for("@smithy/str");name;traits;memberNames;memberList;symbol=a40.symbol}var jo4=($,Z,Q,Y,X)=>xG.assign(new a40,{name:Z,namespace:$,traits:Q,memberNames:Y,memberList:X});class xD0 extends a40{static symbol=Symbol.for("@smithy/err");ctor;symbol=xD0.symbol}var wo4=($,Z,Q,Y,X,J)=>xG.assign(new xD0,{name:Z,namespace:$,traits:Q,memberNames:Y,memberList:X,ctor:null}),kD0=[];function r40($){if(typeof $==="object")return $;if($=$|0,kD0[$])return kD0[$];let Z={},Q=0;for(let Y of["httpLabel","idempotent","idempotencyToken","sensitive","httpPayload","httpResponseCode","httpQueryParams"])if(($>>Q++&1)===1)Z[Y]=1;return kD0[$]=Z}var o40={it:Symbol.for("@smithy/nor-struct-it"),ns:Symbol.for("@smithy/ns")},CD0=[],SD0={};class sL{ref;memberName;static symbol=Symbol.for("@smithy/nor");symbol=sL.symbol;name;schema;_isMemberSchema;traits;memberTraits;normalizedTraits;constructor($,Z){this.ref=$,this.memberName=Z;let Q=[],Y=$,X=$;this._isMemberSchema=!1;while(mQ1(Y))Q.push(Y[1]),Y=Y[0],X=ID0(Y),this._isMemberSchema=!0;if(Q.length>0){this.memberTraits={};for(let J=Q.length-1;J>=0;--J){let G=Q[J];Object.assign(this.memberTraits,r40(G))}}else this.memberTraits=0;if(X instanceof sL){let J=this.memberTraits;Object.assign(this,X),this.memberTraits=Object.assign({},J,X.getMemberTraits(),this.getMemberTraits()),this.normalizedTraits=void 0,this.memberName=Z??X.memberName;return}if(this.schema=ID0(X),QR$(this.schema))this.name=`${this.schema[1]}#${this.schema[2]}`,this.traits=this.schema[3];else this.name=this.memberName??String(X),this.traits=0;if(this._isMemberSchema&&!Z)throw Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(!0)} missing member name.`)}static[Symbol.hasInstance]($){let Z=this.prototype.isPrototypeOf($);if(!Z&&typeof $==="object"&&$!==null)return $.symbol===this.symbol;return Z}static of($){let Z=typeof $==="function"||typeof $==="object"&&$!==null;if(typeof $==="number"){if(CD0[$])return CD0[$]}else if(typeof $==="string"){if(SD0[$])return SD0[$]}else if(Z){if($[o40.ns])return $[o40.ns]}let Q=ID0($);if(Q instanceof sL)return Q;if(mQ1(Q)){let[X,J]=Q;if(X instanceof sL)return Object.assign(X.getMergedTraits(),r40(J)),X;throw Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify($,null,2)}.`)}let Y=new sL(Q);if(Z)return $[o40.ns]=Y;if(typeof Q==="string")return SD0[Q]=Y;if(typeof Q==="number")return CD0[Q]=Y;return Y}getSchema(){let $=this.schema;if(Array.isArray($)&&$[0]===0)return $[4];return $}getName($=!1){let{name:Z}=this;return!$&&Z&&Z.includes("#")?Z.split("#")[1]:Z||void 0}getMemberName(){return this.memberName}isMemberSchema(){return this._isMemberSchema}isListSchema(){let $=this.getSchema();return typeof $==="number"?$>=64&&$<128:$[0]===1}isMapSchema(){let $=this.getSchema();return typeof $==="number"?$>=128&&$<=255:$[0]===2}isStructSchema(){let $=this.getSchema();if(typeof $!=="object")return!1;let Z=$[0];return Z===3||Z===-3||Z===4}isUnionSchema(){let $=this.getSchema();if(typeof $!=="object")return!1;return $[0]===4}isBlobSchema(){let $=this.getSchema();return $===21||$===42}isTimestampSchema(){let $=this.getSchema();return typeof $==="number"&&$>=4&&$<=7}isUnitSchema(){return this.getSchema()==="unit"}isDocumentSchema(){return this.getSchema()===15}isStringSchema(){return this.getSchema()===0}isBooleanSchema(){return this.getSchema()===2}isNumericSchema(){return this.getSchema()===1}isBigIntegerSchema(){return this.getSchema()===17}isBigDecimalSchema(){return this.getSchema()===19}isStreaming(){let{streaming:$}=this.getMergedTraits();return!!$||this.getSchema()===42}isIdempotencyToken(){return!!this.getMergedTraits().idempotencyToken}getMergedTraits(){return this.normalizedTraits??(this.normalizedTraits={...this.getOwnTraits(),...this.getMemberTraits()})}getMemberTraits(){return r40(this.memberTraits)}getOwnTraits(){return r40(this.traits)}getKeySchema(){let[$,Z]=[this.isDocumentSchema(),this.isMapSchema()];if(!$&&!Z)throw Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(!0)}`);let Q=this.getSchema(),Y=$?15:Q[4]??0;return s40([Y,0],"key")}getValueSchema(){let $=this.getSchema(),[Z,Q,Y]=[this.isDocumentSchema(),this.isMapSchema(),this.isListSchema()],X=typeof $==="number"?63&$:$&&typeof $==="object"&&(Q||Y)?$[3+$[0]]:Z?15:void 0;if(X!=null)return s40([X,0],Q?"value":"member");throw Error(`@smithy/core/schema - ${this.getName(!0)} has no value member.`)}getMemberSchema($){let Z=this.getSchema();if(this.isStructSchema()&&Z[4].includes($)){let Q=Z[4].indexOf($),Y=Z[5][Q];return s40(mQ1(Y)?Y:[Y,0],$)}if(this.isDocumentSchema())return s40([15,0],$);throw Error(`@smithy/core/schema - ${this.getName(!0)} has no member=${$}.`)}getMemberSchemas(){let $={};try{for(let[Z,Q]of this.structIterator())$[Z]=Q}catch(Z){}return $}getEventStreamMember(){if(this.isStructSchema()){for(let[$,Z]of this.structIterator())if(Z.isStreaming()&&Z.isStructSchema())return $}return""}*structIterator(){if(this.isUnitSchema())return;if(!this.isStructSchema())throw Error("@smithy/core/schema - cannot iterate non-struct schema.");let $=this.getSchema(),Z=$[4].length,Q=$[o40.it];if(Q&&Z===Q.length){yield*Q;return}Q=Array(Z);for(let Y=0;Y<Z;++Y){let X=$[4][Y],J=s40([$[5][Y],0],X);yield Q[Y]=[X,J]}$[o40.it]=Q}}function s40($,Z){if($ instanceof sL)return Object.assign($,{memberName:Z,_isMemberSchema:!0});return new sL($,Z)}var mQ1=($)=>Array.isArray($)&&$.length===2,QR$=($)=>Array.isArray($)&&$.length>=5;class e40 extends xG{static symbol=Symbol.for("@smithy/sim");name;schemaRef;traits;symbol=e40.symbol}var Eo4=($,Z,Q,Y)=>xG.assign(new e40,{name:Z,namespace:$,traits:Y,schemaRef:Q}),Po4=($,Z,Q,Y)=>xG.assign(new e40,{name:Z,namespace:$,traits:Q,schemaRef:Y}),zo4={BLOB:21,STREAMING_BLOB:42,BOOLEAN:2,STRING:0,NUMERIC:1,BIG_INTEGER:17,BIG_DECIMAL:19,DOCUMENT:15,TIMESTAMP_DEFAULT:4,TIMESTAMP_DATE_TIME:5,TIMESTAMP_HTTP_DATE:6,TIMESTAMP_EPOCH_SECONDS:7,LIST_MODIFIER:64,MAP_MODIFIER:128};class oL{namespace;schemas;exceptions;static registries=new Map;constructor($,Z=new Map,Q=new Map){this.namespace=$,this.schemas=Z,this.exceptions=Q}static for($){if(!oL.registries.has($))oL.registries.set($,new oL($));return oL.registries.get($)}copyFrom($){let{schemas:Z,exceptions:Q}=this;for(let[Y,X]of $.schemas)if(!Z.has(Y))Z.set(Y,X);for(let[Y,X]of $.exceptions)if(!Q.has(Y))Q.set(Y,X)}register($,Z){let Q=this.normalizeShapeId($);for(let Y of[this,oL.for(Q.split("#")[0])])Y.schemas.set(Q,Z)}getSchema($){let Z=this.normalizeShapeId($);if(!this.schemas.has(Z)){if(!$.includes("#")){let Q="#"+$,Y=[];for(let[X,J]of this.schemas.entries())if(X.endsWith(Q))Y.push(J);if(Y.length===1)return Y[0]}throw Error(`@smithy/core/schema - schema not found for ${Z}`)}return this.schemas.get(Z)}registerError($,Z){let Q=$,Y=Q[1];for(let X of[this,oL.for(Y)])X.schemas.set(Y+"#"+Q[2],Q),X.exceptions.set(Q,Z)}getErrorCtor($){let Z=$;if(this.exceptions.has(Z))return this.exceptions.get(Z);return oL.for(Z[1]).exceptions.get(Z)}getBaseException(){for(let $ of this.exceptions.keys())if(Array.isArray($)){let[,Z,Q]=$,Y=Z+"#"+Q;if(Y.startsWith("smithy.ts.sdk.synthetic.")&&Y.endsWith("ServiceException"))return $}return}find($){for(let Z of this.schemas.values())if($(Z))return Z;return}clear(){this.schemas.clear(),this.exceptions.clear()}normalizeShapeId($){if($.includes("#"))return $;return this.namespace+"#"+$}}Ao4.ErrorSchema=xD0;Ao4.ListSchema=_D0;Ao4.MapSchema=vD0;Ao4.NormalizedSchema=sL;Ao4.OperationSchema=bD0;Ao4.SCHEMA=zo4;Ao4.Schema=xG;Ao4.SimpleSchema=e40;Ao4.StructureSchema=a40;Ao4.TypeRegistry=oL;Ao4.deref=ID0;Ao4.deserializerMiddlewareOption=$R$;Ao4.error=wo4;Ao4.getSchemaSerdePlugin=Bo4;Ao4.isStaticSchema=QR$;Ao4.list=Do4;Ao4.map=Lo4;Ao4.op=Oo4;Ao4.operation=dQ1;Ao4.serializerMiddlewareOption=ZR$;Ao4.sim=Eo4;Ao4.simAdapter=Po4;Ao4.simpleSchemaCacheN=CD0;Ao4.simpleSchemaCacheS=SD0;Ao4.struct=jo4;Ao4.traitsCache=kD0;Ao4.translateTraits=r40});var Z9=y((Is4)=>{var{getSmithyContext:so4,normalizeProvider:ro4}=QB();Is4.getSmithyContext=so4;Is4.normalizeProvider=ro4;var{SMITHY_CONTEXT_KEY:ao4,AlgorithmId:yD0}=YR();Is4.AlgorithmId=yD0;var{NormalizedSchema:eo4}=gF(),XR=($,Z)=>{let Q=[];if($)Q.push($);if(Z)for(let Y of Z)Q.push(Y);return Q},lP=($,Z)=>{return`${$||"anonymous"}${Z&&Z.length>0?` (a.k.a. ${Z.join(",")})`:""}`},$60=()=>{let $=[],Z=[],Q=!1,Y=new Set,X=(U)=>U.sort((N,B)=>YR$[B.step]-YR$[N.step]||XR$[B.priority||"normal"]-XR$[N.priority||"normal"]),J=(U)=>{let N=!1,B=(D)=>{let O=XR(D.name,D.aliases);if(O.includes(U)){N=!0;for(let j of O)Y.delete(j);return!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},G=(U)=>{let N=!1,B=(D)=>{if(D.middleware===U){N=!0;for(let O of XR(D.name,D.aliases))Y.delete(O);return!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},W=(U)=>{return $.forEach((N)=>{U.add(N.middleware,{...N})}),Z.forEach((N)=>{U.addRelativeTo(N.middleware,{...N})}),U.identifyOnResolve?.(F.identifyOnResolve()),U},K=(U)=>{let N=[];return U.before.forEach((B)=>{if(B.before.length===0&&B.after.length===0)N.push(B);else N.push(...K(B))}),N.push(U),U.after.reverse().forEach((B)=>{if(B.before.length===0&&B.after.length===0)N.push(B);else N.push(...K(B))}),N},H=(U=!1)=>{let N=[],B=[],D={};return $.forEach((j)=>{let w={...j,before:[],after:[]};for(let E of XR(w.name,w.aliases))D[E]=w;N.push(w)}),Z.forEach((j)=>{let w={...j,before:[],after:[]};for(let E of XR(w.name,w.aliases))D[E]=w;B.push(w)}),B.forEach((j)=>{if(j.toMiddleware){let w=D[j.toMiddleware];if(w===void 0){if(U)return;throw Error(`${j.toMiddleware} is not found when adding ${lP(j.name,j.aliases)} middleware ${j.relation} ${j.toMiddleware}`)}if(j.relation==="after")w.after.push(j);if(j.relation==="before")w.before.push(j)}}),X(N).map(K).reduce((j,w)=>{return j.push(...w),j},[])},F={add:(U,N={})=>{let{name:B,override:D,aliases:O}=N,j={step:"initialize",priority:"normal",middleware:U,...N},w=XR(B,O);if(w.length>0){if(w.some((E)=>Y.has(E))){if(!D)throw Error(`Duplicate middleware name '${lP(B,O)}'`);for(let E of w){let P=$.findIndex((z)=>z.name===E||z.aliases?.some((A)=>A===E));if(P===-1)continue;let T=$[P];if(T.step!==j.step||j.priority!==T.priority)throw Error(`"${lP(T.name,T.aliases)}" middleware with ${T.priority} priority in ${T.step} step cannot be overridden by "${lP(B,O)}" middleware with ${j.priority} priority in ${j.step} step.`);$.splice(P,1)}}for(let E of w)Y.add(E)}$.push(j)},addRelativeTo:(U,N)=>{let{name:B,override:D,aliases:O}=N,j={middleware:U,...N},w=XR(B,O);if(w.length>0){if(w.some((E)=>Y.has(E))){if(!D)throw Error(`Duplicate middleware name '${lP(B,O)}'`);for(let E of w){let P=Z.findIndex((z)=>z.name===E||z.aliases?.some((A)=>A===E));if(P===-1)continue;let T=Z[P];if(T.toMiddleware!==j.toMiddleware||T.relation!==j.relation)throw Error(`"${lP(T.name,T.aliases)}" middleware ${T.relation} "${T.toMiddleware}" middleware cannot be overridden by "${lP(B,O)}" middleware ${j.relation} "${j.toMiddleware}" middleware.`);Z.splice(P,1)}}for(let E of w)Y.add(E)}Z.push(j)},clone:()=>W($60()),use:(U)=>{U.applyToStack(F)},remove:(U)=>{if(typeof U==="string")return J(U);else return G(U)},removeByTag:(U)=>{let N=!1,B=(D)=>{let{tags:O,name:j,aliases:w}=D;if(O&&O.includes(U)){let E=XR(j,w);for(let P of E)Y.delete(P);return N=!0,!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},concat:(U)=>{let N=W($60());return N.use(U),N.identifyOnResolve(Q||N.identifyOnResolve()||(U.identifyOnResolve?.()??!1)),N},applyToStack:W,identify:()=>{return H(!0).map((U)=>{let N=U.step??U.relation+" "+U.toMiddleware;return lP(U.name,U.aliases)+" - "+N})},identifyOnResolve(U){if(typeof U==="boolean")Q=U;return Q},resolve:(U,N)=>{for(let B of H().map((D)=>D.middleware).reverse())U=B(U,N);if(Q)console.log(F.identify());return U}};return F},YR$={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},XR$={high:3,normal:2,low:1},$s4=($)=>()=>{throw Error($)},Zs4=($)=>()=>Promise.reject($),fD0=()=>{let $=new WeakSet;return(Z,Q)=>{if(typeof Q==="object"&&Q!==null){if($.has(Q))return"[Circular]";$.add(Q)}return Q}},Qs4=($)=>{return new Promise((Z)=>setTimeout(Z,$*1000))},WR$={minDelay:2,maxDelay:120},YB;(function($){$.ABORTED="ABORTED",$.FAILURE="FAILURE",$.SUCCESS="SUCCESS",$.RETRY="RETRY",$.TIMEOUT="TIMEOUT"})(YB||(YB={}));var Ys4=($)=>{if($.state===YB.ABORTED){let Z=Error(`${JSON.stringify({...$,reason:"Request was aborted"},fD0())}`);throw Z.name="AbortError",Z}else if($.state===YB.TIMEOUT){let Z=Error(`${JSON.stringify({...$,reason:"Waiter has timed out"},fD0())}`);throw Z.name="TimeoutError",Z}else if($.state!==YB.SUCCESS)throw Error(`${JSON.stringify($,fD0())}`);return $},Xs4=async({minDelay:$,maxDelay:Z,maxWaitTime:Q,abortController:Y,client:X,abortSignal:J},G,W)=>{let K={},[H,F]=[$*1000,Z*1000],U=0,N=Date.now()+Q*1000,B=Date.now()+60000,D=!1;while(!0){if(U>0){let w=Ws4(H,F,U,N);if(Y?.signal?.aborted||J?.aborted)return K["AbortController signal aborted."]|=0,K["AbortController signal aborted."]+=1,{state:YB.ABORTED,observedResponses:K};if(Date.now()+w>N)return{state:YB.TIMEOUT,observedResponses:K};await Qs4(w/1000)}let{state:O,reason:j}=await W(X,G);if(j){let w=Gs4(j);K[w]|=0,K[w]+=1}if(O!==YB.RETRY)return{state:O,reason:j,final:j,observedResponses:K};if(U+=1,!D&&Date.now()>=B)Js4(K,X),D=!0}},Js4=($={},Z)=>{let Q=Object.keys($),Y=0;for(let G of Q){let W=$[G]|0;if(G.startsWith("403:"))Y+=W}let X=Z?.config?.logger,J=typeof X?.warn==="function"&&!X.constructor?.name?.includes?.("NoOpLogger")?X:console;if(Y>=3||Q[Q.length-1]?.startsWith("403:"))J.warn("@smithy/util-waiter WARN - 403 status code encountered during waiter polling.")},Gs4=($)=>{let Z=$?.$response?.statusCode??$?.$metadata?.httpStatusCode;if($?.$responseBodyText)return`${Z?Z+": ":""}Deserialization error for body: ${$.$responseBodyText}`;if(Z){if($?.$response||$?.message)return`${Z??"Unknown"}: ${$?.message}`;return`${Z}: OK`}return String($?.message??JSON.stringify($,fD0())??"Unknown")},Ws4=($,Z,Q,Y)=>{let X=Math.log(Z/$)/Math.log(2)+1;if(Q>X)return Z;let J=$*2**(Q-1),G=Math.min(J,Z),W=Ks4($,G);if(Date.now()+W>Y){let K=Y-Date.now();return Math.max(0,K-500)}return W},Ks4=($,Z)=>$+Math.random()*(Z-$),Hs4=($)=>{if($.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if($.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if($.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if($.maxWaitTime<=$.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${$.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`);else if($.maxDelay<$.minDelay)throw Error(`WaiterConfiguration.maxDelay [${$.maxDelay}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`)},JR$=($)=>{let Z,Q=new Promise((Y)=>{if(Z=()=>Y({state:YB.ABORTED}),typeof $.addEventListener==="function")$.addEventListener("abort",Z);else $.onabort=Z});return{clearListener(){if(typeof $.removeEventListener==="function")$.removeEventListener("abort",Z)},aborted:Q}},Fs4=async($,Z,Q)=>{let Y={...WR$,...$};Hs4(Y);let X=[Xs4(Y,Z,Q)],J=[];if($.abortSignal){let{aborted:G,clearListener:W}=JR$($.abortSignal);J.push(W),X.push(G)}if($.abortController?.signal){let{aborted:G,clearListener:W}=JR$($.abortController.signal);J.push(W),X.push(G)}return Promise.race(X).then((G)=>{for(let W of J)W();return G})};class KR${config;middlewareStack=$60();initConfig;handlers;constructor($){this.config=$;let{protocol:Z,protocolSettings:Q}=$;if(Q){if(typeof Z==="function")$.protocol=new Z(Q)}}send($,Z,Q){let Y=typeof Z!=="function"?Z:void 0,X=typeof Z==="function"?Z:Q,J=Y===void 0&&this.config.cacheMiddleware===!0,G;if(J){if(!this.handlers)this.handlers=new WeakMap;let W=this.handlers;if(W.has($.constructor))G=W.get($.constructor);else G=$.resolveMiddleware(this.middlewareStack,this.config,Y),W.set($.constructor,G)}else delete this.handlers,G=$.resolveMiddleware(this.middlewareStack,this.config,Y);if(X)G($).then((W)=>X(null,W.output),(W)=>X(W)).catch(()=>{});else return G($).then((W)=>W.output)}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}var iQ1="***SensitiveInformation***";function gD0($,Z){if(Z==null)return Z;let Q=eo4.of($);if(Q.getMergedTraits().sensitive)return iQ1;if(Q.isListSchema()){if(!!Q.getValueSchema().getMergedTraits().sensitive)return iQ1}else if(Q.isMapSchema()){if(!!Q.getKeySchema().getMergedTraits().sensitive||!!Q.getValueSchema().getMergedTraits().sensitive)return iQ1}else if(Q.isStructSchema()&&typeof Z==="object"){let Y=Z,X={};for(let[J,G]of Q.structIterator())if(Y[J]!=null)X[J]=gD0(G,Y[J]);return X}return Z}class nQ1{middlewareStack=$60();schema;static classBuilder(){return new HR$}resolveMiddlewareWithContext($,Z,Q,{middlewareFn:Y,clientName:X,commandName:J,inputFilterSensitiveLog:G,outputFilterSensitiveLog:W,smithyContext:K,additionalContext:H,CommandCtor:F}){for(let j of Y.bind(this)(F,$,Z,Q))this.middlewareStack.use(j);let U=$.concat(this.middlewareStack),{logger:N}=Z,B={logger:N,clientName:X,commandName:J,inputFilterSensitiveLog:G,outputFilterSensitiveLog:W,[ao4]:{commandInstance:this,...K},...H},{requestHandler:D}=Z,O=Q??{};if(K.eventStream)O={isEventStream:!0,...O};return U.resolve((j)=>D.handle(j.request,O),B)}}class HR${_init=()=>{};_ep={};_middlewareFn=()=>[];_commandName="";_clientName="";_additionalContext={};_smithyContext={};_inputFilterSensitiveLog=void 0;_outputFilterSensitiveLog=void 0;_serializer=null;_deserializer=null;_operationSchema;init($){this._init=$}ep($){return this._ep=$,this}m($){return this._middlewareFn=$,this}s($,Z,Q={}){return this._smithyContext={service:$,operation:Z,...Q},this}c($={}){return this._additionalContext=$,this}n($,Z){return this._clientName=$,this._commandName=Z,this}f($=(Q)=>Q,Z=(Q)=>Q){return this._inputFilterSensitiveLog=$,this._outputFilterSensitiveLog=Z,this}ser($){return this._serializer=$,this}de($){return this._deserializer=$,this}sc($){return this._operationSchema=$,this._smithyContext.operationSchema=$,this}build(){let $=this,Z;return Z=class extends nQ1{input;static getEndpointParameterInstructions(){return $._ep}constructor(...[Q]){super();this.input=Q??{},$._init(this),this.schema=$._operationSchema}resolveMiddleware(Q,Y,X){let J=$._operationSchema,G=J?.[4]??J?.input,W=J?.[5]??J?.output;return this.resolveMiddlewareWithContext(Q,Y,X,{CommandCtor:Z,middlewareFn:$._middlewareFn,clientName:$._clientName,commandName:$._commandName,inputFilterSensitiveLog:$._inputFilterSensitiveLog??(J?gD0.bind(null,G):(K)=>K),outputFilterSensitiveLog:$._outputFilterSensitiveLog??(J?gD0.bind(null,W):(K)=>K),smithyContext:$._smithyContext,additionalContext:$._additionalContext})}serialize=$._serializer;deserialize=$._deserializer}}}var Us4="***SensitiveInformation***",Ns4=($,Z,Q)=>{for(let[J,G]of Object.entries($)){let W=async function(H,F,U){let N=new G(H);if(typeof F==="function")this.send(N,F);else if(typeof U==="function"){if(typeof F!=="object")throw Error(`Expected http options but got ${typeof F}`);this.send(N,F||{},U)}else return this.send(N,F)},K=(J[0].toLowerCase()+J.slice(1)).replace(/Command$/,"");Z.prototype[K]=W}let{paginators:Y={},waiters:X={}}=Q??{};for(let[J,G]of Object.entries(Y))if(Z.prototype[J]===void 0)Z.prototype[J]=function(W={},K,...H){return G({...K,client:this},W,...H)};for(let[J,G]of Object.entries(X))if(Z.prototype[J]===void 0)Z.prototype[J]=async function(W={},K,...H){let F=K;if(typeof K==="number")F={maxWaitTime:K};return G({...F,client:this},W,...H)}};class Tp extends Error{$fault;$response;$retryable;$metadata;constructor($){super($.message);Object.setPrototypeOf(this,Object.getPrototypeOf(this).constructor.prototype),this.name=$.name,this.$fault=$.$fault,this.$metadata=$.$metadata}static isInstance($){if(!$)return!1;let Z=$;return Tp.prototype.isPrototypeOf(Z)||Boolean(Z.$fault)&&Boolean(Z.$metadata)&&(Z.$fault==="client"||Z.$fault==="server")}static[Symbol.hasInstance]($){if(!$)return!1;let Z=$;if(this===Tp)return Tp.isInstance($);if(Tp.isInstance($)){if(Z.name&&this.name)return this.prototype.isPrototypeOf($)||Z.name===this.name;return this.prototype.isPrototypeOf($)}return!1}}var FR$=($,Z={})=>{Object.entries(Z).filter(([,Y])=>Y!==void 0).forEach(([Y,X])=>{if($[Y]==null||$[Y]==="")$[Y]=X});let Q=$.message||$.Message||"UnknownError";return $.message=Q,delete $.Message,$},UR$=({output:$,parsedBody:Z,exceptionCtor:Q,errorCode:Y})=>{let X=Ds4($),J=X.httpStatusCode?X.httpStatusCode+"":void 0,G=new Q({name:Z?.code||Z?.Code||Y||J||"UnknownError",$fault:"client",$metadata:X});throw FR$(G,Z)},Bs4=($)=>{return({output:Z,parsedBody:Q,errorCode:Y})=>{UR$({output:Z,parsedBody:Q,exceptionCtor:$,errorCode:Y})}},Ds4=($)=>({httpStatusCode:$.statusCode,requestId:$.headers["x-amzn-requestid"]??$.headers["x-amzn-request-id"]??$.headers["x-amz-request-id"],extendedRequestId:$.headers["x-amz-id-2"],cfId:$.headers["x-amz-cf-id"]}),Ls4=($)=>{switch($){case"standard":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"mobile":return{retryMode:"standard",connectionTimeout:30000};default:return{}}},GR$=!1,Os4=($)=>{if($&&!GR$&&parseInt($.substring(1,$.indexOf(".")))<16)GR$=!0},NR$=Object.values(yD0),BR$=($)=>{let Z=[];for(let Q in yD0){let Y=yD0[Q];if($[Y]===void 0)continue;Z.push({algorithmId:()=>Y,checksumConstructor:()=>$[Y]})}for(let[Q,Y]of Object.entries($.checksumAlgorithms??{}))Z.push({algorithmId:()=>Q,checksumConstructor:()=>Y});return{addChecksumAlgorithm(Q){$.checksumAlgorithms=$.checksumAlgorithms??{};let Y=Q.algorithmId(),X=Q.checksumConstructor();if(NR$.includes(Y))$.checksumAlgorithms[Y.toUpperCase()]=X;else $.checksumAlgorithms[Y]=X;Z.push(Q)},checksumAlgorithms(){return Z}}},DR$=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{let Y=Q.algorithmId();if(NR$.includes(Y))Z[Y]=Q.checksumConstructor()}),Z},LR$=($)=>{return{setRetryStrategy(Z){$.retryStrategy=Z},retryStrategy(){return $.retryStrategy}}},OR$=($)=>{let Z={};return Z.retryStrategy=$.retryStrategy(),Z},jR$=($)=>{return Object.assign(BR$($),LR$($))},js4=jR$,ws4=($)=>{return Object.assign(DR$($),OR$($))},Es4=($)=>Array.isArray($)?$:[$],wR$=($)=>{for(let Q in $)if(Object.prototype.hasOwnProperty.call($,Q)&&$[Q]["#text"]!==void 0)$[Q]=$[Q]["#text"];else if(typeof $[Q]==="object"&&$[Q]!==null)$[Q]=wR$($[Q]);return $},Ps4=($)=>{return $!=null};class ER${trace(){}debug(){}info(){}warn(){}error(){}}function PR$($,Z,Q){let Y,X,J;if(typeof Z>"u"&&typeof Q>"u")Y={},J=$;else if(Y=$,typeof Z==="function")return X=Z,J=Q,Ts4(Y,X,J);else J=Z;for(let G of Object.keys(J)){if(!Array.isArray(J[G])){Y[G]=J[G];continue}zR$(Y,null,J,G)}return Y}var zs4=($)=>{let Z={};for(let[Q,Y]of Object.entries($||{}))Z[Q]=[,Y];return Z},As4=($,Z)=>{let Q={};for(let Y in Z)zR$(Q,$,Z,Y);return Q},Ts4=($,Z,Q)=>{return PR$($,Object.entries(Q).reduce((Y,[X,J])=>{if(Array.isArray(J))Y[X]=J;else if(typeof J==="function")Y[X]=[Z,J()];else Y[X]=[Z,J];return Y},{}))},zR$=($,Z,Q,Y)=>{if(Z!==null){let G=Q[Y];if(typeof G==="function")G=[,G];let[W=qs4,K=Rs4,H=Y]=G;if(typeof W==="function"&&W(Z[H])||typeof W!=="function"&&!!W)$[Y]=K(Z[H]);return}let[X,J]=Q[Y];if(typeof J==="function"){let G,W=X===void 0&&(G=J())!=null,K=typeof X==="function"&&!!X(void 0)||typeof X!=="function"&&!!X;if(W)$[Y]=G;else if(K)$[Y]=J()}else{let G=X===void 0&&J!=null,W=typeof X==="function"&&!!X(J)||typeof X!=="function"&&!!X;if(G||W)$[Y]=J}},qs4=($)=>$!=null,Rs4=($)=>$,Ms4=($)=>{if($!==$)return"NaN";switch($){case 1/0:return"Infinity";case-1/0:return"-Infinity";default:return $}},Vs4=($)=>$.toISOString().replace(".000Z","Z"),pQ1=($)=>{if($==null)return{};if(Array.isArray($))return $.filter((Z)=>Z!=null).map(pQ1);if(typeof $==="object"){let Z={};for(let Q of Object.keys($)){if($[Q]==null)continue;Z[Q]=pQ1($[Q])}return Z}return $};Is4.Client=KR$;Is4.Command=nQ1;Is4.NoOpLogger=ER$;Is4.SENSITIVE_STRING=Us4;Is4.ServiceException=Tp;Is4.WaiterState=YB;Is4._json=pQ1;Is4.checkExceptions=Ys4;Is4.constructStack=$60;Is4.convertMap=zs4;Is4.createAggregatedClient=Ns4;Is4.createWaiter=Fs4;Is4.decorateServiceException=FR$;Is4.emitWarningIfUnsupportedVersion=Os4;Is4.getArrayIfSingleItem=Es4;Is4.getChecksumConfiguration=BR$;Is4.getDefaultClientConfiguration=js4;Is4.getDefaultExtensionConfiguration=jR$;Is4.getRetryConfiguration=LR$;Is4.getValueFromTextNode=wR$;Is4.invalidFunction=$s4;Is4.invalidProvider=Zs4;Is4.isSerializableHeaderValue=Ps4;Is4.loadConfigsForDefaultMode=Ls4;Is4.map=PR$;Is4.resolveChecksumRuntimeConfig=DR$;Is4.resolveDefaultRuntimeConfig=ws4;Is4.resolveRetryRuntimeConfig=OR$;Is4.schemaLogFilter=gD0;Is4.serializeDateTime=Vs4;Is4.serializeFloat=Ms4;Is4.take=As4;Is4.throwDefaultError=UR$;Is4.waiterServiceDefaults=WR$;Is4.withBaseException=Bs4});var h4=y((Fa4)=>{var{homedir:Br4}=V0("os"),{sep:Dr4,join:Z60}=V0("path"),{createHash:Lr4}=V0("crypto"),{readFile:VR$}=V0("fs/promises"),{IniSectionType:hD0}=YR(),{normalizeProvider:uD0}=Z9(),{isValidHostLabel:Or4}=QB();class qp extends Error{name="ProviderError";tryNextLink;constructor($,Z=!0){let Q,Y=!0;if(typeof Z==="boolean")Q=void 0,Y=Z;else if(Z!=null&&typeof Z==="object")Q=Z.logger,Y=Z.tryNextLink??!0;super($);this.tryNextLink=Y,Object.setPrototypeOf(this,qp.prototype),Q?.debug?.(`@smithy/property-provider ${Y?"->":"(!)"} ${$}`)}static from($,Z=!0){return Object.assign(new this($.message,Z),$)}}class Q60 extends qp{name="CredentialsProviderError";constructor($,Z=!0){super($,Z);Object.setPrototypeOf(this,Q60.prototype)}}class aQ1 extends qp{name="TokenProviderError";constructor($,Z=!0){super($,Z);Object.setPrototypeOf(this,aQ1.prototype)}}var IR$=(...$)=>async()=>{if($.length===0)throw new qp("No providers in chain");let Z;for(let Q of $)try{return await Q()}catch(Y){if(Z=Y,Y?.tryNextLink)continue;throw Y}throw Z},kR$=($)=>()=>Promise.resolve($),eQ1=($,Z,Q)=>{let Y,X,J,G=!1,W=async()=>{if(!X)X=$();try{Y=await X,J=!0,G=!1}finally{X=void 0}return Y};if(Z===void 0)return async(K)=>{if(!J||K?.forceRefresh)Y=await W();return Y};return async(K)=>{if(!J||K?.forceRefresh)Y=await W();if(G)return Y;if(Q&&!Q(Y))return G=!0,Y;if(Z(Y))return await W(),Y;return Y}},rL=($,Z,Q)=>{if(!(Z in $))return;if($[Z]==="true")return!0;if($[Z]==="false")return!1;throw Error(`Cannot load ${Q} "${Z}". Expected "true" or "false", got ${$[Z]}.`)},jr4=($,Z,Q)=>{if(!(Z in $))return;let Y=parseInt($[Z],10);if(Number.isNaN(Y))throw TypeError(`Cannot load ${Q} '${Z}'. Expected number, got '${$[Z]}'.`);return Y},hF;(function($){$.ENV="env",$.CONFIG="shared config entry"})(hF||(hF={}));var tQ1={},wr4=()=>{if(process&&process.geteuid)return`${process.geteuid()}`;return"DEFAULT"},Y60=()=>{let{HOME:$,USERPROFILE:Z,HOMEPATH:Q,HOMEDRIVE:Y=`C:${Dr4}`}=process.env;if($)return $;if(Z)return Z;if(Q)return`${Y}${Q}`;let X=wr4();if(!tQ1[X])tQ1[X]=Br4();return tQ1[X]},CR$="AWS_PROFILE",SR$="default",_R$=($)=>$.profile||process.env[CR$]||SR$,vR$=($)=>{let Q=Lr4("sha1").update($).digest("hex");return Z60(Y60(),".aws","sso","cache",`${Q}.json`)},lD0={},Er4=async($)=>{if(lD0[$])return lD0[$];let Z=vR$($),Q=await VR$(Z,"utf8");return JSON.parse(Q)},JR=".",Pr4=($)=>Object.entries($).filter(([Z])=>{let Q=Z.indexOf(JR);if(Q===-1)return!1;return Object.values(hD0).includes(Z.substring(0,Q))}).reduce((Z,[Q,Y])=>{let X=Q.indexOf(JR),J=Q.substring(0,X)===hD0.PROFILE?Q.substring(X+1):Q;return Z[J]=Y,Z},{...$.default&&{default:$.default}}),zr4="AWS_CONFIG_FILE",bR$=()=>process.env[zr4]||Z60(Y60(),".aws","config"),Ar4="AWS_SHARED_CREDENTIALS_FILE",Tr4=()=>process.env[Ar4]||Z60(Y60(),".aws","credentials"),qr4=/^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/,Rr4=["__proto__","profile __proto__"],sQ1=($)=>{let Z={},Q,Y;for(let X of $.split(/\r?\n/)){let J=X.split(/(^|\s)[;#]/)[0].trim();if(J[0]==="["&&J[J.length-1]==="]"){Q=void 0,Y=void 0;let W=J.substring(1,J.length-1),K=qr4.exec(W);if(K){let[,H,,F]=K;if(Object.values(hD0).includes(H))Q=[H,F].join(JR)}else Q=W;if(Rr4.includes(W))throw Error(`Found invalid profile name "${W}"`)}else if(Q){let W=J.indexOf("=");if(![0,-1].includes(W)){let[K,H]=[J.substring(0,W).trim(),J.substring(W+1).trim()];if(H==="")Y=K;else{if(Y&&X.trimStart()===X)Y=void 0;Z[Q]=Z[Q]||{};let F=Y?[Y,K].join(JR):K;Z[Q][F]=H}}}}return Z},oQ1={},cD0={},mD0=($,Z)=>{if(cD0[$]!==void 0)return cD0[$];if(!oQ1[$]||Z?.ignoreCache)oQ1[$]=VR$($,"utf8");return oQ1[$]},AR$=()=>({}),$Y1=async($={})=>{let{filepath:Z=Tr4(),configFilepath:Q=bR$()}=$,Y=Y60(),X="~/",J=Z;if(Z.startsWith("~/"))J=Z60(Y,Z.slice(2));let G=Q;if(Q.startsWith("~/"))G=Z60(Y,Q.slice(2));let W=await Promise.all([mD0(G,{ignoreCache:$.ignoreCache}).then(sQ1).then(Pr4).catch(AR$),mD0(J,{ignoreCache:$.ignoreCache}).then(sQ1).catch(AR$)]);return{configFile:W[0],credentialsFile:W[1]}},Mr4=($)=>Object.entries($).filter(([Z])=>Z.startsWith(hD0.SSO_SESSION+JR)).reduce((Z,[Q,Y])=>({...Z,[Q.substring(Q.indexOf(JR)+1)]:Y}),{}),Vr4=()=>({}),Ir4=async($={})=>mD0($.configFilepath??bR$()).then(sQ1).then(Mr4).catch(Vr4),kr4=(...$)=>{let Z={};for(let Q of $)for(let[Y,X]of Object.entries(Q))if(Z[Y]!==void 0)Object.assign(Z[Y],X);else Z[Y]=X;return Z},Cr4=async($)=>{let Z=await $Y1($);return kr4(Z.configFile,Z.credentialsFile)},Sr4={getFileRecord(){return cD0},interceptFile($,Z){cD0[$]=Promise.resolve(Z)},getTokenRecord(){return lD0},interceptToken($,Z){lD0[$]=Z}};function xR$($){try{let Z=new Set(Array.from($.match(/([A-Z_]){3,}/g)??[]));return Z.delete("CONFIG"),Z.delete("CONFIG_PREFIX_SEPARATOR"),Z.delete("ENV"),[...Z].join(", ")}catch(Z){return $}}var _r4=($,Z)=>async()=>{try{let Q=$(process.env,Z);if(Q===void 0)throw Error();return Q}catch(Q){throw new Q60(Q.message||`Not found in ENV: ${xR$($.toString())}`,{logger:Z?.logger})}},vr4=($,{preferredFile:Z="config",...Q}={})=>async()=>{let Y=_R$(Q),{configFile:X,credentialsFile:J}=await $Y1(Q),G=J[Y]||{},W=X[Y]||{},K=Z==="config"?{...G,...W}:{...W,...G};try{let F=$(K,Z==="config"?X:J);if(F===void 0)throw Error();return F}catch(H){throw new Q60(H.message||`Not found in config files w/ profile [${Y}]: ${xR$($.toString())}`,{logger:Q.logger})}},br4=($)=>typeof $==="function",fR$=($)=>br4($)?async()=>await $():kR$($),rQ1=({environmentVariableSelector:$,configFileSelector:Z,default:Q},Y={})=>{let{signingName:X,logger:J}=Y;return eQ1(IR$(_r4($,{signingName:X,logger:J}),vr4(Z,Y),fR$(Q)))},ZY1="AWS_USE_DUALSTACK_ENDPOINT",QY1="use_dualstack_endpoint",xr4=!1,fr4={environmentVariableSelector:($)=>rL($,ZY1,hF.ENV),configFileSelector:($)=>rL($,QY1,hF.CONFIG),default:!1},yr4={environmentVariableSelector:($)=>rL($,ZY1,hF.ENV),configFileSelector:($)=>rL($,QY1,hF.CONFIG),default:void 0},YY1="AWS_USE_FIPS_ENDPOINT",XY1="use_fips_endpoint",gr4=!1,hr4={environmentVariableSelector:($)=>rL($,YY1,hF.ENV),configFileSelector:($)=>rL($,XY1,hF.CONFIG),default:!1},ur4={environmentVariableSelector:($)=>rL($,YY1,hF.ENV),configFileSelector:($)=>rL($,XY1,hF.CONFIG),default:void 0},lr4=($)=>{let{tls:Z,endpoint:Q,urlParser:Y,useDualstackEndpoint:X}=$;return Object.assign($,{tls:Z??!0,endpoint:uD0(typeof Q==="string"?Y(Q):Q),isCustomEndpoint:!0,useDualstackEndpoint:uD0(X??!1)})},cr4=async($)=>{let{tls:Z=!0}=$,Q=await $.region();if(!new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/).test(Q))throw Error("Invalid region in client config");let X=await $.useDualstackEndpoint(),J=await $.useFipsEndpoint(),{hostname:G}=await $.regionInfoProvider(Q,{useDualstackEndpoint:X,useFipsEndpoint:J})??{};if(!G)throw Error("Cannot resolve hostname from client config");return $.urlParser(`${Z?"https:":"http:"}//${G}`)},mr4=($)=>{let Z=uD0($.useDualstackEndpoint??!1),{endpoint:Q,useFipsEndpoint:Y,urlParser:X,tls:J}=$;return Object.assign($,{tls:J??!0,endpoint:Q?uD0(typeof Q==="string"?X(Q):Q):()=>cr4({...$,useDualstackEndpoint:Z,useFipsEndpoint:Y}),isCustomEndpoint:!!Q,useDualstackEndpoint:Z})},yR$="AWS_REGION",gR$="region",hR$={environmentVariableSelector:($)=>$[yR$],configFileSelector:($)=>$[gR$],default:()=>{throw Error("Region is missing")}},dr4={preferredFile:"credentials"},TR$=new Set,ir4=($,Z=Or4)=>{if(!TR$.has($)&&!Z($))if($==="*")console.warn('@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.');else throw Error(`Region not accepted: region="${$}" is not a valid hostname component.`);else TR$.add($)},uR$=($)=>typeof $==="string"&&($.startsWith("fips-")||$.endsWith("-fips")),pr4=($)=>uR$($)?["fips-aws-global","aws-fips"].includes($)?"us-east-1":$.replace(/fips-(dkr-|prod-)?|-fips/,""):$,nr4=($)=>{let{region:Z,useFipsEndpoint:Q}=$;if(!Z)throw Error("Region is missing");return Object.assign($,{region:async()=>{let Y=typeof Z==="function"?await Z():Z,X=pr4(Y);return ir4(X),X},useFipsEndpoint:async()=>{let Y=typeof Z==="string"?Z:await Z();if(uR$(Y))return!0;return typeof Q!=="function"?Promise.resolve(!!Q):Q()}})},qR$=($=[],{useFipsEndpoint:Z,useDualstackEndpoint:Q})=>$.find(({tags:Y})=>Z===Y.includes("fips")&&Q===Y.includes("dualstack"))?.hostname,tr4=($,{regionHostname:Z,partitionHostname:Q})=>Z?Z:Q?Q.replace("{region}",$):void 0,or4=($,{partitionHash:Z})=>Object.keys(Z||{}).find((Q)=>Z[Q].regions.includes($))??"aws",sr4=($,{signingRegion:Z,regionRegex:Q,useFipsEndpoint:Y})=>{if(Z)return Z;else if(Y){let X=Q.replace("\\\\","\\").replace(/^\^/g,"\\.").replace(/\$$/g,"\\."),J=$.match(X);if(J)return J[0].slice(1,-1)}},rr4=($,{useFipsEndpoint:Z=!1,useDualstackEndpoint:Q=!1,signingService:Y,regionHash:X,partitionHash:J})=>{let G=or4($,{partitionHash:J}),W=$ in X?$:J[G]?.endpoint??$,K={useFipsEndpoint:Z,useDualstackEndpoint:Q},H=qR$(X[W]?.variants,K),F=qR$(J[G]?.variants,K),U=tr4(W,{regionHostname:H,partitionHostname:F});if(U===void 0)throw Error(`Endpoint resolution failed for: ${{resolvedRegion:W,useFipsEndpoint:Z,useDualstackEndpoint:Q}}`);let N=sr4(U,{signingRegion:X[W]?.signingRegion,regionRegex:J[G].regionRegex,useFipsEndpoint:Z});return{partition:G,signingService:Y,hostname:U,...N&&{signingRegion:N},...X[W]?.signingService&&{signingService:X[W].signingService}}},ar4="AWS_EXECUTION_ENV",RR$="AWS_REGION",MR$="AWS_DEFAULT_REGION",er4="AWS_EC2_METADATA_DISABLED",$a4=["in-region","cross-region","mobile","standard","legacy"],Za4="/latest/meta-data/placement/region",Qa4="AWS_DEFAULTS_MODE",Ya4="defaults_mode",Xa4={environmentVariableSelector:($)=>{return $[Qa4]},configFileSelector:($)=>{return $[Ya4]},default:"legacy"},Ja4=({region:$=rQ1(hR$),defaultsMode:Z=rQ1(Xa4)}={})=>eQ1(async()=>{let Q=typeof Z==="function"?await Z():Z;switch(Q?.toLowerCase()){case"auto":return Ga4($);case"in-region":case"cross-region":case"mobile":case"standard":case"legacy":return Promise.resolve(Q?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw Error(`Invalid parameter for "defaultsMode", expect ${$a4.join(", ")}, got ${Q}`)}}),Ga4=async($)=>{if($){let Z=typeof $==="function"?await $():$,Q=await Wa4();if(!Q)return"standard";if(Z===Q)return"in-region";else return"cross-region"}return"standard"},Wa4=async()=>{if(process.env[ar4]&&(process.env[RR$]||process.env[MR$]))return process.env[RR$]??process.env[MR$];if(!process.env[er4])try{let $=await Ka4();return(await Ha4({hostname:$.hostname,path:Za4})).toString()}catch($){}},Ka4=async()=>{let $=process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;if($){let Q=new URL($);return{hostname:Q.hostname,path:Q.pathname}}if(process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE==="IPv6")return{hostname:"fd00:ec2::254",path:"/"};return{hostname:"169.254.169.254",path:"/"}},Ha4=async({hostname:$,path:Z})=>{let{request:Q}=V0("http");return new Promise((Y,X)=>{let J=Q({method:"GET",hostname:$.replace(/^\[(.+)]$/,"$1"),path:Z,timeout:1000,signal:AbortSignal.timeout(1000)});J.on("error",(G)=>{X(G),J.destroy()}),J.on("timeout",()=>{X(Error("TimeoutError from instance metadata service")),J.destroy()}),J.on("response",(G)=>{let{statusCode:W=400}=G;if(W<200||300<=W){X(Object.assign(Error("Error response received from instance metadata service"),{statusCode:W})),J.destroy();return}let K=[];G.on("data",(H)=>K.push(H)),G.on("end",()=>{Y(Buffer.concat(K)),J.destroy()})}),J.end()})};Fa4.CONFIG_PREFIX_SEPARATOR=JR;Fa4.CONFIG_USE_DUALSTACK_ENDPOINT=QY1;Fa4.CONFIG_USE_FIPS_ENDPOINT=XY1;Fa4.CredentialsProviderError=Q60;Fa4.DEFAULT_PROFILE=SR$;Fa4.DEFAULT_USE_DUALSTACK_ENDPOINT=xr4;Fa4.DEFAULT_USE_FIPS_ENDPOINT=gr4;Fa4.ENV_PROFILE=CR$;Fa4.ENV_USE_DUALSTACK_ENDPOINT=ZY1;Fa4.ENV_USE_FIPS_ENDPOINT=YY1;Fa4.NODE_REGION_CONFIG_FILE_OPTIONS=dr4;Fa4.NODE_REGION_CONFIG_OPTIONS=hR$;Fa4.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS=fr4;Fa4.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS=hr4;Fa4.ProviderError=qp;Fa4.REGION_ENV_NAME=yR$;Fa4.REGION_INI_NAME=gR$;Fa4.SelectorType=hF;Fa4.TokenProviderError=aQ1;Fa4.booleanSelector=rL;Fa4.chain=IR$;Fa4.externalDataInterceptor=Sr4;Fa4.fromStatic=fR$;Fa4.fromValue=kR$;Fa4.getHomeDir=Y60;Fa4.getProfileName=_R$;Fa4.getRegionInfo=rr4;Fa4.getSSOTokenFilepath=vR$;Fa4.getSSOTokenFromFile=Er4;Fa4.loadConfig=rQ1;Fa4.loadSharedConfigFiles=$Y1;Fa4.loadSsoSessionData=Ir4;Fa4.memoize=eQ1;Fa4.nodeDualstackConfigSelectors=yr4;Fa4.nodeFipsConfigSelectors=ur4;Fa4.numberSelector=jr4;Fa4.parseKnownFiles=Cr4;Fa4.readFile=mD0;Fa4.resolveCustomEndpointsConfig=lr4;Fa4.resolveDefaultsModeConfig=Ja4;Fa4.resolveEndpointsConfig=mr4;Fa4.resolveRegionConfig=nr4});var BZ=y((ye4)=>{var{CONFIG_PREFIX_SEPARATOR:lR$,loadConfig:ea4}=h4(),{toEndpointV1:dD0,getSmithyContext:$e4,normalizeProvider:JY1,isValidHostLabel:dR$}=QB();ye4.isValidHostLabel=dR$;ye4.middlewareEndpointToEndpointV1=dD0;ye4.toEndpointV1=dD0;var{EndpointURLScheme:KY1}=YR(),cR$="AWS_ENDPOINT_URL",mR$="endpoint_url",Ze4=($)=>({environmentVariableSelector:(Z)=>{let Q=$.split(" ").map((J)=>J.toUpperCase()),Y=Z[[cR$,...Q].join("_")];if(Y)return Y;let X=Z[cR$];if(X)return X;return},configFileSelector:(Z,Q)=>{if(Q&&Z.services){let X=Q[["services",Z.services].join(lR$)];if(X){let J=$.split(" ").map((W)=>W.toLowerCase()),G=X[[J.join("_"),mR$].join(lR$)];if(G)return G}}let Y=Z[mR$];if(Y)return Y;return},default:void 0}),iD0=async($)=>ea4(Ze4($??""))(),Qe4=async($)=>{let Z=$?.Bucket||"";if(typeof $.Bucket==="string")$.Bucket=Z.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"));if(We4(Z)){if($.ForcePathStyle===!0)throw Error("Path-style addressing cannot be used with ARN buckets")}else if(!Ge4(Z)||Z.indexOf(".")!==-1&&!String($.Endpoint).startsWith("http:")||Z.toLowerCase()!==Z||Z.length<3)$.ForcePathStyle=!0;if($.DisableMultiRegionAccessPoints)$.disableMultiRegionAccessPoints=!0,$.DisableMRAP=!0;return $},Ye4=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,Xe4=/(\d+\.){3}\d+/,Je4=/\.\./,Ge4=($)=>Ye4.test($)&&!Xe4.test($)&&!Je4.test($),We4=($)=>{let[Z,Q,Y,,,X]=$.split(":"),J=Z==="arn"&&$.split(":").length>=6,G=Boolean(J&&Q&&Y&&X);if(J&&!G)throw Error(`Invalid ARN: ${$} was an invalid ARN.`);return G},Ke4=($,Z,Q,Y=!1)=>{let X=async()=>{let J;if(Y)J=Q.clientContextParams?.[$]??Q[$]??Q[Z];else J=Q[$]??Q[Z];if(typeof J==="function")return J();return J};if($==="credentialScope"||Z==="CredentialScope")return async()=>{let J=typeof Q.credentials==="function"?await Q.credentials():Q.credentials;return J?.credentialScope??J?.CredentialScope};if($==="accountId"||Z==="AccountId")return async()=>{let J=typeof Q.credentials==="function"?await Q.credentials():Q.credentials;return J?.accountId??J?.AccountId};if($==="endpoint"||Z==="endpoint")return async()=>{if(Q.isCustomEndpoint===!1)return;let J=await X();if(J&&typeof J==="object"){if("url"in J)return J.url.href;if("hostname"in J){let{protocol:G,hostname:W,port:K,path:H}=J;return`${G}//${W}${K?":"+K:""}${H}`}}return J};return X};function iR$($){return async(Z,Q,Y,X)=>{if(!Y.isCustomEndpoint){let W;if(Y.serviceConfiguredEndpoint)W=await Y.serviceConfiguredEndpoint();else W=await $(Y.serviceId);if(W)Y.endpoint=()=>Promise.resolve(dD0(W)),Y.isCustomEndpoint=!0}let J=await pR$(Z,Q,Y);if(typeof Y.endpointProvider!=="function")throw Error("config.endpointProvider is not set.");let G=Y.endpointProvider(J,X);if(Y.isCustomEndpoint&&Y.endpoint){let W=await Y.endpoint();if(W?.headers){G.headers??={};for(let[K,H]of Object.entries(W.headers))G.headers[K]=Array.isArray(H)?H:[H]}}return G}}var pR$=async($,Z,Q)=>{let Y={},X=Z?.getEndpointParameterInstructions?.()||{};for(let[J,G]of Object.entries(X))switch(G.type){case"staticContextParams":Y[J]=G.value;break;case"contextParams":Y[J]=$[G.name];break;case"clientContextParams":case"builtInParams":Y[J]=await Ke4(G.name,J,Q,G.type!=="builtInParams")();break;case"operationContextParams":Y[J]=G.get($);break;default:throw Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(G))}if(Object.keys(X).length===0)Object.assign(Y,Q);if(String(Q.serviceId).toLowerCase()==="s3")await Qe4(Y);return Y};function He4($,Z,Q){if(!$.__smithy_context)$.__smithy_context={features:{}};else if(!$.__smithy_context.features)$.__smithy_context.features={};$.__smithy_context.features[Z]=Q}function nR$($){let Z=iR$($);return({config:Q,instructions:Y})=>{return(X,J)=>async(G)=>{if(Q.isCustomEndpoint)He4(J,"ENDPOINT_OVERRIDE","N");let W=await Z(G.input,{getEndpointParameterInstructions(){return Y}},{...Q},J);J.endpointV2=W,J.authSchemes=W.properties?.authSchemes;let K=J.authSchemes?.[0];if(K){J.signing_region=K.signingRegion,J.signing_service=K.signingName;let F=$e4(J)?.selectedHttpAuthScheme?.httpAuthOption;if(F)F.signingProperties=Object.assign(F.signingProperties||{},{signing_region:K.signingRegion,signingRegion:K.signingRegion,signing_service:K.signingName,signingName:K.signingName,signingRegionSet:K.signingRegionSet},K.properties)}return X({...G})}}}var Fe4={name:"serializerMiddleware"},tR$={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:Fe4.name};function Ue4($){let Z=nR$($);return(Q,Y)=>({applyToStack:(X)=>{X.addRelativeTo(Z({config:Q,instructions:Y}),tR$)}})}function Ne4($){return(Z)=>{let Q=Z.tls??!0,{endpoint:Y,useDualstackEndpoint:X,useFipsEndpoint:J}=Z,G=Y!=null?async()=>dD0(await JY1(Y)()):void 0,K=Object.assign(Z,{endpoint:G,tls:Q,isCustomEndpoint:!!Y,useDualstackEndpoint:JY1(X??!1),useFipsEndpoint:JY1(J??!1)}),H=void 0;return K.serviceConfiguredEndpoint=async()=>{if(Z.serviceId&&!H)H=$(Z.serviceId);return H},K}}class HY1{nodes;root;conditions;results;constructor($,Z,Q,Y){this.nodes=$,this.root=Z,this.conditions=Q,this.results=Y}static from($,Z,Q,Y){return new HY1($,Z,Q,Y)}}class oR${capacity;data=new Map;parameters=[];constructor({size:$,params:Z}){if(this.capacity=$??50,Z)this.parameters=Z}get($,Z){let Q=this.hash($);if(Q===!1)return Z();if(!this.data.has(Q)){if(this.data.size>this.capacity+10){let Y=this.data.keys(),X=0;while(!0){let{value:J,done:G}=Y.next();if(this.data.delete(J),G||++X>10)break}}this.data.set(Q,Z())}return this.data.get(Q)}size(){return this.data.size}hash($){let Z="",{parameters:Q}=this;if(Q.length===0)return!1;for(let Y of Q){let X=String($[Y]??"");if(X.includes("|;"))return!1;Z+=X+"|;"}return Z}}class AY extends Error{constructor($){super($);this.name="EndpointError"}}var X60="endpoints";function cP($){if(typeof $!=="object"||$==null)return $;if("ref"in $)return`$${cP($.ref)}`;if("fn"in $)return`${$.fn}(${($.argv||[]).map(cP).join(", ")})`;return JSON.stringify($,null,2)}var sR$={},Be4=($,Z)=>$===Z;function De4(...$){for(let Z of $)if(Z!=null)return Z;return}var Le4=($)=>{let Z=$.split("."),Q=[];for(let Y of Z){let X=Y.indexOf("[");if(X!==-1){if(Y.indexOf("]")!==Y.length-1)throw new AY(`Path: '${$}' does not end with ']'`);let J=Y.slice(X+1,-1);if(Number.isNaN(parseInt(J)))throw new AY(`Invalid array index: '${J}' in path: '${$}'`);if(X!==0)Q.push(Y.slice(0,X));Q.push(J)}else Q.push(Y)}return Q},rR$=($,Z)=>Le4(Z).reduce((Q,Y)=>{if(typeof Q!=="object")throw new AY(`Index '${Y}' in '${Z}' not found in '${JSON.stringify($)}'`);else if(Array.isArray(Q)){let X=parseInt(Y);return Q[X<0?Q.length+X:X]}return Q[Y]},$),Oe4=($)=>$!=null;function je4($,Z,Q){return $?Z:Q}var we4=($)=>!$,Ee4=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),aR$=($)=>Ee4.test($)||$.startsWith("[")&&$.endsWith("]"),GY1={[KY1.HTTP]:80,[KY1.HTTPS]:443},Pe4=($)=>{let Z=(()=>{try{if($ instanceof URL)return $;if(typeof $==="object"&&"hostname"in $){let{hostname:N,port:B,protocol:D="",path:O="",query:j={}}=$,w=new URL(`${D}//${N}${B?`:${B}`:""}${O}`);return w.search=Object.entries(j).map(([E,P])=>`${E}=${P}`).join("&"),w}return new URL($)}catch(N){return null}})();if(!Z)return console.error(`Unable to parse ${JSON.stringify($)} as a whatwg URL.`),null;let Q=Z.href,{host:Y,hostname:X,pathname:J,protocol:G,search:W}=Z;if(W)return null;let K=G.slice(0,-1);if(!Object.values(KY1).includes(K))return null;let H=aR$(X),F=Q.includes(`${Y}:${GY1[K]}`)||typeof $==="string"&&$.includes(`${Y}:${GY1[K]}`),U=`${Y}${F?`:${GY1[K]}`:""}`;return{scheme:K,authority:U,path:J,normalizedPath:J.endsWith("/")?J:`${J}/`,isIp:H}};function ze4($,Z,Q){if(Q===1)return[$];if($==="")return[""];let Y=$.split(Z);if(Q===0)return Y;return Y.slice(0,Q-1).concat(Y.slice(1).join(Z))}var Ae4=($,Z)=>$===Z,Te4=($,Z,Q,Y)=>{if($==null||Z>=Q||$.length<Q||/[^\u0000-\u007f]/.test($))return null;if(!Y)return $.substring(Z,Q);return $.substring($.length-Q,$.length-Z)},qe4=($)=>encodeURIComponent($).replace(/[!*'()]/g,(Z)=>`%${Z.charCodeAt(0).toString(16).toUpperCase()}`),Re4={booleanEquals:Be4,coalesce:De4,getAttr:rR$,isSet:Oe4,isValidHostLabel:dR$,ite:je4,not:we4,parseURL:Pe4,split:ze4,stringEquals:Ae4,substring:Te4,uriEncode:qe4},eR$=($,Z)=>{let Q=[],{referenceRecord:Y,endpointParams:X}=Z,J=0;while(J<$.length){let G=$.indexOf("{",J);if(G===-1){Q.push($.slice(J));break}Q.push($.slice(J,G));let W=$.indexOf("}",G);if(W===-1){Q.push($.slice(G));break}if($[G+1]==="{"&&$[W+1]==="}")Q.push($.slice(G+1,W)),J=W+2;let K=$.substring(G+1,W);if(K.includes("#")){let[H,F]=K.split("#");Q.push(rR$(Y[H]??X[H],F))}else Q.push(Y[K]??X[K]);J=W+1}return Q.join("")},Me4=({ref:$},Z)=>{return Z.referenceRecord[$]??Z.endpointParams[$]},J60=($,Z,Q)=>{if(typeof $==="string")return eR$($,Q);else if($.fn)return ZM$.callFunction($,Q);else if($.ref)return Me4($,Q);throw new AY(`'${Z}': ${String($)} is not a string, function or reference.`)},$M$=({fn:$,argv:Z},Q)=>{let Y=Array(Z.length);for(let G=0;G<Y.length;++G){let W=Z[G];if(typeof W==="boolean"||typeof W==="number")Y[G]=W;else Y[G]=ZM$.evaluateExpression(W,"arg",Q)}let X=$.indexOf(".");if(X!==-1){let W=sR$[$.slice(0,X)]?.[$.slice(X+1)];if(typeof W==="function")return W(...Y)}let J=Re4[$];if(typeof J==="function")return J(...Y);throw Error(`function ${$} not loaded in endpointFunctions.`)},ZM$={evaluateExpression:J60,callFunction:$M$},QM$=($,Z)=>{let{assign:Q}=$;if(Q&&Q in Z.referenceRecord)throw new AY(`'${Q}' is already defined in Reference Record.`);let Y=$M$($,Z);Z.logger?.debug?.(`${X60} evaluateCondition: ${cP($)} = ${cP(Y)}`);let X=Y===""?!0:!!Y;if(Q!=null)return{result:X,toAssign:{name:Q,value:Y}};return{result:X}},YM$=($,Z)=>Object.entries($??{}).reduce((Q,[Y,X])=>{return Q[Y]=X.map((J)=>{let G=J60(J,"Header value entry",Z);if(typeof G!=="string")throw new AY(`Header '${Y}' value '${G}' is not a string`);return G}),Q},{}),FY1=($,Z)=>Object.entries($).reduce((Q,[Y,X])=>{return Q[Y]=JM$.getEndpointProperty(X,Z),Q},{}),XM$=($,Z)=>{if(Array.isArray($))return $.map((Q)=>XM$(Q,Z));switch(typeof $){case"string":return eR$($,Z);case"object":if($===null)throw new AY(`Unexpected endpoint property: ${$}`);return JM$.getEndpointProperties($,Z);case"boolean":return $;default:throw new AY(`Unexpected endpoint property type: ${typeof $}`)}},JM$={getEndpointProperty:XM$,getEndpointProperties:FY1},GM$=($,Z)=>{let Q=J60($,"Endpoint URL",Z);if(typeof Q==="string")try{return new URL(Q)}catch(Y){throw console.error(`Failed to construct URL with ${Q}`,Y),Y}throw new AY(`Endpoint URL must be a string, got ${typeof Q}`)},WY1=1e8,Ve4=($,Z)=>{let{nodes:Q,root:Y,results:X,conditions:J}=$,G=Y,W={},K={referenceRecord:W,endpointParams:Z.endpointParams,logger:Z.logger};while(G!==1&&G!==-1&&G<WY1){let H=3*(Math.abs(G)-1),[F,U,N]=[Q[H],Q[H+1],Q[H+2]],[B,D,O]=J[F],j=QM$({fn:B,assign:O,argv:D},K);if(j.toAssign){let{name:w,value:E}=j.toAssign;W[w]=E}G=G>=0===j.result?U:N}if(G>=WY1){let H=X[G-WY1];if(H[0]===-1){let[,B]=H;throw new AY(J60(B,"Error",K))}let[F,U,N]=H;return{url:GM$(F,K),properties:FY1(U,K),headers:YM$(N??{},K)}}throw new AY("No matching endpoint.")},UY1=($=[],Z)=>{let Q={},Y={...Z,referenceRecord:{...Z.referenceRecord}},X=!1;for(let J of $){let{result:G,toAssign:W}=QM$(J,Y);if(!G)return{result:G};if(W)X=!0,Q[W.name]=W.value,Y.referenceRecord[W.name]=W.value,Z.logger?.debug?.(`${X60} assign: ${W.name} := ${cP(W.value)}`)}if(X)return{result:!0,referenceRecord:Q};return{result:!0}},Ie4=($,Z)=>{let{conditions:Q,endpoint:Y}=$,{result:X,referenceRecord:J}=UY1(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z,{url:W,properties:K,headers:H}=Y;Z.logger?.debug?.(`${X60} Resolving endpoint from template: ${cP(Y)}`);let F={url:GM$(W,G)};if(H!=null)F.headers=YM$(H,G);if(K!=null)F.properties=FY1(K,G);return F},ke4=($,Z)=>{let{conditions:Q,error:Y}=$,{result:X,referenceRecord:J}=UY1(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z;throw new AY(J60(Y,"Error",G))},WM$=($,Z)=>{for(let Q of $)if(Q.type==="endpoint"){let Y=Ie4(Q,Z);if(Y)return Y}else if(Q.type==="error")ke4(Q,Z);else if(Q.type==="tree"){let Y=KM$.evaluateTreeRule(Q,Z);if(Y)return Y}else throw new AY(`Unknown endpoint rule: ${Q}`);throw new AY("Rules evaluation failed")},Ce4=($,Z)=>{let{conditions:Q,rules:Y}=$,{result:X,referenceRecord:J}=UY1(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z;return KM$.evaluateRules(Y,G)},KM$={evaluateRules:WM$,evaluateTreeRule:Ce4},Se4=($,Z)=>{let{endpointParams:Q,logger:Y}=Z,{parameters:X,rules:J}=$;Z.logger?.debug?.(`${X60} Initial EndpointParams: ${cP(Q)}`);for(let W in X){let K=X[W],H=Q[W];if(H==null&&K.default!=null){Q[W]=K.default;continue}if(K.required&&H==null)throw new AY(`Missing required parameter: '${W}'`)}let G=WM$(J,{endpointParams:Q,logger:Y,referenceRecord:{}});return Z.logger?.debug?.(`${X60} Resolved endpoint: ${cP(G)}`),G},_e4=($)=>{let{endpoint:Z}=$;if(Z===void 0)$.endpoint=async()=>{throw Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint.")};return $},ve4=iR$(iD0),be4=Ne4(iD0),xe4=nR$(iD0),fe4=Ue4(iD0);ye4.BinaryDecisionDiagram=HY1;ye4.EndpointCache=oR$;ye4.EndpointError=AY;ye4.customEndpointFunctions=sR$;ye4.decideEndpoint=Ve4;ye4.endpointMiddleware=xe4;ye4.endpointMiddlewareOptions=tR$;ye4.getEndpointFromInstructions=ve4;ye4.getEndpointPlugin=fe4;ye4.isIpAddress=aR$;ye4.resolveEndpoint=Se4;ye4.resolveEndpointConfig=be4;ye4.resolveEndpointRequiredConfig=_e4;ye4.resolveParams=pR$});var MJ=y((y16)=>{var{createHmac:Z06,createHash:Q06,getRandomValues:Y06}=V0("crypto"),{ReadStream:X06,lstatSync:J06,fstatSync:G06}=V0("fs"),{HttpResponse:W06}=QB(),{toEndpointV1:K06}=BZ(),{Duplex:H06,Readable:G60,Writable:OM$,PassThrough:HM$}=V0("stream"),jM$=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",Vp=($,Z=0,Q=$.byteLength-Z)=>{if(!jM$($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},oD0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},F06=/^[A-Za-z0-9+/]*={0,2}$/,wM$=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!F06.exec($))throw TypeError("Invalid base64 string.");let Z=oD0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},sD0=($)=>{let Z=oD0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},wY1=($)=>{let Z;if(typeof $==="string")Z=sD0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return Vp(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function U06($,Z,Q,Y){return class X extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return X.mutate(Y(J));return X.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,X.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var EM$=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return Vp($.buffer,$.byteOffset,$.byteLength).toString("utf8")},EX=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function N06($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,EX[Z[0]]+EX[Z[1]]+EX[Z[2]]+EX[Z[3]]+"-"+EX[Z[4]]+EX[Z[5]]+"-"+EX[Z[6]]+EX[Z[7]]+"-"+EX[Z[8]]+EX[Z[9]]+"-"+EX[Z[10]]+EX[Z[11]]+EX[Z[12]]+EX[Z[13]]+EX[Z[14]]+EX[Z[15]]}}var B06=($,Z,Q=(Y)=>Y)=>$,D06=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},L06=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)U60.warn(nD0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")U60.warn(nD0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},H60=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))U60.warn(nD0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},O06=Math.ceil(340282346638528860000000000000000000000),pD0=($)=>{let Z=H60($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>O06)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},F60=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},j06=F60,DY1=($)=>EY1($,32),LY1=($)=>EY1($,16),OY1=($)=>EY1($,8),EY1=($,Z)=>{let Q=F60($);if(Q!==void 0&&w06(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},w06=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},E06=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},PM$=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},P06=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return U60.warn(nD0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},z06=($)=>{if($===null||$===void 0)return;let Z=PM$($),Q=[];for(let Y in Z)if(Z[Y]!=null)Q.push(Y);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},PY1=($)=>{if(typeof $=="string")return H60(Cp($));return H60($)},A06=PY1,zM$=($)=>{if(typeof $=="string")return pD0(Cp($));return pD0($)},T06=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,Cp=($)=>{let Z=$.match(T06);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},zY1=($)=>{if(typeof $=="string")return AM$($);return H60($)},q06=zY1,R06=zY1,M06=($)=>{if(typeof $=="string")return AM$($);return pD0($)},AM$=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},TM$=($)=>{if(typeof $==="string")return F60(Cp($));return F60($)},V06=TM$,I06=($)=>{if(typeof $==="string")return DY1(Cp($));return DY1($)},Ip=($)=>{if(typeof $==="string")return LY1(Cp($));return LY1($)},qM$=($)=>{if(typeof $==="string")return OY1(Cp($));return OY1($)},nD0=($)=>{return String(TypeError($).stack||$).split(`
|
|
1119
1119
|
`).slice(0,5).filter((Z)=>!Z.includes("stackTraceWarning")).join(`
|
|
1120
1120
|
`)},U60={warn:console.warn},k06=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],AY1=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C06($){let Z=$.getUTCFullYear(),Q=$.getUTCMonth(),Y=$.getUTCDay(),X=$.getUTCDate(),J=$.getUTCHours(),G=$.getUTCMinutes(),W=$.getUTCSeconds(),K=X<10?`0${X}`:`${X}`,H=J<10?`0${J}`:`${J}`,F=G<10?`0${G}`:`${G}`,U=W<10?`0${W}`:`${W}`;return`${k06[Y]}, ${K} ${AY1[Q]} ${Z} ${H}:${F}:${U} GMT`}var S06=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),_06=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=S06.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H]=Z,F=Ip(kp(Y)),U=XB(X,"month",1,12),N=XB(J,"day",1,31);return W60(F,U,N,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})},v06=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),b06=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=v06.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H,F]=Z,U=Ip(kp(Y)),N=XB(X,"month",1,12),B=XB(J,"day",1,31),D=W60(U,N,B,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H});if(F.toUpperCase()!="Z")D.setTime(D.getTime()-n06(F));return D},x06=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),f06=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),y06=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),g06=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-7231 date-times must be expressed as strings");let Z=x06.exec($);if(Z){let[Q,Y,X,J,G,W,K,H]=Z;return W60(Ip(kp(J)),NY1(X),XB(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})}if(Z=f06.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return c06(W60(u06(J),NY1(X),XB(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H}))}if(Z=y06.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return W60(Ip(kp(H)),NY1(Y),XB(X.trimLeft(),"day",1,31),{hours:J,minutes:G,seconds:W,fractionalMilliseconds:K})}throw TypeError("Invalid RFC-7231 date-time value")},h06=($)=>{if($===null||$===void 0)return;let Z;if(typeof $==="number")Z=$;else if(typeof $==="string")Z=PY1($);else if(typeof $==="object"&&$.tag===1)Z=$.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(Z)||Z===1/0||Z===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(Z*1000))},W60=($,Z,Q,Y)=>{let X=Z-1;return d06($,X,Q),new Date(Date.UTC($,X,Q,XB(Y.hours,"hour",0,23),XB(Y.minutes,"minute",0,59),XB(Y.seconds,"seconds",0,60),p06(Y.fractionalMilliseconds)))},u06=($)=>{let Z=new Date().getUTCFullYear(),Q=Math.floor(Z/100)*100+Ip(kp($));if(Q<Z)return Q+100;return Q},l06=1576800000000,c06=($)=>{if($.getTime()-new Date().getTime()>l06)return new Date(Date.UTC($.getUTCFullYear()-100,$.getUTCMonth(),$.getUTCDate(),$.getUTCHours(),$.getUTCMinutes(),$.getUTCSeconds(),$.getUTCMilliseconds()));return $},NY1=($)=>{let Z=AY1.indexOf($);if(Z<0)throw TypeError(`Invalid month: ${$}`);return Z+1},m06=[31,28,31,30,31,30,31,31,30,31,30,31],d06=($,Z,Q)=>{let Y=m06[Z];if(Z===1&&i06($))Y=29;if(Q>Y)throw TypeError(`Invalid day for ${AY1[Z]} in ${$}: ${Q}`)},i06=($)=>{return $%4===0&&($%100!==0||$%400===0)},XB=($,Z,Q,Y)=>{let X=qM$(kp($));if(X<Q||X>Y)throw TypeError(`${Z} must be between ${Q} and ${Y}, inclusive`);return X},p06=($)=>{if($===null||$===void 0)return 0;return zM$("0."+$)*1000},n06=($)=>{let Z=$[0],Q=1;if(Z=="+")Q=1;else if(Z=="-")Q=-1;else throw TypeError(`Offset direction, ${Z}, must be "+" or "-"`);let Y=Number($.substring(1,3)),X=Number($.substring(4,6));return Q*(Y*60+X)*60*1000},kp=($)=>{let Z=0;while(Z<$.length-1&&$.charAt(Z)==="0")Z++;if(Z===0)return $;return $.slice(Z)},GR=function(Z){return Object.assign(new String(Z),{deserializeJSON(){return JSON.parse(String(Z))},toString(){return String(Z)},toJSON(){return String(Z)}})};GR.from=($)=>{if($&&typeof $==="object"&&($ instanceof GR||("deserializeJSON"in $)))return $;else if(typeof $==="string"||Object.getPrototypeOf($)===String.prototype)return GR(String($));return GR(JSON.stringify($))};GR.fromObject=GR.from;function t06($){if($.includes(",")||$.includes('"'))$=`"${$.replace(/"/g,"\\\"")}"`;return $}var TY1="(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?",qY1="(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)",RY1="(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?",RM$="(\\d?\\d)",MM$="(\\d{4})",o06=new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/),s06=new RegExp(`^${TY1}, ${RM$} ${qY1} ${MM$} ${RY1} GMT$`),r06=new RegExp(`^${TY1}, ${RM$}-${qY1}-(\\d\\d) ${RY1} GMT$`),a06=new RegExp(`^${TY1} ${qY1} ( [1-9]|\\d\\d) ${RY1} ${MM$}$`),e06=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],$16=($)=>{if($==null)return;let Z=NaN;if(typeof $==="number")Z=$;else if(typeof $==="string"){if(!/^-?\d*\.?\d+$/.test($))throw TypeError("parseEpochTimestamp - numeric string invalid.");Z=Number.parseFloat($)}else if(typeof $==="object"&&$.tag===1)Z=$.value;if(isNaN(Z)||Math.abs(Z)===1/0)throw TypeError("Epoch timestamps must be valid finite numbers.");return new Date(Math.round(Z*1000))},Z16=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC3339 timestamps must be strings");let Z=o06.exec($);if(!Z)throw TypeError(`Invalid RFC3339 timestamp format ${$}`);let[,Q,Y,X,J,G,W,,K,H]=Z;aL(Y,1,12),aL(X,1,31),aL(J,0,23),aL(G,0,59),aL(W,0,60);let F=new Date(Date.UTC(Number(Q),Number(Y)-1,Number(X),Number(J),Number(G),Number(W),Number(K)?Math.round(parseFloat(`0.${K}`)*1000):0));if(F.setUTCFullYear(Number(Q)),H.toUpperCase()!="Z"){let[,U,N,B]=/([+-])(\d\d):(\d\d)/.exec(H)||[void 0,"+",0,0],D=U==="-"?1:-1;F.setTime(F.getTime()+D*(Number(N)*60*60*1000+Number(B)*60*1000))}return F},Q16=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC7231 timestamps must be strings.");let Z,Q,Y,X,J,G,W,K;if(K=s06.exec($))[,Z,Q,Y,X,J,G,W]=K;else if(K=r06.exec($))[,Z,Q,Y,X,J,G,W]=K,Y=(Number(Y)+1900).toString();else if(K=a06.exec($))[,Q,Z,X,J,G,W,Y]=K;if(Y&&G){let H=Date.UTC(Number(Y),e06.indexOf(Q),Number(Z),Number(X),Number(J),Number(G),W?Math.round(parseFloat(`0.${W}`)*1000):0);aL(Z,1,31),aL(X,0,23),aL(J,0,59),aL(G,0,60);let F=new Date(H);return F.setUTCFullYear(Number(Y)),F}throw TypeError(`Invalid RFC7231 date-time value ${$}.`)};function aL($,Z,Q){let Y=Number($);if(Y<Z||Y>Q)throw Error(`Value ${Y} out of range [${Z}, ${Q}]`)}function Y16($,Z,Q){if(Q<=0||!Number.isInteger(Q))throw Error("Invalid number of delimiters ("+Q+") for splitEvery.");let Y=$.split(Z);if(Q===1)return Y;let X=[],J="";for(let G=0;G<Y.length;G++){if(J==="")J=Y[G];else J+=Z+Y[G];if((G+1)%Q===0)X.push(J),J=""}if(J!=="")X.push(J);return X}var X16=($)=>{let Z=$.length,Q=[],Y=!1,X=void 0,J=0;for(let G=0;G<Z;++G){let W=$[G];switch(W){case'"':if(X!=="\\")Y=!Y;break;case",":if(!Y)Q.push($.slice(J,G)),J=G+1;break}X=W}return Q.push($.slice(J)),Q.map((G)=>{G=G.trim();let W=G.length;if(W<2)return G;if(G[0]==='"'&&G[W-1]==='"')G=G.slice(1,W-1);return G.replace(/\\"/g,'"')})},FM$=/^-?\d*(\.\d+)?$/;class rD0{string;type;constructor($,Z){if(this.string=$,this.type=Z,!FM$.test($))throw Error('@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".')}toString(){return this.string}static[Symbol.hasInstance]($){if(!$||typeof $!=="object")return!1;let Z=$;return rD0.prototype.isPrototypeOf($)||Z.type==="bigDecimal"&&FM$.test(Z.string)}}function J16($){return new rD0(String($),"bigDecimal")}var VM$={},jY1={};for(let $=0;$<256;$++){let Z=$.toString(16).toLowerCase();if(Z.length===1)Z=`0${Z}`;VM$[$]=Z,jY1[Z]=$}function G16($){if($.length%2!==0)throw Error("Hex encoded strings must have an even number length");let Z=new Uint8Array($.length/2);for(let Q=0;Q<$.length;Q+=2){let Y=$.slice(Q,Q+2).toLowerCase();if(Y in jY1)Z[Q/2]=jY1[Y];else throw Error(`Cannot decode unrecognized sequence ${Y} as hexadecimal`)}return Z}function IM$($){let Z="";for(let Q=0;Q<$.byteLength;Q++)Z+=VM$[$[Q]];return Z}var W16=($)=>{if(!$)return 0;if(typeof $==="string")return Buffer.byteLength($);else if(typeof $.byteLength==="number")return $.byteLength;else if(typeof $.size==="number")return $.size;else if(typeof $.start==="number"&&typeof $.end==="number")return $.end+1-$.start;else if($ instanceof X06){if($.path!=null)return J06($.path).size;else if(typeof $.fd==="number")return G06($.fd).size}throw Error(`Body Length computation failed for ${$}`)},kM$=($)=>{if(typeof $==="string")return sD0($);if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array($)},CM$=($,Z)=>(Q,Y)=>async(X)=>{let{response:J}=await Q(X);try{let G=await Z(J,$);return{response:J,output:G}}catch(G){if(Object.defineProperty(G,"$response",{value:J,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in G)){try{G.message+=`
|
|
@@ -1228,7 +1228,7 @@ ${G}`).digest("hex").slice(0,16)}`;if(await this.snapshotExists(W).catch(()=>!1)
|
|
|
1228
1228
|
|
|
1229
1229
|
`);let B=N.split(`
|
|
1230
1230
|
`).filter((D)=>D.startsWith("data:")).map((D)=>D.slice(5).trimStart()).join(`
|
|
1231
|
-
`);yield B?An$(B):"alive"}}}catch(W){if(Y.signal.aborted&&!Z?.aborted)throw Y.signal.reason;throw W}finally{clearTimeout(X)}}async hostStall($,Z){let Q=Date.now(),Y=0;while(!Z.aborted){let X=!1,J="";try{for await(let G of this.watchOnce($,Z))if(Q=Date.now(),Y=0,G!=="alive"&&jn$(G))break;X=!0}catch(G){if(Z.aborted)return null;if(G instanceof FS0)return console.warn(`[${gn}] ${G.message} for ${$}: its progress is unbounded`),null;J=hn(G)}if(Date.now()-Q>=this.stallMs)return new Ah(`the host showed no progress for ${$} in ${this.stallMs/1000}s${J?`: ${J}`:""}`);await J$(X?this.stallMs/4:wn$(Y++),{signal:Z}).catch(()=>{})}return null}async*watchClaimLifecycle($,Z){let Q=HS0(Z,this.closed.signal),Y=Date.now(),X=0,J="";while(!Q?.aborted){let G="watch ended before ready";try{for await(let W of this.watchOnce($,Q)){if(Y=Date.now(),X=0,W==="alive")continue;let K=JSON.stringify(W);if(K!==J)J=K,yield W;if(jn$(W))return}}catch(W){if(Q?.aborted)return;if(W instanceof FS0){yield US0(W.message);return}G=`watch failed: ${hn(W)}`}if(Date.now()-Y>=this.stallMs){yield US0(G);return}await J$(wn$(X++),{signal:Q}).catch(()=>{})}}}function An$($){let Z;try{Z=JSON.parse($)}catch{return US0("host sent a non-JSON phase")}let Q=Rg$.safeParse(Z);return Q.success?Q.data:US0(`host sent a malformed phase: ${Q.error.message}`)}var gn="RemoteSandboxProvider",On$=30000,DV6=2147483647,En$=500,LV6=10,OV6=0.5,Pn$=5000,jV6=3000,wV6=300000,EV6=5000,Ah,FS0;var QF1=L(()=>{GN();Rd();p$();Lh();n31();In();pC0();nC0();GS0();Ah=class Ah extends Error{constructor($){super($);this.name="SandboxHostError"}};FS0=class FS0 extends Error{}});var Mn$={};O6(Mn$,{subscribeLifecycle:()=>GF1,readControlPlaneSandboxConfig:()=>c50,getOrInitSharedRunner:()=>m50,getAgentSandboxProviderForTeardown:()=>NS0,getAgentSandboxProvider:()=>OZ,__resetSharedLifecyclesForTesting:()=>vV6});function XF1($){let Z=l50[Tn$];if(Z)return Promise.resolve(Z);let Q=l50[YF1];if(Q)return Q;let Y=$().then((X)=>{return l50[Tn$]=X,X}).finally(()=>{delete l50[YF1]});return l50[YF1]=Y,Y}function TV6(){let $=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return $&&$.trim()!==""?$:void 0}function qV6(){let $=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return $&&$.trim()!==""?$:void 0}function RV6(){let $=process.env.STUDIO_ENV;return $&&$.trim()!==""?$:void 0}function MV6(){let $=process.env.STUDIO_SANDBOX_SENTINEL_TOKEN;return $&&$.trim()!==""?$:void 0}function VV6(){let $=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Z=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:$,namespace:Z}}function c50(){let $=process.env.STUDIO_SANDBOX_CONTROL_PLANE_URL?.trim(),Z=process.env.STUDIO_SANDBOX_CONTROL_PLANE_TOKEN?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_CONTROL_PLANE_URL and STUDIO_SANDBOX_CONTROL_PLANE_TOKEN must both be set, or both unset.");return{url:$,token:Z}}async function JF1($){let Z=process.env.FREESTYLE_API_KEY?.trim();if(!Z)return qn$($);let Q=await qn$($).catch((J)=>{console.warn("[lifecycle] kubernetes sandbox provider unavailable, using Freestyle only:",J instanceof Error?J.message:String(J));return}),[{FreestyleSandboxProvider:Y},{SandboxProviderRouter:X}]=await Promise.all([Promise.resolve().then(() => (Bn$(),Nn$)),Promise.resolve().then(() => ($F1(),eH1))]);return new X({kubernetes:Q,freestyle:new Y({apiKey:Z,image:process.env.STUDIO_SANDBOX_FREESTYLE_IMAGE?.trim()||void 0,allowUserNamespaces:process.env.STUDIO_SANDBOX_FREESTYLE_USER_NAMESPACES==="true",meter:G$})},{freestyleShare:IV6()})}function IV6(){let $=Number(process.env.STUDIO_SANDBOX_FREESTYLE_SHARE??0);if(Number.isFinite($)&&$>=0&&$<=1)return $;return console.warn("[lifecycle] STUDIO_SANDBOX_FREESTYLE_SHARE must be a number from 0 to 1; using 0"),0}async function qn$($){let Z=c50();if(Z){let{RemoteSandboxProvider:K}=await Promise.resolve().then(() => (QF1(),ZF1));return new K({baseUrl:Z.url,token:Z.token,credentialLifetimeMs:{orgFsConfig:eC0},meter:G$})}let Q=new Q50($),Y=TV6(),{AgentSandboxProvider:X}=await Promise.resolve().then(() => (x50(),Xp$)),J=new GJ(B0().encryptionKey),G=wj0($,J),W=sC0(process.env.STUDIO_SANDBOX_TENANT_POOLS);return new X({stateStore:Q,previewUrlPattern:Y,sandboxTemplateName:qV6(),envName:RV6(),previewGateway:VV6(),sentinelToken:MV6(),tenantPools:Gp$(W),mintPoolCloneUrl:Wp$(W,G.mintCloneUrl),meter:G$,...G})}function OZ($){if(!B0().agentSandboxEnabled)throw Error("Agent sandbox is disabled. Set STUDIO_AGENT_SANDBOX_ENABLED=true to enable it.");return XF1(()=>JF1($.db))}function NS0($){return XF1(()=>JF1($.db))}async function m50(){if(!B0().agentSandboxEnabled)return null;return XF1(()=>JF1(E8().db))}function GF1($,Z,Q){let Y=Vz.get(Z);if(Y){if(Y.terminated){if(Y.lastPhase)try{Q(Y.lastPhase)}catch{}return{unsubscribe:SV6}}if(Y.listeners.add(Q),Y.lastPhase)try{Q(Y.lastPhase)}catch{}return Rn$(Z,Y,Q)}let X=new AbortController,J={lastPhase:null,terminated:!1,listeners:new Set([Q]),abort:X};return Vz.set(Z,J),_V6($,Z,J),Rn$(Z,J,Q)}function SV6(){}function Rn$($,Z,Q){return{unsubscribe(){if(Vz.get($)!==Z)return;if(Z.listeners.delete(Q),Z.listeners.size===0)Vz.delete($),Z.abort.abort()}}}async function _V6($,Z,Q){let Y=null;try{for await(let X of $.watchClaimLifecycle(Z,Q.abort.signal)){if(Q.abort.signal.aborted)break;Q.lastPhase=X;let J=X.kind==="ready"||X.kind==="failed";if(J)Q.terminated=!0;let G=Array.from(Q.listeners);for(let W of G)try{W(X)}catch{}if(J)break}}catch(X){Y=X}finally{if(!Q.terminated&&!Q.abort.signal.aborted&&Q.listeners.size>0){let X={kind:"failed",reason:"unknown",message:Y instanceof Error?Y.message:"Lifecycle watcher ended unexpectedly"};Q.lastPhase=X,Q.terminated=!0;for(let J of Array.from(Q.listeners))try{J(X)}catch{}}if(Vz.get(Z)===Q)Vz.delete(Z)}}function vV6(){for(let $ of Vz.values())$.abort.abort();Vz.clear()}var Tn$,YF1,l50,kV6,CV6,Vz;var CX=L(()=>{S3();b6();u31();Nw();u1();m31();$S0();rC0();Tn$=Symbol.for("decocms.sandbox.lifecycle.agent-sandbox-runner"),YF1=Symbol.for("decocms.sandbox.lifecycle.agent-sandbox-inflight"),l50=globalThis;kV6=Symbol.for("decocms.sandbox.lifecycle.shared-lifecycles"),CV6=globalThis,Vz=CV6[kV6]??=new Map});import{sql as bV6}from"kysely";function Vn$($){return $ instanceof Date?$.toISOString():String($)}class WF1{db;vault;constructor($,Z){this.db=$;this.vault=Z}rowToInfo($){return{id:$.id,organizationId:$.organization_id,scope:$.scope,userId:$.user_id,name:$.name,description:$.description,createdBy:$.created_by,createdAt:Vn$($.created_at),updatedBy:$.updated_by,updatedAt:Vn$($.updated_at)}}assertVisible($,Z){if($.scope==="user"&&$.user_id!==Z)throw new Iz($.id)}async create($){let Z=c8("sec"),Q=await this.vault.encrypt($.value),Y=new Date,X=await this.db.insertInto("secrets").values({id:Z,organization_id:$.organizationId,scope:$.scope.kind,user_id:$.scope.kind==="user"?$.scope.userId:null,name:$.name,encrypted_value:Q,description:$.description??null,created_by:$.createdBy,created_at:Y,updated_by:$.createdBy,updated_at:Y}).returning(BS0).executeTakeFirstOrThrow();return this.rowToInfo(X)}async update($){let Z=await this.db.selectFrom("secrets").where("id","=",$.id).where("organization_id","=",$.organizationId).select(["id","scope","user_id"]).executeTakeFirst();if(!Z)throw new eK($.id);this.assertVisible(Z,$.callerUserId);let Q={updated_by:$.updatedBy,updated_at:new Date};if($.value!==void 0)Q.encrypted_value=await this.vault.encrypt($.value);if($.description!==void 0)Q.description=$.description;let Y=await this.db.updateTable("secrets").set(Q).where("id","=",$.id).where("organization_id","=",$.organizationId).returning(BS0).executeTakeFirstOrThrow();return this.rowToInfo(Y)}async delete($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).select(["id","scope","user_id"]).executeTakeFirst();if(!Y)throw new eK($);this.assertVisible(Y,Q),await this.db.deleteFrom("secrets").where("id","=",$).where("organization_id","=",Z).execute()}async list($){let Z=this.db.selectFrom("secrets").where("organization_id","=",$.organizationId).select(BS0);if($.scope?.kind==="user")Z=Z.where("scope","=","user").where("user_id","=",$.scope.userId);else if($.scope?.kind==="organization")Z=Z.where("scope","=","organization");else Z=Z.where((Y)=>Y.or([Y("scope","=","organization"),Y.and([Y("scope","=","user"),Y("user_id","=",$.callerUserId)])]));return(await Z.orderBy("created_at","desc").execute()).map((Y)=>this.rowToInfo(Y))}async findById($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).select(BS0).executeTakeFirst();if(!Y)throw new eK($);return this.assertVisible(Y,Q),this.rowToInfo(Y)}async resolveById($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).selectAll().executeTakeFirst();if(!Y)throw new eK($);this.assertVisible(Y,Q);let X=await this.vault.decrypt(Y.encrypted_value);return{info:this.rowToInfo(Y),value:X}}async resolveByName($){let Z=this.db.selectFrom("secrets").where("organization_id","=",$.organizationId).where("scope","=",$.scope.kind).where(bV6`lower(name) = lower(${$.name})`).selectAll();if($.scope.kind==="user")Z=Z.where("user_id","=",$.scope.userId);let Q=await Z.executeTakeFirst();if(!Q)throw new eK(`${$.scope.kind}:${$.name}`);let Y=await this.vault.decrypt(Q.encrypted_value);return{info:this.rowToInfo(Q),value:Y}}}var BS0,eK,Iz;var d50=L(()=>{GY();BS0=["id","organization_id","scope","user_id","name","description","created_by","created_at","updated_by","updated_at"];eK=class eK extends Error{constructor($){super(`Secret ${$} not found`);this.name="SecretNotFoundError"}};Iz=class Iz extends Error{constructor($){super(`Access denied for secret ${$}`);this.name="SecretAccessDeniedError"}}});async function DS0({ctx:$,orgId:Z,userId:Q,entries:Y}){if(!Y||Y.length===0)return[];let X=[];for(let J of Y)try{let{value:G}=await $.storage.secrets.resolveById(J.secretId,Z,Q);X.push({host:J.host,token:G})}catch(G){if(G instanceof eK||G instanceof Iz){console.warn(`[SANDBOX_START] skipping submodule credential for ${J.host}: ${G.message}. Re-link or recreate the secret to restore.`);continue}throw G}return X}var KF1=L(()=>{d50()});function u5($){if(!$||typeof $!=="object")return{};let Z=$.sandboxMap;if(!Z||typeof Z!=="object")return{};return Z}function SY($,Z,Q){let Y=$[Z]?.[Q];if(!Y)return null;return iD(Y)[CY]??null}function i50($,Z,Q,Y){let J={...iD($[Z]?.[Q]),[CY]:Y};return{...$,[Z]:{...$[Z]??{},[Q]:J}}}async function In$($,Z,Q,Y,X,J){let G=await $.findById(Z);if(!G)return;let W=G.metadata??{},K=i50(u5(W),Y,X,J);await $.update(Z,Q,{metadata:{...W,sandboxMap:K}})}function HF1($,Z,Q){let Y=iD($[Z]?.[Q]);if(!Y[CY])return null;let X={...Y};delete X[CY];let J={...$[Z]??{}};if(Object.keys(X).length===0)delete J[Q];else J[Q]=X;let G={...$};if(Object.keys(J).length===0)delete G[Z];else G[Z]=J;return G}async function jO($,Z,Q,Y,X){let J=await $.findById(Z);if(!J)return;let G=J.metadata??{},W=HF1(u5(G),Y,X);if(!W)return;await $.update(Z,Q,{metadata:{...G,sandboxMap:W}})}var CY="agent-sandbox";var SX=L(()=>{q8()});function wO($){return["openai-compatible","openrouter","deco"].includes($)}function LS0($,Z){return wO($)&&p50(Z)!==null}function p50($){let Z=$.replace(/^openai\//,"");return/^(gpt-\d|o[134](?:-|$))/.test(Z)?Z:null}var rF="codex-subscription",Th="gpt-6.1-sol";function kn$($,Z){return xV6[$]?.test(Z)??!1}var xV6;var Cn$=L(()=>{xV6={anthropic:/^claude-/,openrouter:/^anthropic\/claude-/,deco:/^anthropic\/claude-/}});function OS0($){return $===rF||$===un||$===aF}function Sn$($=un){let Z=FF1.anthropic.chat;return{credentialId:$,thinking:{id:Z,title:Z,provider:"anthropic"}}}function hV6($){let Z=$.replace(/^anthropic\//,"");if(!Z.startsWith("claude-"))return null;return Z.replace(/-(\d+)-(\d+)$/,"-$1.$2")}function _n$($){if($==="reviewer")return"reviewer";if($==="conflict")return"conflict";return"default"}function UF1($,Z="default",Q){let{providerId:Y,apiKey:X,baseUrl:J}=$,G=(H)=>Z==="chat"&&Q&&kn$(H==="anthropic"?H:Y,Q)?Q:FF1[H][Z],W=lV6[Z],K={CLAUDE_CODE_MAX_OUTPUT_TOKENS:`${uV6}`,CLAUDE_CODE_MAX_TURNS:W===null?null:`${W}`,ENABLE_TOOL_SEARCH:cV6,FORCE_PROMPT_CACHING_5M:mV6,ANTHROPIC_CUSTOM_HEADERS:null};if(Y==="anthropic")return{...K,CLAUDE_CODE_MODEL:G("anthropic"),ANTHROPIC_API_KEY:X,ANTHROPIC_AUTH_TOKEN:null,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:J??null};if(Y===un)return{...K,CLAUDE_CODE_MODEL:G("anthropic"),CLAUDE_CODE_OAUTH_TOKEN:X,ANTHROPIC_API_KEY:null,ANTHROPIC_AUTH_TOKEN:null,ANTHROPIC_BASE_URL:null};if(Y==="openrouter"||Y==="deco")return{...K,CLAUDE_CODE_MODEL:G("openrouter"),ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:J??fV6};if(Y===aF){let H=Z==="chat"&&Q?hV6(Q):null;return{...K,CLAUDE_CODE_MODEL:H??FF1.copilot[Z],ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:yV6,ANTHROPIC_CUSTOM_HEADERS:gV6}}throw new vn$(Y)}var un="claude-subscription",aF="github-copilot",fV6="https://openrouter.ai/api",yV6="https://api.githubcopilot.com",gV6="Copilot-Integration-Id: copilot-developer-cli",FF1,jS0="claudeCodeModelClass",ln="taskRunInstructions",uV6=32000,lV6,cV6="1",mV6="1",vn$;var qB=L(()=>{Cn$();FF1={anthropic:{default:"claude-opus-5-5",chat:"claude-sonnet-5-5",reviewer:"claude-sonnet-5-5",conflict:"claude-sonnet-5"},openrouter:{default:"anthropic/claude-opus-5.5",chat:"anthropic/claude-sonnet-5.5",reviewer:"anthropic/claude-sonnet-5.5",conflict:"anthropic/claude-sonnet-5"},copilot:{default:"claude-sonnet-5.5",chat:"claude-sonnet-5.5",reviewer:"claude-sonnet-5.5",conflict:"claude-sonnet-5"}};lV6={default:null,chat:null,reviewer:60,conflict:60};vn$=class vn$ extends Error{constructor($){super(`the claude-code harness needs an Anthropic, OpenRouter, Deco or GitHub Copilot model credential; this run's model resolves to "${$}". Point the agent's thinking model at one of those, or run it with Decopilot.`);this.name="UnsupportedClaudeCodeProviderError"}}});async function cn($,Z,Q,Y="claude-code"){if(Y==="codex"){let G=await $.storage.codexSubscriptions.findLiveToken(Q).catch(()=>null);return G?{providerId:rF,apiKey:G}:null}let J=[...(await $.storage.orgSharedPlans.list(Z)).map(({providerId:G,userId:W})=>({providerId:G,userId:W})),...dV6.map((G)=>({providerId:G,userId:Q}))];for(let G of J){let W=await iV6($,G.providerId).findLiveToken(G.userId).catch((K)=>{return console.warn(`[plan] ${G.providerId} lookup failed`,K),null});if(W)return{providerId:G.providerId,apiKey:W}}return null}var dV6,iV6=($,Z)=>Z===un?$.storage.claudeSubscriptions:$.storage.githubCopilotSubscriptions;var wS0=L(()=>{qB();dV6=[un,aF]});function xn$($){if(EO.size>=500){let Q=EO.keys().next().value;if(Q!==void 0)EO.delete(Q)}let Z=Date.now();EO.delete($),EO.set($,{t0:Z,last:Z,stages:[]}),console.log(`[turn-latency] thread=${$} stage=post-received +0ms`)}function fQ($,Z,Q){let Y=bn$($),X=Date.now(),J=EO.get(Y),G=!J;if(!J)J={t0:X,last:X,stages:[]},EO.set(Y,J);let W=X-J.t0,K=X-J.last;J.last=X,J.stages.push(`${Z}=${K}`),console.log(`[turn-latency] thread=${Y} stage=${Z} +${W}ms (\u0394${K}ms)`+(G?" t0=local":"")+(Q?` ${JSON.stringify(Q)}`:""))}function fn$($,Z){let Q=bn$($);fQ(Q,"first-token",Z);let Y=EO.get(Q);if(!Y)return;EO.delete(Q),console.log(`[turn-latency] thread=${Q} SUMMARY ttft=${Y.last-Y.t0}ms ${Y.stages.join(" ")}`)}var EO,bn$=($)=>$.split(":")[0]??$;var mn=L(()=>{EO=globalThis.__turnLatency??=new Map});function pV6($){return(typeof $.timeout==="number"&&$.timeout>0?Math.min($.timeout,120000):30000)+15000}function nV6($,Z){if($.aborted)return Z.catch(()=>{}),Promise.reject($.reason??Error("aborted"));return new Promise((Q,Y)=>{let X=()=>{Z.catch(()=>{}),Y($.reason??Error("aborted"))};$.addEventListener("abort",X,{once:!0}),Z.then(Q,Y).finally(()=>{$.removeEventListener("abort",X)})})}async function tV6($,Z,Q,Y,X){let J=X?.timeoutMs??pV6(Y),G=AbortSignal.timeout(J),W=X?.signal?AbortSignal.any([X.signal,G]):G,K,H;try{let U=new Headers({"content-type":"application/json"});if(X?.threadId)U.set("x-thread-id",X.threadId);let N={method:"POST",headers:U,body:JSON.stringify(Y),signal:W};({res:K,rawText:H}=await nV6(W,(async()=>{let B=await $.proxyDaemonRequest(Z,Q,N);return{res:B,rawText:await B.text()}})()))}catch(U){if(X?.signal?.aborted)throw U;if(G.aborted)throw Error(`Sandbox POST ${Q} timed out after ${Math.round(J/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new n50(U)}let F;try{F=JSON.parse(H)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response provider=agent-sandbox path=%s status=%d rawText=%s",Q,K.status,H.slice(0,2000));let U=K.status>=500?" (server error)":K.status===0?" (no response)":"";throw Error(`Daemon ${Q} returned invalid JSON (HTTP ${K.status}${U}): ${H.slice(0,800)}`)}if(!K.ok){console.error("[sandbox-fs-hooks] Non-OK response provider=agent-sandbox path=%s status=%d body=%s",Q,K.status,H.slice(0,2000));let U=F.error??`Daemon ${Q} failed (${K.status})`;if(K.status===404&&U==="sandbox not found")throw new n50(Error(U),!0);throw Error(U)}return F}function NF1($,Z){let{ensureHandle:Q,invalidateHandle:Y,canAutoRestart:X}=Z,J=0,G=(H)=>{let F=Date.now();if(F-J<300000)return;J=F,$.renewTtl(H).catch((U)=>{console.warn(`[sandbox-fs-hooks] TTL renew failed for ${H}: ${U instanceof Error?U.message:String(U)}`)})},W=(H)=>{let F=H instanceof Error?H.message:String(H);return X?`Sandbox is unreachable and auto-restart did not recover it: ${F}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},K=async(H,F,U)=>{let N=async(D)=>tV6($,D,H,F,{signal:U,timeoutMs:Z.opTimeoutMs,threadId:Z.threadId}),B=await Q();G(B);try{return await N(B)}catch(D){if(!(D instanceof n50))throw D;if(!X&&!D.gone)throw Error(W(D.cause??D));console.warn(`[sandbox-fs-hooks] daemon ${H} unreachable \u2014 reaping sandbox and retrying once`,D.cause??D);try{await Y({force:D.gone})}catch(j){console.warn("[sandbox-fs-hooks] invalidateHandle failed",j)}let O;try{O=await Q()}catch(j){throw Error(`Failed to restart sandbox: ${j instanceof Error?j.message:String(j)}`)}try{return await N(O)}catch(j){if(j instanceof n50)throw Error(W(j.cause??j));throw j}}};return{onProxy:(H,F,U)=>K(H,F,U),onBash:async(H,F)=>{return await K("/_sandbox/bash",{command:H,...F?.cwd!==void 0?{cwd:F.cwd}:{},...F?.timeoutMs!==void 0?{timeout:F.timeoutMs}:{}})}}}var n50;var yn$=L(()=>{n50=class n50 extends Error{code="DAEMON_UNREACHABLE";gone;constructor($,Z=!1){super($ instanceof Error?$.message:"Daemon proxy failed");if(this.gone=Z,$ instanceof Error)this.cause=$}}});var dn=L(()=>{In();GS0();yn$()});function t50($){let Z=new Set($.map((F)=>F.name.toLowerCase()).filter((F,U,N)=>N.indexOf(F)!==U)),Q=$.map((F)=>Z.has(F.name.toLowerCase())),Y=(F)=>{let U=$[F];return BF1(Q[F]?`${U.owner}-${U.name}`:U.name).toLowerCase()};for(let F=0;F<$.length;F++){let U=new Map,N=!1;for(let B=0;B<$.length;B++){let D=Y(B),O=U.get(D);if(O!==void 0){if(!Q[B])Q[B]=!0,N=!0;if(!Q[O])Q[O]=!0,N=!0}U.set(D,B)}if(!N)break}let X=$.map((F,U)=>BF1(Q[U]?`${F.owner}-${F.name}`:F.name)),J=new Map;for(let F of X)J.set(F.toLowerCase(),(J.get(F.toLowerCase())??0)+1);let G=X.map((F,U)=>{if(J.get(F.toLowerCase())===1)return F;let N=new URL($[U].url).host;return BF1(`${N}-${F}`)}),W=new Map;for(let F of G)W.set(F.toLowerCase(),(W.get(F.toLowerCase())??0)+1);let K=new Set(G.filter((F)=>W.get(F.toLowerCase())===1).map((F)=>F.toLowerCase())),H=G.map((F,U)=>U).filter((F)=>W.get(G[F].toLowerCase())!==1).sort((F,U)=>(Je($[F])??"").localeCompare(Je($[U])??""));for(let F of H){let U=G[F],N=1,B=`${U}-${N}`;while(K.has(B.toLowerCase()))B=`${U}-${++N}`;K.add(B.toLowerCase()),G[F]=B}return G}function gn$($,Z){let Q=$.findIndex((Y)=>sD(Y,Z));return Q===-1?null:t50($)[Q]??null}function BF1($){return $.replace(/[^A-Za-z0-9._-]/g,"-").replace(/^[^A-Za-z0-9]+/,"")||"repo"}var DF1=()=>{};var o50;var LF1=L(()=>{o50={npm:{install:"npm install",run:($)=>`npm run ${$}`,runtime:"node"},pnpm:{install:"pnpm install",run:($)=>`pnpm run ${$}`,runtime:"node"},yarn:{install:"yarn install",run:($)=>`yarn run ${$}`,runtime:"node"},bun:{install:"bun install",run:($)=>`bun run ${$}`,runtime:"bun"},deno:{install:"deno install",run:($)=>`deno task ${$}`,runtime:"deno"}}});function pn($){if(!$)return null;let Z=$.runtime;if(!Z||typeof Z!=="object")return null;let Q=Z.env;if(!Array.isArray(Q))return null;let Y=[];for(let X of Q){if(!X||typeof X!=="object")continue;let J=X;if(typeof J.key!=="string"||!C30.test(J.key))continue;if(J.kind==="literal"&&typeof J.value==="string"){Y.push({key:J.key,kind:"literal",value:J.value});continue}if(J.kind==="secret"&&typeof J.secretId==="string"&&J.secretId.length>0)Y.push({key:J.key,kind:"secret",secretId:J.secretId})}return Y.length===0?null:Y}async function hn$($,Z){n(Z);let Q=Q0(Z);await Z.access.check();let Y=S0(Z);if(!Y)throw Error("User ID required");let X=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!X||X.organization_id!==Q.id)throw Error("Virtual MCP not found");let J=X.metadata??{},G=u5(J),W=await kz(Z,$.branch,Y),K=SY(G,W,$.branch);return{virtualMcp:X,metadata:J,userId:Y,sandboxUserId:W,entry:K,organization:Q}}function oV6($){if($===null||!/^\d+$/.test($))return null;let Z=Number($);return Z>=1&&Z<=65535?$:null}function un$($){let Z=$.runtime??null,Y=Z?.selected??null,X=oV6(Z?.port??null),J=Z?.path??null;if(!Y||!(Y in o50))return{packageManager:null,runtime:null,port:X,packageManagerPath:J,runtimeBinPath:null};let G=o50[Y].runtime;return{packageManager:Y,runtime:G,port:X,packageManagerPath:J,runtimeBinPath:G==="deno"?"/opt/deno/bin":G==="bun"?"/opt/bun/bin":null}}var s50=L(()=>{q8();LF1();SX();yQ()});async function ES0({ctx:$,runner:Z,handle:Q,orgId:Y,userId:X,entries:J}){if(!J||J.length===0)return;let G={};for(let K of J){if(K.kind==="literal"){G[K.key]=K.value;continue}try{let{value:H}=await $.storage.secrets.resolveById(K.secretId,Y,X);G[K.key]=H}catch(H){if(H instanceof eK||H instanceof Iz){console.warn(`[SANDBOX_START] skipping env ${K.key}: ${H.message}. Re-link or recreate the secret to restore.`);continue}throw H}}if(Object.keys(G).length===0)return;let W=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({env:G})});if(!W.ok){let K=await BB(W,sV6).catch(()=>W.statusText);console.warn(`[SANDBOX_START] daemon rejected env patch (${W.status}): ${K}`)}}var sV6=10485760;var OF1=L(()=>{d50();Gn()});async function mn$($,Z,Q,Y,X){let J=await RJ({connectionId:$,tokenStorage:new e5(Y,X)});if(!J.accessToken)return null;return in$(Z,Q,J.accessToken)}function dn$($,Z){return in$($,Z,null)}async function in$($,Z,Q){let Y=new Map,X=new Set(ln$.map((K)=>K.path));for(let K of Object.values(cn$))for(let H of K??[])X.add(H);await Promise.all(Array.from(X).map(async(K)=>{Y.set(K,await aV6($,Z,K,Q))}));let J=ln$.find(({path:K})=>Y.get(K)!==null);if(!J)return null;let G=cn$[J.pm]??[],W=null;for(let K of G)if(W=eV6(Y.get(K)??null),W)break;return{packageManager:J.pm,devPort:W}}async function aV6($,Z,Q,Y){let X=`https://api.github.com/repos/${$}/${Z}/contents/${encodeURIComponent(Q)}`;try{let J={Accept:"application/vnd.github+json","User-Agent":"studio-runtime-detect"};if(Y)J.Authorization=`token ${Y}`;let G=await fetch(X,{headers:J,signal:AbortSignal.timeout(5000)});if(!G.ok)return null;let W=await G.json();if(!W.content||W.encoding!=="base64")return null;return Buffer.from(W.content,"base64").toString("utf8")}catch{return null}}function eV6($){if(!$)return null;try{let Z=JSON.parse($),Q=Z.tasks??Z.scripts??{},X=(Q.dev??Q.start??"").match(rV6)?.[1]??null;if(!X)return null;let J=Number(X);return J>=1&&J<=65535?X:null}catch{return null}}var ln$,cn$,rV6;var pn$=L(()=>{s3();xK();ln$=[{path:"deno.json",pm:"deno"},{path:"deno.jsonc",pm:"deno"},{path:"bun.lock",pm:"bun"},{path:"bunfig.toml",pm:"bun"},{path:"pnpm-lock.yaml",pm:"pnpm"},{path:"yarn.lock",pm:"yarn"},{path:"package-lock.json",pm:"npm"},{path:"package.json",pm:"bun"}],cn$={deno:["deno.json","deno.jsonc"],bun:["package.json"],pnpm:["package.json"],yarn:["package.json"],npm:["package.json"]},rV6=/(?:--port|PORT=|:)(\d{4,5})/});function $I6($){return($??"").normalize("NFKD").replace(/[\u0300-\u036F]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"user"}function PS0($){return $?.name||$?.email?.split("@")[0]||void 0}function zS0($){let Z=$I6($),Q=Date.now().toString(36).split("").reverse().join("");return`${Z}-${Q}`}async function on$($,Z){nn$??=G$.createHistogram("studio.sandbox.provision.duration_ms",{description:"Wall-clock time of one sandbox ensure, by provider (runner_kind), outcome, the provider a fallback left (fallback_from), whether a warm-pool pod was claimed (warm_pool), and whether a sandbox was already recorded (start=resume) or not (start=fresh).",unit:"ms",advice:{explicitBucketBoundaries:[500,1000,2000,5000,1e4,20000,30000,60000,120000,300000,600000]}}),tn$??=G$.createCounter("studio.sandbox.placement",{description:"Sandbox ensures by the provider that served them (runner_kind) and why it was chosen (reason)."});let Q=performance.now(),Y=(X,J,G={})=>nn$?.record(performance.now()-Q,{...$,runner_kind:X?OO[X]:"unknown",outcome:J,...G});try{let X=await Z(),J=X.placement?.fallbackFrom;if(Y(X.provider,"ok",{warm_pool:String(X.warmPoolAdopted),...J&&{fallback_from:OO[J]}}),X.placement)tn$.add(1,{runner_kind:OO[X.provider],reason:X.placement.reason});return X}catch(X){throw Y(aH1(X),"error"),X}}var nn$,tn$;var sn$=L(()=>{dn();b6()});async function r50($,Z,Q){try{await $.storage.threads.stampRuntimeIfAbsent(Z,Q)}catch(Y){console.warn(`[stampRuntimeIfAbsent] ${Z}: ${Y instanceof Error?Y.message:String(Y)}`)}}function qh($){return $==="cms"||$==="sandbox"?$:null}function ZI6($){return!!AP($)&&(zP($)||$?.fastPreview===!0)}function AS0($){return ZI6($)?"cms":"sandbox"}var jF1;var nn=L(()=>{$p();jF1=["cms","sandbox"]});async function wF1($,Z){n(Z);let Q=Q0(Z),Y=S0(Z);if(!Y)throw Error("User ID required");let X=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!X||X.organization_id!==Q.id)throw Error("Virtual MCP not found");let J=X.metadata??{},G=await kz(Z,$.branch,Y),W=_Y($.branch)??Z.metadata?.threadId,K=SY(u5(J),G,$.branch),H=K??(W?SY(await tn(Z,W),G,$.branch):null);return{organization:Q,userId:Y,metadata:J,sandboxUserId:G,recordThreadId:W,agentEntry:K,existing:H}}async function rn$($,Z){return(await wF1($,Z)).existing}var EF1=L(()=>{SX();yQ()});import{z as RB}from"zod";async function MB($,Z){let{organization:Q,userId:Y,metadata:X,sandboxUserId:J,recordThreadId:G,agentEntry:W,existing:K}=await wF1($,Z),H=await OZ(Z);if(K&&!$.revalidate){if(await H.alive(K.sandboxHandle).catch(()=>!0))return K;if(W)await jO(Z.storage.virtualMcps,$.virtualMcpId,Y,J,$.branch).catch((w)=>{console.warn("[ensureSandbox] failed to reap stale entry",w)});else if(G)await qS0(Z,G,J,$.branch)}let F=_Y($.branch)??Z.metadata?.threadId;if(F)r50(Z,F,"sandbox");let N=await VB(Z,F)??X.repository??null;await $.onColdStart?.().catch((j)=>{console.warn("[ensureSandbox] onColdStart callback failed",j instanceof Error?j.message:String(j))});let B=await zF1(Z,F),D=(j)=>$t$({ctx:Z,userId:Y,sandboxUserId:J,orgId:Q.id,virtualMcpId:$.virtualMcpId,branch:$.branch,metadata:X,repository:j,threadRepos:B,existing:$.revalidate?K:null,runner:H,...$.purpose?{purpose:$.purpose}:{}}),O;try{O=await D(N)}catch(j){if(!N||!(j instanceof Error)||!$j0(j.message).code)throw j;console.warn("[ensureSandbox] starting without the primary repository",{virtualMcpId:$.virtualMcpId,repo:`${N.owner}/${N.name}`,error:j.message}),O=await D(null)}return $.onBound?.({warmPoolAdopted:O.warmPoolAdopted}),O.entry}async function en$($,Z,Q){if(!Z)return null;if(Z.accountId===null&&!Q&&!Z.legacyConnectionId)return Z;return await nL($.storage,Z)?Z:null}async function QI6($){let Z=$.repos.filter((X)=>!$.primary||!sD(X,$.primary)),Q=t50(Z),Y=[];for(let[X,J]of Z.entries())try{let G=await rN($.ctx.storage,$.orgId,J),W=await en$($.ctx,G,J.connectionId),K=J.connectionId??G?.legacyConnectionId;if(!W&&!K)continue;let{cloneUrl:H,expiresAt:F}=W?await sN($.ctx,W,{forceRefresh:!0}):await DB(K,J.owner,J.name,$.ctx.db,$.ctx.vault);Y.push({cloneUrl:H,credentialExpiresAt:NH1(F),...W?{repositoryId:W.id}:{connectionId:K},userName:$.gitUserName,userEmail:$.gitUserEmail,displayName:W?W.path:`${J.owner}/${J.name}`,directoryName:Q[X],submoduleCredentials:$.submoduleCredentials})}catch(G){console.warn(`[provisionSandbox] skipping secondary ${J.owner}/${J.name}:`,G instanceof Error?G.message:G)}return Y}async function $t$($){let{ctx:Z,userId:Q,sandboxUserId:Y,orgId:X,virtualMcpId:J,branch:G,metadata:W,threadRepos:K,existing:H,runner:F,purpose:U,provider:N}=$,B=_Y(G)??Z.metadata?.threadId,D=(X0)=>B&&fQ(B,`provision:${X0}`),O=U==="harness-run",j="default",w=$.repository?await YI6({ctx:Z,orgId:X,virtualMcpId:J,userId:Q,repository:$.repository}):null,{runtime:E,packageManager:P,port:T,packageManagerPath:z}=un$(W),A=await Z.storage.organizationSettings.get(X),R=await DS0({ctx:Z,orgId:X,userId:Q,entries:A?.submodule_credentials}),f;if(w){let X0=await rN(Z.storage,X,w);j=X0?.sandboxImage??"default";let h0=await en$(Z,X0,w.connectionId),C0=w.connectionId??X0?.legacyConnectionId??void 0;if(!h0&&C0)await Wn({ctx:Z,connectionId:C0,organizationId:X,forceRefresh:!0,onLegacyMintError:(o0)=>{console.error("[provisionSandbox] repo-scoped legacy token mint failed",{connectionId:C0,error:o0.message})}});let{cloneUrl:H1,gitUserName:c0,gitUserEmail:j0,expiresAt:E0}=h0?await KI6(Z,h0):C0?await DB(C0,w.owner,w.name,Z.db,Z.vault):df$(w.owner,w.name);if(!P&&!h0){let o0=C0?await mn$(C0,w.owner,w.name,Z.db,Z.vault):await dn$(w.owner,w.name);if(o0)P=o0.packageManager,E=o50[o0.packageManager].runtime,T=o0.devPort??T,await XI6(Z,J,Q,o0.packageManager,o0.devPort)}let n0=B0().sandboxStickyHeadRefEnabled,O1=Uj0({branch:G,derivedRef:eF(G,{flat:Mh(X0?.provider)}),recordedHeadRef:n0?await TS0(Z,_Y(G)):null,sticky:n0});f={cloneUrl:H1,credentialExpiresAt:NH1(E0),...h0?{repositoryId:h0.id}:C0?{connectionId:C0}:{},userName:c0,userEmail:j0,branch:O1,displayName:h0?h0.path:`${w.owner}/${w.name}`,submoduleCredentials:R}}let S=await QI6({ctx:Z,orgId:X,repos:K??[],primary:w,gitUserName:f?.userName??"",gitUserEmail:f?.userEmail??"",submoduleCredentials:R}),V=E&&P&&!O?{runtime:E,packageManager:P,...T!==null?{devPort:Number(T)}:{},...z?{packageManagerPath:z}:{}}:void 0,v=C50({orgId:X,virtualMcpId:J,branch:G}),b=!B0().orgFsMountsDisabled,h;if(b){let X0=Z.organization?.slug??(await Z.db.selectFrom("organization").select(["slug"]).where("id","=",X).executeTakeFirst())?.slug;if(X0)h=await jj0(Z,{orgSlug:X0,orgId:X,baseUrl:B5()})}let l=await on$({start:H?"resume":"fresh",purpose:U??"interactive"},async()=>{return D("prep"),await WI6(F),D("capacity"),GI6(F,{userId:Y,projectRef:v},{branch:G,repo:f,extraRepos:S,workload:V,cloneOnly:O,...x5(A?.flags,"sandbox_repo_snapshots")?{repoSnapshot:!0}:{},...U?{purpose:U}:{},...N?{provider:N}:{},...j!=="default"?{sandboxImage:j}:{},tenant:{orgId:X,userId:Y,...Z.organization?.slug?{orgSlug:Z.organization.slug}:{},...Z.organization?.name?{orgName:Z.organization.name}:{},...Z.auth.user?.email?{userEmail:Z.auth.user.email}:{},...Z.auth.user?.name?{userName:Z.auth.user.name}:{}},...h?{orgFsConfigJson:h}:{}})});D("provider-ensure");let d=pn(W);await ES0({ctx:Z,runner:F,handle:l.handle,orgId:X,userId:Q,entries:d}),D("env");let I0=!!H&&H.sandboxHandle===l.handle&&H?.createdAt?H.createdAt:Date.now(),J0=W.runtime?.selected??null,U0=W.runtime?.port??null,o=W.runtime?.path??null,t={sandboxHandle:l.handle,previewUrl:l.previewUrl,createdAt:I0,startedWith:{packageManager:J0,port:U0,path:o}};await In$(Z.storage.virtualMcps,J,Q,Y,G,t);let r=_Y(G)??Z.metadata?.threadId;if(r)await Zt$(Z,r,Y,G,t);D("map-writes");let $0=!H||H.sandboxHandle!==l.handle;return{entry:t,isNewVm:$0,warmPoolAdopted:l.warmPoolAdopted}}async function YI6($){let{ctx:Z,orgId:Q,virtualMcpId:Y,userId:X,repository:J}=$;if(!J.connectionId)return J;if(await Z.storage.connections.findById(J.connectionId,Q))return J;let{items:W}=await Z.storage.connections.list(Q),K=lB0(W,J.owner,J.name);if(!K)return console.warn("[provisionSandbox] recorded repo connection no longer exists and no live connection covers the repo",{virtualMcpId:Y,connectionId:J.connectionId}),J;console.warn("[provisionSandbox] healed dangling repo connection",{virtualMcpId:Y,staleConnectionId:J.connectionId,connectionId:K.id});try{let F=(await Z.storage.virtualMcps.findById(Y))?.metadata??{},U=F.repository;if(U?.connectionId===J.connectionId){let N=UZ(K);await Z.storage.virtualMcps.update(Y,X,{metadata:{...F,repository:{...U,connectionId:K.id,...N?{installationId:N.installationId}:{}}}})}}catch(H){console.warn("[provisionSandbox] failed to persist healed repo connection",{virtualMcpId:Y,error:H.message})}return{...J,connectionId:K.id}}async function XI6($,Z,Q,Y,X){let J=await $.storage.virtualMcps.findById(Z);if(!J)return;let G=J.metadata??{};await $.storage.virtualMcps.update(Z,Q,{metadata:{...G,runtime:{selected:Y,port:X}}})}async function GI6($,...Z){try{return await $.ensure(...Z)}catch(Q){if(!(Q instanceof bQ))throw Q;throw Error(`sandbox provisioning failed: the sandbox pod rejected the bootstrap handshake (HTTP ${Q.status}). The claim was released; retrying gets a different pod.`,{cause:Q})}}async function WI6($){let Z=Date.now()+an$,Q=!1;while(!await $.hasSchedulableCapacity()){if(Date.now()>=Z)throw Error(`sandbox provisioning failed: the cluster has had no room to schedule another sandbox for ${Math.round(an$/1000)}s`);if(!Q)Q=!0,console.warn("[ensureSandbox] waiting for cluster capacity \u2014 a sandbox pod cannot be scheduled right now");await J$(JI6)}}async function KI6($,Z){try{return await sN($,Z,{forceRefresh:!0})}catch(Q){if(Q instanceof b0){let Y=Q.status===404?_R.githubConnectionMissing:_R.githubNotAuthenticated;throw Error(t60(Y,Q.message))}throw Q}}var PF1,an$=150000,JI6=5000;var Rh=L(()=>{mn();QZ();dn();Lh();DF1();p$();R0();s50();OF1();KF1();SX();vG();o60();pn$();LF1();CX();sn$();nn();yQ();Nj0();u1();H9();jB();SX();EF1();T5();S5();$S0();Zj0();PF1=u({name:"SANDBOX_START",description:"Start a sandbox with the connected repository and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:RB.object({virtualMcpId:RB.string().describe("Virtual MCP ID"),branch:RB.string().min(1).optional().describe("Git branch to check out. Pass the thread's branch whenever the caller has one: when omitted the handler mints a fresh `<user-slug>-<timestamp>` name, which becomes a SEPARATE sandbox from the one the thread's own branch resolves to. The resolved branch is returned in the response so callers can persist it."),threadId:RB.string().optional().describe("The session asking for a sandbox. A thread stamped `cms` is refused \u2014 that session reads and writes over the decofile API and a pod would be invisible to it. Optional: an unstamped (legacy) thread is always allowed, and so is a caller with no thread."),provider:RB.enum(["kubernetes","freestyle"]).optional().describe("Where to run a NEW sandbox, when that provider is configured and can run it; otherwise the other one is used. An existing sandbox stays where it is. Omitted: Kubernetes while it has room, else Freestyle.")}),outputSchema:RB.object({previewUrl:RB.string().nullable(),sandboxHandle:RB.string(),branch:RB.string(),isNewVm:RB.boolean()}),handler:async($,Z)=>{n(Z);let Q=Q0(Z);await Z.access.check();let Y=$.branch??zS0(PS0(Z.auth.user)),X=_Y(Y)??$.threadId??Z.metadata?.threadId;if(X){let O=await Z.storage.threads.get(X).catch(()=>null);if(qh(O?.metadata?.runtime)==="cms")throw Error("This chat is a CMS session and does not use a sandbox. Start a coding session to get one.")}let J=S0(Z);if(!J)throw Error("User ID required");let G=await kz(Z,Y,J),W=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!W||W.organization_id!==Q.id)throw Error("Virtual MCP not found");let K=W.metadata??{},H=await OZ(Z),F=SY(u5(K),G,Y),N=await VB(Z,X)??K.repository??null,{entry:B,isNewVm:D}=await $t$({ctx:Z,userId:J,sandboxUserId:G,orgId:Q.id,virtualMcpId:$.virtualMcpId,branch:Y,metadata:K,repository:N,threadRepos:await zF1(Z,X),existing:F,runner:H,...$.provider?{provider:$.provider}:{}});if(X)r50(Z,X,"sandbox");return{...B,branch:Y,isNewVm:D}}})});async function $H($,Z){if(!qU())return!1;try{let Q=await $.storage.organizationSettings.get(Z);return x5(Q?.flags,"chat_harness_sandbox_only")}catch(Q){return console.warn("[sandbox-only-chats] flag read failed",Q),!1}}async function Qt$($,Z,Q){if((await $.storage.aiProviderKeys.list({organizationId:Z})).some((X)=>a$$(X.providerId)))return!0;return await a50($,Z,Q)!==null}async function a50($,Z,Q,Y="claude-code"){return(await cn($,Z,Q,Y))?.providerId??null}async function Yt$($,Z){let Q=$.organization?.id;if(!Q)return;let Y=await $.storage.virtualMcps.findById(Z.virtual_mcp_id);if(!Y)return;let X=xE(Y),J=X.metadata?.repository,G=await IB($,{threadId:Z.id,agentRepo:J,runBranch:Z.branch??yJ(Z.id)}),{sandboxHandle:W}=await MB({virtualMcpId:X.id,branch:G,purpose:J?.url?"interactive":"harness-run"},$);await(await OZ($)).proxyDaemonRequest(W,"/_sandbox/prepare",{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({harness:await AF1($,Q),threadId:Z.id})}).then((H)=>{if(!H.ok)console.warn("[sandbox-prewarm] prepare refused",H.status)}).catch((H)=>console.warn("[sandbox-prewarm] prepare failed",H))}async function AF1($,Z){let Q=await $.storage.organizationSettings.get(Z);return x5(Q?.flags,"chat_harness_codex")?"codex":"claude-code"}async function Xt$($,Z,Q){if(await a50($,Z,Q,"codex"))return!0;return(await $.storage.aiProviderKeys.list({organizationId:Z})).some((X)=>wO(X.providerId))}var RS0;var Vh=L(()=>{wS0();u1();CX();Rh();yQ();fE();QZ();er0();RS0=class RS0 extends Error{code="claude_code_provider_required";constructor(){super("Chats need an Anthropic, OpenRouter or deco AI Gateway provider, or your own linked Claude or GitHub Copilot plan. Connect one in Settings \u2192 AI Providers.");this.name="ClaudeCodeProviderRequiredError"}}});async function e50($,Z,Q){let Y=$.storage.threads.getOrganizationId();if(!Y||!Z)return null;let X=await(Q??$.storage.virtualMcps.findById(Z,Y));return X?.organization_id===Y?X.metadata??null:null}function yJ($,Z){return Z?`thread:${$}/${Z}`:`thread:${$}`}function eF($,Z={}){let Q=$.replace(/^thread:/,"").replace(/\//g,"-");return Z.flat?`sandbox-thread-${Q}`:`sandbox/thread-${Q}`}function Mh($){return $==="gitlab"}async function TF1($,Z,Q){if(!Q)return eF(Z);return eF(Z,{flat:Mh(await HI6($,Q))})}async function HI6($,Z){let Q=typeof Z.url==="string"?OX(Z.url)?.provider:void 0;if(Q)return Q;let Y=$.storage.threads.getOrganizationId();if(!Z.repositoryId||!Y)return null;return(await $.storage.repositories.get(Z.repositoryId,Y).catch(()=>null))?.provider??null}function _Y($){if(!$||!$.startsWith("thread:"))return null;return $.slice(7).split("/")[0]||null}async function kz($,Z,Q){return RF1(await qF1($,Z),Q)}async function qF1($,Z){let Q=_Y(Z);if(!Q)return null;return await $.storage.threads.get(Q).catch(()=>null)}function RF1($,Z){return $?.created_by??Z}async function Cz($,Z){if(!Z)return null;let Q=await $.storage.threads.get(Z).catch(()=>null);if(!Q)return null;return Q.metadata??{}}async function TS0($,Z){let Y=(await Cz($,Z))?.headRef;return typeof Y==="string"&&Y.length>0?Y:null}async function Jt$($,Z,Q){let Y=await Cz($,Z);if(!Y)return;if(Y.headRef===Q)return;await $.storage.threads.update(Z,{metadata:{...Y,headRef:Q}}).catch((X)=>console.warn("[thread-repo] setThreadHeadRef failed",X))}function FI6($,Z){let Q=lB0(Z,$.owner,$.name);if(!Q||Q.id===$.connectionId)return null;let Y=UZ(Q);return{...$,connectionId:Q.id,...Y?.installationId?{installationId:Y.installationId}:{}}}async function zF1($,Z){let Y=(await Cz($,Z))?.additionalRepositories;return Array.isArray(Y)?Y.filter((X)=>X?.owner&&X?.name):[]}async function VB($,Z){let Q=await Cz($,Z),Y=Q?.repository??null;if(!Z||!Q||!Y?.connectionId||Y.repositoryId)return Y;try{let X=$.storage.threads.getOrganizationId();if(!X)return Y;if(await $.storage.connections.findById(Y.connectionId,X))return Y;let{items:J}=await $.storage.connections.list(X),G=FI6(Y,J);if(!G)return Y;return await $.storage.threads.update(Z,{metadata:{...Q,repository:G}}),console.warn("[thread-repo] re-pointed thread at a live repo connection",{threadId:Z,from:Y.connectionId,to:G.connectionId}),G}catch(X){return console.warn("[thread-repo] repoint check failed",X),Y}}function MF1($){if($.pinnedRef)return $.pinnedRef;if($.runBranch&&$.runBranch===yJ($.threadId))return $.runBranch;if($.threadRepo)return yJ($.threadId,$.threadRepo.connectionId);if(!$.agentRepo)return $.sandboxOnlyChats?yJ($.threadId):"ephemeral";return $.runBranch??`thread:${$.threadId}`}async function VF1($,Z){let Y=(await Cz($,Z))?.pinnedRef;return typeof Y==="string"&&Y.length>0?Y:null}async function IB($,Z){let Q=$.storage.threads.getOrganizationId(),[Y,X,J]=await Promise.all([VB($,Z.threadId),VF1($,Z.threadId),Q?$H($,Q):Promise.resolve(!1)]);return MF1({...Z,threadRepo:Y,pinnedRef:X,sandboxOnlyChats:J})}async function Zt$($,Z,Q,Y,X){let J=await Cz($,Z);if(!J)return;let G=i50(u5(J),Q,Y,X);await $.storage.threads.update(Z,{metadata:{...J,sandboxMap:G}}).catch((W)=>console.warn("[thread-repo] setThreadSandboxMapEntry failed",W))}async function tn($,Z){return u5(await Cz($,Z))}async function qS0($,Z,Q,Y){let X=await Cz($,Z);if(!X)return;let J=HF1(u5(X),Q,Y);if(!J)return;await $.storage.threads.update(Z,{metadata:{...X,sandboxMap:J}}).catch((G)=>console.warn("[thread-repo] removeThreadSandboxMapEntry failed",G))}var yQ=L(()=>{t4();vG();Vh();SX()});import{AsyncLocalStorage as UI6}from"async_hooks";function MS0($){let Z=$?.metadata?.[ln];return typeof Z==="string"&&Z.length>0}function on(){let $=K7.getStore();if(!$)throw Error("This tool is only available on a thread's MCP endpoint (/api/<org>/mcp/thread/<threadId>).");return $}function VS0($){let Z=$90($);return new Set(Z===Wt$?Gt$:Z)}function $90($){if($?.metadata?.source==="jira")return BI6;return LG.some((Q)=>jK($?.title,Q))?NI6:Wt$}var K7,Gt$,NI6,BI6,DI6,Wt$;var BW=L(()=>{qB();QE();v8();K7=new UI6;Gt$=["TASK_ADD_REPO","TASK_BOARD_ITEM_LIST","TASK_BOARD_ITEM_UPDATE","TASK_BOARD_ACTIVITY_LIST","TASK_BOARD_COMMENT_LIST","TASK_BOARD_COMMENT_CREATE","TASK_BOARD_COMMENT_UPDATE"],NI6=[...Gt$,"TASK_BOARD_ITEM_PRS_GET","TASK_BOARD_REVIEW_DECISION"],BI6=["TASK_ADD_REPO","JIRA_ISSUE_GET","JIRA_COMMENT_ADD","JIRA_ISSUE_TRANSITION","JIRA_ATTACHMENT_DOWNLOAD","JIRA_REMOTE_LINK_ADD","JIRA_ISSUE_CREATE","JIRA_ISSUE_SEARCH"],DI6=new Set(["TASK_BOARD_REVIEW_DECISION","TASK_BOARD_PROMOTE_TO_PRODUCTION","TASK_BOARD_PROMPT_UPSERT","TASK_BOARD_PROMPT_DELETE"]),Wt$=C00.map(($)=>$.name).filter(($)=>!DI6.has($))});import{z as DW}from"zod";async function wI6($,Z,Q,Y,X){return e$(async()=>{let G=SY(await tn($,Z),Q,Y)??(X?SY(u5(await e50($,X)),Q,Y):null);if(!G)throw Error("sandbox record not written yet");return G},{maxAttempts:LI6,minTimeout:OI6,maxTimeout:jI6,jitter:0}).catch(()=>null)}function PI6($,Z,Q=Ht$){if($.some((Y)=>sD(Y,Z)))return!1;return $.length>=Q}async function kF1($,Z,Q,Y){let X=await $.proxyDaemonRequest(Z,"/_sandbox/bash",{method:"POST",headers:new Headers({"content-type":"application/json","x-thread-id":Q}),body:JSON.stringify({command:Y})});if(!X.ok)throw Error(`sandbox bash failed (${X.status} ${X.statusText})`);let J=await X.json();return{stdout:J.stdout??"",exitCode:J.exitCode??0}}function Ft$($){return`cd ${$} 2>/dev/null || exit 1; if [ -n "$(git ls-files 2>/dev/null | head -1)" ]; then echo __CLONED__; fi; ls -A 2>/dev/null`}async function zI6($,Z,Q,Y){let X=()=>kF1($,Z,Q,Ft$(Y)).then((W)=>Ut$(W.stdout)).catch(()=>null),J=await X();if(!J?.cloned)return!1;await J$(IF1);let G=await X();return!!G?.cloned&&G.listing===J.listing}function Ut$($){let Z=$.split(`
|
|
1231
|
+
`);yield B?An$(B):"alive"}}}catch(W){if(Y.signal.aborted&&!Z?.aborted)throw Y.signal.reason;throw W}finally{clearTimeout(X)}}async hostStall($,Z){let Q=Date.now(),Y=0;while(!Z.aborted){let X=!1,J="";try{for await(let G of this.watchOnce($,Z))if(Q=Date.now(),Y=0,G!=="alive"&&jn$(G))break;X=!0}catch(G){if(Z.aborted)return null;if(G instanceof FS0)return console.warn(`[${gn}] ${G.message} for ${$}: its progress is unbounded`),null;J=hn(G)}if(Date.now()-Q>=this.stallMs)return new Ah(`the host showed no progress for ${$} in ${this.stallMs/1000}s${J?`: ${J}`:""}`);await J$(X?this.stallMs/4:wn$(Y++),{signal:Z}).catch(()=>{})}return null}async*watchClaimLifecycle($,Z){let Q=HS0(Z,this.closed.signal),Y=Date.now(),X=0,J="";while(!Q?.aborted){let G="watch ended before ready";try{for await(let W of this.watchOnce($,Q)){if(Y=Date.now(),X=0,W==="alive")continue;let K=JSON.stringify(W);if(K!==J)J=K,yield W;if(jn$(W))return}}catch(W){if(Q?.aborted)return;if(W instanceof FS0){yield US0(W.message);return}G=`watch failed: ${hn(W)}`}if(Date.now()-Y>=this.stallMs){yield US0(G);return}await J$(wn$(X++),{signal:Q}).catch(()=>{})}}}function An$($){let Z;try{Z=JSON.parse($)}catch{return US0("host sent a non-JSON phase")}let Q=Rg$.safeParse(Z);return Q.success?Q.data:US0(`host sent a malformed phase: ${Q.error.message}`)}var gn="RemoteSandboxProvider",On$=30000,DV6=2147483647,En$=500,LV6=10,OV6=0.5,Pn$=5000,jV6=3000,wV6=300000,EV6=5000,Ah,FS0;var QF1=L(()=>{GN();Rd();p$();Lh();n31();In();pC0();nC0();GS0();Ah=class Ah extends Error{constructor($){super($);this.name="SandboxHostError"}};FS0=class FS0 extends Error{}});var Mn$={};O6(Mn$,{subscribeLifecycle:()=>GF1,readControlPlaneSandboxConfig:()=>c50,getOrInitSharedRunner:()=>m50,getAgentSandboxProviderForTeardown:()=>NS0,getAgentSandboxProvider:()=>OZ,__resetSharedLifecyclesForTesting:()=>vV6});function XF1($){let Z=l50[Tn$];if(Z)return Promise.resolve(Z);let Q=l50[YF1];if(Q)return Q;let Y=$().then((X)=>{return l50[Tn$]=X,X}).finally(()=>{delete l50[YF1]});return l50[YF1]=Y,Y}function TV6(){let $=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return $&&$.trim()!==""?$:void 0}function qV6(){let $=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return $&&$.trim()!==""?$:void 0}function RV6(){let $=process.env.STUDIO_ENV;return $&&$.trim()!==""?$:void 0}function MV6(){let $=process.env.STUDIO_SANDBOX_SENTINEL_TOKEN;return $&&$.trim()!==""?$:void 0}function VV6(){let $=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Z=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:$,namespace:Z}}function c50(){let $=process.env.STUDIO_SANDBOX_CONTROL_PLANE_URL?.trim(),Z=process.env.STUDIO_SANDBOX_CONTROL_PLANE_TOKEN?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_CONTROL_PLANE_URL and STUDIO_SANDBOX_CONTROL_PLANE_TOKEN must both be set, or both unset.");return{url:$,token:Z}}async function JF1($){let Z=process.env.FREESTYLE_API_KEY?.trim();if(!Z)return qn$($);let Q=await qn$($).catch((J)=>{console.warn("[lifecycle] kubernetes sandbox provider unavailable, using Freestyle only:",J instanceof Error?J.message:String(J));return}),[{FreestyleSandboxProvider:Y},{SandboxProviderRouter:X}]=await Promise.all([Promise.resolve().then(() => (Bn$(),Nn$)),Promise.resolve().then(() => ($F1(),eH1))]);return new X({kubernetes:Q,freestyle:new Y({apiKey:Z,image:process.env.STUDIO_SANDBOX_FREESTYLE_IMAGE?.trim()||void 0,allowUserNamespaces:process.env.STUDIO_SANDBOX_FREESTYLE_USER_NAMESPACES==="true",meter:G$})},{freestyleShare:IV6()})}function IV6(){let $=Number(process.env.STUDIO_SANDBOX_FREESTYLE_SHARE??0);if(Number.isFinite($)&&$>=0&&$<=1)return $;return console.warn("[lifecycle] STUDIO_SANDBOX_FREESTYLE_SHARE must be a number from 0 to 1; using 0"),0}async function qn$($){let Z=c50();if(Z){let{RemoteSandboxProvider:K}=await Promise.resolve().then(() => (QF1(),ZF1));return new K({baseUrl:Z.url,token:Z.token,credentialLifetimeMs:{orgFsConfig:eC0},meter:G$})}let Q=new Q50($),Y=TV6(),{AgentSandboxProvider:X}=await Promise.resolve().then(() => (x50(),Xp$)),J=new GJ(B0().encryptionKey),G=wj0($,J),W=sC0(process.env.STUDIO_SANDBOX_TENANT_POOLS);return new X({stateStore:Q,previewUrlPattern:Y,sandboxTemplateName:qV6(),envName:RV6(),previewGateway:VV6(),sentinelToken:MV6(),tenantPools:Gp$(W),mintPoolCloneUrl:Wp$(W,G.mintCloneUrl),meter:G$,...G})}function OZ($){if(!B0().agentSandboxEnabled)throw Error("Agent sandbox is disabled. Set STUDIO_AGENT_SANDBOX_ENABLED=true to enable it.");return XF1(()=>JF1($.db))}function NS0($){return XF1(()=>JF1($.db))}async function m50(){if(!B0().agentSandboxEnabled)return null;return XF1(()=>JF1(E8().db))}function GF1($,Z,Q){let Y=Vz.get(Z);if(Y){if(Y.terminated){if(Y.lastPhase)try{Q(Y.lastPhase)}catch{}return{unsubscribe:SV6}}if(Y.listeners.add(Q),Y.lastPhase)try{Q(Y.lastPhase)}catch{}return Rn$(Z,Y,Q)}let X=new AbortController,J={lastPhase:null,terminated:!1,listeners:new Set([Q]),abort:X};return Vz.set(Z,J),_V6($,Z,J),Rn$(Z,J,Q)}function SV6(){}function Rn$($,Z,Q){return{unsubscribe(){if(Vz.get($)!==Z)return;if(Z.listeners.delete(Q),Z.listeners.size===0)Vz.delete($),Z.abort.abort()}}}async function _V6($,Z,Q){let Y=null;try{for await(let X of $.watchClaimLifecycle(Z,Q.abort.signal)){if(Q.abort.signal.aborted)break;Q.lastPhase=X;let J=X.kind==="ready"||X.kind==="failed";if(J)Q.terminated=!0;let G=Array.from(Q.listeners);for(let W of G)try{W(X)}catch{}if(J)break}}catch(X){Y=X}finally{if(!Q.terminated&&!Q.abort.signal.aborted&&Q.listeners.size>0){let X={kind:"failed",reason:"unknown",message:Y instanceof Error?Y.message:"Lifecycle watcher ended unexpectedly"};Q.lastPhase=X,Q.terminated=!0;for(let J of Array.from(Q.listeners))try{J(X)}catch{}}if(Vz.get(Z)===Q)Vz.delete(Z)}}function vV6(){for(let $ of Vz.values())$.abort.abort();Vz.clear()}var Tn$,YF1,l50,kV6,CV6,Vz;var CX=L(()=>{S3();b6();u31();Nw();u1();m31();$S0();rC0();Tn$=Symbol.for("decocms.sandbox.lifecycle.agent-sandbox-runner"),YF1=Symbol.for("decocms.sandbox.lifecycle.agent-sandbox-inflight"),l50=globalThis;kV6=Symbol.for("decocms.sandbox.lifecycle.shared-lifecycles"),CV6=globalThis,Vz=CV6[kV6]??=new Map});import{sql as bV6}from"kysely";function Vn$($){return $ instanceof Date?$.toISOString():String($)}class WF1{db;vault;constructor($,Z){this.db=$;this.vault=Z}rowToInfo($){return{id:$.id,organizationId:$.organization_id,scope:$.scope,userId:$.user_id,name:$.name,description:$.description,createdBy:$.created_by,createdAt:Vn$($.created_at),updatedBy:$.updated_by,updatedAt:Vn$($.updated_at)}}assertVisible($,Z){if($.scope==="user"&&$.user_id!==Z)throw new Iz($.id)}async create($){let Z=c8("sec"),Q=await this.vault.encrypt($.value),Y=new Date,X=await this.db.insertInto("secrets").values({id:Z,organization_id:$.organizationId,scope:$.scope.kind,user_id:$.scope.kind==="user"?$.scope.userId:null,name:$.name,encrypted_value:Q,description:$.description??null,created_by:$.createdBy,created_at:Y,updated_by:$.createdBy,updated_at:Y}).returning(BS0).executeTakeFirstOrThrow();return this.rowToInfo(X)}async update($){let Z=await this.db.selectFrom("secrets").where("id","=",$.id).where("organization_id","=",$.organizationId).select(["id","scope","user_id"]).executeTakeFirst();if(!Z)throw new eK($.id);this.assertVisible(Z,$.callerUserId);let Q={updated_by:$.updatedBy,updated_at:new Date};if($.value!==void 0)Q.encrypted_value=await this.vault.encrypt($.value);if($.description!==void 0)Q.description=$.description;let Y=await this.db.updateTable("secrets").set(Q).where("id","=",$.id).where("organization_id","=",$.organizationId).returning(BS0).executeTakeFirstOrThrow();return this.rowToInfo(Y)}async delete($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).select(["id","scope","user_id"]).executeTakeFirst();if(!Y)throw new eK($);this.assertVisible(Y,Q),await this.db.deleteFrom("secrets").where("id","=",$).where("organization_id","=",Z).execute()}async list($){let Z=this.db.selectFrom("secrets").where("organization_id","=",$.organizationId).select(BS0);if($.scope?.kind==="user")Z=Z.where("scope","=","user").where("user_id","=",$.scope.userId);else if($.scope?.kind==="organization")Z=Z.where("scope","=","organization");else Z=Z.where((Y)=>Y.or([Y("scope","=","organization"),Y.and([Y("scope","=","user"),Y("user_id","=",$.callerUserId)])]));return(await Z.orderBy("created_at","desc").execute()).map((Y)=>this.rowToInfo(Y))}async findById($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).select(BS0).executeTakeFirst();if(!Y)throw new eK($);return this.assertVisible(Y,Q),this.rowToInfo(Y)}async resolveById($,Z,Q){let Y=await this.db.selectFrom("secrets").where("id","=",$).where("organization_id","=",Z).selectAll().executeTakeFirst();if(!Y)throw new eK($);this.assertVisible(Y,Q);let X=await this.vault.decrypt(Y.encrypted_value);return{info:this.rowToInfo(Y),value:X}}async resolveByName($){let Z=this.db.selectFrom("secrets").where("organization_id","=",$.organizationId).where("scope","=",$.scope.kind).where(bV6`lower(name) = lower(${$.name})`).selectAll();if($.scope.kind==="user")Z=Z.where("user_id","=",$.scope.userId);let Q=await Z.executeTakeFirst();if(!Q)throw new eK(`${$.scope.kind}:${$.name}`);let Y=await this.vault.decrypt(Q.encrypted_value);return{info:this.rowToInfo(Q),value:Y}}}var BS0,eK,Iz;var d50=L(()=>{GY();BS0=["id","organization_id","scope","user_id","name","description","created_by","created_at","updated_by","updated_at"];eK=class eK extends Error{constructor($){super(`Secret ${$} not found`);this.name="SecretNotFoundError"}};Iz=class Iz extends Error{constructor($){super(`Access denied for secret ${$}`);this.name="SecretAccessDeniedError"}}});async function DS0({ctx:$,orgId:Z,userId:Q,entries:Y}){if(!Y||Y.length===0)return[];let X=[];for(let J of Y)try{let{value:G}=await $.storage.secrets.resolveById(J.secretId,Z,Q);X.push({host:J.host,token:G})}catch(G){if(G instanceof eK||G instanceof Iz){console.warn(`[SANDBOX_START] skipping submodule credential for ${J.host}: ${G.message}. Re-link or recreate the secret to restore.`);continue}throw G}return X}var KF1=L(()=>{d50()});function u5($){if(!$||typeof $!=="object")return{};let Z=$.sandboxMap;if(!Z||typeof Z!=="object")return{};return Z}function SY($,Z,Q){let Y=$[Z]?.[Q];if(!Y)return null;return iD(Y)[CY]??null}function i50($,Z,Q,Y){let J={...iD($[Z]?.[Q]),[CY]:Y};return{...$,[Z]:{...$[Z]??{},[Q]:J}}}async function In$($,Z,Q,Y,X,J){let G=await $.findById(Z);if(!G)return;let W=G.metadata??{},K=i50(u5(W),Y,X,J);await $.update(Z,Q,{metadata:{...W,sandboxMap:K}})}function HF1($,Z,Q){let Y=iD($[Z]?.[Q]);if(!Y[CY])return null;let X={...Y};delete X[CY];let J={...$[Z]??{}};if(Object.keys(X).length===0)delete J[Q];else J[Q]=X;let G={...$};if(Object.keys(J).length===0)delete G[Z];else G[Z]=J;return G}async function jO($,Z,Q,Y,X){let J=await $.findById(Z);if(!J)return;let G=J.metadata??{},W=HF1(u5(G),Y,X);if(!W)return;await $.update(Z,Q,{metadata:{...G,sandboxMap:W}})}var CY="agent-sandbox";var SX=L(()=>{q8()});function wO($){return["openai-compatible","openrouter","deco"].includes($)}function LS0($,Z){return wO($)&&p50(Z)!==null}function p50($){let Z=$.replace(/^openai\//,"");return/^(gpt-\d|o[134](?:-|$))/.test(Z)?Z:null}var rF="codex-subscription",Th="gpt-6.1-sol";function kn$($,Z){return xV6[$]?.test(Z)??!1}var xV6;var Cn$=L(()=>{xV6={anthropic:/^claude-/,openrouter:/^anthropic\/claude-/,deco:/^anthropic\/claude-/}});function OS0($){return $===rF||$===un||$===aF}function Sn$($=un){let Z=FF1.anthropic.chat;return{credentialId:$,thinking:{id:Z,title:Z,provider:"anthropic"}}}function hV6($){let Z=$.replace(/^anthropic\//,"");if(!Z.startsWith("claude-"))return null;return Z.replace(/-(\d+)-(\d+)$/,"-$1.$2")}function _n$($){if($==="reviewer")return"reviewer";if($==="conflict")return"conflict";return"default"}function UF1($,Z="default",Q){let{providerId:Y,apiKey:X,baseUrl:J}=$,G=(H)=>Z==="chat"&&Q&&kn$(H==="anthropic"?H:Y,Q)?Q:FF1[H][Z],W=lV6[Z],K={CLAUDE_CODE_MAX_OUTPUT_TOKENS:`${uV6}`,CLAUDE_CODE_MAX_TURNS:W===null?null:`${W}`,ENABLE_TOOL_SEARCH:cV6,FORCE_PROMPT_CACHING_5M:mV6,ANTHROPIC_CUSTOM_HEADERS:null};if(Y==="anthropic")return{...K,CLAUDE_CODE_MODEL:G("anthropic"),ANTHROPIC_API_KEY:X,ANTHROPIC_AUTH_TOKEN:null,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:J??null};if(Y===un)return{...K,CLAUDE_CODE_MODEL:G("anthropic"),CLAUDE_CODE_OAUTH_TOKEN:X,ANTHROPIC_API_KEY:null,ANTHROPIC_AUTH_TOKEN:null,ANTHROPIC_BASE_URL:null};if(Y==="openrouter"||Y==="deco")return{...K,CLAUDE_CODE_MODEL:G("openrouter"),ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:J??fV6};if(Y===aF){let H=Z==="chat"&&Q?hV6(Q):null;return{...K,CLAUDE_CODE_MODEL:H??FF1.copilot[Z],ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,CLAUDE_CODE_OAUTH_TOKEN:null,ANTHROPIC_BASE_URL:yV6,ANTHROPIC_CUSTOM_HEADERS:gV6}}throw new vn$(Y)}var un="claude-subscription",aF="github-copilot",fV6="https://openrouter.ai/api",yV6="https://api.githubcopilot.com",gV6="Copilot-Integration-Id: copilot-developer-cli",FF1,jS0="claudeCodeModelClass",ln="taskRunInstructions",uV6=32000,lV6,cV6="1",mV6="1",vn$;var qB=L(()=>{Cn$();FF1={anthropic:{default:"claude-opus-5-5",chat:"claude-sonnet-5-5",reviewer:"claude-sonnet-5-5",conflict:"claude-sonnet-5"},openrouter:{default:"anthropic/claude-opus-5.5",chat:"anthropic/claude-sonnet-5.5",reviewer:"anthropic/claude-sonnet-5.5",conflict:"anthropic/claude-sonnet-5"},copilot:{default:"claude-sonnet-5.5",chat:"claude-sonnet-5.5",reviewer:"claude-sonnet-5.5",conflict:"claude-sonnet-5"}};lV6={default:null,chat:null,reviewer:60,conflict:60};vn$=class vn$ extends Error{constructor($){super(`the claude-code harness needs an Anthropic, OpenRouter, Deco or GitHub Copilot model credential; this run's model resolves to "${$}". Point the agent's thinking model at one of those, or run it with Decopilot.`);this.name="UnsupportedClaudeCodeProviderError"}}});async function cn($,Z,Q,Y="claude-code"){if(Y==="codex"){let G=await $.storage.codexSubscriptions.findLiveToken(Q).catch(()=>null);return G?{providerId:rF,apiKey:G}:null}let J=[...(await $.storage.orgSharedPlans.list(Z)).map(({providerId:G,userId:W})=>({providerId:G,userId:W})),...dV6.map((G)=>({providerId:G,userId:Q}))];for(let G of J){let W=await iV6($,G.providerId).findLiveToken(G.userId).catch((K)=>{return console.warn(`[plan] ${G.providerId} lookup failed`,K),null});if(W)return{providerId:G.providerId,apiKey:W}}return null}var dV6,iV6=($,Z)=>Z===un?$.storage.claudeSubscriptions:$.storage.githubCopilotSubscriptions;var wS0=L(()=>{qB();dV6=[un,aF]});function xn$($){if(EO.size>=500){let Q=EO.keys().next().value;if(Q!==void 0)EO.delete(Q)}let Z=Date.now();EO.delete($),EO.set($,{t0:Z,last:Z,stages:[]}),console.log(`[turn-latency] thread=${$} stage=post-received +0ms`)}function fQ($,Z,Q){let Y=bn$($),X=Date.now(),J=EO.get(Y),G=!J;if(!J)J={t0:X,last:X,stages:[]},EO.set(Y,J);let W=X-J.t0,K=X-J.last;J.last=X,J.stages.push(`${Z}=${K}`),console.log(`[turn-latency] thread=${Y} stage=${Z} +${W}ms (\u0394${K}ms)`+(G?" t0=local":"")+(Q?` ${JSON.stringify(Q)}`:""))}function fn$($,Z){let Q=bn$($);fQ(Q,"first-token",Z);let Y=EO.get(Q);if(!Y)return;EO.delete(Q),console.log(`[turn-latency] thread=${Q} SUMMARY ttft=${Y.last-Y.t0}ms ${Y.stages.join(" ")}`)}var EO,bn$=($)=>$.split(":")[0]??$;var mn=L(()=>{EO=globalThis.__turnLatency??=new Map});function pV6($){return(typeof $.timeout==="number"&&$.timeout>0?Math.min($.timeout,120000):30000)+15000}function nV6($,Z){if($.aborted)return Z.catch(()=>{}),Promise.reject($.reason??Error("aborted"));return new Promise((Q,Y)=>{let X=()=>{Z.catch(()=>{}),Y($.reason??Error("aborted"))};$.addEventListener("abort",X,{once:!0}),Z.then(Q,Y).finally(()=>{$.removeEventListener("abort",X)})})}async function tV6($,Z,Q,Y,X){let J=X?.timeoutMs??pV6(Y),G=AbortSignal.timeout(J),W=X?.signal?AbortSignal.any([X.signal,G]):G,K,H;try{let U=new Headers({"content-type":"application/json"});if(X?.threadId)U.set("x-thread-id",X.threadId);let N={method:"POST",headers:U,body:JSON.stringify(Y),signal:W};({res:K,rawText:H}=await nV6(W,(async()=>{let B=await $.proxyDaemonRequest(Z,Q,N);return{res:B,rawText:await B.text()}})()))}catch(U){if(X?.signal?.aborted)throw U;if(G.aborted)throw Error(`Sandbox POST ${Q} timed out after ${Math.round(J/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new n50(U)}let F;try{F=JSON.parse(H)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response provider=agent-sandbox path=%s status=%d rawText=%s",Q,K.status,H.slice(0,2000));let U=K.status>=500?" (server error)":K.status===0?" (no response)":"";throw Error(`Daemon ${Q} returned invalid JSON (HTTP ${K.status}${U}): ${H.slice(0,800)}`)}if(!K.ok){console.error("[sandbox-fs-hooks] Non-OK response provider=agent-sandbox path=%s status=%d body=%s",Q,K.status,H.slice(0,2000));let U=F.error??`Daemon ${Q} failed (${K.status})`;if(K.status===404&&U==="sandbox not found")throw new n50(Error(U),!0);throw Error(U)}return F}function NF1($,Z){let{ensureHandle:Q,invalidateHandle:Y,canAutoRestart:X}=Z,J=0,G=(H)=>{let F=Date.now();if(F-J<300000)return;J=F,$.renewTtl(H).catch((U)=>{console.warn(`[sandbox-fs-hooks] TTL renew failed for ${H}: ${U instanceof Error?U.message:String(U)}`)})},W=(H)=>{let F=H instanceof Error?H.message:String(H);return X?`Sandbox is unreachable and auto-restart did not recover it: ${F}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},K=async(H,F,U)=>{let N=async(D)=>tV6($,D,H,F,{signal:U,timeoutMs:Z.opTimeoutMs,threadId:Z.threadId}),B=await Q();G(B);try{return await N(B)}catch(D){if(!(D instanceof n50))throw D;if(!X&&!D.gone)throw Error(W(D.cause??D));console.warn(`[sandbox-fs-hooks] daemon ${H} unreachable \u2014 reaping sandbox and retrying once`,D.cause??D);try{await Y({force:D.gone})}catch(j){console.warn("[sandbox-fs-hooks] invalidateHandle failed",j)}let O;try{O=await Q()}catch(j){throw Error(`Failed to restart sandbox: ${j instanceof Error?j.message:String(j)}`)}try{return await N(O)}catch(j){if(j instanceof n50)throw Error(W(j.cause??j));throw j}}};return{onProxy:(H,F,U)=>K(H,F,U),onBash:async(H,F)=>{return await K("/_sandbox/bash",{command:H,...F?.cwd!==void 0?{cwd:F.cwd}:{},...F?.timeoutMs!==void 0?{timeout:F.timeoutMs}:{}})}}}var n50;var yn$=L(()=>{n50=class n50 extends Error{code="DAEMON_UNREACHABLE";gone;constructor($,Z=!1){super($ instanceof Error?$.message:"Daemon proxy failed");if(this.gone=Z,$ instanceof Error)this.cause=$}}});var dn=L(()=>{In();GS0();yn$()});function t50($){let Z=new Set($.map((F)=>F.name.toLowerCase()).filter((F,U,N)=>N.indexOf(F)!==U)),Q=$.map((F)=>Z.has(F.name.toLowerCase())),Y=(F)=>{let U=$[F];return BF1(Q[F]?`${U.owner}-${U.name}`:U.name).toLowerCase()};for(let F=0;F<$.length;F++){let U=new Map,N=!1;for(let B=0;B<$.length;B++){let D=Y(B),O=U.get(D);if(O!==void 0){if(!Q[B])Q[B]=!0,N=!0;if(!Q[O])Q[O]=!0,N=!0}U.set(D,B)}if(!N)break}let X=$.map((F,U)=>BF1(Q[U]?`${F.owner}-${F.name}`:F.name)),J=new Map;for(let F of X)J.set(F.toLowerCase(),(J.get(F.toLowerCase())??0)+1);let G=X.map((F,U)=>{if(J.get(F.toLowerCase())===1)return F;let N=new URL($[U].url).host;return BF1(`${N}-${F}`)}),W=new Map;for(let F of G)W.set(F.toLowerCase(),(W.get(F.toLowerCase())??0)+1);let K=new Set(G.filter((F)=>W.get(F.toLowerCase())===1).map((F)=>F.toLowerCase())),H=G.map((F,U)=>U).filter((F)=>W.get(G[F].toLowerCase())!==1).sort((F,U)=>(Je($[F])??"").localeCompare(Je($[U])??""));for(let F of H){let U=G[F],N=1,B=`${U}-${N}`;while(K.has(B.toLowerCase()))B=`${U}-${++N}`;K.add(B.toLowerCase()),G[F]=B}return G}function gn$($,Z){let Q=$.findIndex((Y)=>sD(Y,Z));return Q===-1?null:t50($)[Q]??null}function BF1($){return $.replace(/[^A-Za-z0-9._-]/g,"-").replace(/^[^A-Za-z0-9]+/,"")||"repo"}var DF1=()=>{};var o50;var LF1=L(()=>{o50={npm:{install:"npm install",run:($)=>`npm run ${$}`,runtime:"node"},pnpm:{install:"pnpm install",run:($)=>`pnpm run ${$}`,runtime:"node"},yarn:{install:"yarn install",run:($)=>`yarn run ${$}`,runtime:"node"},bun:{install:"bun install",run:($)=>`bun run ${$}`,runtime:"bun"},deno:{install:"deno install",run:($)=>`deno task ${$}`,runtime:"deno"}}});function pn($){if(!$)return null;let Z=$.runtime;if(!Z||typeof Z!=="object")return null;let Q=Z.env;if(!Array.isArray(Q))return null;let Y=[];for(let X of Q){if(!X||typeof X!=="object")continue;let J=X;if(typeof J.key!=="string"||!C30.test(J.key))continue;if(J.kind==="literal"&&typeof J.value==="string"){Y.push({key:J.key,kind:"literal",value:J.value});continue}if(J.kind==="secret"&&typeof J.secretId==="string"&&J.secretId.length>0)Y.push({key:J.key,kind:"secret",secretId:J.secretId})}return Y.length===0?null:Y}async function hn$($,Z){n(Z);let Q=Q0(Z);await Z.access.check();let Y=S0(Z);if(!Y)throw Error("User ID required");let X=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!X||X.organization_id!==Q.id)throw Error("Virtual MCP not found");let J=X.metadata??{},G=u5(J),W=await kz(Z,$.branch,Y),K=SY(G,W,$.branch);return{virtualMcp:X,metadata:J,userId:Y,sandboxUserId:W,entry:K,organization:Q}}function oV6($){if($===null||!/^\d+$/.test($))return null;let Z=Number($);return Z>=1&&Z<=65535?$:null}function un$($){let Z=$.runtime??null,Y=Z?.selected??null,X=oV6(Z?.port??null),J=Z?.path??null;if(!Y||!(Y in o50))return{packageManager:null,runtime:null,port:X,packageManagerPath:J,runtimeBinPath:null};let G=o50[Y].runtime;return{packageManager:Y,runtime:G,port:X,packageManagerPath:J,runtimeBinPath:G==="deno"?"/opt/deno/bin":G==="bun"?"/opt/bun/bin":null}}var s50=L(()=>{q8();LF1();SX();yQ()});async function ES0({ctx:$,runner:Z,handle:Q,orgId:Y,userId:X,entries:J}){if(!J||J.length===0)return;let G={};for(let K of J){if(K.kind==="literal"){G[K.key]=K.value;continue}try{let{value:H}=await $.storage.secrets.resolveById(K.secretId,Y,X);G[K.key]=H}catch(H){if(H instanceof eK||H instanceof Iz){console.warn(`[SANDBOX_START] skipping env ${K.key}: ${H.message}. Re-link or recreate the secret to restore.`);continue}throw H}}if(Object.keys(G).length===0)return;let W=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({env:G})});if(!W.ok){let K=await BB(W,sV6).catch(()=>W.statusText);console.warn(`[SANDBOX_START] daemon rejected env patch (${W.status}): ${K}`)}}var sV6=10485760;var OF1=L(()=>{d50();Gn()});async function mn$($,Z,Q,Y,X){let J=await RJ({connectionId:$,tokenStorage:new e5(Y,X)});if(!J.accessToken)return null;return in$(Z,Q,J.accessToken)}function dn$($,Z){return in$($,Z,null)}async function in$($,Z,Q){let Y=new Map,X=new Set(ln$.map((K)=>K.path));for(let K of Object.values(cn$))for(let H of K??[])X.add(H);await Promise.all(Array.from(X).map(async(K)=>{Y.set(K,await aV6($,Z,K,Q))}));let J=ln$.find(({path:K})=>Y.get(K)!==null);if(!J)return null;let G=cn$[J.pm]??[],W=null;for(let K of G)if(W=eV6(Y.get(K)??null),W)break;return{packageManager:J.pm,devPort:W}}async function aV6($,Z,Q,Y){let X=`https://api.github.com/repos/${$}/${Z}/contents/${encodeURIComponent(Q)}`;try{let J={Accept:"application/vnd.github+json","User-Agent":"studio-runtime-detect"};if(Y)J.Authorization=`token ${Y}`;let G=await fetch(X,{headers:J,signal:AbortSignal.timeout(5000)});if(!G.ok)return null;let W=await G.json();if(!W.content||W.encoding!=="base64")return null;return Buffer.from(W.content,"base64").toString("utf8")}catch{return null}}function eV6($){if(!$)return null;try{let Z=JSON.parse($),Q=Z.tasks??Z.scripts??{},X=(Q.dev??Q.start??"").match(rV6)?.[1]??null;if(!X)return null;let J=Number(X);return J>=1&&J<=65535?X:null}catch{return null}}var ln$,cn$,rV6;var pn$=L(()=>{s3();xK();ln$=[{path:"deno.json",pm:"deno"},{path:"deno.jsonc",pm:"deno"},{path:"bun.lock",pm:"bun"},{path:"bunfig.toml",pm:"bun"},{path:"pnpm-lock.yaml",pm:"pnpm"},{path:"yarn.lock",pm:"yarn"},{path:"package-lock.json",pm:"npm"},{path:"package.json",pm:"bun"}],cn$={deno:["deno.json","deno.jsonc"],bun:["package.json"],pnpm:["package.json"],yarn:["package.json"],npm:["package.json"]},rV6=/(?:--port|PORT=|:)(\d{4,5})/});function $I6($){return($??"").normalize("NFKD").replace(/[\u0300-\u036F]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"user"}function PS0($){return $?.name||$?.email?.split("@")[0]||void 0}function zS0($){let Z=$I6($),Q=Date.now().toString(36).split("").reverse().join("");return`${Z}-${Q}`}async function on$($,Z){nn$??=G$.createHistogram("studio.sandbox.provision.duration_ms",{description:"Wall-clock time of one sandbox ensure, by provider (runner_kind), outcome, the provider a fallback left (fallback_from), whether a warm-pool pod was claimed (warm_pool), and whether a sandbox was already recorded (start=resume) or not (start=fresh).",unit:"ms",advice:{explicitBucketBoundaries:[500,1000,2000,5000,1e4,20000,30000,60000,120000,300000,600000]}}),tn$??=G$.createCounter("studio.sandbox.placement",{description:"Sandbox ensures by the provider that served them (runner_kind) and why it was chosen (reason)."});let Q=performance.now(),Y=(X,J,G={})=>nn$?.record(performance.now()-Q,{...$,runner_kind:X?OO[X]:"unknown",outcome:J,...G});try{let X=await Z(),J=X.placement?.fallbackFrom;if(Y(X.provider,"ok",{warm_pool:String(X.warmPoolAdopted),...J&&{fallback_from:OO[J]}}),X.placement)tn$.add(1,{runner_kind:OO[X.provider],reason:X.placement.reason});return X}catch(X){throw Y(aH1(X),"error"),X}}var nn$,tn$;var sn$=L(()=>{dn();b6()});async function r50($,Z,Q){try{await $.storage.threads.stampRuntimeIfAbsent(Z,Q)}catch(Y){console.warn(`[stampRuntimeIfAbsent] ${Z}: ${Y instanceof Error?Y.message:String(Y)}`)}}function qh($){return $==="cms"||$==="sandbox"?$:null}function ZI6($){return!!AP($)&&(zP($)||$?.fastPreview===!0)}function AS0($){return ZI6($)?"cms":"sandbox"}var jF1;var nn=L(()=>{$p();jF1=["cms","sandbox"]});async function wF1($,Z){n(Z);let Q=Q0(Z),Y=S0(Z);if(!Y)throw Error("User ID required");let X=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!X||X.organization_id!==Q.id)throw Error("Virtual MCP not found");let J=X.metadata??{},G=await kz(Z,$.branch,Y),W=_Y($.branch)??Z.metadata?.threadId,K=SY(u5(J),G,$.branch),H=K??(W?SY(await tn(Z,W),G,$.branch):null);return{organization:Q,userId:Y,metadata:J,sandboxUserId:G,recordThreadId:W,agentEntry:K,existing:H}}async function rn$($,Z){return(await wF1($,Z)).existing}var EF1=L(()=>{SX();yQ()});import{z as RB}from"zod";async function MB($,Z){let{organization:Q,userId:Y,metadata:X,sandboxUserId:J,recordThreadId:G,agentEntry:W,existing:K}=await wF1($,Z),H=await OZ(Z);if(K&&!$.revalidate){if(await H.alive(K.sandboxHandle).catch(()=>!0))return K;if(W)await jO(Z.storage.virtualMcps,$.virtualMcpId,Y,J,$.branch).catch((w)=>{console.warn("[ensureSandbox] failed to reap stale entry",w)});else if(G)await qS0(Z,G,J,$.branch)}let F=_Y($.branch)??Z.metadata?.threadId;if(F)r50(Z,F,"sandbox");let N=await VB(Z,F)??X.repository??null;await $.onColdStart?.().catch((j)=>{console.warn("[ensureSandbox] onColdStart callback failed",j instanceof Error?j.message:String(j))});let B=await zF1(Z,F),D=(j)=>$t$({ctx:Z,userId:Y,sandboxUserId:J,orgId:Q.id,virtualMcpId:$.virtualMcpId,branch:$.branch,metadata:X,repository:j,threadRepos:B,existing:$.revalidate?K:null,runner:H,...$.purpose?{purpose:$.purpose}:{}}),O;try{O=await D(N)}catch(j){if(!N||!(j instanceof Error)||!$j0(j.message).code)throw j;console.warn("[ensureSandbox] starting without the primary repository",{virtualMcpId:$.virtualMcpId,repo:`${N.owner}/${N.name}`,error:j.message}),O=await D(null)}return $.onBound?.({warmPoolAdopted:O.warmPoolAdopted}),O.entry}async function en$($,Z,Q){if(!Z)return null;if(Z.accountId===null&&!Q&&!Z.legacyConnectionId)return Z;return await nL($.storage,Z)?Z:null}async function QI6($){let Z=$.repos.filter((X)=>!$.primary||!sD(X,$.primary)),Q=t50(Z),Y=[];for(let[X,J]of Z.entries())try{let G=await rN($.ctx.storage,$.orgId,J),W=await en$($.ctx,G,J.connectionId),K=J.connectionId??G?.legacyConnectionId;if(!W&&!K)continue;let{cloneUrl:H,expiresAt:F}=W?await sN($.ctx,W,{forceRefresh:!0}):await DB(K,J.owner,J.name,$.ctx.db,$.ctx.vault);Y.push({cloneUrl:H,credentialExpiresAt:NH1(F),...W?{repositoryId:W.id}:{connectionId:K},userName:$.gitUserName,userEmail:$.gitUserEmail,displayName:W?W.path:`${J.owner}/${J.name}`,directoryName:Q[X],submoduleCredentials:$.submoduleCredentials})}catch(G){console.warn(`[provisionSandbox] skipping secondary ${J.owner}/${J.name}:`,G instanceof Error?G.message:G)}return Y}async function $t$($){let{ctx:Z,userId:Q,sandboxUserId:Y,orgId:X,virtualMcpId:J,branch:G,metadata:W,threadRepos:K,existing:H,runner:F,purpose:U,provider:N}=$,B=_Y(G)??Z.metadata?.threadId,D=(X0)=>B&&fQ(B,`provision:${X0}`),O=U==="harness-run",j="default",w=$.repository?await YI6({ctx:Z,orgId:X,virtualMcpId:J,userId:Q,repository:$.repository}):null,{runtime:E,packageManager:P,port:T,packageManagerPath:z}=un$(W),A=await Z.storage.organizationSettings.get(X),R=await DS0({ctx:Z,orgId:X,userId:Q,entries:A?.submodule_credentials}),f;if(w){let X0=await rN(Z.storage,X,w);j=X0?.sandboxImage??"default";let h0=await en$(Z,X0,w.connectionId),C0=w.connectionId??X0?.legacyConnectionId??void 0;if(!h0&&C0)await Wn({ctx:Z,connectionId:C0,organizationId:X,forceRefresh:!0,onLegacyMintError:(o0)=>{console.error("[provisionSandbox] repo-scoped legacy token mint failed",{connectionId:C0,error:o0.message})}});let{cloneUrl:H1,gitUserName:c0,gitUserEmail:j0,expiresAt:E0}=h0?await KI6(Z,h0):C0?await DB(C0,w.owner,w.name,Z.db,Z.vault):df$(w.owner,w.name);if(!P&&!h0){let o0=C0?await mn$(C0,w.owner,w.name,Z.db,Z.vault):await dn$(w.owner,w.name);if(o0)P=o0.packageManager,E=o50[o0.packageManager].runtime,T=o0.devPort??T,await XI6(Z,J,Q,o0.packageManager,o0.devPort)}let n0=B0().sandboxStickyHeadRefEnabled,O1=Uj0({branch:G,derivedRef:eF(G,{flat:Mh(X0?.provider)}),recordedHeadRef:n0?await TS0(Z,_Y(G)):null,sticky:n0});f={cloneUrl:H1,credentialExpiresAt:NH1(E0),...h0?{repositoryId:h0.id}:C0?{connectionId:C0}:{},userName:c0,userEmail:j0,branch:O1,displayName:h0?h0.path:`${w.owner}/${w.name}`,submoduleCredentials:R}}let S=await QI6({ctx:Z,orgId:X,repos:K??[],primary:w,gitUserName:f?.userName??"",gitUserEmail:f?.userEmail??"",submoduleCredentials:R}),V=E&&P&&!O?{runtime:E,packageManager:P,...T!==null?{devPort:Number(T)}:{},...z?{packageManagerPath:z}:{}}:void 0,v=C50({orgId:X,virtualMcpId:J,branch:G}),b=!B0().orgFsMountsDisabled,h;if(b){let X0=Z.organization?.slug??(await Z.db.selectFrom("organization").select(["slug"]).where("id","=",X).executeTakeFirst())?.slug;if(X0)h=await jj0(Z,{orgSlug:X0,orgId:X,baseUrl:B5()})}let l=await on$({start:H?"resume":"fresh",purpose:U??"interactive"},async()=>{return D("prep"),await WI6(F),D("capacity"),GI6(F,{userId:Y,projectRef:v},{branch:G,repo:f,extraRepos:S,workload:V,cloneOnly:O,...x5(A?.flags,"sandbox_repo_snapshots")?{repoSnapshot:!0}:{},...U?{purpose:U}:{},...N?{provider:N}:{},...j!=="default"?{sandboxImage:j}:{},tenant:{orgId:X,userId:Y,...Z.organization?.slug?{orgSlug:Z.organization.slug}:{},...Z.organization?.name?{orgName:Z.organization.name}:{},...Z.auth.user?.email?{userEmail:Z.auth.user.email}:{},...Z.auth.user?.name?{userName:Z.auth.user.name}:{}},...h?{orgFsConfigJson:h}:{}})});D("provider-ensure");let d=pn(W);await ES0({ctx:Z,runner:F,handle:l.handle,orgId:X,userId:Q,entries:d}),D("env");let I0=!!H&&H.sandboxHandle===l.handle&&H?.createdAt?H.createdAt:Date.now(),J0=W.runtime?.selected??null,U0=W.runtime?.port??null,o=W.runtime?.path??null,t={sandboxHandle:l.handle,previewUrl:l.previewUrl,createdAt:I0,startedWith:{packageManager:J0,port:U0,path:o}};await In$(Z.storage.virtualMcps,J,Q,Y,G,t);let r=_Y(G)??Z.metadata?.threadId;if(r)await Zt$(Z,r,Y,G,t);D("map-writes");let $0=!H||H.sandboxHandle!==l.handle;return{entry:t,isNewVm:$0,warmPoolAdopted:l.warmPoolAdopted}}async function YI6($){let{ctx:Z,orgId:Q,virtualMcpId:Y,userId:X,repository:J}=$;if(!J.connectionId)return J;if(await Z.storage.connections.findById(J.connectionId,Q))return J;let{items:W}=await Z.storage.connections.list(Q),K=lB0(W,J.owner,J.name);if(!K)return console.warn("[provisionSandbox] recorded repo connection no longer exists and no live connection covers the repo",{virtualMcpId:Y,connectionId:J.connectionId}),J;console.warn("[provisionSandbox] healed dangling repo connection",{virtualMcpId:Y,staleConnectionId:J.connectionId,connectionId:K.id});try{let F=(await Z.storage.virtualMcps.findById(Y))?.metadata??{},U=F.repository;if(U?.connectionId===J.connectionId){let N=UZ(K);await Z.storage.virtualMcps.update(Y,X,{metadata:{...F,repository:{...U,connectionId:K.id,...N?{installationId:N.installationId}:{}}}})}}catch(H){console.warn("[provisionSandbox] failed to persist healed repo connection",{virtualMcpId:Y,error:H.message})}return{...J,connectionId:K.id}}async function XI6($,Z,Q,Y,X){let J=await $.storage.virtualMcps.findById(Z);if(!J)return;let G=J.metadata??{};await $.storage.virtualMcps.update(Z,Q,{metadata:{...G,runtime:{selected:Y,port:X}}})}async function GI6($,...Z){try{return await $.ensure(...Z)}catch(Q){if(!(Q instanceof bQ))throw Q;throw Error(`sandbox provisioning failed: the sandbox pod rejected the bootstrap handshake (HTTP ${Q.status}). The claim was released; retrying gets a different pod.`,{cause:Q})}}async function WI6($){let Z=Date.now()+an$,Q=!1;while(!await $.hasSchedulableCapacity()){if(Date.now()>=Z)throw Error(`sandbox provisioning failed: the cluster has had no room to schedule another sandbox for ${Math.round(an$/1000)}s`);if(!Q)Q=!0,console.warn("[ensureSandbox] waiting for cluster capacity \u2014 a sandbox pod cannot be scheduled right now");await J$(JI6)}}async function KI6($,Z){try{return await sN($,Z,{forceRefresh:!0})}catch(Q){if(Q instanceof v0){let Y=Q.status===404?_R.githubConnectionMissing:_R.githubNotAuthenticated;throw Error(t60(Y,Q.message))}throw Q}}var PF1,an$=150000,JI6=5000;var Rh=L(()=>{mn();QZ();dn();Lh();DF1();p$();R0();s50();OF1();KF1();SX();vG();o60();pn$();LF1();CX();sn$();nn();yQ();Nj0();u1();H9();jB();SX();EF1();T5();S5();$S0();Zj0();PF1=u({name:"SANDBOX_START",description:"Start a sandbox with the connected repository and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:RB.object({virtualMcpId:RB.string().describe("Virtual MCP ID"),branch:RB.string().min(1).optional().describe("Git branch to check out. Pass the thread's branch whenever the caller has one: when omitted the handler mints a fresh `<user-slug>-<timestamp>` name, which becomes a SEPARATE sandbox from the one the thread's own branch resolves to. The resolved branch is returned in the response so callers can persist it."),threadId:RB.string().optional().describe("The session asking for a sandbox. A thread stamped `cms` is refused \u2014 that session reads and writes over the decofile API and a pod would be invisible to it. Optional: an unstamped (legacy) thread is always allowed, and so is a caller with no thread."),provider:RB.enum(["kubernetes","freestyle"]).optional().describe("Where to run a NEW sandbox, when that provider is configured and can run it; otherwise the other one is used. An existing sandbox stays where it is. Omitted: Kubernetes while it has room, else Freestyle.")}),outputSchema:RB.object({previewUrl:RB.string().nullable(),sandboxHandle:RB.string(),branch:RB.string(),isNewVm:RB.boolean()}),handler:async($,Z)=>{n(Z);let Q=Q0(Z);await Z.access.check();let Y=$.branch??zS0(PS0(Z.auth.user)),X=_Y(Y)??$.threadId??Z.metadata?.threadId;if(X){let O=await Z.storage.threads.get(X).catch(()=>null);if(qh(O?.metadata?.runtime)==="cms")throw Error("This chat is a CMS session and does not use a sandbox. Start a coding session to get one.")}let J=S0(Z);if(!J)throw Error("User ID required");let G=await kz(Z,Y,J),W=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!W||W.organization_id!==Q.id)throw Error("Virtual MCP not found");let K=W.metadata??{},H=await OZ(Z),F=SY(u5(K),G,Y),N=await VB(Z,X)??K.repository??null,{entry:B,isNewVm:D}=await $t$({ctx:Z,userId:J,sandboxUserId:G,orgId:Q.id,virtualMcpId:$.virtualMcpId,branch:Y,metadata:K,repository:N,threadRepos:await zF1(Z,X),existing:F,runner:H,...$.provider?{provider:$.provider}:{}});if(X)r50(Z,X,"sandbox");return{...B,branch:Y,isNewVm:D}}})});async function $H($,Z){if(!qU())return!1;try{let Q=await $.storage.organizationSettings.get(Z);return x5(Q?.flags,"chat_harness_sandbox_only")}catch(Q){return console.warn("[sandbox-only-chats] flag read failed",Q),!1}}async function Qt$($,Z,Q){if((await $.storage.aiProviderKeys.list({organizationId:Z})).some((X)=>a$$(X.providerId)))return!0;return await a50($,Z,Q)!==null}async function a50($,Z,Q,Y="claude-code"){return(await cn($,Z,Q,Y))?.providerId??null}async function Yt$($,Z){let Q=$.organization?.id;if(!Q)return;let Y=await $.storage.virtualMcps.findById(Z.virtual_mcp_id);if(!Y)return;let X=xE(Y),J=X.metadata?.repository,G=await IB($,{threadId:Z.id,agentRepo:J,runBranch:Z.branch??yJ(Z.id)}),{sandboxHandle:W}=await MB({virtualMcpId:X.id,branch:G,purpose:J?.url?"interactive":"harness-run"},$);await(await OZ($)).proxyDaemonRequest(W,"/_sandbox/prepare",{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({harness:await AF1($,Q),threadId:Z.id})}).then((H)=>{if(!H.ok)console.warn("[sandbox-prewarm] prepare refused",H.status)}).catch((H)=>console.warn("[sandbox-prewarm] prepare failed",H))}async function AF1($,Z){let Q=await $.storage.organizationSettings.get(Z);return x5(Q?.flags,"chat_harness_codex")?"codex":"claude-code"}async function Xt$($,Z,Q){if(await a50($,Z,Q,"codex"))return!0;return(await $.storage.aiProviderKeys.list({organizationId:Z})).some((X)=>wO(X.providerId))}var RS0;var Vh=L(()=>{wS0();u1();CX();Rh();yQ();fE();QZ();er0();RS0=class RS0 extends Error{code="claude_code_provider_required";constructor(){super("Chats need an Anthropic, OpenRouter or deco AI Gateway provider, or your own linked Claude or GitHub Copilot plan. Connect one in Settings \u2192 AI Providers.");this.name="ClaudeCodeProviderRequiredError"}}});async function e50($,Z,Q){let Y=$.storage.threads.getOrganizationId();if(!Y||!Z)return null;let X=await(Q??$.storage.virtualMcps.findById(Z,Y));return X?.organization_id===Y?X.metadata??null:null}function yJ($,Z){return Z?`thread:${$}/${Z}`:`thread:${$}`}function eF($,Z={}){let Q=$.replace(/^thread:/,"").replace(/\//g,"-");return Z.flat?`sandbox-thread-${Q}`:`sandbox/thread-${Q}`}function Mh($){return $==="gitlab"}async function TF1($,Z,Q){if(!Q)return eF(Z);return eF(Z,{flat:Mh(await HI6($,Q))})}async function HI6($,Z){let Q=typeof Z.url==="string"?OX(Z.url)?.provider:void 0;if(Q)return Q;let Y=$.storage.threads.getOrganizationId();if(!Z.repositoryId||!Y)return null;return(await $.storage.repositories.get(Z.repositoryId,Y).catch(()=>null))?.provider??null}function _Y($){if(!$||!$.startsWith("thread:"))return null;return $.slice(7).split("/")[0]||null}async function kz($,Z,Q){return RF1(await qF1($,Z),Q)}async function qF1($,Z){let Q=_Y(Z);if(!Q)return null;return await $.storage.threads.get(Q).catch(()=>null)}function RF1($,Z){return $?.created_by??Z}async function Cz($,Z){if(!Z)return null;let Q=await $.storage.threads.get(Z).catch(()=>null);if(!Q)return null;return Q.metadata??{}}async function TS0($,Z){let Y=(await Cz($,Z))?.headRef;return typeof Y==="string"&&Y.length>0?Y:null}async function Jt$($,Z,Q){let Y=await Cz($,Z);if(!Y)return;if(Y.headRef===Q)return;await $.storage.threads.update(Z,{metadata:{...Y,headRef:Q}}).catch((X)=>console.warn("[thread-repo] setThreadHeadRef failed",X))}function FI6($,Z){let Q=lB0(Z,$.owner,$.name);if(!Q||Q.id===$.connectionId)return null;let Y=UZ(Q);return{...$,connectionId:Q.id,...Y?.installationId?{installationId:Y.installationId}:{}}}async function zF1($,Z){let Y=(await Cz($,Z))?.additionalRepositories;return Array.isArray(Y)?Y.filter((X)=>X?.owner&&X?.name):[]}async function VB($,Z){let Q=await Cz($,Z),Y=Q?.repository??null;if(!Z||!Q||!Y?.connectionId||Y.repositoryId)return Y;try{let X=$.storage.threads.getOrganizationId();if(!X)return Y;if(await $.storage.connections.findById(Y.connectionId,X))return Y;let{items:J}=await $.storage.connections.list(X),G=FI6(Y,J);if(!G)return Y;return await $.storage.threads.update(Z,{metadata:{...Q,repository:G}}),console.warn("[thread-repo] re-pointed thread at a live repo connection",{threadId:Z,from:Y.connectionId,to:G.connectionId}),G}catch(X){return console.warn("[thread-repo] repoint check failed",X),Y}}function MF1($){if($.pinnedRef)return $.pinnedRef;if($.runBranch&&$.runBranch===yJ($.threadId))return $.runBranch;if($.threadRepo)return yJ($.threadId,$.threadRepo.connectionId);if(!$.agentRepo)return $.sandboxOnlyChats?yJ($.threadId):"ephemeral";return $.runBranch??`thread:${$.threadId}`}async function VF1($,Z){let Y=(await Cz($,Z))?.pinnedRef;return typeof Y==="string"&&Y.length>0?Y:null}async function IB($,Z){let Q=$.storage.threads.getOrganizationId(),[Y,X,J]=await Promise.all([VB($,Z.threadId),VF1($,Z.threadId),Q?$H($,Q):Promise.resolve(!1)]);return MF1({...Z,threadRepo:Y,pinnedRef:X,sandboxOnlyChats:J})}async function Zt$($,Z,Q,Y,X){let J=await Cz($,Z);if(!J)return;let G=i50(u5(J),Q,Y,X);await $.storage.threads.update(Z,{metadata:{...J,sandboxMap:G}}).catch((W)=>console.warn("[thread-repo] setThreadSandboxMapEntry failed",W))}async function tn($,Z){return u5(await Cz($,Z))}async function qS0($,Z,Q,Y){let X=await Cz($,Z);if(!X)return;let J=HF1(u5(X),Q,Y);if(!J)return;await $.storage.threads.update(Z,{metadata:{...X,sandboxMap:J}}).catch((G)=>console.warn("[thread-repo] removeThreadSandboxMapEntry failed",G))}var yQ=L(()=>{t4();vG();Vh();SX()});import{AsyncLocalStorage as UI6}from"async_hooks";function MS0($){let Z=$?.metadata?.[ln];return typeof Z==="string"&&Z.length>0}function on(){let $=K7.getStore();if(!$)throw Error("This tool is only available on a thread's MCP endpoint (/api/<org>/mcp/thread/<threadId>).");return $}function VS0($){let Z=$90($);return new Set(Z===Wt$?Gt$:Z)}function $90($){if($?.metadata?.source==="jira")return BI6;return LG.some((Q)=>jK($?.title,Q))?NI6:Wt$}var K7,Gt$,NI6,BI6,DI6,Wt$;var BW=L(()=>{qB();QE();v8();K7=new UI6;Gt$=["TASK_ADD_REPO","TASK_BOARD_ITEM_LIST","TASK_BOARD_ITEM_UPDATE","TASK_BOARD_ACTIVITY_LIST","TASK_BOARD_COMMENT_LIST","TASK_BOARD_COMMENT_CREATE","TASK_BOARD_COMMENT_UPDATE"],NI6=[...Gt$,"TASK_BOARD_ITEM_PRS_GET","TASK_BOARD_REVIEW_DECISION"],BI6=["TASK_ADD_REPO","JIRA_ISSUE_GET","JIRA_COMMENT_ADD","JIRA_ISSUE_TRANSITION","JIRA_ATTACHMENT_DOWNLOAD","JIRA_REMOTE_LINK_ADD","JIRA_ISSUE_CREATE","JIRA_ISSUE_SEARCH"],DI6=new Set(["TASK_BOARD_REVIEW_DECISION","TASK_BOARD_PROMOTE_TO_PRODUCTION","TASK_BOARD_PROMPT_UPSERT","TASK_BOARD_PROMPT_DELETE"]),Wt$=C00.map(($)=>$.name).filter(($)=>!DI6.has($))});import{z as DW}from"zod";async function wI6($,Z,Q,Y,X){return e$(async()=>{let G=SY(await tn($,Z),Q,Y)??(X?SY(u5(await e50($,X)),Q,Y):null);if(!G)throw Error("sandbox record not written yet");return G},{maxAttempts:LI6,minTimeout:OI6,maxTimeout:jI6,jitter:0}).catch(()=>null)}function PI6($,Z,Q=Ht$){if($.some((Y)=>sD(Y,Z)))return!1;return $.length>=Q}async function kF1($,Z,Q,Y){let X=await $.proxyDaemonRequest(Z,"/_sandbox/bash",{method:"POST",headers:new Headers({"content-type":"application/json","x-thread-id":Q}),body:JSON.stringify({command:Y})});if(!X.ok)throw Error(`sandbox bash failed (${X.status} ${X.statusText})`);let J=await X.json();return{stdout:J.stdout??"",exitCode:J.exitCode??0}}function Ft$($){return`cd ${$} 2>/dev/null || exit 1; if [ -n "$(git ls-files 2>/dev/null | head -1)" ]; then echo __CLONED__; fi; ls -A 2>/dev/null`}async function zI6($,Z,Q,Y){let X=()=>kF1($,Z,Q,Ft$(Y)).then((W)=>Ut$(W.stdout)).catch(()=>null),J=await X();if(!J?.cloned)return!1;await J$(IF1);let G=await X();return!!G?.cloned&&G.listing===J.listing}function Ut$($){let Z=$.split(`
|
|
1232
1232
|
`).map((X)=>X.trim()),Q=Z.includes("__CLONED__"),Y=Z.filter((X)=>X&&X!==".git"&&X!=="__CLONED__");return{cloned:Q,listing:Y.join(`
|
|
1233
1233
|
`)}}function AI6($){return[...$?[`cd ${JSON.stringify($)} || exit 0`]:[],...TI6].join(`
|
|
1234
1234
|
`)}async function qI6($,Z,Q){if(Q.repository)return sN($,Q.repository,{bufferMs:IS0});return await Wn({ctx:$,connectionId:Q.connectionId,organizationId:Z,forceRefresh:!0,onLegacyMintError:(Y)=>console.error("[TASK_ADD_REPO] legacy repo-scoped mint failed",{connectionId:Q.connectionId,error:Y.message})}),DB(Q.connectionId,Q.owner,Q.name,$.db,$.vault,{bufferMs:IS0})}async function RI6($,Z,Q){let Y=await $.storage.organizationSettings.get(Z);return DS0({ctx:$,orgId:Z,userId:Q,entries:Y?.submodule_credentials})}function MI6($){return{git:{...$.primary?{repository:{...$.primary,submoduleCredentials:$.submoduleCredentials}}:{repositories:$.secondaries??[]},identity:{userName:$.gitUserName,userEmail:$.gitUserEmail}}}}async function VI6($,Z,Q,Y){let X=t50(Q);return(await Promise.all(Q.map(async(G,W)=>{let K=await rN($.storage,Z,G),H=K&&await nL($.storage,K)?K:null;if(!H&&!G.connectionId)return null;try{let{cloneUrl:F}=H?await sN($,H,{bufferMs:IS0}):await DB(G.connectionId,G.owner,G.name,$.db,$.vault,{bufferMs:IS0});return{cloneUrl:F,repoName:X[W],submoduleCredentials:Y}}catch(F){return console.warn(`[TASK_ADD_REPO] skipping secondary ${G.owner}/${G.name}:`,F instanceof Error?F.message:F),null}}))).filter((G)=>G!==null)}var IS0=3300000,LI6=4,OI6=250,jI6=2000,Kt$=45000,IF1=1500,EI6=5,Ht$=20,TI6,CF1;var Nt$=L(()=>{R0();T5();Z50();Nj0();CX();o60();KF1();SX();yQ();p$();DF1();BW();TI6=["origin=$(git remote get-url origin)",'token=$(printf %s "$origin" | sed -n "s|.*://[^:]*:\\([^@]*\\)@.*|\\1|p")','[ -n "$token" ] || exit 0','user=$(printf %s "$origin" | sed -n "s|.*://\\([^:]*\\):.*|\\1|p")','host=$(printf %s "$origin" | sed -n "s|.*@\\([^/]*\\)/.*|\\1|p")','[ -n "$host" ] || exit 0',"umask 077",'if [ "$user" = "oauth2" ]; then',' mkdir -p "${HOME:-/root}/.config/glab-cli"',' printf "hosts:\\n %s:\\n token: %s\\n api_host: %s\\n api_protocol: https\\n is_oauth2: true\\n" "$host" "$token" "$host" > "${HOME:-/root}/.config/glab-cli/config.yml"',' chmod 600 "${HOME:-/root}/.config/glab-cli/config.yml"','elif [ "$user" = "x-access-token" ]; then',' mkdir -p "${HOME:-/root}/.config/gh"',' printf "%s:\\n oauth_token: %s\\n git_protocol: https\\n" "$host" "$token" > "${HOME:-/root}/.config/gh/hosts.yml"',"fi"];CF1=u({name:"TASK_ADD_REPO",description:"Clone one of this organization's repositories into your working directory. If your workspace already names a repository, use that checkout directly. For a workspace without a repository, call this once with the repository the task is about; it waits for the checkout and returns the repository root listing, so you can start reading files immediately after. `git` and the repository's CLI (`gh` for GitHub, `glab` for GitLab; Bitbucket has "+"no CLI \u2014 its token is the password in `git remote get-url origin`, for `curl` "+"against api.bitbucket.org) are authenticated once it returns. Call TASK_ADD_REPO with no arguments to list the repositories available.",annotations:{title:"Add Repository",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:DW.object({id:DW.string().optional().describe("id of the repository to clone, as returned by the listing. Omit to list the available repositories."),connectionId:DW.string().optional().describe("Deprecated alias for `id`.")}),outputSchema:DW.object({success:DW.boolean(),repositories:DW.array(DW.object({id:DW.string(),repo:DW.string()})).optional(),repo:DW.string().optional(),cloned:DW.boolean().optional(),files:DW.string().optional(),message:DW.string()}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=Q0(Z),Y=S0(Z);if(!Y)throw Error("User ID required");let{threadId:X}=on(),J=await Bz(Z,Q.id),G=$.id??$.connectionId,W=G?J.find((J0)=>J0.id===G):void 0;if(!W){let J0=J.map((U0)=>({id:U0.id,repo:U0.label}));return{success:!1,repositories:J0,message:G?`No repository for id "${G}". Pick one of the repositories listed.`:J0.length===0?"This organization has no repositories linked, so none can be cloned.":"Pick a repository and call TASK_ADD_REPO again with its id."}}let K=await Z.storage.threads.get(X);if(!K)throw Error(`Thread not found: ${X}`);let H=K.metadata?.repository?null:await e50(Z,K.virtual_mcp_id),F=await IB(Z,{threadId:X,runBranch:K.branch,agentRepo:H?.repository}),U=await kz(Z,F,Y),N=await wI6(Z,X,U,F,H?.repository?K.virtual_mcp_id:null);if(!N)throw Error(`No sandbox is registered for this run (thread ${X}), so there is nowhere to clone into.`);let B=K.metadata?.repository??H?.repository,D=K.metadata?.additionalRepositories??[],O={url:W.webUrl,repositoryId:W.repository?.id},j=B&&sD(B,O),w=await OZ(Z);if(j&&await zI6(w,N.sandboxHandle,X,"."))return{success:!1,repo:`${W.owner}/${W.name}`,cloned:!1,message:`${W.label} is already checked out at your working directory.`};if(B&&!j&&PI6(D,O))return{success:!1,repo:`${W.owner}/${W.name}`,cloned:!1,message:`This run already has ${Ht$} additional repositories checked out, which is the limit. Work with what's already checked out instead of adding another.`};let{cloneUrl:E,gitUserName:P,gitUserEmail:T}=await qI6(Z,Q.id,W),z={url:W.webUrl,owner:W.owner,name:W.name,...W.installationId!==void 0?{installationId:W.installationId}:{},...W.connectionId?{connectionId:W.connectionId}:{},...W.repository?{repositoryId:W.repository.id}:{}},A=!B||!!j,R=A?[]:await Z.storage.threads.appendThreadRepository(X,z);if(!B)await Z.storage.threads.update(X,{metadata:{...K.metadata??{},repository:z},updated_by:Y});let f=Uj0({branch:F,derivedRef:eF(F,{flat:Mh(W.provider)}),recordedHeadRef:null,sticky:!1}),S=await RI6(Z,Q.id,Y),V=await w.proxyDaemonRequest(N.sandboxHandle,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify(MI6({...A?{primary:{cloneUrl:E,branch:f,repoName:`${W.owner}/${W.name}`}}:{secondaries:await VI6(Z,Q.id,R,S)},submoduleCredentials:S,gitUserName:P,gitUserEmail:T}))});if(!V.ok)throw Error(`the sandbox rejected the repository (${V.status} ${V.statusText})`);await w.proxyDaemonRequest(N.sandboxHandle,"/_sandbox/setup/clone",{method:"POST",headers:new Headers({"content-type":"application/json"}),body:"{}"}).catch((J0)=>{console.warn("[TASK_ADD_REPO] explicit clone kick failed",J0)});let v=A?null:gn$(R,z),b=A||!v?".":`"$(dirname "$PWD")/repos/${v}"`,h=Date.now()+Kt$,l=!1,d="",W0=0,I0=null;while(Date.now()<h){let J0=await kF1(w,N.sandboxHandle,X,Ft$(b)).catch(()=>null);if(!J0){if(++W0>=EI6)break;await J$(IF1);continue}W0=0;let U0=Ut$(J0.stdout);if(U0.cloned&&U0.listing===I0){l=!0,d=U0.listing;break}I0=U0.cloned?U0.listing:null,await J$(IF1)}if(l)await kF1(w,N.sandboxHandle,X,AI6(A?null:`../repos/${v}`)).catch((J0)=>console.warn("[TASK_ADD_REPO] CLI auth setup failed",J0));return{success:l,repo:`${W.owner}/${W.name}`,cloned:l,files:d,message:l?A?`${W.label} is checked out at your working directory on branch ${f}. \`git\` and its CLI are authenticated. Start working.`:`${W.label} is checked out at ../repos/${v}, beside your working directory, on its default branch. \`git\` and its CLI are authenticated there too. Your first checkout is untouched \u2014 commit and open a change request in each repository you change.`:`The clone of ${W.owner}/${W.name} did not finish within ${Math.round(Kt$/1000)}s. It may still be in progress \u2014 check your working directory before calling this again.`}}})});async function kS0($,Z,Q){let Y;try{return await Promise.race([$.aiProviders.listModels(Z,Q),new Promise((J,G)=>{Y=setTimeout(()=>G(Error("listModels timeout")),II6)})])}finally{if(Y)clearTimeout(Y)}}function kI6($,Z){switch($){case"fast":return Z.chat.fast;case"smart":return Z.chat.smart;case"thinking":return Z.chat.thinking;case"image":return Z.image;case"web_search":return Z.webSearch;case"deep_research":return Z.deepResearch}}function CS0($,Z,Q){let Y=$.find((X)=>X.modelId===Z);return{title:Y?.title??Q??Z,providerId:Y?.providerId,capabilities:Y?.capabilities,limits:Y?.limits??null}}async function I8($,Z,Q){let Y=$.organization?.id;if(!Y)throw Error("resolveTier called without an organization");let J=(await $.storage.organizationSettings.get(Y))?.simple_mode?.tiers?.[Z]??null,G=$.auth?.user?.id,W=RE.safeParse(Z),K=Q?.applyUserPrefs&&W.success&&G?(await $.storage.userModelPreferences.get(G,Y))?.tiers?.[W.data]??null:null,H=(await $.storage.aiProviderKeys.list({organizationId:Y})).filter((j)=>cA(j.providerId)&&(Q?.acceptProvider?.(j.providerId)??!0)),F=await wP$($,Y,Z),U=F?H.find((j)=>j.providerId==="deco"):void 0;if(F&&U&&(Q?.acceptModel?.(U.providerId,F)??!0)){let j=await kS0($,U.id,Y).catch(()=>[]);return{credentialId:U.id,modelId:F,modelMeta:CS0(j,F)}}for(let j of[K,J]){let w=j?H.find((E)=>E.id===j.keyId):void 0;if(j&&w&&(Q?.acceptModel?.(w.providerId,j.modelId)??!0)){let E=await kS0($,j.keyId,Y).catch(()=>[]);return{credentialId:j.keyId,modelId:j.modelId,modelMeta:CS0(E,j.modelId,j.title)}}}if(H.length===0)throw new Ih(Z);let N={};await Promise.all(H.map(async(j)=>{let w=await kS0($,j.id,Y).catch(()=>[]);N[j.id]=w.filter((E)=>Q?.acceptModel?.(j.providerId,E.modelId)??!0)}));let B=H.map((j)=>({id:j.id,providerId:j.providerId,label:j.label,presetId:j.presetId,createdBy:j.createdBy,createdAt:j.createdAt})),D=w8$(B,N),O=kI6(Z,D);if(!O)throw new Ih(Z);return{credentialId:O.keyId,modelId:O.modelId,modelMeta:CS0(N[O.keyId]??[],O.modelId,O.title)}}async function Bt$($,Z,Q){let Y=$.organization?.id;if(!Y)throw Error("resolveSpecificModel called without an organization");let X=await $.storage.aiProviderKeys.findById(Z,Y).catch((G)=>{if(G instanceof Error&&G.message==="Provider key not found")throw new Z90(`AI provider credential "${Z}" was not found`,{cause:G});throw G});if(!cA(X.providerId))throw new Z90(`AI provider credential "${Z}" uses native-only provider "${X.providerId}" and cannot run a hosted model`);let J=await kS0($,Z,Y).catch(()=>[]);return{credentialId:Z,modelId:Q,modelMeta:CS0(J,Q)}}async function nG($,Z){try{return await I8($,Z)}catch(Q){if(Q instanceof Ih)return null;return console.warn(`[resolveTier] tier "${Z}" resolution failed:`,Q),null}}var Ih,Z90,II6=5000;var jZ=L(()=>{IG();QZ();q8();Ih=class Ih extends Error{tier;constructor($){super(`No model available for tier "${$}". Connect a provider or configure the tier in organization settings.`);this.tier=$;this.name="TierUnavailableError"}};Z90=class Z90 extends Error{constructor($,Z){super($,Z);this.name="SpecificModelCredentialUnavailableError"}}});function Dt$($,Z){return Z==="reviewer"?"claude-code":$??"claude-code"}async function sn($,Z,Q,Y){if(Y==="claude-code")return I8($,"smart");let X=await $.storage.organizationSettings.get(Z);if(!x5(X?.flags,"task_board_codex"))throw new c6("Codex task runs require the task_board_codex organization flag.");if(await cn($,Z,Q,"codex"))return{credentialId:rF,modelId:Th,modelMeta:{title:Th,providerId:"openai"}};return I8($,"smart",{acceptProvider:wO,acceptModel:LS0})}var SS0=L(()=>{QZ();XX();jZ();wS0()});import{z as _1}from"zod";var rn=50000,an=500,_S0=200,Lt$=50000,PO,en,Q90,kh,CI6,SI6,_I6,Ot$,$t,vI6,bI6,jt$;var LW=L(()=>{v8();v8();jK0();v8();PO=_1.enum(OG),en=_1.object({id:_1.string(),name:_1.string(),state:_1.enum(hZ$),startDate:_1.string().nullable(),endDate:_1.string().nullable()}),Q90=_1.enum(["bug","feature","chore","spike","security"]),kh=_1.enum(["none","low","medium","high","urgent"]),CI6=_1.object({threadId:_1.string(),virtualMcpId:_1.string().nullable(),status:_1.enum(["in_progress","requires_action","failed","completed","expired"]).nullable(),title:_1.string().nullable(),lastMessage:_1.string().nullable(),hasPreview:_1.boolean(),failureKind:_1.string().nullable(),hasMessages:_1.boolean(),costUsd:_1.number().nullable(),costProvider:_1.string().nullable(),createdAt:_1.string(),lastActiveAt:_1.string()}),SI6=_1.object({reviewer:_1.enum(LG),verdict:_1.enum(["approved","changes_requested"]),verified:_1.boolean()}),_I6=_1.object({id:_1.string(),name:_1.string(),color:_1.string().nullable().describe('Hex color, e.g. "#3b82f6"'),createdBy:_1.string(),createdAt:_1.string().datetime()}),Ot$=_1.object({url:_1.string(),number:_1.number(),repoOwner:_1.string(),repoName:_1.string(),createdAt:_1.string(),updatedAt:_1.string().nullable(),title:_1.string().nullable(),body:_1.string().nullable(),state:_1.enum(["open","closed"]).nullable(),draft:_1.boolean().nullable(),merged:_1.boolean().nullable(),mergeable:_1.boolean().nullable(),checksStatus:_1.enum(["pending","passing","failing"]).nullable(),checks:_1.array(_1.object({name:_1.string(),status:_1.string(),conclusion:_1.string().nullable(),detailsUrl:_1.string().nullable(),summary:_1.string().nullable()})),previewUrl:_1.string().nullable()}),$t=_1.object({harnessId:xd,id:_1.string(),organizationId:_1.string(),title:_1.string(),description:_1.string().nullable(),status:PO,priority:kh,type:Q90,assigneeId:_1.string().nullable(),assignedBy:_1.string().nullable(),repo:_1.string().nullable(),repositoryId:_1.string().nullable(),virtualMcpId:_1.string().nullable(),sprintId:_1.string().nullable(),dueDate:_1.string().datetime().nullable(),sortOrder:_1.number(),keySeq:_1.number().nullable(),externalUrl:_1.string().nullable(),previewRoutes:_1.array(_1.string()),source:_1.enum(["jira"]).nullable(),retryAttempts:_1.number(),reviewCycleStartedAt:_1.string().datetime().nullable(),threads:_1.array(CI6),tags:_1.array(_I6),reviewVerdicts:_1.array(SI6),statusSince:_1.string().datetime().nullable(),createdBy:_1.string(),createdAt:_1.string().datetime(),updatedBy:_1.string(),updatedAt:_1.string().datetime()}),vI6=["created","status_changed","assignee_changed","priority_changed","due_date_changed","title_changed","description_changed","tags_changed","review_requested","review_approved","review_changes_requested","review_verdict_requested","merge_conflict_resolution","merge_failed","type_changed","duplicate_reported","finding_resolved","sprint_changed"],bI6=_1.enum(vI6),jt$=_1.object({id:_1.string(),taskBoardItemId:_1.string(),action:bI6,actorId:_1.string().nullable(),data:_1.record(_1.string(),_1.unknown()),occurredAt:_1.string().datetime()})});async function vS0($,Z,Q){if(Q===o$)return;if(!await $.db.selectFrom("member").select("id").where("organizationId","=",Z).where("userId","=",Q).executeTakeFirst())throw Error("assigneeId is not a member of the organization")}var SF1=L(()=>{LW()});async function bS0($,Z,Q){let Y=await $.storage.tags.listOrgTags(Z),X=new Set(Y.map((J)=>J.id));for(let J of Q)if(!X.has(J))throw Error(`Tag not found: ${J}`)}async function xS0($,Z,Q){let Y=await $.storage.virtualMcps.findById(Q,Z),X=Y?.organization_id===Z&&MQ(await r7($),Q);if(!Y||!X)throw Error(`Project not found: ${Q}`);return{id:Y.id,repository:Y.metadata?.repository??null}}function fS0($){let{project:Z,repo:Q,previousRepo:Y}=$,X=Z?.repository??null,J=X?`${X.owner}/${X.name}`:null;if(Z&&Q===void 0)return{repo:J,repositoryId:X?.repositoryId??null};if(Q===void 0)return{};if(J&&wt$(Q,J))return{repo:Q,repositoryId:X?.repositoryId??null};if(Y!==void 0&&wt$(Q,Y))return{repo:Q};return{repo:Q,repositoryId:null}}function wt$($,Z){return($??"").trim().toLowerCase()===(Z??"").trim().toLowerCase()}var _F1=L(()=>{SF();_F()});function zt$($){let Z={};for(let[Q,Y]of Object.entries($)){if(Q.startsWith(xI6))continue;Z[Q]=Y}return Z}function yS0($){return{taskBoardItemId:$.id,...m7($)&&{[Et$]:Pt$}}}function fI6($){return $?.[Et$]===Pt$}function yI6($){if(/[:\s]/.test($))throw Error("organization id unsuitable for the subsidy key scheme");return`subsidy:${$}`}async function gI6($,Z){let Q=B0();try{let Y=await $.storage.subsidizedGatewayKeys.get(Z);if(Y)return Y;let X=$.auth?.user?.id;if(X&&Q.aiGatewayEnabled&&Q.studioProvisionSecretKey&&vE.provisionKey){let J=await NQ(X,$.auth?.user?.email),G=await vE.provisionKey(J,yI6(Z));return await $.storage.subsidizedGatewayKeys.put(Z,G),G}}catch(Y){console.error("[subsidized-runs] subsidy key unavailable \u2014 run stays on the org's key:",Y)}return}async function At$($,Z,Q){if(!B0().taskQuotaEnforced)return;if(!fI6(Q))return;let Y=Q?.taskBoardItemId;if(!Y)return;let X=await $.storage.taskBoard.getById(Y,Z);if(!X||!m7(X))return;if(!await sy$($,Y))return;return await gI6($,Z)}function Tt$($,Z){if(!Z)return $;if($.providerId!=="deco")return $;return{...$,apiKey:Z}}var xI6="srv.",Et$="srv.billing",Pt$="subscription";var Y90=L(()=>{dd();tH();u1();WW()});function X90($){let Z=$?.runClass;return Z&&Z in vF1?vF1[Z]:vF1.interactive}var vF1,Sz="runClass";var Ch=L(()=>{vF1={interactive:10,reviewer:20,retry:30,new_task:40}});import{z as X5}from"zod";function Ct$($){let Z=["The user spoke this request to the voice companion. Transcripts may contain errors; ask if unclear. Changes or cancellations refer to existing work, not a duplicate task."];if($.length>0)Z.push("Earlier spoken conversation, as context only. Do not repeat earlier actions or treat the voice assistant's words as authorization:",JSON.stringify($));return Z.join(`
|
|
@@ -1631,7 +1631,7 @@ ${X}`:X}case"media":return"";case"mediaSingle":case"mediaGroup":return Pt(vB(Q),
|
|
|
1631
1631
|
`),j=["The user message is the task whose pull request you review.","","How to work:","- Call `mcp__studio__TASK_BOARD_ITEM_PRS_GET` with the task id below to find the pull request under review.",F?`- The repository ${F.owner}/${F.name} is already cloned at your working directory and \`git\` and its CLI (\`gh\` for GitHub, \`glab\` for GitLab; Bitbucket has no CLI \u2014 use the REST API with \`curl\` and \`$BITBUCKET_TOKEN\`) are authenticated \u2014 check the PR's branch out there to inspect / exercise the change. ${l10}`:`- Your working directory is EMPTY. Call \`mcp__studio__TASK_ADD_REPO\` ${N?`with id \`${N}\` (${Z.repo}) FIRST \u2014 do NOT call it with no arguments, that only lists the org's repositories and costs you a turn.`:"with the id of the PR's repository FIRST;"} it clones the repository and waits for the checkout, and \`git\` and its CLI are authenticated once it returns. ${l10}`,`- ${EH$}`,...U>0?[`- This is a RE-REVIEW. You already reviewed an earlier version of this pull request and asked for changes, and there are more commits since (a human re-delegated the card, or your own fixes from that round are in the history). Read your own previous notes with \`mcp__studio__TASK_BOARD_COMMENT_LIST\`, then review WHAT MOVED SINCE \u2014 \`gh pr diff <number>\` still shows the whole PR, so narrow it with \`git log --since='${new Date(U).toISOString()}' --oneline\` and diff only those commits. Confirm your earlier notes were addressed and check the new commits for their own problems. Do NOT re-read the parts of the PR you already cleared.`]:[],"- Record what you validated with `mcp__studio__TASK_BOARD_COMMENT_CREATE` BEFORE your decision; a comment is internal by default.",'- Post the comment for the person reviewing the task with `audience: "human"`, with the before/after screenshots embedded inline as markdown images referencing their /app/org/output path.',`- End the run by calling \`mcp__studio__TASK_BOARD_REVIEW_DECISION\` exactly once with the task id, reviewer "${Q}", the reviewToken below, and your decision:`," - `approve` when it's good to ship. Include a short summary of what you verified."," - NEVER approve on inspection alone: approve only a change you exercised at the PR's latest commit. If you could not exercise it at all, `request_changes` saying which paths you tried and what blocked them \u2014 whatever the board's rules say."," - `request_changes` ONLY for something you cannot settle here \u2014 it hands the task to a human, it does not start another agent round. Include specific, actionable notes, written for that person: if you posted no comment for them, these notes are shown to them as they are.","- The reviewToken proves you are this reviewer \u2014 pass it through EXACTLY as given. Without it your approval won't move the task to QA.","- `mcp__studio__TASK_BOARD_REVIEW_DECISION` is how the verdict is recorded. A review that ends without it is thrown away and the task stays stuck In Review, so call it even when your notes are short.","",`(task id: ${Z.id})`,`(reviewToken: ${K})`].join(`
|
|
1632
1632
|
`),w=n90(Z.id,Q,Y,X),E=qB1(w),{isNew:P}=await Ov0($,Z,{runClass:"reviewer",triggerId:G,title:`${FN[Q]}: ${Z.title}`,rulesColumn:K1.review,prompt:O,system:j,temperature:0.3,modelClass:J,agent:{instructions:B},...F?{repo:F}:{},fence:{threadId:E,workflowID:w}}).catch(async(z)=>{throw await $.storage.threads.delete(E).catch((A)=>console.error(`[task-board] ${Q} fence thread cleanup failed`,A)),z});if(!P)return!1;await Q9($,{taskBoardItemId:Z.id,action:"review_requested",actorId:null,data:{reviewer:Q}});let T=await $.storage.taskBoard.getById(Z.id,W);if(T)H8(W,T);return!0}var dh6;var RB1=L(()=>{v8();xX();zB1();Dv0();MB1();TB1();c5();dh6={reviewer:`You are the Reviewer, the LAST automated run on this task: you judge the pull request another run opened for it, and record the verdict. An approval sends the task to QA, where a person checks it.
|
|
1633
1633
|
`+"Before deciding, RECORD your pass as a task comment \u2014 REQUIRED: a "+'verdict with no comment is an incomplete run and you will be asked for one. The record is internal: written for the agents on this task, so be as technical as needed.\nThen TELL THE PERSON who reviews the task, in one comment with `audience: "human"`. They do not read code: write in the language the task is written in, with no file names, code or engineering jargon. Approving a visual change: say it is approved and embed the before/after screenshots there '+"\u2014 screenshots only in the internal record reach no one, and the machine "+`check does not count them. Approving a change with no visual surface: skip this comment, and write the exact words \`${c10}\` `+"in the record and name why (backend-only, config, test-only) \u2014 that "+"literal is what a machine check looks for, so no paraphrase of it "+"counts. Requesting changes: this comment is REQUIRED \u2014 say what they "+"have to decide or do, and why, in terms of the product.\nThen DECIDE. `request_changes` hands the card to a human; it does not start another agent round. NEVER end your run without having called `TASK_BOARD_REVIEW_DECISION`: a run that stops to wait on a background task, or that runs low on room, must decide on what it knows first. An unrecorded verdict strands the card and is the one failure this run cannot leave behind."}});function t90($,Z){if($.status===null||x88.has($.status))return!1;return!x90({updated_at:$.lastActiveAt,last_progress_at:null},Z)}function VB1($,Z){return $.threads.some((Q)=>!LG.some((Y)=>jK(Q.title,Y))&&t90(Q,Z))}function th6($,Z){return Z-$>=nh6}function oh6($,Z,Q,Y){if($||Z!==!1)return!1;return th6(Q,Y)}async function kt($,Z,Q){let Y=await $.storage.organizationSettings.get(Z.organizationId),X=Q?.kinds??nT(Y?.flags);if(X.length===0)return[];if(VB1(Z,Date.now()))return[];let J=x5(Y?.flags,"cheap_reviewer_model")?"reviewer":"default",G=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId),W=Z.reviewCycleStartedAt,K=BL(G,W),H=new Date(K),F=ME(G,{cycleStartedAt:W}),U=[];return await Promise.all(X.map(async(N)=>{let B=F.has(N);if(!B){let j=$u6(G,K),w=eh6(Z,N,K,j);if(w){await Xu6($,Z,N,w).catch((E)=>console.error(`[task-board] ${N} verdict nudge failed`,E));return}if(Qu6(j,Date.now()))return}if(rh6(Z,N,K,Date.now(),B)){await WU($,Z,`${FN[N]} failed ${IB1} times on `+"this review \u2014 it will not be retried");return}if(Q?.previewMatchesHead===!1){if(oh6(B,Q.previewMatchesHead,K,Date.now()))await WU($,Z,"the pull request's deploy preview is not showing its latest commit (its checks never went green), so the Reviewer cannot verify this change against what the PR actually does");return}if(ah6(Z,N,K,Date.now(),B))return;let D=sh6(Z,N,K,Date.now(),B);if(await Ju6($,Z,{kind:N,cycleAt:H,attempt:D,modelClass:J}).catch((j)=>{return console.error(`[task-board] ${N} reviewer enqueue failed`,j),!1}))U.push(N)})),U}function sh6($,Z,Q,Y=Date.now(),X=!0){return $.threads.filter((J)=>jK(J.title,Z)&&kB1(J,Y,X)&&new Date(J.createdAt).getTime()>=Q).length}function kB1($,Z,Q=!0){if($.status==="failed")return!0;if($.status!==null&&x88.has($.status))return!Q;return $.status!==null&&!t90($,Z)}function f88($,Z,Q,Y=Date.now()){return $.threads.filter((X)=>{if(!jK(X.title,Z))return!1;return t90(X,Y)||new Date(X.createdAt).getTime()>=Q})}function rh6($,Z,Q,Y=Date.now(),X=!0){let J=f88($,Z,Q,Y);return J.length>0&&J.every((G)=>kB1(G,Y,X))&&J.length>=IB1}function ah6($,Z,Q,Y=Date.now(),X=!0){let J=f88($,Z,Q,Y);if(J.length===0)return!1;if(J.some((W)=>t90(W,Y)))return!0;let G=J.filter((W)=>kB1(W,Y,X));if(G.length>=IB1)return!0;return G.length!==J.length}function eh6($,Z,Q,Y,X=Date.now()){return $.threads.find((J)=>jK(J.title,Z)&&J.status==="completed"&&!t90(J,X)&&new Date(J.createdAt).getTime()>=Q&&!Y.has(J.threadId))??null}function $u6($,Z){let Q=new Map;for(let Y of $){if(Y.action!=="review_verdict_requested")continue;let X=new Date(Y.occurredAt).getTime();if(X<Z)continue;let J=Y.data?.threadId;if(typeof J==="string")Q.set(J,X)}return Q}function Qu6($,Z){for(let Q of $.values())if(Z-Q<Zu6)return!0;return!1}function Yu6($){return[`Your ${FN[$]} run ended without recording a decision, so the task is stuck: nothing ships and nobody is told why. A review that reaches no verdict is not a review.`,"","Do exactly ONE thing in this run and then stop:","- Call `TASK_BOARD_REVIEW_DECISION` now, with the verdict your review already reached and notes that say what you checked.","- Approve ONLY if you actually exercised the change and it holds. If you could not finish \u2014 a check never came back, a preview never rendered, you ran out of room \u2014 `request_changes` and say exactly what is unresolved. That hands the card to a person, which is the correct outcome for an unfinished review.","- Do NOT re-run the review, do NOT change any code, and do NOT wait on any background task: whatever you know right now is the verdict."].join(`
|
|
1634
|
-
`)}async function Xu6($,Z,Q,Y){let X=await $.storage.threads.get(Y.threadId);if(!X||X.message_storage_version!==2)return;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"review_verdict_requested",actorId:null,data:{reviewer:Q,threadId:Y.threadId}}),console.warn(`[task-board] ${Q} reviewer on ${Z.id} completed with no verdict \u2014 `+"asking for one"),await zt($,Z,X,{messageId:`review-verdict-${Y.threadId}`,prompt:Yu6(Q),workflowID:`review-verdict:${Y.threadId}`,runClass:"reviewer"})}async function Ju6($,Z,Q){let Y=await $.storage.automations.findBuiltinTrigger(Z.organizationId,fd);if(!Y)return console.warn(`[task-board] org ${Z.organizationId} has no built-in Reviewer yet; review of ${Z.id} waits`),!1;let X=n90(Z.id,Q.kind,Q.cycleAt,Q.attempt);return await XH({automationId:Y.automationId,organizationId:Z.organizationId,triggerId:Y.triggerId,target:{kind:"card",itemId:Z.id,columnKey:K1.review,eventKey:X,movedBy:null,review:{kind:Q.kind,cycleAt:Q.cycleAt.toISOString(),attempt:Q.attempt,modelClass:Q.modelClass}}},{idempotencyKey:`${X}:${Math.floor(Date.now()/60000)}`}),!0}var x88,nh6=1800000,IB1=2,Zu6=600000;var jv0=L(()=>{v8();c5();$v0();QZ();KU();jG();RB1();x88=new Set(["completed","failed","expired"])});function Gu6($,Z){return $.status===K1.release&&$.assigneeId===o$&&Z===!0}function CB1($){return $.filter((Q)=>Q.action==="merge_conflict_resolution").length>=y88}async function wv0($,Z,Q,Y){if(!Gu6(Q,Y.conflict))return!1;let J=(await $.storage.organizationSettings.get(Z))?.flags??{};if(!wH$(J))return!1;let G=nT(J),W=await $.storage.taskBoard.listActivity(Q.id,Z);if(!bd(W,G,{cycleStartedAt:Q.reviewCycleStartedAt,verifiedOnly:!0}))return!1;if(CB1(W))return console.warn(`[task-board] conflict auto-resolve cap (${y88}) reached on task ${Q.id} \u2014 leaving the PR for a human`),!1;let K=Y.pr,H=await $.storage.taskBoard.claimConflictResolution(Q.id,Z,Q.updatedBy);if(!H)return!1;H8(Z,H);try{await _O($,H,{pr:{number:K.number,url:K.url},resolveConflict:!0})}catch(F){throw await g88($,H,F).catch(()=>!1),await $.storage.taskBoard.update(H.id,Z,{status:K1.release},"system").then((U)=>H8(Z,U)).catch((U)=>console.error("[task-board] conflict-resolution status revert failed",U)),F}return await Q9($,{taskBoardItemId:Q.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:K.number}}),!0}var y88=3;var Ev0=L(()=>{v8();QZ();xX();c5();vO()});import{DBOS as vB1}from"@dbos-inc/dbos-sdk";function u88($){SB1=$}async function Fu6($,Z){if(!SB1)throw Error("[task-board-github-read] runtime not initialized \u2014 setTaskBoardGithubReadRuntime() must run before the workflow fires");let Q=await hJ(SB1.db,$);if(!Q)return _B1;return await c88(Q,$,Z)}async function Uu6($,Z){return await vB1.runStep(()=>Fu6($,Z),{name:"readPrState"})}function l88(){if(Pv0)return;Pv0=vB1.registerWorkflow(Uu6,{name:"taskBoardGithubReadWorkflow"})}async function Ct($,Z){if(!Pv0)return _B1;try{return await(await vB1.startWorkflow(Pv0,{queueName:x2,timeoutMS:Hu6})($,Z)).getResult()}catch(Q){return console.error("[task-board-github-read] throttled PR read failed",Q),_B1}}var Wu6=20,Ku6=4,Hu6=60000,h88,SB1=null,_B1,Pv0=null;var o90=L(()=>{pz();gQ();h88={concurrency:Ku6,rateLimit:{limitPerPeriod:Wu6,periodSec:60}};_B1={state:null,merged:null,checksStatus:null,conflict:null}});import{createHash as Nu6}from"crypto";class eh{config;options;now;kv=null;codec=NP();revalidating=new Set;fallback;placeholderFallback=new Map;static MAX_PLACEHOLDER_FALLBACK_ENTRIES=1000;constructor($,Z,Q=()=>Date.now()){this.config=$;this.options=Z;this.now=Q;let Y={revalidateAfterMs:$.revalidateAfterMs,maxStaleMs:$.maxStaleMs,maxValueBytes:m88};this.fallback=new OB0({"tools/call":Y,"resources/read":Y,"prompts/get":Y})}async init($){if($){this.kv=$;return}let Z=this.options.getJetStream();if(!Z)return;this.kv=await new i88.Kvm(Z).create(this.config.bucket,{storage:d88.StorageType.Memory,ttl:this.config.maxStaleMs,maxValueSize:m88})}storageKey($,Z){let Q=Nu6("sha256").update(Z).digest("hex").slice(0,32);return`${$}.${Q}`}async fetch($){let{namespace:Z,key:Q,fetchLive:Y,onRevalidation:X}=$,{cache:J,maxStaleMs:G,revalidateAfterMs:W}=this.config;if(!this.kv)return this.fallback.fetch({type:"tools/call",connectionId:Z,scope:{kind:"org"},params:{key:Q},fetchLive:Y,onRevalidation:X});let K=this.storageKey(Z,Q),H=$.fresh?null:await this.read(K),F=H?this.now()-H.storedAt:Number.POSITIVE_INFINITY;if(!H||F>G){bO.add(1,{cache:J,outcome:"miss"});let U=await Y();return await this.write(K,U,J),U}if(F>W&&!this.revalidating.has(K))bO.add(1,{cache:J,outcome:"stale"}),this.revalidating.add(K),X(Y().then((U)=>this.write(K,U,J)).catch(()=>{bO.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(K)));else bO.add(1,{cache:J,outcome:"hit"});return H.value}async fetchOrPlaceholder($){let{namespace:Z,key:Q,fetchLive:Y,placeholder:X}=$,{cache:J,maxStaleMs:G}=this.config,W=this.storageKey(Z,Q),K=await this.read(W),H=K?this.now()-K.storedAt:Number.POSITIVE_INFINITY,F=K!=null&&H<=G,U=K&&$.revalidateAfterMs?$.revalidateAfterMs(K.value):this.config.revalidateAfterMs;if(F&&H<=U)return bO.add(1,{cache:J,outcome:"hit"}),{value:K.value,live:!0};if(bO.add(1,{cache:J,outcome:F?"stale":"placeholder"}),!this.revalidating.has(W))this.revalidating.add(W),Y().then((N)=>this.write(W,N,J)).catch(()=>{bO.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(W));return F?{value:K.value,live:!0}:{value:X,live:!1}}async refresh($){let Z=await $.fetchLive();return await this.write(this.storageKey($.namespace,$.key),Z,this.config.cache),bO.add(1,{cache:this.config.cache,outcome:"refresh"}),Z}async read($){if(!this.kv)return this.placeholderFallback.get($)??null;try{let Z=await this.kv?.get($);if(!Z?.value?.length)return null;if(Z.operation==="DEL"||Z.operation==="PURGE")return null;return this.codec.decode(Z.value)}catch{return null}}async write($,Z,Q){if(!this.kv){if(this.placeholderFallback.size>=eh.MAX_PLACEHOLDER_FALLBACK_ENTRIES){let Y=this.placeholderFallback.keys().next().value;if(Y!==void 0)this.placeholderFallback.delete(Y)}this.placeholderFallback.set($,{storedAt:this.now(),value:Z});return}try{await this.kv?.put($,this.codec.encode({storedAt:this.now(),value:Z}))}catch{bO.add(1,{cache:Q,outcome:"store_rejected"})}}async invalidate($){if(this.fallback.invalidate($),!this.kv)return;try{let Z=await this.kv.keys(`${$}.*`);for await(let Q of Z)await this.kv.delete(Q).catch(()=>{})}catch{}}teardown(){this.kv=null}}function xB1($){p88=$?.reads??null,n88=$?.cards??null}function fB1(){return p88??Bu6}function zv0(){return n88??Du6}var d88,i88,bO,m88=524288,bB1,s90,p88=null,n88=null,Bu6,Du6;var yB1=L(()=>{X40();b6();d88=_(xH(),1),i88=_(_q(),1),bO=G$.createCounter("pr_read_cache.fetches",{description:"Task board PR cache outcomes (hit, stale, miss, placeholder, refresh, error, store_rejected)",unit:"{fetches}"}),bB1={bucket:"DECOCMS_PR_READS",revalidateAfterMs:55000,maxStaleMs:1800000,cache:"reads"},s90={bucket:"DECOCMS_PR_CARDS",revalidateAfterMs:30000,maxStaleMs:86400000,cache:"cards"};Bu6=new eh(bB1,{getJetStream:()=>null}),Du6=new eh(s90,{getJetStream:()=>null})});import{z as Av0}from"zod";function Lu6($){if($ instanceof b0&&$.isRateLimited)return!0;let Q=($ instanceof Error?$.message:String($)).replace(/https?:\/\/\S+/gi," ");return/too many requests|rate limit|\b429\b/i.test(Q)}function t88($){return fB1().invalidate($)}function wW($){return zv0().invalidate($)}async function r90($,Z,Q,Y,X=!1){try{return await fB1().fetch({namespace:$,key:Z,fresh:X,fetchLive:()=>e$(Y,{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1,isRetriable:(G)=>!Lu6(G)}),onRevalidation:()=>{}})??null}catch(J){let G=J instanceof e6?J.cause:J;return console.error(`[task-board] ${Z} failed for ${Q}:`,G),null}}function gB1($,Z,Q){return Dp($,Z,i90(Q)).catch((Y)=>{return console.error(`[task-board] no client for ${St(Q)}:`,Y),null})}function $u($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")||Z.endsWith(".vercel.app")||Z.endsWith(".vtex.app")}function wu6($){for(let Q of $){let Y=/^Workers Builds:\s*([a-z0-9][a-z0-9-]*)\s*$/i.exec(Q.name)?.[1],X=Q.summary?/Version ID:\s*([0-9a-f]{8})/i.exec(Q.summary)?.[1]:null;if(!Y||!X)continue;let J=`https://${X}-${Y}.${ju6}.workers.dev`;if($u(J))return J}let Z=(Q)=>Q.conclusion==="success";for(let Q of[...$.filter(Z),...$.filter((Y)=>!Z(Y))]){let Y=(Q.url&&$u(Q.url)?Q.url:null)??o88(Q.summary);if(Y)return Y}return null}function o88($){if(typeof $!=="string")return null;return($.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find($u)??null}function Eu6($){let Z=(Y)=>Date.parse(Y.updatedAt??"")||Date.parse(Y.createdAt??""),Q=$.map((Y,X)=>({c:Y,index:X})).sort((Y,X)=>{let J=Z(Y.c),G=Z(X.c);if(Number.isNaN(J)||Number.isNaN(G))return Y.index-X.index;return G-J}).map(({c:Y})=>Y);for(let Y of Q){let X=Y.body;if(!X)continue;let J=X.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(J?.[1]&&$u(J[1]))return J[1];let G=o88(X);if(G)return G}return null}function Pu6($){return typeof $==="string"&&/^[0-9a-fA-F]{7,40}$/.test($)?$:null}function hB1($){if($==="merged")return{state:"closed",merged:!0};return{state:$,merged:!1}}async function zu6($,Z,Q,Y){let X=(J)=>J.state==="completed"&&J.conclusion!==null&&J.conclusion!=="success"&&J.conclusion!=="skipped"&&J.conclusion!=="neutral";return await Promise.all(Y.map(async(J)=>({name:J.name,status:J.state,conclusion:J.conclusion,detailsUrl:J.url,summary:J.summary??(X(J)&&J.id!==null?await r90(Z,`check-log:${J.id}`,`${St(Q)} check ${J.id}`,()=>$.readCheckLog(J.id)):null)})))}async function Au6($,Z,Q,Y=!1){let X=await gB1($,Z,Q);if(!X)return Tv0;let J=a90(Q),G=await r90(J,`detail:${Q.number}`,St(Q),()=>X.readDetailed({number:Q.number}),Y);if(!G)return Tv0;let{state:W,merged:K}=hB1(G.state);if(W!=="open")return{...Tv0,title:G.title,body:G.body,updatedAt:G.updatedAt,state:W,draft:G.draft,merged:K};let F=wu6(G.checkRuns)??Eu6(G.comments);if(!F){let U=Pu6(G.headSha),N=U?await r90(J,`deployed:${U}`,`${St(Q)} (deployment preview)`,()=>X.readDeployedUrl(U)):null;F=N&&$u(N)?N:null}return{title:G.title,body:G.body,updatedAt:G.updatedAt,state:W,draft:G.draft,merged:K,mergeable:G.conflicting===null?null:!G.conflicting,checksStatus:G.checks,checks:await zu6(X,J,Q,G.checkRuns),previewUrl:F}}async function qv0($,Z,Q,Y){let X=await gB1($,Z,Q);if(!X)return null;return r90(a90(Q),`read:${Q.number}`,`${St(Q)} (${Y})`,()=>X.read(Q.number))}async function s88($,Z,Q){let Y=await gB1($,Z,Q);if(!Y)return null;return(await r90(a90(Q),`detail:${Q.number}`,St(Q),()=>Y.readDetailed({number:Q.number})))?.checks??null}async function Rv0($,Z,Q){return(await qv0($,Z,Q,"conflict"))?.conflicting??null}async function Uv0($,Z,Q){let Y=await qv0($,Z,Q,"landing");if(!Y)return{state:null,merged:null};return hB1(Y.state)}async function c88($,Z,Q){let Y=await qv0($,Z,Q,"candidate");if(!Y)return{state:null,merged:null,checksStatus:null,conflict:null};return{...hB1(Y.state),checksStatus:Y.checks,conflict:Y.conflicting}}async function r88($,Z,Q){let Y=await qv0($,Z,Q,"head ref");if(!Y||Y.state!=="open")return null;return Y.head.length>0?Y.head:null}function lB1($){return a88($).every((Z)=>Z.checksStatus!=="failing"&&Z.checksStatus!=="pending")}function Tu6($){let Z=$.findIndex((Q)=>Q!=="closed");return Z===-1?0:Z}async function e90($,Z,Q){if(Q.length<=1)return Q[0];let Y=[];for(let X of Q){let{state:J}=await Ct(Z,X);if(Y.push(J),J!=="closed")break}return Q[Tu6(Y)]}function e88($,Z,Q,Y=!1){return Promise.all(Q.map(async(X)=>{let J=await Au6($,Z,X,Y);return{url:X.url,number:X.number,repoOwner:X.repoOwner,repoName:X.repoName,createdAt:X.createdAt,...J}}))}async function $48($,Z,Q){try{let Y=await $.storage.taskBoard.listPrs(Q,Z);if(Y.length===0)return null;let X=await zv0().refresh({namespace:Z,key:Q,fetchLive:()=>e88($,Z,Y,!0)});return Z48(Z,Q,X),X}catch(Y){return console.error(`[task-board] pr card refresh failed for ${Q}:`,Y),null}}var St=($)=>`${$.repoOwner}/${$.repoName}#${$.number}`,a90=($)=>IF(i90($).repo),Ou6=0,ju6="deco-cx",Tv0,uB1=($)=>a88($).length>0,a88=($)=>$.filter((Z)=>Z.state!=="closed"&&Z.merged!==!0),qu6,$Z0;var gQ=L(()=>{jG();R0();T5();v8();t4();p$();LW();Vt();xX();rh();GU();c5();jv0();Ev0();o90();yB1();Wv0();Tv0={title:null,body:null,updatedAt:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};qu6=u({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the change requests (GitHub and Bitbucket pull requests, GitLab merge requests) linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from its provider.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Av0.object({taskBoardItemId:Av0.string()}),outputSchema:Av0.object({prs:Av0.array(Ot$)}),handler:async({taskBoardItemId:$},Z)=>{n(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let Y=await Z.storage.taskBoard.getById($,Q),X=await Z.storage.taskBoard.listPrs($,Q),J=()=>e88(Z,Q,X),{value:G,live:W}=await zv0().fetchOrPlaceholder({namespace:Q,key:$,fetchLive:J,revalidateAfterMs:(H)=>H.some((F)=>CH$(F))?Ou6:s90.revalidateAfterMs,placeholder:X.map((H)=>({url:H.url,number:H.number,repoOwner:H.repoOwner,repoName:H.repoName,createdAt:H.createdAt,...Tv0}))});if(!W)return{prs:G};let K=G.find((H)=>H.state==="open"&&!H.merged);if(Y&&uJ(Y)&&Y.assigneeId===o$&&uB1(G))await kt(Z,Y,{previewMatchesHead:lB1(G)}).catch((H)=>{console.error("[task-board] reviewer auto-handoff failed",H)});if(Y&&Y.status===K1.release&&Y.assigneeId===o$&&K&&K.mergeable===!1)await wv0(Z,Q,Y,{pr:{number:K.number,url:K.url},conflict:!0}).catch((H)=>{console.error("[task-board] conflict auto-resolve failed",H)});if(ah(G))try{let H=K1.shipped;if(Y&&A88(Y.status,H)&&await gd(Z,Q,m10)&&!await Z.storage.taskBoard.hasHumanRejectedDone($,Q)){let F=await Z.storage.taskBoard.update($,Q,{status:H},Y.updatedBy);await Q9(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Y.status,to:H}}),H8(Q,F)}}catch(H){console.error("[task-board] merged-PR reconcile failed",H)}return{prs:G}}}),$Z0=Mt(qu6)});function Y48($){if(Q48.has($.kind??""))return 0;return ku6($)?Vu6:Iu6}function ku6($){let Z=$.kind??"";if(Q48.has(Z))return!1;if(Ru6.has(Z))return!0;let Q=$.errorText??"";if(!Q)return!1;if(Q.includes(gS0))return!0;let Y=Q.replace(/https?:\/\/\S+/gi," ");return Mu6.some((X)=>X.test(Y))}var Ru6,Q48,Mu6,Vu6=3,Iu6=1;var X48=L(()=>{y_0();Ru6=new Set(["stall","liveness","projection","abandoned"]),Q48=new Set(["cancelled",...f90]),Mu6=[/sandbox did not become ready/i,/sandbox (?:provisioning|claim) failed/i,/mcp is unusable/i,/harness_crashed: unexpected eof/i,/too many clients already|timeout exceeded when trying to connect/i,/\b(?:429|503)\b|too many requests|service unavailable/i]});function cB1($,Z,Q,Y){c7({event:$,organizationId:Z,properties:{task_id:Q.id,reports_task:m7(Q),...Y}})}function H8($,Z){I6.emit($,{id:crypto.randomUUID(),type:qH$,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()})}function Z48($,Z,Q){I6.emit($,{id:crypto.randomUUID(),type:IH$,source:"task-board",subject:Z,data:{id:Z,prs:Q},time:new Date().toISOString()})}function J48($,Z){I6.emit($,{id:crypto.randomUUID(),type:VH$,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function Cu6($,Z){return $?[$]:Z}async function mB1($,Z,Q){let Y=$.metadata?.runMetadata?.taskBoardItemId,X=!Y&&Q?await $.storage.taskBoard.linkedTaskIds(Q,Z):[];return Cu6(Y,X)}async function G48($,Z,Q){return $.storage.taskBoard.boardManagedIds(await mB1($,Z,Q),Z)}async function Mv0($,Z){let Q=$.organization?.id;if(!Q)return;try{if(Z&&!await $.storage.taskBoard.runMovesLinkedCards(Z,Q))return;for(let Y of await G48($,Q,Z)){let X=await $.storage.taskBoard.openReviewCycleIfInProgress(Y,Q);if(!X)continue;H8(Q,X),cB1("task_run_completed",Q,X,{from:"in_progress",via:"pr_open"})}}catch(Y){console.error("[task-board] review-cycle open failed",Y)}}async function Vv0($,Z,Q,Y){let X=$.organization?.id;if(!X)return;try{let J=iz(Z);if(!J)return;let G=await G48($,X,Y);for(let W of G)await $.storage.taskBoard.linkPr({taskBoardItemId:W,organizationId:X,url:J.url,prNumber:J.number,repo:J.repo,connectionId:Q??null});if(G.length>0)await wW(X)}catch(J){console.error("[task-board] PR capture failed",J)}}async function _t($,Z,Q,Y){try{let X=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,Q);for(let J of X)H8(Q,J),cB1("task_run_completed",Q,J,{from:"in_progress",via:"thread_finish"});for(let J of X)await $.clearRunRetry(J.id,Q).catch(()=>{})}catch(X){console.error("[task-board] thread-finish transition failed",X)}await dB1($,Z,Q),await iB1($,Y,Z,Q)}function W48($){return(YH($.status)??-1)>=It.in_review||Boolean($.reviewCycleStartedAt)}async function dB1($,Z,Q){try{let Y=await $.failedRunInfo(Z,Q);if(!Y)return;let X=await $.runMovesLinkedCards(Z,Q),J=Y48(Y);for(let G of await $.linkedTaskIds(Z,Q)){let W=await $.getById(G,Q);if(!W)continue;if(W.source)continue;if(W48(W))await $.relabelDeliveredFailure(Z,Q,vu6).catch(()=>{});if(!X)continue;if(W.status!==K1.progress)continue;if(W.reviewCycleStartedAt)continue;if(W.threads.some((F)=>F.hasMessages&&F.status==="in_progress"))continue;let K=W.retryAttempts;if(K<J){let F=k7(_u6,Su6,K,2,0.5);if(!await $.scheduleRunRetry(G,Q,K+1,new Date(Date.now()+F)))continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.progress,retry:K+1,of:J,reason:Y.errorText??Y.kind}}).catch(()=>{});continue}let H=await $.returnToBacklogAfterFailure(G,Q,W.updatedBy);if(!H)continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Y.errorText??Y.kind,retriesSpent:K}}).catch(()=>{}),H8(Q,H),cB1("task_run_failed",Q,W,{reason:Y.kind??"error",retries_spent:K})}}catch(Y){console.error("[task-board] failed-run reaction failed",Y)}}async function iB1($,Z,Q,Y){try{for(let X of await $.linkedTaskIds(Q,Y)){let J=await $.getById(X,Y);if(!J)continue;if(J.source)continue;if(W48(J))continue;if(J.threads.some((W)=>W.hasMessages&&(W.status===null||!d90.has(W.status))))continue;if((await $.listPrs(X,Y)).length>0)continue;await ry$(Z,Y,X)}}catch(X){console.error("[task-board] quota refund pass failed",X)}}async function Iv0($,Z){if(!uJ(Z))return null;try{let Q=await $.storage.taskBoard.update(Z.id,Z.organizationId,{status:K1.qa},Z.updatedBy);return await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:K1.qa}}).catch(()=>{}),H8(Z.organizationId,Q),await E88($,Q),Q}catch(Q){return console.error(`[task-board] moving ${Z.id} to QA failed`,Q),null}}async function WU($,Z,Q){let Y=Z.organizationId;if(Z.assigneeId!==o$)return!1;try{if(Z.status===K1.progress)await bu6($,Z).catch((J)=>console.warn(`[task-board] parking ${Z.id} before hand-off failed`,J));let X=await $.storage.taskBoard.unassignSuperAgent(Z.id,Y,Z.updatedBy);if(!X)return!1;return await Q9($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:Q}}),console.warn(`[task-board] ${Z.id} handed to a human: ${Q}`),H8(Y,X),!0}catch(X){return console.error(`[task-board] handing ${Z.id} to a human failed`,X),!1}}async function bu6($,Z){let Q=await $.storage.taskBoard.advanceFromProgress(Z.id,Z.organizationId,K1.review,Z.updatedBy);if(!Q)return;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:K1.review}}).catch(()=>{}),H8(Z.organizationId,Q)}async function g88($,Z,Q){if(!(Q instanceof qX))return!1;if(Q.reason!=="runs_exhausted")return!1;return await WU($,Z,"per-task run limit reached \u2014 the Super Agent can no longer re-dispatch "+"itself on this task. Re-run it manually to continue."),!0}async function K48($,Z){let Q=$.organization?.id;if(!Q)return;try{let Y=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,Q);for(let X of Y)H8(Q,X)}catch(Y){console.error("[task-board] thread-run reopen failed",Y)}}function H48($){return $.includes("create_pull_request")||$.includes("createPullRequest")||$.includes("create_merge_request")||$.includes("createMergeRequest")}function F48($){if(xu6.test($))return!0;return fu6.test($)&&yu6.test($)}var Su6=30000,_u6=120000,vu6="Run ended after it had already delivered \u2014 the task moved on without it",xu6,fu6,yu6;var c5=L(()=>{WW();Q6();CO();rh();P88();gQ();X48();p$();kO();v8();xX();GU();xu6=/\b(?:gh\s+pr|glab\s+mr)\s+create\b/,fu6=/\/(?:repos\/[^\s"']+\/pulls|projects\/[^\s"']+\/merge_requests|repositories\/[^\s"']+\/pullrequests)\b/,yu6=/(?:-X|--request)\s+POST/});function gu6($){if($.status==="completed")return"advance";if($.status==="failed"&&$.messageStorageVersion===2&&($.harnessId==="decopilot"||$.harnessId==="claude-code"))return"nudge";return"none"}function hu6($){return["This task is still In Progress on the board and your last run ended without finishing it.","","Look at what you already did (`git log`, `git status`, and the messages above), then either:","- finish the remaining work (and open the PR, if it needed code changes),","- or, if it's actually done, say so in one line \u2014 the board moves the card for you,",$==="decopilot"?"- or, if you're blocked on something only a human knows, call the `user_ask` tool.":"- or, if you're blocked on something only a human knows, say what you need and stop.","","Don't start over and don't redo work you already committed or pushed. You are on the same branch as before \u2014 push to it and update your existing pull request rather than opening a second one."].join(`
|
|
1634
|
+
`)}async function Xu6($,Z,Q,Y){let X=await $.storage.threads.get(Y.threadId);if(!X||X.message_storage_version!==2)return;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"review_verdict_requested",actorId:null,data:{reviewer:Q,threadId:Y.threadId}}),console.warn(`[task-board] ${Q} reviewer on ${Z.id} completed with no verdict \u2014 `+"asking for one"),await zt($,Z,X,{messageId:`review-verdict-${Y.threadId}`,prompt:Yu6(Q),workflowID:`review-verdict:${Y.threadId}`,runClass:"reviewer"})}async function Ju6($,Z,Q){let Y=await $.storage.automations.findBuiltinTrigger(Z.organizationId,fd);if(!Y)return console.warn(`[task-board] org ${Z.organizationId} has no built-in Reviewer yet; review of ${Z.id} waits`),!1;let X=n90(Z.id,Q.kind,Q.cycleAt,Q.attempt);return await XH({automationId:Y.automationId,organizationId:Z.organizationId,triggerId:Y.triggerId,target:{kind:"card",itemId:Z.id,columnKey:K1.review,eventKey:X,movedBy:null,review:{kind:Q.kind,cycleAt:Q.cycleAt.toISOString(),attempt:Q.attempt,modelClass:Q.modelClass}}},{idempotencyKey:`${X}:${Math.floor(Date.now()/60000)}`}),!0}var x88,nh6=1800000,IB1=2,Zu6=600000;var jv0=L(()=>{v8();c5();$v0();QZ();KU();jG();RB1();x88=new Set(["completed","failed","expired"])});function Gu6($,Z){return $.status===K1.release&&$.assigneeId===o$&&Z===!0}function CB1($){return $.filter((Q)=>Q.action==="merge_conflict_resolution").length>=y88}async function wv0($,Z,Q,Y){if(!Gu6(Q,Y.conflict))return!1;let J=(await $.storage.organizationSettings.get(Z))?.flags??{};if(!wH$(J))return!1;let G=nT(J),W=await $.storage.taskBoard.listActivity(Q.id,Z);if(!bd(W,G,{cycleStartedAt:Q.reviewCycleStartedAt,verifiedOnly:!0}))return!1;if(CB1(W))return console.warn(`[task-board] conflict auto-resolve cap (${y88}) reached on task ${Q.id} \u2014 leaving the PR for a human`),!1;let K=Y.pr,H=await $.storage.taskBoard.claimConflictResolution(Q.id,Z,Q.updatedBy);if(!H)return!1;H8(Z,H);try{await _O($,H,{pr:{number:K.number,url:K.url},resolveConflict:!0})}catch(F){throw await g88($,H,F).catch(()=>!1),await $.storage.taskBoard.update(H.id,Z,{status:K1.release},"system").then((U)=>H8(Z,U)).catch((U)=>console.error("[task-board] conflict-resolution status revert failed",U)),F}return await Q9($,{taskBoardItemId:Q.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:K.number}}),!0}var y88=3;var Ev0=L(()=>{v8();QZ();xX();c5();vO()});import{DBOS as vB1}from"@dbos-inc/dbos-sdk";function u88($){SB1=$}async function Fu6($,Z){if(!SB1)throw Error("[task-board-github-read] runtime not initialized \u2014 setTaskBoardGithubReadRuntime() must run before the workflow fires");let Q=await hJ(SB1.db,$);if(!Q)return _B1;return await c88(Q,$,Z)}async function Uu6($,Z){return await vB1.runStep(()=>Fu6($,Z),{name:"readPrState"})}function l88(){if(Pv0)return;Pv0=vB1.registerWorkflow(Uu6,{name:"taskBoardGithubReadWorkflow"})}async function Ct($,Z){if(!Pv0)return _B1;try{return await(await vB1.startWorkflow(Pv0,{queueName:x2,timeoutMS:Hu6})($,Z)).getResult()}catch(Q){return console.error("[task-board-github-read] throttled PR read failed",Q),_B1}}var Wu6=20,Ku6=4,Hu6=60000,h88,SB1=null,_B1,Pv0=null;var o90=L(()=>{pz();gQ();h88={concurrency:Ku6,rateLimit:{limitPerPeriod:Wu6,periodSec:60}};_B1={state:null,merged:null,checksStatus:null,conflict:null}});import{createHash as Nu6}from"crypto";class eh{config;options;now;kv=null;codec=NP();revalidating=new Set;fallback;placeholderFallback=new Map;static MAX_PLACEHOLDER_FALLBACK_ENTRIES=1000;constructor($,Z,Q=()=>Date.now()){this.config=$;this.options=Z;this.now=Q;let Y={revalidateAfterMs:$.revalidateAfterMs,maxStaleMs:$.maxStaleMs,maxValueBytes:m88};this.fallback=new OB0({"tools/call":Y,"resources/read":Y,"prompts/get":Y})}async init($){if($){this.kv=$;return}let Z=this.options.getJetStream();if(!Z)return;this.kv=await new i88.Kvm(Z).create(this.config.bucket,{storage:d88.StorageType.Memory,ttl:this.config.maxStaleMs,maxValueSize:m88})}storageKey($,Z){let Q=Nu6("sha256").update(Z).digest("hex").slice(0,32);return`${$}.${Q}`}async fetch($){let{namespace:Z,key:Q,fetchLive:Y,onRevalidation:X}=$,{cache:J,maxStaleMs:G,revalidateAfterMs:W}=this.config;if(!this.kv)return this.fallback.fetch({type:"tools/call",connectionId:Z,scope:{kind:"org"},params:{key:Q},fetchLive:Y,onRevalidation:X});let K=this.storageKey(Z,Q),H=$.fresh?null:await this.read(K),F=H?this.now()-H.storedAt:Number.POSITIVE_INFINITY;if(!H||F>G){bO.add(1,{cache:J,outcome:"miss"});let U=await Y();return await this.write(K,U,J),U}if(F>W&&!this.revalidating.has(K))bO.add(1,{cache:J,outcome:"stale"}),this.revalidating.add(K),X(Y().then((U)=>this.write(K,U,J)).catch(()=>{bO.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(K)));else bO.add(1,{cache:J,outcome:"hit"});return H.value}async fetchOrPlaceholder($){let{namespace:Z,key:Q,fetchLive:Y,placeholder:X}=$,{cache:J,maxStaleMs:G}=this.config,W=this.storageKey(Z,Q),K=await this.read(W),H=K?this.now()-K.storedAt:Number.POSITIVE_INFINITY,F=K!=null&&H<=G,U=K&&$.revalidateAfterMs?$.revalidateAfterMs(K.value):this.config.revalidateAfterMs;if(F&&H<=U)return bO.add(1,{cache:J,outcome:"hit"}),{value:K.value,live:!0};if(bO.add(1,{cache:J,outcome:F?"stale":"placeholder"}),!this.revalidating.has(W))this.revalidating.add(W),Y().then((N)=>this.write(W,N,J)).catch(()=>{bO.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(W));return F?{value:K.value,live:!0}:{value:X,live:!1}}async refresh($){let Z=await $.fetchLive();return await this.write(this.storageKey($.namespace,$.key),Z,this.config.cache),bO.add(1,{cache:this.config.cache,outcome:"refresh"}),Z}async read($){if(!this.kv)return this.placeholderFallback.get($)??null;try{let Z=await this.kv?.get($);if(!Z?.value?.length)return null;if(Z.operation==="DEL"||Z.operation==="PURGE")return null;return this.codec.decode(Z.value)}catch{return null}}async write($,Z,Q){if(!this.kv){if(this.placeholderFallback.size>=eh.MAX_PLACEHOLDER_FALLBACK_ENTRIES){let Y=this.placeholderFallback.keys().next().value;if(Y!==void 0)this.placeholderFallback.delete(Y)}this.placeholderFallback.set($,{storedAt:this.now(),value:Z});return}try{await this.kv?.put($,this.codec.encode({storedAt:this.now(),value:Z}))}catch{bO.add(1,{cache:Q,outcome:"store_rejected"})}}async invalidate($){if(this.fallback.invalidate($),!this.kv)return;try{let Z=await this.kv.keys(`${$}.*`);for await(let Q of Z)await this.kv.delete(Q).catch(()=>{})}catch{}}teardown(){this.kv=null}}function xB1($){p88=$?.reads??null,n88=$?.cards??null}function fB1(){return p88??Bu6}function zv0(){return n88??Du6}var d88,i88,bO,m88=524288,bB1,s90,p88=null,n88=null,Bu6,Du6;var yB1=L(()=>{X40();b6();d88=_(xH(),1),i88=_(_q(),1),bO=G$.createCounter("pr_read_cache.fetches",{description:"Task board PR cache outcomes (hit, stale, miss, placeholder, refresh, error, store_rejected)",unit:"{fetches}"}),bB1={bucket:"DECOCMS_PR_READS",revalidateAfterMs:55000,maxStaleMs:1800000,cache:"reads"},s90={bucket:"DECOCMS_PR_CARDS",revalidateAfterMs:30000,maxStaleMs:86400000,cache:"cards"};Bu6=new eh(bB1,{getJetStream:()=>null}),Du6=new eh(s90,{getJetStream:()=>null})});import{z as Av0}from"zod";function Lu6($){if($ instanceof v0&&$.isRateLimited)return!0;let Q=($ instanceof Error?$.message:String($)).replace(/https?:\/\/\S+/gi," ");return/too many requests|rate limit|\b429\b/i.test(Q)}function t88($){return fB1().invalidate($)}function wW($){return zv0().invalidate($)}async function r90($,Z,Q,Y,X=!1){try{return await fB1().fetch({namespace:$,key:Z,fresh:X,fetchLive:()=>e$(Y,{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1,isRetriable:(G)=>!Lu6(G)}),onRevalidation:()=>{}})??null}catch(J){let G=J instanceof e6?J.cause:J;return console.error(`[task-board] ${Z} failed for ${Q}:`,G),null}}function gB1($,Z,Q){return Dp($,Z,i90(Q)).catch((Y)=>{return console.error(`[task-board] no client for ${St(Q)}:`,Y),null})}function $u($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")||Z.endsWith(".vercel.app")||Z.endsWith(".vtex.app")}function wu6($){for(let Q of $){let Y=/^Workers Builds:\s*([a-z0-9][a-z0-9-]*)\s*$/i.exec(Q.name)?.[1],X=Q.summary?/Version ID:\s*([0-9a-f]{8})/i.exec(Q.summary)?.[1]:null;if(!Y||!X)continue;let J=`https://${X}-${Y}.${ju6}.workers.dev`;if($u(J))return J}let Z=(Q)=>Q.conclusion==="success";for(let Q of[...$.filter(Z),...$.filter((Y)=>!Z(Y))]){let Y=(Q.url&&$u(Q.url)?Q.url:null)??o88(Q.summary);if(Y)return Y}return null}function o88($){if(typeof $!=="string")return null;return($.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find($u)??null}function Eu6($){let Z=(Y)=>Date.parse(Y.updatedAt??"")||Date.parse(Y.createdAt??""),Q=$.map((Y,X)=>({c:Y,index:X})).sort((Y,X)=>{let J=Z(Y.c),G=Z(X.c);if(Number.isNaN(J)||Number.isNaN(G))return Y.index-X.index;return G-J}).map(({c:Y})=>Y);for(let Y of Q){let X=Y.body;if(!X)continue;let J=X.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(J?.[1]&&$u(J[1]))return J[1];let G=o88(X);if(G)return G}return null}function Pu6($){return typeof $==="string"&&/^[0-9a-fA-F]{7,40}$/.test($)?$:null}function hB1($){if($==="merged")return{state:"closed",merged:!0};return{state:$,merged:!1}}async function zu6($,Z,Q,Y){let X=(J)=>J.state==="completed"&&J.conclusion!==null&&J.conclusion!=="success"&&J.conclusion!=="skipped"&&J.conclusion!=="neutral";return await Promise.all(Y.map(async(J)=>({name:J.name,status:J.state,conclusion:J.conclusion,detailsUrl:J.url,summary:J.summary??(X(J)&&J.id!==null?await r90(Z,`check-log:${J.id}`,`${St(Q)} check ${J.id}`,()=>$.readCheckLog(J.id)):null)})))}async function Au6($,Z,Q,Y=!1){let X=await gB1($,Z,Q);if(!X)return Tv0;let J=a90(Q),G=await r90(J,`detail:${Q.number}`,St(Q),()=>X.readDetailed({number:Q.number}),Y);if(!G)return Tv0;let{state:W,merged:K}=hB1(G.state);if(W!=="open")return{...Tv0,title:G.title,body:G.body,updatedAt:G.updatedAt,state:W,draft:G.draft,merged:K};let F=wu6(G.checkRuns)??Eu6(G.comments);if(!F){let U=Pu6(G.headSha),N=U?await r90(J,`deployed:${U}`,`${St(Q)} (deployment preview)`,()=>X.readDeployedUrl(U)):null;F=N&&$u(N)?N:null}return{title:G.title,body:G.body,updatedAt:G.updatedAt,state:W,draft:G.draft,merged:K,mergeable:G.conflicting===null?null:!G.conflicting,checksStatus:G.checks,checks:await zu6(X,J,Q,G.checkRuns),previewUrl:F}}async function qv0($,Z,Q,Y){let X=await gB1($,Z,Q);if(!X)return null;return r90(a90(Q),`read:${Q.number}`,`${St(Q)} (${Y})`,()=>X.read(Q.number))}async function s88($,Z,Q){let Y=await gB1($,Z,Q);if(!Y)return null;return(await r90(a90(Q),`detail:${Q.number}`,St(Q),()=>Y.readDetailed({number:Q.number})))?.checks??null}async function Rv0($,Z,Q){return(await qv0($,Z,Q,"conflict"))?.conflicting??null}async function Uv0($,Z,Q){let Y=await qv0($,Z,Q,"landing");if(!Y)return{state:null,merged:null};return hB1(Y.state)}async function c88($,Z,Q){let Y=await qv0($,Z,Q,"candidate");if(!Y)return{state:null,merged:null,checksStatus:null,conflict:null};return{...hB1(Y.state),checksStatus:Y.checks,conflict:Y.conflicting}}async function r88($,Z,Q){let Y=await qv0($,Z,Q,"head ref");if(!Y||Y.state!=="open")return null;return Y.head.length>0?Y.head:null}function lB1($){return a88($).every((Z)=>Z.checksStatus!=="failing"&&Z.checksStatus!=="pending")}function Tu6($){let Z=$.findIndex((Q)=>Q!=="closed");return Z===-1?0:Z}async function e90($,Z,Q){if(Q.length<=1)return Q[0];let Y=[];for(let X of Q){let{state:J}=await Ct(Z,X);if(Y.push(J),J!=="closed")break}return Q[Tu6(Y)]}function e88($,Z,Q,Y=!1){return Promise.all(Q.map(async(X)=>{let J=await Au6($,Z,X,Y);return{url:X.url,number:X.number,repoOwner:X.repoOwner,repoName:X.repoName,createdAt:X.createdAt,...J}}))}async function $48($,Z,Q){try{let Y=await $.storage.taskBoard.listPrs(Q,Z);if(Y.length===0)return null;let X=await zv0().refresh({namespace:Z,key:Q,fetchLive:()=>e88($,Z,Y,!0)});return Z48(Z,Q,X),X}catch(Y){return console.error(`[task-board] pr card refresh failed for ${Q}:`,Y),null}}var St=($)=>`${$.repoOwner}/${$.repoName}#${$.number}`,a90=($)=>IF(i90($).repo),Ou6=0,ju6="deco-cx",Tv0,uB1=($)=>a88($).length>0,a88=($)=>$.filter((Z)=>Z.state!=="closed"&&Z.merged!==!0),qu6,$Z0;var gQ=L(()=>{jG();R0();T5();v8();t4();p$();LW();Vt();xX();rh();GU();c5();jv0();Ev0();o90();yB1();Wv0();Tv0={title:null,body:null,updatedAt:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};qu6=u({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the change requests (GitHub and Bitbucket pull requests, GitLab merge requests) linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from its provider.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Av0.object({taskBoardItemId:Av0.string()}),outputSchema:Av0.object({prs:Av0.array(Ot$)}),handler:async({taskBoardItemId:$},Z)=>{n(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let Y=await Z.storage.taskBoard.getById($,Q),X=await Z.storage.taskBoard.listPrs($,Q),J=()=>e88(Z,Q,X),{value:G,live:W}=await zv0().fetchOrPlaceholder({namespace:Q,key:$,fetchLive:J,revalidateAfterMs:(H)=>H.some((F)=>CH$(F))?Ou6:s90.revalidateAfterMs,placeholder:X.map((H)=>({url:H.url,number:H.number,repoOwner:H.repoOwner,repoName:H.repoName,createdAt:H.createdAt,...Tv0}))});if(!W)return{prs:G};let K=G.find((H)=>H.state==="open"&&!H.merged);if(Y&&uJ(Y)&&Y.assigneeId===o$&&uB1(G))await kt(Z,Y,{previewMatchesHead:lB1(G)}).catch((H)=>{console.error("[task-board] reviewer auto-handoff failed",H)});if(Y&&Y.status===K1.release&&Y.assigneeId===o$&&K&&K.mergeable===!1)await wv0(Z,Q,Y,{pr:{number:K.number,url:K.url},conflict:!0}).catch((H)=>{console.error("[task-board] conflict auto-resolve failed",H)});if(ah(G))try{let H=K1.shipped;if(Y&&A88(Y.status,H)&&await gd(Z,Q,m10)&&!await Z.storage.taskBoard.hasHumanRejectedDone($,Q)){let F=await Z.storage.taskBoard.update($,Q,{status:H},Y.updatedBy);await Q9(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Y.status,to:H}}),H8(Q,F)}}catch(H){console.error("[task-board] merged-PR reconcile failed",H)}return{prs:G}}}),$Z0=Mt(qu6)});function Y48($){if(Q48.has($.kind??""))return 0;return ku6($)?Vu6:Iu6}function ku6($){let Z=$.kind??"";if(Q48.has(Z))return!1;if(Ru6.has(Z))return!0;let Q=$.errorText??"";if(!Q)return!1;if(Q.includes(gS0))return!0;let Y=Q.replace(/https?:\/\/\S+/gi," ");return Mu6.some((X)=>X.test(Y))}var Ru6,Q48,Mu6,Vu6=3,Iu6=1;var X48=L(()=>{y_0();Ru6=new Set(["stall","liveness","projection","abandoned"]),Q48=new Set(["cancelled",...f90]),Mu6=[/sandbox did not become ready/i,/sandbox (?:provisioning|claim) failed/i,/mcp is unusable/i,/harness_crashed: unexpected eof/i,/too many clients already|timeout exceeded when trying to connect/i,/\b(?:429|503)\b|too many requests|service unavailable/i]});function cB1($,Z,Q,Y){c7({event:$,organizationId:Z,properties:{task_id:Q.id,reports_task:m7(Q),...Y}})}function H8($,Z){I6.emit($,{id:crypto.randomUUID(),type:qH$,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()})}function Z48($,Z,Q){I6.emit($,{id:crypto.randomUUID(),type:IH$,source:"task-board",subject:Z,data:{id:Z,prs:Q},time:new Date().toISOString()})}function J48($,Z){I6.emit($,{id:crypto.randomUUID(),type:VH$,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function Cu6($,Z){return $?[$]:Z}async function mB1($,Z,Q){let Y=$.metadata?.runMetadata?.taskBoardItemId,X=!Y&&Q?await $.storage.taskBoard.linkedTaskIds(Q,Z):[];return Cu6(Y,X)}async function G48($,Z,Q){return $.storage.taskBoard.boardManagedIds(await mB1($,Z,Q),Z)}async function Mv0($,Z){let Q=$.organization?.id;if(!Q)return;try{if(Z&&!await $.storage.taskBoard.runMovesLinkedCards(Z,Q))return;for(let Y of await G48($,Q,Z)){let X=await $.storage.taskBoard.openReviewCycleIfInProgress(Y,Q);if(!X)continue;H8(Q,X),cB1("task_run_completed",Q,X,{from:"in_progress",via:"pr_open"})}}catch(Y){console.error("[task-board] review-cycle open failed",Y)}}async function Vv0($,Z,Q,Y){let X=$.organization?.id;if(!X)return;try{let J=iz(Z);if(!J)return;let G=await G48($,X,Y);for(let W of G)await $.storage.taskBoard.linkPr({taskBoardItemId:W,organizationId:X,url:J.url,prNumber:J.number,repo:J.repo,connectionId:Q??null});if(G.length>0)await wW(X)}catch(J){console.error("[task-board] PR capture failed",J)}}async function _t($,Z,Q,Y){try{let X=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,Q);for(let J of X)H8(Q,J),cB1("task_run_completed",Q,J,{from:"in_progress",via:"thread_finish"});for(let J of X)await $.clearRunRetry(J.id,Q).catch(()=>{})}catch(X){console.error("[task-board] thread-finish transition failed",X)}await dB1($,Z,Q),await iB1($,Y,Z,Q)}function W48($){return(YH($.status)??-1)>=It.in_review||Boolean($.reviewCycleStartedAt)}async function dB1($,Z,Q){try{let Y=await $.failedRunInfo(Z,Q);if(!Y)return;let X=await $.runMovesLinkedCards(Z,Q),J=Y48(Y);for(let G of await $.linkedTaskIds(Z,Q)){let W=await $.getById(G,Q);if(!W)continue;if(W.source)continue;if(W48(W))await $.relabelDeliveredFailure(Z,Q,vu6).catch(()=>{});if(!X)continue;if(W.status!==K1.progress)continue;if(W.reviewCycleStartedAt)continue;if(W.threads.some((F)=>F.hasMessages&&F.status==="in_progress"))continue;let K=W.retryAttempts;if(K<J){let F=k7(_u6,Su6,K,2,0.5);if(!await $.scheduleRunRetry(G,Q,K+1,new Date(Date.now()+F)))continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.progress,retry:K+1,of:J,reason:Y.errorText??Y.kind}}).catch(()=>{});continue}let H=await $.returnToBacklogAfterFailure(G,Q,W.updatedBy);if(!H)continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Y.errorText??Y.kind,retriesSpent:K}}).catch(()=>{}),H8(Q,H),cB1("task_run_failed",Q,W,{reason:Y.kind??"error",retries_spent:K})}}catch(Y){console.error("[task-board] failed-run reaction failed",Y)}}async function iB1($,Z,Q,Y){try{for(let X of await $.linkedTaskIds(Q,Y)){let J=await $.getById(X,Y);if(!J)continue;if(J.source)continue;if(W48(J))continue;if(J.threads.some((W)=>W.hasMessages&&(W.status===null||!d90.has(W.status))))continue;if((await $.listPrs(X,Y)).length>0)continue;await ry$(Z,Y,X)}}catch(X){console.error("[task-board] quota refund pass failed",X)}}async function Iv0($,Z){if(!uJ(Z))return null;try{let Q=await $.storage.taskBoard.update(Z.id,Z.organizationId,{status:K1.qa},Z.updatedBy);return await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:K1.qa}}).catch(()=>{}),H8(Z.organizationId,Q),await E88($,Q),Q}catch(Q){return console.error(`[task-board] moving ${Z.id} to QA failed`,Q),null}}async function WU($,Z,Q){let Y=Z.organizationId;if(Z.assigneeId!==o$)return!1;try{if(Z.status===K1.progress)await bu6($,Z).catch((J)=>console.warn(`[task-board] parking ${Z.id} before hand-off failed`,J));let X=await $.storage.taskBoard.unassignSuperAgent(Z.id,Y,Z.updatedBy);if(!X)return!1;return await Q9($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:Q}}),console.warn(`[task-board] ${Z.id} handed to a human: ${Q}`),H8(Y,X),!0}catch(X){return console.error(`[task-board] handing ${Z.id} to a human failed`,X),!1}}async function bu6($,Z){let Q=await $.storage.taskBoard.advanceFromProgress(Z.id,Z.organizationId,K1.review,Z.updatedBy);if(!Q)return;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:K1.review}}).catch(()=>{}),H8(Z.organizationId,Q)}async function g88($,Z,Q){if(!(Q instanceof qX))return!1;if(Q.reason!=="runs_exhausted")return!1;return await WU($,Z,"per-task run limit reached \u2014 the Super Agent can no longer re-dispatch "+"itself on this task. Re-run it manually to continue."),!0}async function K48($,Z){let Q=$.organization?.id;if(!Q)return;try{let Y=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,Q);for(let X of Y)H8(Q,X)}catch(Y){console.error("[task-board] thread-run reopen failed",Y)}}function H48($){return $.includes("create_pull_request")||$.includes("createPullRequest")||$.includes("create_merge_request")||$.includes("createMergeRequest")}function F48($){if(xu6.test($))return!0;return fu6.test($)&&yu6.test($)}var Su6=30000,_u6=120000,vu6="Run ended after it had already delivered \u2014 the task moved on without it",xu6,fu6,yu6;var c5=L(()=>{WW();Q6();CO();rh();P88();gQ();X48();p$();kO();v8();xX();GU();xu6=/\b(?:gh\s+pr|glab\s+mr)\s+create\b/,fu6=/\/(?:repos\/[^\s"']+\/pulls|projects\/[^\s"']+\/merge_requests|repositories\/[^\s"']+\/pullrequests)\b/,yu6=/(?:-X|--request)\s+POST/});function gu6($){if($.status==="completed")return"advance";if($.status==="failed"&&$.messageStorageVersion===2&&($.harnessId==="decopilot"||$.harnessId==="claude-code"))return"nudge";return"none"}function hu6($){return["This task is still In Progress on the board and your last run ended without finishing it.","","Look at what you already did (`git log`, `git status`, and the messages above), then either:","- finish the remaining work (and open the PR, if it needed code changes),","- or, if it's actually done, say so in one line \u2014 the board moves the card for you,",$==="decopilot"?"- or, if you're blocked on something only a human knows, call the `user_ask` tool.":"- or, if you're blocked on something only a human knows, say what you need and stop.","","Don't start over and don't redo work you already committed or pushed. You are on the same branch as before \u2014 push to it and update your existing pull request rather than opening a second one."].join(`
|
|
1635
1635
|
`)}async function uu6($,Z,Q){await zt($,Z,Q,{messageId:`stall-nudge-${Z.id}-${Q.id}`,prompt:hu6(Q.harness_id),workflowID:`stall-nudge:${Z.id}:${Q.id}`})}async function lu6($,Z){let Q=await $.storage.threads.get(Z);if(!Q)return{action:"none",thread:null};return{action:gu6({status:Q.status,messageStorageVersion:Q.message_storage_version,harnessId:Q.harness_id}),thread:Q}}function cu6($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return x90($,Z)}async function mu6($,Z){let Q=[];for(let Y of Z.threads){if(Y.status!=="in_progress")continue;let X=await $.storage.threads.get(Y.threadId);if(!X||!cu6(X))continue;if(await $.storage.threads.markRunFailed(Y.threadId,pB1,"abandoned"))Q.push(Y.threadId),console.warn(`[task-board] failed never-started thread ${Y.threadId} on ${Z.id}`)}return Q}async function U48($,Z){let Q=$.organization?.id;if(!Q)return;for(let Y of Z){if(Y.status==="in_progress")try{if((await mu6($,Y)).length>0)continue}catch(G){console.error(`[task-board] reaping threads for ${Y.id} failed`,G)}let X;try{X=OB1(Y)&&(await $.storage.taskBoard.listPrs(Y.id,Q)).length>0}catch(G){console.error(`[task-board] listPrs for ${Y.id} failed`,G);continue}if(!jB1(Y,X))continue;let J=Y.threads.find((G)=>G.hasMessages);if(!J)continue;try{let{action:G,thread:W}=await lu6($,J.threadId);if(G==="none"||!W)continue;if(G==="advance")await _t($.storage.taskBoard,J.threadId,Q,$.storage.organizationBilling);else if(await $.storage.taskBoard.runMovesLinkedCards(J.threadId,Q))await uu6($,Y,W)}catch(G){console.error(`[task-board] stall recovery failed for ${Y.id}`,G)}}}var pB1="Run never started \u2014 no pod picked it up before the idle window elapsed";var nB1=L(()=>{$v0();CO();c5()});import{z as yB}from"zod";var du6,iu6,ZZ0;var tB1=L(()=>{v8();R0();_F();vG();LW();nB1();Wv0();du6=yB.object({key:yB.string(),title:yB.string(),position:yB.number()}),iu6=u({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization, plus the `owner/name` repos this organization has imported (the valid values for a task's `repo` field).",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:yB.object({}),outputSchema:yB.object({items:yB.array($t),repos:yB.array(yB.string()),columns:yB.array(du6)}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let[Y,{items:X},J,G]=await Promise.all([Z.storage.taskBoard.list(Q),Z.storage.connections.list(Q,{slug:"mcp-github"}),Z.storage.repositories.listByOrg(Q),YA$(Z)]),W=Y.filter((H)=>XA$(G,H)),K=[...new Set([...J.map((H)=>H.path),...bA$(X)])];return U48(Z,Y),{items:W,repos:K,columns:PH$}}}),ZZ0=Mt(iu6)});import{z as t9}from"zod";function vt($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}function B48($,Z){if($!==null&&Z!==null&&Z<$)throw Error("endDate must be on or after startDate")}function QZ0($,Z){I6.emit($,{id:crypto.randomUUID(),type:MH$,source:"task-board",subject:Z,data:{sprintId:Z},time:new Date().toISOString()})}async function Cv0($,Z,Q){let Y=await $.storage.sprints.get(Z,Q);if(!Y)throw Error(`Sprint not found: ${Q}`);if(Y.state==="closed")throw Error(`Sprint "${Y.name}" is closed \u2014 plan the card into a running or planned sprint`)}function oB1($,Z,Q){let Y=(X)=>{if(X===null)return null;let J=$.find((G)=>G.id===X);return{id:X,name:J?.name??null}};return{action:"sprint_changed",data:{from:Y(Z),to:Y(Q)}}}async function D48($,Z,Q,Y,X){let J=oB1(Z,Y,X);await Hv0($,Q.map((G)=>({taskBoardItemId:G,actorId:S0($),...J})))}var N48,kv0,sB1,rB1,aB1,eB1,$D1,ZD1;var Sv0=L(()=>{R0();kO();jK0();v8();xX();LW();N48=t9.string().trim().min(1).max(uZ$),kv0=t9.string().refine(cZ$,"Expected a calendar day as YYYY-MM-DD");sB1=u({name:"TASK_BOARD_SPRINT_LIST",description:"List the board's sprints: running first, then planned (soonest first), then closed (most recent first). A card's `sprintId` is one of these ids.",annotations:{title:"List Sprints",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t9.object({}),outputSchema:t9.object({sprints:t9.array(en)}),handler:async($,Z)=>{return n(Z),await Z.access.check(),{sprints:await Z.storage.sprints.listByOrg(vt(Z))}}}),rB1=u({name:"TASK_BOARD_SPRINT_CREATE",description:"Plan a new sprint. It starts as planned (`future`); start it with TASK_BOARD_SPRINT_START.",annotations:{title:"Create Sprint",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:t9.object({name:N48,startDate:kv0.nullable().optional(),endDate:kv0.nullable().optional()}),outputSchema:t9.object({sprint:en}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=vt(Z),Y=$.startDate??null,X=$.endDate??null;B48(Y,X);let J=await Z.storage.sprints.create({organizationId:Q,name:$.name,startDate:Y,endDate:X,by:S0(Z)});return QZ0(Q,J.id),{sprint:J}}}),aB1=u({name:"TASK_BOARD_SPRINT_UPDATE",description:"Rename a sprint or change its dates. Pass null to clear a date.",annotations:{title:"Update Sprint",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t9.object({id:t9.string(),name:N48.optional(),startDate:kv0.nullable().optional(),endDate:kv0.nullable().optional()}),outputSchema:t9.object({sprint:en}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=vt(Z),Y=await Z.storage.sprints.get(Q,$.id);if(!Y)throw Error(`Sprint not found: ${$.id}`);B48($.startDate===void 0?Y.startDate:$.startDate,$.endDate===void 0?Y.endDate:$.endDate);let X=await Z.storage.sprints.update(Q,$.id,{name:$.name,startDate:$.startDate,endDate:$.endDate});if(!X)throw Error(`Sprint not found: ${$.id}`);return QZ0(Q,X.id),{sprint:X}}}),eB1=u({name:"TASK_BOARD_SPRINT_START",description:"Start a planned sprint. The board opens on the running sprint by default.",annotations:{title:"Start Sprint",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:t9.object({id:t9.string()}),outputSchema:t9.object({sprint:en}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=vt(Z),Y=await Z.storage.sprints.start(Q,$.id);if(!Y){let X=await Z.storage.sprints.get(Q,$.id);throw Error(X?`Sprint "${X.name}" is ${X.state==="active"?"already running":"closed"}`:`Sprint not found: ${$.id}`)}return QZ0(Q,Y.id),{sprint:Y}}}),$D1=u({name:"TASK_BOARD_SPRINT_COMPLETE",description:"Complete a running sprint. Cards that are not Done or Archived move on: by default to the next planned sprint (the soonest), or to the backlog when none is planned. Done and Archived cards stay as the sprint's record.",annotations:{title:"Complete Sprint",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:t9.object({id:t9.string(),moveOpenTo:t9.string().nullable().optional().describe("Where unfinished cards go: a planned or running sprint's id, or null for the backlog. Omit for the next planned sprint.")}),outputSchema:t9.object({sprint:en,movedTo:t9.string().nullable(),movedCount:t9.number()}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=vt(Z),Y=await Z.storage.sprints.listByOrg(Q),X=Y.find((W)=>W.id===$.id);if(!X)throw Error(`Sprint not found: ${$.id}`);if($.moveOpenTo===$.id)throw Error("moveOpenTo must be a different sprint");let J=$.moveOpenTo===void 0?mZ$(Y,$.id):$.moveOpenTo,G=await Z.storage.sprints.complete({organizationId:Q,id:$.id,moveTo:J,by:S0(Z)});if(!G)throw Error(`Sprint "${X.name}" is ${X.state==="future"?"not started":"already completed"}`);return await D48(Z,Y,G.movedItemIds,$.id,G.movedTo),QZ0(Q,$.id),{sprint:G.sprint,movedTo:G.movedTo,movedCount:G.movedItemIds.length}}}),ZD1=u({name:"TASK_BOARD_SPRINT_DELETE",description:"Delete a sprint. Every card in it, finished or not, goes to the backlog; no card is deleted.",annotations:{title:"Delete Sprint",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:t9.object({id:t9.string()}),outputSchema:t9.object({deleted:t9.boolean(),movedCount:t9.number()}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=vt(Z),Y=await Z.storage.sprints.listByOrg(Q),X=await Z.storage.sprints.delete(Q,$.id);if(!X)return{deleted:!1,movedCount:0};return await D48(Z,Y,X.movedItemIds,$.id,null),QZ0(Q,$.id),{deleted:!0,movedCount:X.movedItemIds.length}}})});function nu6($,Z={}){if($==="failing")return!0;if($==="pending")return!Z.allowPendingChecks;return!1}async function tu6($,Z,Q,Y,X){if(pu6.has(Y))return;let G=(await $.storage.taskBoard.listActivity(Q,Z).catch(()=>[])).at(-1);if(G?.action==="merge_failed"&&G.data?.reason===Y)return;await Q9($,{taskBoardItemId:Q,action:"merge_failed",actorId:null,data:{reason:Y,...X?{detail:X}:{}}})}async function ou6($,Z,Q,Y={}){let X=async(N,B)=>{return await tu6($,Z,Q,N,B),{merged:!1,reason:N,...B?{detail:B}:{}}},J=await $.storage.taskBoard.listPrs(Q,Z),G=await e90($,Z,J);if(!G)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${Q}`),X("no_pr");let W=await s88($,Z,G);if(nu6(W,Y))return console.warn(`[task-board] merge blocked \u2014 checks ${W} on PR #${G.number}`),X(W==="failing"?"checks_failing":"checks_pending");let K=i90(G),H=K.repo.path,F=await Dp($,Z,K).catch((N)=>{return console.error(`[task-board] merge blocked \u2014 ${H}:`,N),null});if(!F)return console.warn(`[task-board] merge blocked \u2014 no credential for ${H} (#${G.number})`),X("no_connection",H);let U=await F.merge(G.number);if(U.merged)return await Promise.all([t88(a90(G)),wW(Z)]),{merged:!0};if(U.reason==="rate_limited")console.warn(`[task-board] merge rate-limited on #${G.number} \u2014 sweep retries`);else console.error(`[task-board] merge refused (${U.reason}) on ${H}#${G.number}:`,U.detail);return X(su6(U),U.detail.slice(0,500))}function su6($){switch($.reason){case"conflict":return"conflict";case"rate_limited":return"rate_limited";case"not_found":return"no_pr";case"blocked":return"refused";default:return"error"}}async function YZ0($,Z,Q){let Y=await $.storage.organizationSettings.get(Z),X=nT(Y?.flags),J=await $.storage.taskBoard.listActivity(Q,Z),G=await $.storage.taskBoard.getById(Q,Z);return bd(J,X,{cycleStartedAt:G?.reviewCycleStartedAt??null,verifiedOnly:!0})}async function ru6($,Z){let Q=await $.storage.organizationSettings.get(Z.organizationId),Y=nT(Q?.flags),X=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);if(!AH$(X,Y,{cycleStartedAt:Z.reviewCycleStartedAt}))return;await WU($,Z,"every reviewer approved, but an approval could not be verified \u2014 "+"the card cannot move to QA on its own and no reviewer can be re-dispatched this cycle")}function au6($){if($===null||$.merged)return null;return $.reason==="conflict"?!0:null}async function eu6($,Z,Q){let Y=au6(Q);if(Y!==!0)return;let X=Z.organizationId,J=await $.storage.taskBoard.listPrs(Z.id,X),G=await e90($,X,J);if(!G)return;await wv0($,X,Z,{pr:{number:G.number,url:G.url},conflict:Y}).catch((W)=>{console.error("[task-board] conflict auto-resolve failed",W)})}async function QD1($,Z,Q={}){let Y=Z.organizationId;if(Z.status!==K1.release)return{item:Z,merged:!1};let X=await ou6($,Y,Z.id,{allowPendingChecks:Q.allowPendingChecks});if(!X.merged){await eu6($,Z,X);let G=await $.storage.taskBoard.getById(Z.id,Y)??Z;return H8(Y,G),{item:G,merged:!1}}let J=await $.storage.taskBoard.update(Z.id,Y,{status:K1.shipped},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:Q.shippedBy??null,data:{from:Z.status,to:K1.shipped}}),H8(Y,J),{item:J,merged:!0}}async function L48($,Z){if(Z.status!==K1.release)return Z;if((await $.storage.organizationSettings.get(Z.organizationId))?.flags?.auto_merge!==!0)return Z;return(await QD1($,Z)).item}async function O48($,Z){if(!uJ(Z))return!1;if(!await YZ0($,Z.organizationId,Z.id))return await ru6($,Z),!1;return await Iv0($,Z)!==null}var pu6;var bt=L(()=>{T5();v8();xX();Ev0();rh();gQ();GU();c5();pu6=new Set(["checks_pending"])});function j48($){if($===void 0)return;let Z=[];for(let Q of $){let Y=Q.trim().replace(/[\t\r\n]/g,"").replace(/\\/g,"/");if(!Y.startsWith("/")||Y.startsWith("//"))continue;if(!Z.includes(Y))Z.push(Y);if(Z.length===20)break}return Z}import{z as bY}from"zod";function Ql6($){return Zl6.some((Z)=>$[Z]!==void 0)}function Yl6($,Z){let Q=[];for(let{field:J,action:G}of $l6){if(Z[J]===$[J])continue;Q.push({action:G,data:{from:$[J],to:Z[J]}})}if(Z.description!==$.description)Q.push({action:"description_changed"});let Y=new Set($.tags.map((J)=>J.id));if(Z.tags.length!==$.tags.length||Z.tags.some((J)=>!Y.has(J.id)))Q.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return Q}function Xl6($,Z){if($!==o$)return!1;if(!Z)return!1;return Z.assigneeId!==o$?!0:Z.status===K1.intake}function Jl6($){return YH($)>It.in_review}function w48($,Z,Q){let Y=$!==void 0&&Jl6($),X=Z!==void 0&&uJ(Z);return Q&&Y&&X}var $l6,Zl6,XZ0;var YD1=L(()=>{SS0();v8();R0();LW();GU();SF1();_F1();vO();xX();Sv0();BW();c5();bt();rh();gQ();WW();$l6=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"type",action:"type_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}],Zl6=["harnessId","title","description","status","priority","type","assigneeId","repo","virtualMcpId","dueDate","sortOrder","previewRoutes","tagIds","sprintId"];XZ0=u({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:bY.object({id:bY.string(),title:bY.string().min(1).max(an).optional(),description:bY.string().max(rn).nullable().optional(),status:PO.optional(),priority:kh.optional(),type:Q90.optional(),harnessId:xd.optional().describe("Runtime for future implementation runs and retries. Defaults to claude-code. Codex requires the task_board_codex organization flag and a linked ChatGPT plan or compatible Responses API provider. Does not change reviewer runs or an active run."),assigneeId:bY.string().nullable().optional(),repo:bY.string().max(_S0).nullable().optional(),virtualMcpId:bY.string().nullable().optional().describe("Move the card to this project (`vir_\u2026` id), or null to clear it. "+"When `repo` is omitted the card takes the new project's repository."),dueDate:bY.string().datetime().nullable().optional(),sortOrder:bY.number().optional(),previewRoutes:bY.array(bY.string().max(500)).max(20).optional().describe("Paths this task's work created or edited, e.g. "+'["/cliente-vip", "/cliente-vip/faq"]. Paths only \u2014 no host: the '+"card joins each onto the pull request's deploy-preview origin so a reviewer can open the pages directly. Replaces the previous set; pass [] to clear."),tagIds:bY.array(bY.string()).max(1000).optional(),sprintId:bY.string().nullable().optional().describe("Plan the card into this sprint (an id from TASK_BOARD_SPRINT_LIST), or null to move it to the backlog. A closed sprint takes no new cards."),linkThreadId:bY.string().optional(),prUrl:bY.string().nullable().optional().describe("GitHub pull request URL to link to this task, e.g. https://github.com/owner/repo/pull/123. Pass it after opening a PR for an existing card; linking one is what starts its review.")}),outputSchema:bY.object({item:$t}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let Y=$.prUrl?iz($.prUrl):null;if($.prUrl&&!Y)throw Error(`Not a change request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>, https://gitlab.com/<namespace>/<project>/-/merge_requests/<iid> or https://bitbucket.org/<workspace>/<repo>/pull-requests/<id>)`);if($.assigneeId)await vS0(Z,Q,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,Q))throw Error(`Task board item not found: ${$.id}`);if(!await Z.storage.threads.get($.linkThreadId))throw Error(`Thread not found: ${$.linkThreadId}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,Q)}let X=Ql6($),J=X?await Z.storage.taskBoard.getById($.id,Q):null;if(X&&!J)throw Error(`Task board item not found: ${$.id}`);if($.sprintId&&$.sprintId!==J?.sprintId)await Cv0(Z,Q,$.sprintId);let G=$.virtualMcpId&&$.virtualMcpId!==J?.virtualMcpId?await xS0(Z,Q,$.virtualMcpId):void 0,W=fS0({project:G,repo:$.repo,previousRepo:J?.repo}),K=K7.getStore()?.threadId,H=K!==void 0&&w48($.status,J??void 0,!0)&&MS0(await Z.storage.threads.get(K));if(w48($.status,J??void 0,H))throw Error("This task is under review \u2014 the run working on it can't move it "+"past In Review. Leave it for the reviewer; only a person, or TASK_BOARD_REVIEW_DECISION on a reviewer's own run, moves on a task under review.");let F=$.assigneeId!==void 0&&$.assigneeId!==(J?.assigneeId??null),U=Xl6($.assigneeId,J),B=(U?K1.progress:void 0)??$.status;if(J&&m7(J)){if($.title!==void 0||$.description!==void 0||$.priority!==void 0)throw Error("This task was generated from your report and can't be edited \u2014 create your own task instead.");if(U)await Hn(Z,J,Nz())}if(J&&($.harnessId??J.harnessId)==="codex"&&($.harnessId!==void 0||U))await sn(Z,Q,F&&$.assigneeId?S0(Z):J.assignedBy??J.createdBy,"codex");if($.tagIds!==void 0){if($.tagIds.length>0)await bS0(Z,Q,$.tagIds);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,S0(Z))}let D;if(X)D=await Z.storage.taskBoard.update($.id,Q,{harnessId:$.harnessId,title:$.title,description:$.description,status:B,priority:$.priority,type:$.type,assigneeId:$.assigneeId,assignedBy:F?$.assigneeId?S0(Z):null:void 0,...W,virtualMcpId:$.virtualMcpId,dueDate:$.dueDate,sortOrder:$.sortOrder,previewRoutes:j48($.previewRoutes),sprintId:$.sprintId},S0(Z));else{let O=await Z.storage.taskBoard.getById($.id,Q);if(!O)throw Error(`Task board item not found: ${$.id}`);D=O}if(Y)await Z.storage.taskBoard.linkPr({taskBoardItemId:D.id,organizationId:Q,url:Y.url,prNumber:Y.number,repo:Y.repo,connectionId:null}),await wW(Q).catch((O)=>{console.error("[task-board] PR card cache invalidation failed",O)});if(J){let O=S0(Z),j=Yl6(J,D);if(D.sprintId!==J.sprintId)j.push(oB1(await Z.storage.sprints.listByOrg(Q),J.sprintId,D.sprintId));if(j.length>0)await Hv0(Z,j.map((w)=>({taskBoardItemId:D.id,actorId:O,...w,alsoSubscribe:w.action==="assignee_changed"&&D.assigneeId!==o$?[D.assigneeId]:void 0})))}if(J&&D.description!==J.description)await Z.storage.notifications.notifyMentions({taskBoardItemId:D.id,organizationId:Q,actorId:S0(Z),body:D.description??"",previousBody:J.description});if(X||$.linkThreadId||Y)H8(Q,D);if(U)return await tz(Z,D,{userInitiated:!0}),{item:D};if($.status!==void 0&&J!==null&&J.status!==D.status)D=await L48(Z,D);return{item:D}}})});import{z as _v0}from"zod";var JZ0;var XD1=L(()=>{R0();c5();JZ0=u({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item. A Deco Score task also dismisses its finding, so the next Deco Score import won't re-create the card.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_v0.object({id:_v0.string()}),outputSchema:_v0.object({success:_v0.boolean()}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,Q,S0(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return J48(Q,$.id),{success:!0}}})});import{z as hQ}from"zod";function P48($,Z){I6.emit($,{id:crypto.randomUUID(),type:RH$,source:"task-board",subject:Z??"board",data:{columnKey:Z},time:new Date().toISOString()})}function JD1($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}var E48,Gl6=20,GZ0,WZ0,KZ0;var GD1=L(()=>{R0();v8();v8();lS0();kO();v8();E48=hQ.object({columnKey:hQ.string().nullable().describe("null for the org-wide prompt; a column key to scope it."),prompt:hQ.string(),skills:hQ.array(hQ.string())});GZ0=u({name:"TASK_BOARD_PROMPT_LIST",description:"List the instructions appended to the system prompt of every agent run started from a card on this board. The org-wide prompt comes first; a prompt with a columnKey applies only to cards in that column.",inputSchema:hQ.object({}),outputSchema:hQ.object({prompts:hQ.array(E48)}),handler:async($,Z)=>{return n(Z),await Z.access.check(),{prompts:await Z.storage.taskBoardPrompts.listByOrg(JD1(Z))}}}),WZ0=u({name:"TASK_BOARD_PROMPT_UPSERT",description:"Set the instructions and skills appended to the system prompt of agent "+"runs started from this board's cards \u2014 house rules for the work "+"(conventions, tools to prefer, what never to touch), not what to do with one card. Replaces the prompt on that scope; omitted `skills` keeps the ones already there. Omit columnKey for the whole board. To clear a scope, use TASK_BOARD_PROMPT_DELETE.",annotations:{readOnlyHint:!1,idempotentHint:!0},inputSchema:hQ.object({columnKey:hQ.string().min(1).nullable().optional().describe("A column of this board (see TASK_BOARD_ITEM_LIST) to scope the prompt to. Omit or null for every card on the board."),prompt:hQ.string().max(kH$),skills:hQ.array(hQ.string().min(1).max(512)).max(Gl6).optional().describe("Skill ids from the org's skill catalog (the `id` the skill tool takes) that runs on this scope should load.")}),outputSchema:hQ.object({prompt:E48}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=JD1(Z),Y=$.columnKey??null;if(Y!==null){if(!OG.some((H)=>H===Y))throw Error(`This board has no column "${Y}" \u2014 it has ${OG.join(", ")}`)}let X=$.prompt.trim(),J=$.skills?[...new Set($.skills)]:void 0,G=(await Z.storage.taskBoardPrompts.listByOrg(Q)).find((H)=>H.columnKey===Y),W=J?.filter((H)=>!G?.skills.includes(H))??[];if(W.length>0){let H=new Map((await Zt(Z,Q)).map((N)=>[N.id,N])),F=W.filter((N)=>!H.has(N));if(F.length>0)throw Error(`Unknown skill(s): ${F.join(", ")}`);let U=W.filter((N)=>H.get(N)?.disableModelInvocation);if(U.length>0)throw Error(`Manual-only skill(s) a run can't load: ${U.join(", ")}`)}if(!X){if((J??G?.skills??[]).length===0)throw Error("Nothing to set \u2014 give a prompt or skills, or use TASK_BOARD_PROMPT_DELETE")}let K=await Z.storage.taskBoardPrompts.upsert(Q,Y,{prompt:X,skills:J});return P48(Q,Y),{prompt:K}}}),KZ0=u({name:"TASK_BOARD_PROMPT_DELETE",description:"Clear a board prompt. Deleting IS the off switch, so a prompt cannot be set-but-inactive. Omit columnKey to clear the org-wide one.",annotations:{readOnlyHint:!1,idempotentHint:!0},inputSchema:hQ.object({columnKey:hQ.string().min(1).nullable().optional()}),outputSchema:hQ.object({removed:hQ.boolean()}),handler:async($,Z)=>{n(Z),await Z.access.check();let Q=JD1(Z),Y=$.columnKey??null,X=await Z.storage.taskBoardPrompts.remove(Q,Y);if(X)P48(Q,Y);return{removed:X}}})});import{sql as J1}from"kysely";function FD1($){let Z=[];for(let Q of $.split("&")){if(Bl6(Q)){Z.push({cohort:Q});continue}if(Q==="planned"){Z.push({scope:"planned"});continue}let Y=Q.indexOf(":"),X=Dl6.find((G)=>G===Q.slice(0,Y)),J=Q.slice(Y+1);if(Y<0||!X||!J)return null;Z.push({field:X,value:J})}return Z.length>0?Z:null}function Ll6($){if("cohort"in $)return J1.raw(gv0[$.cohort]);if("scope"in $)return J1`true`;let{field:Z,value:Q}=$,Y=Q==="none";switch(Z){case"touch":return J1`exists (select 1 from t where t.item_id = f.item_id and t.kind = ${Q})`;case"class":return J1`exists (select 1 from t where t.item_id = f.item_id and t.class = ${Q})`;case"source":return J1`exists (select 1 from task_board_activity a
|
|
1636
1636
|
where a.task_board_item_id = f.item_id and a.occurred_at > f.first_run_at
|
|
1637
1637
|
and ${FZ0} and ${yv0} = ${Q})`;case"type":return J1`f.type = ${Q}`;case"priority":return J1`f.priority = ${Q}`;case"tag":return Y?J1`not exists (select 1 from task_board_item_tags g where g.task_board_item_id = f.item_id)`:J1`exists (select 1 from task_board_item_tags g where g.task_board_item_id = f.item_id and g.id = ${Q})`;case"sprint":return Y?J1`f.sprint_id is null`:J1`f.sprint_id = ${Q}`;case"author":return J1`f.created_by = ${Q}`;default:return Z}}class UD1{db;constructor($){this.db=$}async rows($){return(await $.execute(this.db)).rows}withFacts($,Z){return this.db.transaction().execute(async(Q)=>{return await J1`create temp table operation_facts on commit drop as ${HZ0($)}`.execute(Q),Z({rows:async(Y)=>(await Y.execute(Q)).rows,f:J1`select * from operation_facts`})})}async delivery($){let Z=vv0($),[Q]=await this.rows(J1`
|
|
@@ -4353,7 +4353,7 @@ ${b.length>0?b.join(`
|
|
|
4353
4353
|
AND date >= {since:Date} AND date <= {until:Date}
|
|
4354
4354
|
GROUP BY ${Y}
|
|
4355
4355
|
ORDER BY pageviews DESC
|
|
4356
|
-
LIMIT 50`,{slug:$,since:Z,until:Q})).map((J)=>({key:J.key,pageviews:Number(J.pageviews),visitors:Number(J.visitors)}))}async function fU8($){let{since:Z,until:Q}=yU8(90),Y=await gU8($,Z,Q);return[...new Set(Y.map($o))]}async function i70($){let Z=$.get("studioContext");if(!vL(Z))return $.json({error:"Unauthorized"},401);let Q=Q0(Z),Y=$.req.param("site");if(!Y)return $.json({error:"site is required"},400);let X=Y.toLowerCase();if(!await Z.storage.orgSites.isOwnedBy(X,Q.id))return $.json({error:"Site not found in organization"},404);if(!await TQ(Z,Q.id,"monitoring"))return $.json({error:"This organization's plan does not include monitoring",code:"feature_not_in_plan"},403);return{slug:X}}var e85,$45,bU8,zH="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})",Z45=20,Q45=500,F45,B45="https://deco.lilstts.com/plausible",D45=12000,L45,hU8=()=>{let $=new Z1;return $.get("/:site/cdn/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!e85.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"7d",J=dz1(X,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${X}`},400);let{slug:G}=Q,{since:W,until:K}=J,H=xU8(Z.req.query("filters"));try{let F;switch(Y){case"summary":F=await X45(G,W,K,H);break;case"timeline":F=await J45(G,W,K,J.granularity,H);break;case"cache-status":F=await G45(G,W,K,H);break;case"status-codes":F=await W45(G,W,K,H);break;case"top-paths":F=await K45(G,W,K,Z.req.query("groupByPath")==="1",H);break;case"top-countries":F=await H45(G,W,K,H);break}return Z.json({available:!0,view:Y,range:X,data:F})}catch(F){return console.error(`[monitor] cdn ${Y} query failed for site="${G}":`,F),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/site/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!CU8.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"24h",J=Date.now(),G=SU8(X,J);if(!G)return Z.json({error:`unknown range: ${X}`},400);let{slug:W}=Q;try{let K=await _U8(F7,Y,W,G,J);return Z.json({available:!0,view:Y,range:X,window:{startMs:G.startMs,endMs:G.endMs,stepS:G.stepS},...K})}catch(K){return console.error(`[monitor] site ${Y} query failed for site="${W}":`,K),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/audience/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!F45.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"7d",J=dz1(X,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${X}`},400);let{slug:G}=Q,{since:W,until:K}=J;try{let H;switch(Y){case"summary":H=await U45(G,W,K);break;case"timeline":H=await N45(G,W,K);break;case"top-sources":H=await iz1(G,W,K,"utm_source");break;case"top-countries":H=await iz1(G,W,K,"country");break;case"devices":H=await iz1(G,W,K,"device_type");break}return Z.json({available:!0,view:Y,range:X,data:H})}catch(H){return console.error(`[monitor] audience ${Y} query failed for site="${G}":`,H),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/hosts",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;let{slug:Y}=Q;if(!mB())return Z.json({available:!1,hosts:[]});try{let X=await fU8(Y);return Z.json({available:!0,hosts:X})}catch(X){return console.error(`[monitor] hosts failed for site="${Y}":`,X),Z.json({available:!0,hosts:[]})}}),$.get("/:site/onedollar",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;let{slug:Y}=Q,X=B0().oneDollarStatsApiKey;if(!X)return Z.json({available:!1,error:"OneDollarStats not configured"});let J=Z.req.query("report")??"kpis",G=L45[J];if(!G)return Z.json({error:`unknown report: ${J}`},400);let W=Z.req.query("range")??"7d",K=dz1(W,Z.req.query("since"),Z.req.query("until"));if(!K)return Z.json({error:`unknown range: ${W}`},400);let H=await fU8(Y),F=Z.req.query("host"),U=F&&H.includes(F)?F:H[0];if(!U)return Z.json({available:!0,report:J,range:W,results:[]});let{since:N,until:B}=K,D=J==="timeseries"?K.granularity==="hourly"?"time:hour":"time:day":G.dimension,O={page:"event:page",source:"visit:referrer",referrer:"visit:referrer",country:"visit:country",browser:"visit:browser",os:"visit:os",device:"visit:device",utm_campaign:"visit:utm_campaign",utm_source:"visit:utm_source",utm_medium:"visit:utm_medium",utm_content:"visit:utm_content",utm_term:"visit:utm_term"},j={equals:"is",not_equals:"is_not",contains:"contains",not_contains:"contains_not"},w=xU8(Z.req.query("filters")).map((P)=>{let T=O[P.field],z=j[P.op];return T&&z?[z,T,[P.value]]:null}).filter(Boolean),E=async(P)=>{let T=await fetch(B45,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":X,Accept:"application/json"},body:JSON.stringify({site_id:U,metrics:G.metrics,date_range:P,...D?{dimensions:[D]}:{},...G.order?{order_by:[[G.order,"desc"]]}:{},...w.length?{filters:w}:{},pagination:{limit:100,offset:0}}),signal:AbortSignal.timeout(D45)});if(!T.ok)throw Error(`OneDollarStats ${T.status}`);return(await T.json().catch(()=>null))?.results??[]};try{let P=await E([N,B]),T;if(J==="kpis"||J==="timeseries"&&Z.req.query("compare")==="1"){let A=Date.parse(`${N}T00:00:00Z`),R=86400000,f=jy0(new Date(A-86400000)),S=jy0(new Date(A-K.days*86400000));T=await E([S,f]).catch(()=>{return})}return Z.json({available:!0,report:J,range:W,host:U,metrics:G.metrics,results:P,...T?{previous:T}:{}})}catch(P){return console.error(`[monitor] onedollar ${J} failed for host="${U}":`,P),Z.json({error:"Failed to reach OneDollarStats"},502)}}),$};var uU8=L(()=>{K8();u1();IG();ob0();sb0();vU8();e85=new Set(["summary","timeline","cache-status","status-codes","top-paths","top-countries"]),$45={today:{days:1,granularity:"hourly"},yesterday:{days:1,granularity:"hourly",endOffsetDays:1},"7d":{days:7,granularity:"daily"},"14d":{days:14,granularity:"daily"},"30d":{days:30,granularity:"daily"},"90d":{days:90,granularity:"daily"},"180d":{days:180,granularity:"daily"},"1y":{days:365,granularity:"daily"}};bU8=/^\d{4}-\d{2}-\d{2}$/;F45=new Set(["summary","timeline","top-sources","top-countries","devices"]);L45={kpis:{metrics:["visitors","visits","pageviews","bounce_rate","visit_duration"]},timeseries:{metrics:["pageviews","visits","visitors","bounce_rate","visit_duration"]},pages:{metrics:["pageviews","visitors"],dimension:"event:page",order:"pageviews"},sources:{metrics:["visitors"],dimension:"visit:referrer",order:"visitors"},countries:{metrics:["visitors"],dimension:"visit:country",order:"visitors"},browsers:{metrics:["visitors"],dimension:"visit:browser",order:"visitors"},os:{metrics:["visitors"],dimension:"visit:os",order:"visitors"},devices:{metrics:["visitors"],dimension:"visit:device",order:"visitors"},events:{metrics:["visitors","events"],dimension:"event:name",order:"events"},utm_campaign:{metrics:["visitors","events"],dimension:"visit:utm_campaign",order:"events"},utm_source:{metrics:["visitors","events"],dimension:"visit:utm_source",order:"events"},utm_medium:{metrics:["visitors","events"],dimension:"visit:utm_medium",order:"events"},utm_content:{metrics:["visitors","events"],dimension:"visit:utm_content",order:"events"},utm_term:{metrics:["visitors","events"],dimension:"visit:utm_term",order:"events"}}});async function pz1($){let Z=$.get("studioContext");if(!vL(Z))return $.json({error:"Unauthorized"},401);let Q=Q0(Z);if(!await TQ(Z,Q.id,"monitoring"))return $.json({error:"This organization's plan does not include monitoring",code:"feature_not_in_plan"},403);let Y=B0().orderMonitorIngestUrl;return{ctx:Z,organizationId:Q.id,storage:new ku(Z.db),ingestUrl:Y&&U2()?Y:null}}async function lU8($,Z){if(!$.ingestUrl)return null;return(await $.storage.listOrgStores($.organizationId,$.ingestUrl)).find((Y)=>Y.connectionId===Z)??null}function cU8($){if(!$)return new Date;let Z=Date.parse($);if(Number.isNaN(Z))return null;return new Date(Math.min(Z,Date.now()))}var mU8=()=>{let $=new Z1;return $.get("/stores",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;if(!Q.ingestUrl)return Z.json({stores:[]});let[Y,X]=await Promise.all([Q.storage.listOrgStores(Q.organizationId,Q.ingestUrl),Q.storage.listStates(Q.organizationId)]),J=await Promise.all(Y.map(async(G)=>{let W=await iP1(Q.ctx,Q.storage,Q.organizationId,G.connectionId),K=X.filter((H)=>H.connectionId===G.connectionId).filter((H)=>sh.includes(H.rule)).map((H)=>({rule:H.rule,status:H.status,since:H.since.toISOString(),evaluatedAt:H.evaluatedAt.toISOString(),verdict:H.verdict,task:H.task}));return{connectionId:G.connectionId,title:G.title,agentIds:W?.agentIds??[],rules:K}}));return Z.json({stores:J})}),$.get("/stores/:connectionId/day",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;let Y=Z.req.param("connectionId");if(!await lU8(Q,Y))return Z.json({error:"Store not found in organization"},404);let X=cU8(Z.req.query("at"));if(!X)return Z.json({error:"at must be an ISO timestamp"},400);try{let J=await vf0(Q.organizationId,Y,X,{approximate:!0,channels:!0});if(!J)return Z.json({error:"The data lake has no timezone for this store"},404);return Z.json(ZH8(J,X))}catch(J){return console.error("[order-monitor] day read failed",{connectionId:Y,error:J instanceof Error?J.message:String(J)}),Z.json({error:"Failed to read the data lake"},502)}}),$.get("/stores/:connectionId/pushes",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;let Y=Z.req.param("connectionId");if(!await lU8(Q,Y))return Z.json({error:"Store not found in organization"},404);let X=cU8(Z.req.query("at"));if(!X)return Z.json({error:"at must be an ISO timestamp"},400);let J=await lP1(Q.organizationId,Y).catch(()=>null);if(!J)return Z.json({repos:[]});let G=await Q.storage.listAgentRepositoryIds(Q.organizationId,Z.req.query("virtualMcpId")||void 0);return Z.json(await bf0(Q.ctx,Q.organizationId,G,X,J))}),$};var dU8=L(()=>{K8();IG();jo();pP1();C70();mP1();V70();u1();_P1()});import{timingSafeEqual as O45}from"crypto";function AH($){let Q=$?.match(/^Bearer\s+(.+)$/i)?.[1]?.trim();return Q?Q:null}function p70($,Z){let Q=Buffer.from($),Y=Buffer.from(Z);return Q.length===Y.length&&O45(Q,Y)}function rB($){let Z=process.env.VAULT_SERVICE_TOKEN;return!!Z&&p70($,Z)}function iU8($){if(!$)return null;return $ instanceof Date?$.toISOString():$}function j45($){if(!$)return[];if(Array.isArray($))return $.filter((Z)=>typeof Z==="string");if(typeof $!=="string")return[];try{let Z=JSON.parse($);return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}catch{return[]}}async function pU8($,Z,Q){let Y=AH($.req.header("authorization"));if(!Y)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let X=$.get("studioContext"),J=X.organization?.id;if(!J)return{ok:!1,response:$.json({error:"Organization context required"},403)};if(rB(Y))return{ok:!0,ctx:X,organizationId:J};let G=await X.storage.connectionCredentialVault.authenticateWorkloadToken(Y);if(!G||G.organizationId!==J)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let W=await X.storage.connections.findById(G.subjectConnectionId,J);if(!W||W.status!=="active")return{ok:!1,response:$.json({error:"Unauthorized"},401)};if(!await X.storage.connectionCredentialVault.hasGrant({organizationId:J,subjectConnectionId:G.subjectConnectionId,targetConnectionId:Z,scope:Q}))return{ok:!1,response:$.json({error:"Forbidden"},403)};return{ok:!0,ctx:X,organizationId:J}}var nU8=()=>{let $=new Z1;return $.post("/vault/connections/batch",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=await Z.req.json().catch(()=>null),G=Array.isArray(J?.connectionIds)?[...new Set(J.connectionIds)].filter((B)=>typeof B==="string"&&B.length>0):[];if(G.length===0||G.length>20)return Z.json({error:"connectionIds must be a non-empty string array (max 20)"},400);let{items:W}=await Y.storage.connections.list(X,{includeVirtual:!0,where:{field:["id"],operator:"in",value:G},limit:G.length}),K=new Map(W.map((B)=>[B.id,B])),H=new Set((await Y.db.selectFrom("downstream_tokens").select("connectionId").where("connectionId","in",G).execute()).map((B)=>B.connectionId)),F=new Map((await Y.db.selectFrom("connections").select(["id","configuration_state","connection_token"]).where("id","in",G).where("organization_id","=",X).execute()).map((B)=>[B.id,B])),U=new e5(Y.db,Y.vault),N={};return await Promise.all(G.map(async(B)=>{try{let D=K.get(B);if(!D||D.status!=="active"){N[B]={error:"Connection not found"};return}if(F.get(B)?.configuration_state&&!D.configuration_state){N[B]={error:"MCP configuration could not be decrypted"};return}let O={type:"mcp_configuration",state:D.configuration_state??{},scopes:D.configuration_scopes??[]},j=null;if(H.has(B)){let w=await RJ({connectionId:B,connectionUrl:D.connection_url,tokenStorage:U});if(w.state==="valid"||w.state==="refreshed"){let E=await U.get(B);j={type:"oauth_access_token",tokenType:"Bearer",accessToken:w.accessToken,expiresAt:iU8(E?.expiresAt??null),scope:E?.scope??null}}}else if(D.connection_token)j={type:"static_token",tokenType:"Bearer",accessToken:D.connection_token,expiresAt:null,scope:null};else if(F.get(B)?.connection_token){N[B]={error:"Connection token could not be decrypted"};return}N[B]={configuration:O,accessToken:j}}catch(D){N[B]={error:D instanceof Error?D.message:String(D)}}})),Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json(N)}),$.post("/vault/connections/:connectionId/access-token",async(Z)=>{let Q=Z.req.param("connectionId"),Y=await pU8(Z,Q,BW0);if(!Y.ok)return Y.response;let{ctx:X,organizationId:J}=Y,G=await X.storage.connections.findById(Q,J);if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let W=new e5(X.db,X.vault),K=await RJ({connectionId:Q,connectionUrl:G.connection_url,tokenStorage:W});if(K.state==="missing"){if(G.connection_token)return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"static_token",tokenType:"Bearer",accessToken:G.connection_token,expiresAt:null,scope:null});if((await X.db.selectFrom("connections").select("connection_token").where("id","=",Q).where("organization_id","=",J).executeTakeFirst())?.connection_token)return Z.json({error:"Connection token could not be decrypted"},424);return Z.json({error:"Downstream token not found"},409)}if(K.state==="expired_without_refresh"||K.state==="refresh_failed")return Z.json({error:"Downstream token refresh failed"},424);let H=await W.get(Q);return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"oauth_access_token",tokenType:"Bearer",accessToken:K.accessToken,expiresAt:iU8(H?.expiresAt??null),scope:H?.scope??null})}),$.post("/vault/connections/:connectionId/configuration",async(Z)=>{let Q=Z.req.param("connectionId"),Y=await pU8(Z,Q,DW0);if(!Y.ok)return Y.response;let{ctx:X,organizationId:J}=Y,G=await X.db.selectFrom("connections").select(["status","configuration_state","configuration_scopes"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let W={};if(G.configuration_state)try{let K=await X.vault.decrypt(G.configuration_state),H=JSON.parse(K);if(typeof H!=="object"||H===null||Array.isArray(H))throw Error("MCP configuration state is not an object");W=H}catch{return Z.json({error:"MCP configuration could not be decrypted"},424)}return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"mcp_configuration",state:W,scopes:j45(G.configuration_scopes)})}),$};var w2=L(()=>{K8();s3();LW0();xK()});import{createHmac as w45}from"crypto";import{mkdir as E45,writeFile as P45}from"fs/promises";import{dirname as z45,join as sU8}from"path";function q45($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return sU8(A45,Z)}function tU8($,Z){let Q=q45($),Y=A3(Z);return sU8(Q,Y)}function oU8($,Z,Q,Y,X){let J=B0().encryptionKey||"dev-secret",G=`${$}:${Z}:${Q}:${Y}`,W=w45("sha256",J).update(G).digest("hex");return p70(X,W)}function nz1($){let Z=$.split(".").pop()?.toLowerCase()||"";return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",json:"application/json",xml:"application/xml",txt:"text/plain",html:"text/html",htm:"text/html",css:"text/css",csv:"text/csv",md:"text/markdown",js:"application/javascript",mjs:"application/javascript",ts:"application/typescript",mp4:"video/mp4",webm:"video/webm",avi:"video/x-msvideo",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",zip:"application/zip",gz:"application/gzip",tar:"application/x-tar",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf"}[Z]||"application/octet-stream"}function R45($){let Z={"X-Content-Type-Options":"nosniff"};if($==="text/html"||$==="image/svg+xml")Z["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin";return Z}var A45="./data/assets",T45=524288000,wy0=($)=>{let Z=new Z1,Q=$.orgFromPath?"/*":"/:orgId/*";return Z.get(Q,async(Y)=>{let X=$.orgFromPath?Y.get("studioContext")?.organization?.id:Y.req.param("orgId");if(!X)return Y.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${Y.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${X}/`,G=Y.req.path.replace(J,"");if(!G)return Y.json({error:"Missing key"},400);let W=Y.req.query("expires"),K=Y.req.query("signature"),H=Y.req.query("method");if(!W||!K||H!=="GET")return Y.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(W,10);if(!Number.isFinite(F))return Y.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return Y.json({error:"URL has expired"},403);if(!oU8(X,G,F,"GET",K))return Y.json({error:"Invalid signature"},403);let N=tU8(X,G);try{let B=Bun.file(N);if(!await B.exists())return Y.json({error:"File not found"},404);let O=nz1(G);return new Response(B.stream(),{headers:{"Content-Type":O,"Content-Length":B.size.toString(),"Cache-Control":"private, max-age=3600",...R45(O)}})}catch(B){return console.error("Error serving file:",B),Y.json({error:"Failed to read file"},500)}}),Z.put(Q,C6({maxSize:T45,onError:(Y)=>Y.json({error:"File exceeds the per-file size limit"},413)}),async(Y)=>{let X=$.orgFromPath?Y.get("studioContext")?.organization?.id:Y.req.param("orgId");if(!X)return Y.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${Y.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${X}/`,G=Y.req.path.replace(J,"");if(!G)return Y.json({error:"Missing key"},400);let W=Y.req.query("expires"),K=Y.req.query("signature"),H=Y.req.query("method");if(!W||!K||H!=="PUT")return Y.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(W,10);if(!Number.isFinite(F))return Y.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return Y.json({error:"URL has expired"},403);if(!oU8(X,G,F,"PUT",K))return Y.json({error:"Invalid signature"},403);let N=tU8(X,G),B=z45(N);try{await E45(B,{recursive:!0});let D=await Y.req.arrayBuffer();return await P45(N,Buffer.from(D)),Y.json({success:!0,key:G})}catch(D){return console.error("Error saving file:",D),Y.json({error:"Failed to save file"},500)}}),Z};var Ey0=L(()=>{K8();Q3();u1();iH();w2()});import{z as vu}from"zod";function I45($,Z,Q=Date.now()){return{accessToken:$.accessToken,refreshToken:$.refreshToken??null,expiresIn:$.expiresAt===void 0?null:Math.max(0,Math.floor(($.expiresAt-Q)/1000)),scope:$.scope??null,clientId:$.clientId??null,clientSecret:$.clientSecret??null,tokenEndpoint:Z}}async function rU8($,Z){let Q=$.organization?.id;if(!$.auth.user?.id||!Q)return{error:"Unauthorized",status:401};let X=(await $.storage.connections.findById(Z,Q))?.connection_url;if(!X||!Tw(X))return{error:"Not a sandbox sign-in connection",status:404};let J=await MB({virtualMcpId:V3(Q),branch:M45,purpose:"harness-run"},$),G=await OZ($);return{url:X,daemon:(K,H)=>G.proxyDaemonRequest(J.sandboxHandle,K,{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify(H)}),provider:G,handle:J.sandboxHandle}}var M45="mcp-sign-in",V45,aU8=()=>{let $=new Z1;return $.post("/connections/:connectionId/sandbox-sign-in",async(Z)=>{let Q=await rU8(Z.get("studioContext"),Z.req.param("connectionId"));if("error"in Q)return Z.json({error:Q.error},Q.status);let Y=await Q.daemon("/_sandbox/mcp-login",{name:"server",url:Q.url});return new Response(Y.body,{status:Y.status,headers:Y.headers})}),$.post("/connections/:connectionId/sandbox-sign-in/finish",async(Z)=>{let Q=await rU8(Z.get("studioContext"),Z.req.param("connectionId"));if("error"in Q)return Z.json({error:Q.error},Q.status);let Y=await Q.daemon("/_sandbox/mcp-login/finish",await Z.req.json().catch(()=>({})));if(!Y.ok)return new Response(Y.body,{status:Y.status,headers:Y.headers});let X=V45.safeParse(await Y.json().catch(()=>null));if(!X.success)return Z.json({error:"Sign-in returned no token"},502);await Q.provider.delete(Q.handle).catch((G)=>{console.warn("[sandbox-sign-in] failed to delete the sign-in sandbox",G instanceof Error?G.message:String(G))});let J=await D2(Q.url);return Z.json(I45(X.data,J))}),$};var eU8=L(()=>{q8();K8();q70();CX();Rh();V45=vu.object({accessToken:vu.string().min(1),refreshToken:vu.string().optional(),expiresAt:vu.number().optional(),scope:vu.string().optional(),clientId:vu.string().optional(),clientSecret:vu.string().optional()})});function $N8($,Z,Q){if(!["127.0.0.1","::1","::ffff:127.0.0.1"].includes($??""))return!1;try{let Y=new URL(Q),X=["localhost","127.0.0.1","[::1]"].includes(Y.hostname)||Y.hostname.endsWith(".localhost");return["http:","https:"].includes(Y.protocol)&&X&&Z===Y.origin}catch{return!1}}function tz1($){let Z=new URL(k45);if(Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("state",$.state),$.selectAccount)Z.searchParams.set("prompt","select_account");return Z.toString()}function C45($,Z=200){let Q=$!==null&&typeof $==="object"?$:{};if(typeof Q.error==="string"){let Y=typeof Q.error_description==="string"?` (${Q.error_description})`:"";throw new b0({provider:"github",status:400,message:`GitHub OAuth code exchange failed: ${Q.error}${Y}`})}if(typeof Q.access_token!=="string"||Q.access_token.length===0)throw new b0({provider:"github",status:Z,message:"GitHub OAuth code exchange returned no access token"});return{accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token.length>0?Q.refresh_token:null,expiresIn:typeof Q.expires_in==="number"&&Number.isFinite(Q.expires_in)?Q.expires_in:null,scope:typeof Q.scope==="string"&&Q.scope.length>0?Q.scope:null,tokenEndpoint:ZN8}}async function QN8($){let Z;try{let X=process.env.GITHUB_OAUTH_TOKEN_URL??ZN8;Z=await fetch(X,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),signal:AbortSignal.timeout(h71)})}catch(X){throw new b0({provider:"github",status:0,message:`GitHub OAuth code exchange failed: ${X instanceof Error?X.message:String(X)}`,cause:X})}let Q=await Z.text();if(!Z.ok)throw new b0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange failed: ${Z.status} ${Q.slice(0,300)}`});let Y;try{Y=JSON.parse(Q)}catch(X){throw new b0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange returned invalid JSON: ${Q.slice(0,300)}`,cause:X})}return C45(Y,Z.status)}var k45="https://github.com/login/oauth/authorize",ZN8="https://github.com/login/oauth/access_token";var YN8=L(()=>{S5();bP()});function XN8($){let Z=new URL(`https://${pL}/site/oauth2/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.toString()}function S45(){return`https://${pL}/site/oauth2/access_token`}async function JN8($){let Z=S45(),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),Y;try{Y=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(_45)})}catch(J){throw new b0({provider:"bitbucket",status:0,message:`Bitbucket token exchange failed: ${v45(J)}`,cause:J})}let X=await Y.json().catch(()=>null);if(!Y.ok||!X||typeof X.error==="string"){let J=X&&typeof X.error_description==="string"?X.error_description:X&&typeof X.error==="string"?X.error:Y.statusText;throw new b0({provider:"bitbucket",status:Y.status,message:`Bitbucket token exchange failed (${Y.status}): ${J}`})}if(typeof X.access_token!=="string"||!X.access_token)throw new b0({provider:"bitbucket",status:Y.status,message:"Bitbucket token exchange returned no access_token"});return{accessToken:X.access_token,refreshToken:typeof X.refresh_token==="string"&&X.refresh_token?X.refresh_token:null,expiresIn:typeof X.expires_in==="number"&&Number.isFinite(X.expires_in)?X.expires_in:null,scope:typeof X.scopes==="string"?X.scopes:null,tokenEndpoint:Z}}function v45($){return $ instanceof Error?$.message:String($)}var _45=15000;var GN8=L(()=>{S5();Fp()});function WN8($){let Z=new URL(`https://${$.host}/oauth/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.searchParams.set("scope",($.scopes??b45).join(" ")),Z.toString()}function x45($){return`https://${$}/oauth/token`}async function KN8($){let Z=x45($.host),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),Y;try{Y=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(f45)})}catch(J){throw new b0({provider:"gitlab",status:0,message:`GitLab token exchange failed: ${y45(J)}`,cause:J})}let X=await Y.json().catch(()=>null);if(!Y.ok||!X||typeof X.error==="string"){let J=X&&typeof X.error_description==="string"?X.error_description:X&&typeof X.error==="string"?X.error:Y.statusText;throw new b0({provider:"gitlab",status:Y.status,message:`GitLab token exchange failed (${Y.status}): ${J}`})}if(typeof X.access_token!=="string"||!X.access_token)throw new b0({provider:"gitlab",status:Y.status,message:"GitLab token exchange returned no access_token"});return{accessToken:X.access_token,refreshToken:typeof X.refresh_token==="string"&&X.refresh_token?X.refresh_token:null,expiresIn:typeof X.expires_in==="number"&&Number.isFinite(X.expires_in)?X.expires_in:null,scope:typeof X.scope==="string"?X.scope:null,tokenEndpoint:Z}}function y45($){return $ instanceof Error?$.message:String($)}var b45,f45=15000;var HN8=L(()=>{S5();b45=["api","read_user"]});import{z as Jj}from"zod";function n70($){if(!$)return"/";if(!$.startsWith("/")||$.startsWith("//")||$.includes("\\")||/[\r\n\t]/.test($))return"/";return $}function g45($){if($.htmlUrl)return $.htmlUrl;return`https://github.com${$.accountType==="Organization"?`/organizations/${encodeURIComponent($.login)}/settings/installations/${$.installationId}`:`/settings/installations/${$.installationId}`}`}function bu($){return`${B5()}/api/_git/${$}/callback`}function cX($,Z){let Q=new URL($,B5());if(Q.searchParams.delete("git_error"),Z)Q.searchParams.set("git_error",Z);return Q.toString()}async function Py0($,Z){let Q=$.organization?.id,Y=$.auth.user?.id;if(!Q||!Y)throw Error("Session with an organization is required");return $.storage.gitProviderOAuthStates.create({organizationId:Q,userId:Y,...Z})}async function zy0($,Z,Q){if(!Q)return{ok:!1,error:"missing_state",returnTo:"/"};let Y=await $.storage.gitProviderOAuthStates.consume(Q);if(!Y||Y.provider!==Z)return{ok:!1,error:"invalid_state",returnTo:"/"};let X=n70(Y.returnTo);if($.auth.user?.id!==Y.userId)return{ok:!1,error:"session_mismatch",returnTo:X};return{ok:!0,state:Y,returnTo:X}}var FN8=()=>{let $=new Z1;return $.post("/git-providers/github/cli/connect",async(Z)=>{if(!aq())return Z.json({error:"GitHub CLI requires local mode"},403);let Q;try{Q=b70(Z).remote.address}catch{}if(!$N8(Q,Z.req.header("Origin"),B5()))return Z.json({error:"GitHub CLI requires a local, same-origin request"},403);let Y=Z.get("studioContext");if(!Y.auth.user||!Y.organization)return Z.json({error:"Unauthorized"},401);try{await Y.access.check("GIT_ACCOUNT_CONNECT_TOKEN")}catch(G){if(G instanceof c6)return Z.json({error:"Forbidden"},403);throw G}if(Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let X;try{X=await ZT$()}catch{return Z.json({error:"Could not connect to GitHub CLI. Install gh and run gh auth login --hostname github.com, then try again."},400)}let J=await Y.storage.gitProviderAccounts.upsert({organizationId:Y.organization.id,type:"github",host:"github.com",authKind:"github_cli",...X,createdBy:Y.auth.user.id});return Z.json({account:{id:J.id,login:J.login}})}),$.get("/git-providers/github/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=kP();if(!Y)return Z.json({error:"GitHub App is not configured"},503);let X=await Py0(Q,{provider:"github",host:"github.com",returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(tz1({clientId:Y.clientId,redirectUri:bu("github"),state:X,selectAccount:!0}))}),$.get("/git-providers/github/install",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=kP();if(!Y)return Z.json({error:"GitHub App is not configured"},503);let X=await Py0(Q,{provider:"github",host:"github.com",returnTo:n70(Z.req.query("returnTo"))}),J=new URL(`https://github.com/apps/${encodeURIComponent(Y.slug)}/installations/new`);return J.searchParams.set("state",X),Z.redirect(J.toString())}),$.get("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},X=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!X)return Z.json({error:"flow_expired"},410);let J=bF();if(!J)return Z.json({error:"not_configured"},503);try{let G=await J.listConnectableInstallations(X.id,await Q.vault.decrypt(X.encrypted_access_token));return Z.json({installations:G.map((W)=>({installationId:W.installationId,login:W.login,avatarUrl:W.avatarUrl,accountType:W.accountType})),expiresAt:X.expires_at})}catch{return Z.json({error:"github_unavailable"},502)}}),$.get("/git-providers/github/flows/:id/repositories",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let Y=Jj.object({installationId:Jj.coerce.number().int().positive().safe(),page:Jj.coerce.number().int().positive().safe().default(1),query:Jj.string().trim().max(256).optional()}).safeParse(Z.req.query());if(!Y.success)return Z.json({error:"Invalid installation"},400);let X={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!J)return Z.json({error:"flow_expired"},410);let G=bF();if(!G)return Z.json({error:"not_configured"},503);try{let W=await Q.vault.decrypt(J.encrypted_access_token),K=await G.connectableInstallation(J.id,W,Y.data.installationId);if(!K)return Z.json({error:"installation_forbidden"},403);let H=await G.delegableRepositories(J.id,W,K.installationId),F=await Q.storage.gitProviderAccounts.findByExternalId({organizationId:X.organizationId,host:"github.com",externalAccountId:String(K.installationId)}),U=F&&F.installationRepositoryIds===null?await Q.storage.repositories.listByOrg(X.organizationId,{accountId:F.id}):[];return Z.json({...iA$(H,Y.data.page,Y.data.query),selectedRepositoryIds:nA$(H,F?.installationRepositoryIds??null,U),accountVersion:DP1(F)})}catch{return Z.json({error:"github_unavailable"},502)}}),$.post("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);if(await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let Y=Jj.object({installationId:Jj.number().int().positive().safe(),repositoryIds:Jj.array(Jj.number().int().positive().safe()).min(1).max(oq).refine((H)=>new Set(H).size===H.length),accountVersion:Jj.string().max(200).nullable()}).safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid installation"},400);let X={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!J)return Z.json({error:"flow_expired"},410);let G=bF();if(!G)return Z.json({error:"not_configured"},503);let W,K;try{let H=await Q.vault.decrypt(J.encrypted_access_token);if(W=await G.connectableInstallation(J.id,H,Y.data.installationId,{fresh:!0}),!W)return Z.json({error:"installation_forbidden"},403);let F=await G.delegableRepositories(J.id,H,W.installationId,{fresh:!0});if(!pA$(F,Y.data.repositoryIds))return Z.json({error:"repositories_forbidden"},403);K=await G.connectingUserId(H)}catch{return Z.json({error:"github_unavailable"},502)}try{let H=await Q.storage.githubConnectFlows.connect(J.id,X,{organizationId:X.organizationId,type:"github",host:"github.com",authKind:"github_app",externalAccountId:String(W.installationId),login:W.login,avatarUrl:W.avatarUrl,installationId:W.installationId,installationAuthorizedBy:K,installationRepositoryIds:Y.data.repositoryIds},Y.data.accountVersion);if(!H)return Z.json({error:"flow_expired"},410);return G.forgetFlow(J.id),Z.json({account:{id:H.id,login:H.login}})}catch(H){if(H instanceof Mf0)return Z.json({error:"account_changed"},409);throw H}}),$.delete("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);return await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),await Q.storage.githubConnectFlows.cancel(Z.req.param("id"),{organizationId:Q.organization.id,userId:Q.auth.user.id}),bF()?.forgetFlow(Z.req.param("id")),Z.body(null,204)}),$.get("/git-providers/github/accounts/:id/manage",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=await Q.storage.gitProviderAccounts.get(Z.req.param("id"),Q.organization.id);if(!Y||Y.type!=="github"||!Y.installationId)return Z.json({error:"Account not found"},404);let X=bF();if(!X)return Z.json({error:"not_configured"},503);let J=await X.getInstallation(Y.installationId);if(!J)return Z.json({error:"Installation not found"},404);return Z.redirect(g45(J))}),$.get("/git-providers/gitlab/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=FD0(),X=(Z.req.query("host")??Y?.host??"gitlab.com").trim().toLowerCase();if(!Y||Y.host!==X)return Z.json({error:`No GitLab OAuth application is configured for ${X}. Connect with an access token instead.`},503);let J=await Py0(Q,{provider:"gitlab",host:X,returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(WN8({host:X,clientId:Y.clientId,redirectUri:bu("gitlab"),state:J}))}),$.get("/git-providers/bitbucket/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=tB0();if(!Y)return Z.json({error:"No Bitbucket OAuth consumer is configured. Connect with an access token instead."},503);let X=await Py0(Q,{provider:"bitbucket",host:Y.host,returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(XN8({clientId:Y.clientId,redirectUri:bu("bitbucket"),state:X}))}),$},no;var oz1=L(()=>{K8();Dz1();vF();XX();H9();V40();OP1();d71();pB0();YN8();fP();Fp();eq();GN8();HN8();no=new Z1;no.get("/github/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,J=kP(),G=bF(),W=$.req.query("code");if(!J||!G)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await QN8({clientId:J.clientId,clientSecret:J.clientSecret,code:W,redirectUri:bu("github")}),H={organizationId:X.organizationId,userId:X.userId},F=new URL(Y,B5()),U=F.searchParams.get("git_flow"),N=await Z.vault.encrypt(K.accessToken),B=U&&await Z.storage.githubConnectFlows.refresh(U,H,N)?U:await Z.storage.githubConnectFlows.create(H,N);return F.searchParams.delete("git_error"),F.searchParams.set("git_flow",B),$.redirect(F.toString())}catch(K){return console.error("[git-providers] github callback failed",{message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}});no.get("/github/setup",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,J=kP();if(!J)return $.redirect(cX(Y,"not_configured"));let G=await Z.storage.gitProviderOAuthStates.create(X);return $.redirect(tz1({clientId:J.clientId,redirectUri:bu("github"),state:G}))});no.get("/gitlab/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"gitlab",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,{host:J}=X,G=FD0(),W=$.req.query("code");if(!G||G.host!==J)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await KN8({host:J,clientId:G.clientId,clientSecret:G.clientSecret,code:W,redirectUri:bu("gitlab")}),H=await nB0(J,K.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:X.organizationId,type:"gitlab",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:X.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:K.accessToken,refreshToken:K.refreshToken,scope:K.scope,expiresAt:K.expiresIn!==null?new Date(Date.now()+K.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:K.tokenEndpoint}),$.redirect(cX(Y))}catch(K){return console.error("[git-providers] gitlab callback failed",{host:J,message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}});no.get("/bitbucket/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"bitbucket",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,{host:J}=X,G=tB0(),W=$.req.query("code");if(!G||G.host!==J)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await JN8({clientId:G.clientId,clientSecret:G.clientSecret,code:W,redirectUri:bu("bitbucket")}),H=await oB0(J,K.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:X.organizationId,type:"bitbucket",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:X.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:K.accessToken,refreshToken:K.refreshToken,scope:K.scope,expiresAt:K.expiresIn!==null?new Date(Date.now()+K.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:K.tokenEndpoint}),$.redirect(cX(Y))}catch(K){return console.error("[git-providers] bitbucket callback failed",{host:J,message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}})});var o70=y((d45)=>{d45.HttpAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(d45.HttpAuthLocation||(d45.HttpAuthLocation={}));d45.HttpApiKeyAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(d45.HttpApiKeyAuthLocation||(d45.HttpApiKeyAuthLocation={}));d45.EndpointURLScheme=void 0;(function($){$.HTTP="http",$.HTTPS="https"})(d45.EndpointURLScheme||(d45.EndpointURLScheme={}));d45.AlgorithmId=void 0;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(d45.AlgorithmId||(d45.AlgorithmId={}));var h45=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>d45.AlgorithmId.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>d45.AlgorithmId.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},u45=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},l45=($)=>{return h45($)},c45=($)=>{return u45($)};d45.FieldPosition=void 0;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(d45.FieldPosition||(d45.FieldPosition={}));var m45="__smithy_context";d45.IniSectionType=void 0;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(d45.IniSectionType||(d45.IniSectionType={}));d45.RequestHandlerProtocol=void 0;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(d45.RequestHandlerProtocol||(d45.RequestHandlerProtocol={}));d45.SMITHY_CONTEXT_KEY=m45;d45.getDefaultClientConfiguration=l45;d45.resolveDefaultRuntimeConfig=c45});var w21=y((T55)=>{var J21=V0("crypto"),Q21=V0("fs"),t45=ZQ0(),o45=QQ0(),aB=V0("stream"),jN8=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",so=($,Z=0,Q=$.byteLength-Z)=>{if(!jN8($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},Ry0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},s45=/^[A-Za-z0-9+/]*={0,2}$/,wN8=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!s45.exec($))throw TypeError("Invalid base64 string.");let Z=Ry0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},My0=($)=>{let Z=Ry0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},F21=($)=>{let Z;if(typeof $==="string")Z=My0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return so(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function r45($,Z,Q,Y){return class X extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return X.mutate(Y(J));return X.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,X.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var EN8=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return so($.buffer,$.byteOffset,$.byteLength).toString("utf8")},mX=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function a45($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,mX[Z[0]]+mX[Z[1]]+mX[Z[2]]+mX[Z[3]]+"-"+mX[Z[4]]+mX[Z[5]]+"-"+mX[Z[6]]+mX[Z[7]]+"-"+mX[Z[8]]+mX[Z[9]]+"-"+mX[Z[10]]+mX[Z[11]]+mX[Z[12]]+mX[Z[13]]+mX[Z[14]]+mX[Z[15]]}}var e45=($,Z,Q=(Y)=>Y)=>$,$65=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},Z65=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)$Q0.warn(Ty0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")$Q0.warn(Ty0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},a70=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))$Q0.warn(Ty0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},Q65=Math.ceil(340282346638528860000000000000000000000),Ay0=($)=>{let Z=a70($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>Q65)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},e70=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},Y65=e70,G21=($)=>U21($,32),W21=($)=>U21($,16),K21=($)=>U21($,8),U21=($,Z)=>{let Q=e70($);if(Q!==void 0&&X65(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},X65=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},J65=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},PN8=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},G65=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return $Q0.warn(Ty0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},W65=($)=>{if($===null||$===void 0)return;let Z=PN8($),Q=[];for(let Y in Z)if(Z[Y]!=null)Q.push(Y);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},N21=($)=>{if(typeof $=="string")return a70(eo($));return a70($)},K65=N21,zN8=($)=>{if(typeof $=="string")return Ay0(eo($));return Ay0($)},H65=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,eo=($)=>{let Z=$.match(H65);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},B21=($)=>{if(typeof $=="string")return AN8($);return a70($)},F65=B21,U65=B21,N65=($)=>{if(typeof $=="string")return AN8($);return Ay0($)},AN8=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},TN8=($)=>{if(typeof $==="string")return e70(eo($));return e70($)},B65=TN8,D65=($)=>{if(typeof $==="string")return G21(eo($));return G21($)},ro=($)=>{if(typeof $==="string")return W21(eo($));return W21($)},qN8=($)=>{if(typeof $==="string")return K21(eo($));return K21($)},Ty0=($)=>{return String(TypeError($).stack||$).split(`
|
|
4356
|
+
LIMIT 50`,{slug:$,since:Z,until:Q})).map((J)=>({key:J.key,pageviews:Number(J.pageviews),visitors:Number(J.visitors)}))}async function fU8($){let{since:Z,until:Q}=yU8(90),Y=await gU8($,Z,Q);return[...new Set(Y.map($o))]}async function i70($){let Z=$.get("studioContext");if(!vL(Z))return $.json({error:"Unauthorized"},401);let Q=Q0(Z),Y=$.req.param("site");if(!Y)return $.json({error:"site is required"},400);let X=Y.toLowerCase();if(!await Z.storage.orgSites.isOwnedBy(X,Q.id))return $.json({error:"Site not found in organization"},404);if(!await TQ(Z,Q.id,"monitoring"))return $.json({error:"This organization's plan does not include monitoring",code:"feature_not_in_plan"},403);return{slug:X}}var e85,$45,bU8,zH="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})",Z45=20,Q45=500,F45,B45="https://deco.lilstts.com/plausible",D45=12000,L45,hU8=()=>{let $=new Z1;return $.get("/:site/cdn/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!e85.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"7d",J=dz1(X,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${X}`},400);let{slug:G}=Q,{since:W,until:K}=J,H=xU8(Z.req.query("filters"));try{let F;switch(Y){case"summary":F=await X45(G,W,K,H);break;case"timeline":F=await J45(G,W,K,J.granularity,H);break;case"cache-status":F=await G45(G,W,K,H);break;case"status-codes":F=await W45(G,W,K,H);break;case"top-paths":F=await K45(G,W,K,Z.req.query("groupByPath")==="1",H);break;case"top-countries":F=await H45(G,W,K,H);break}return Z.json({available:!0,view:Y,range:X,data:F})}catch(F){return console.error(`[monitor] cdn ${Y} query failed for site="${G}":`,F),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/site/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!CU8.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"24h",J=Date.now(),G=SU8(X,J);if(!G)return Z.json({error:`unknown range: ${X}`},400);let{slug:W}=Q;try{let K=await _U8(F7,Y,W,G,J);return Z.json({available:!0,view:Y,range:X,window:{startMs:G.startMs,endMs:G.endMs,stepS:G.stepS},...K})}catch(K){return console.error(`[monitor] site ${Y} query failed for site="${W}":`,K),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/audience/data",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;if(!mB())return Z.json({available:!1,error:"Monitor is not configured"});let Y=Z.req.query("view")??"summary";if(!F45.has(Y))return Z.json({error:`unknown or unavailable view: ${Y}`},400);let X=Z.req.query("range")??"7d",J=dz1(X,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${X}`},400);let{slug:G}=Q,{since:W,until:K}=J;try{let H;switch(Y){case"summary":H=await U45(G,W,K);break;case"timeline":H=await N45(G,W,K);break;case"top-sources":H=await iz1(G,W,K,"utm_source");break;case"top-countries":H=await iz1(G,W,K,"country");break;case"devices":H=await iz1(G,W,K,"device_type");break}return Z.json({available:!0,view:Y,range:X,data:H})}catch(H){return console.error(`[monitor] audience ${Y} query failed for site="${G}":`,H),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/hosts",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;let{slug:Y}=Q;if(!mB())return Z.json({available:!1,hosts:[]});try{let X=await fU8(Y);return Z.json({available:!0,hosts:X})}catch(X){return console.error(`[monitor] hosts failed for site="${Y}":`,X),Z.json({available:!0,hosts:[]})}}),$.get("/:site/onedollar",async(Z)=>{let Q=await i70(Z);if(Q instanceof Response)return Q;let{slug:Y}=Q,X=B0().oneDollarStatsApiKey;if(!X)return Z.json({available:!1,error:"OneDollarStats not configured"});let J=Z.req.query("report")??"kpis",G=L45[J];if(!G)return Z.json({error:`unknown report: ${J}`},400);let W=Z.req.query("range")??"7d",K=dz1(W,Z.req.query("since"),Z.req.query("until"));if(!K)return Z.json({error:`unknown range: ${W}`},400);let H=await fU8(Y),F=Z.req.query("host"),U=F&&H.includes(F)?F:H[0];if(!U)return Z.json({available:!0,report:J,range:W,results:[]});let{since:N,until:B}=K,D=J==="timeseries"?K.granularity==="hourly"?"time:hour":"time:day":G.dimension,O={page:"event:page",source:"visit:referrer",referrer:"visit:referrer",country:"visit:country",browser:"visit:browser",os:"visit:os",device:"visit:device",utm_campaign:"visit:utm_campaign",utm_source:"visit:utm_source",utm_medium:"visit:utm_medium",utm_content:"visit:utm_content",utm_term:"visit:utm_term"},j={equals:"is",not_equals:"is_not",contains:"contains",not_contains:"contains_not"},w=xU8(Z.req.query("filters")).map((P)=>{let T=O[P.field],z=j[P.op];return T&&z?[z,T,[P.value]]:null}).filter(Boolean),E=async(P)=>{let T=await fetch(B45,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":X,Accept:"application/json"},body:JSON.stringify({site_id:U,metrics:G.metrics,date_range:P,...D?{dimensions:[D]}:{},...G.order?{order_by:[[G.order,"desc"]]}:{},...w.length?{filters:w}:{},pagination:{limit:100,offset:0}}),signal:AbortSignal.timeout(D45)});if(!T.ok)throw Error(`OneDollarStats ${T.status}`);return(await T.json().catch(()=>null))?.results??[]};try{let P=await E([N,B]),T;if(J==="kpis"||J==="timeseries"&&Z.req.query("compare")==="1"){let A=Date.parse(`${N}T00:00:00Z`),R=86400000,f=jy0(new Date(A-86400000)),S=jy0(new Date(A-K.days*86400000));T=await E([S,f]).catch(()=>{return})}return Z.json({available:!0,report:J,range:W,host:U,metrics:G.metrics,results:P,...T?{previous:T}:{}})}catch(P){return console.error(`[monitor] onedollar ${J} failed for host="${U}":`,P),Z.json({error:"Failed to reach OneDollarStats"},502)}}),$};var uU8=L(()=>{K8();u1();IG();ob0();sb0();vU8();e85=new Set(["summary","timeline","cache-status","status-codes","top-paths","top-countries"]),$45={today:{days:1,granularity:"hourly"},yesterday:{days:1,granularity:"hourly",endOffsetDays:1},"7d":{days:7,granularity:"daily"},"14d":{days:14,granularity:"daily"},"30d":{days:30,granularity:"daily"},"90d":{days:90,granularity:"daily"},"180d":{days:180,granularity:"daily"},"1y":{days:365,granularity:"daily"}};bU8=/^\d{4}-\d{2}-\d{2}$/;F45=new Set(["summary","timeline","top-sources","top-countries","devices"]);L45={kpis:{metrics:["visitors","visits","pageviews","bounce_rate","visit_duration"]},timeseries:{metrics:["pageviews","visits","visitors","bounce_rate","visit_duration"]},pages:{metrics:["pageviews","visitors"],dimension:"event:page",order:"pageviews"},sources:{metrics:["visitors"],dimension:"visit:referrer",order:"visitors"},countries:{metrics:["visitors"],dimension:"visit:country",order:"visitors"},browsers:{metrics:["visitors"],dimension:"visit:browser",order:"visitors"},os:{metrics:["visitors"],dimension:"visit:os",order:"visitors"},devices:{metrics:["visitors"],dimension:"visit:device",order:"visitors"},events:{metrics:["visitors","events"],dimension:"event:name",order:"events"},utm_campaign:{metrics:["visitors","events"],dimension:"visit:utm_campaign",order:"events"},utm_source:{metrics:["visitors","events"],dimension:"visit:utm_source",order:"events"},utm_medium:{metrics:["visitors","events"],dimension:"visit:utm_medium",order:"events"},utm_content:{metrics:["visitors","events"],dimension:"visit:utm_content",order:"events"},utm_term:{metrics:["visitors","events"],dimension:"visit:utm_term",order:"events"}}});async function pz1($){let Z=$.get("studioContext");if(!vL(Z))return $.json({error:"Unauthorized"},401);let Q=Q0(Z);if(!await TQ(Z,Q.id,"monitoring"))return $.json({error:"This organization's plan does not include monitoring",code:"feature_not_in_plan"},403);let Y=B0().orderMonitorIngestUrl;return{ctx:Z,organizationId:Q.id,storage:new ku(Z.db),ingestUrl:Y&&U2()?Y:null}}async function lU8($,Z){if(!$.ingestUrl)return null;return(await $.storage.listOrgStores($.organizationId,$.ingestUrl)).find((Y)=>Y.connectionId===Z)??null}function cU8($){if(!$)return new Date;let Z=Date.parse($);if(Number.isNaN(Z))return null;return new Date(Math.min(Z,Date.now()))}var mU8=()=>{let $=new Z1;return $.get("/stores",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;if(!Q.ingestUrl)return Z.json({stores:[]});let[Y,X]=await Promise.all([Q.storage.listOrgStores(Q.organizationId,Q.ingestUrl),Q.storage.listStates(Q.organizationId)]),J=await Promise.all(Y.map(async(G)=>{let W=await iP1(Q.ctx,Q.storage,Q.organizationId,G.connectionId),K=X.filter((H)=>H.connectionId===G.connectionId).filter((H)=>sh.includes(H.rule)).map((H)=>({rule:H.rule,status:H.status,since:H.since.toISOString(),evaluatedAt:H.evaluatedAt.toISOString(),verdict:H.verdict,task:H.task}));return{connectionId:G.connectionId,title:G.title,agentIds:W?.agentIds??[],rules:K}}));return Z.json({stores:J})}),$.get("/stores/:connectionId/day",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;let Y=Z.req.param("connectionId");if(!await lU8(Q,Y))return Z.json({error:"Store not found in organization"},404);let X=cU8(Z.req.query("at"));if(!X)return Z.json({error:"at must be an ISO timestamp"},400);try{let J=await vf0(Q.organizationId,Y,X,{approximate:!0,channels:!0});if(!J)return Z.json({error:"The data lake has no timezone for this store"},404);return Z.json(ZH8(J,X))}catch(J){return console.error("[order-monitor] day read failed",{connectionId:Y,error:J instanceof Error?J.message:String(J)}),Z.json({error:"Failed to read the data lake"},502)}}),$.get("/stores/:connectionId/pushes",async(Z)=>{let Q=await pz1(Z);if(Q instanceof Response)return Q;let Y=Z.req.param("connectionId");if(!await lU8(Q,Y))return Z.json({error:"Store not found in organization"},404);let X=cU8(Z.req.query("at"));if(!X)return Z.json({error:"at must be an ISO timestamp"},400);let J=await lP1(Q.organizationId,Y).catch(()=>null);if(!J)return Z.json({repos:[]});let G=await Q.storage.listAgentRepositoryIds(Q.organizationId,Z.req.query("virtualMcpId")||void 0);return Z.json(await bf0(Q.ctx,Q.organizationId,G,X,J))}),$};var dU8=L(()=>{K8();IG();jo();pP1();C70();mP1();V70();u1();_P1()});import{timingSafeEqual as O45}from"crypto";function AH($){let Q=$?.match(/^Bearer\s+(.+)$/i)?.[1]?.trim();return Q?Q:null}function p70($,Z){let Q=Buffer.from($),Y=Buffer.from(Z);return Q.length===Y.length&&O45(Q,Y)}function rB($){let Z=process.env.VAULT_SERVICE_TOKEN;return!!Z&&p70($,Z)}function iU8($){if(!$)return null;return $ instanceof Date?$.toISOString():$}function j45($){if(!$)return[];if(Array.isArray($))return $.filter((Z)=>typeof Z==="string");if(typeof $!=="string")return[];try{let Z=JSON.parse($);return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}catch{return[]}}async function pU8($,Z,Q){let Y=AH($.req.header("authorization"));if(!Y)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let X=$.get("studioContext"),J=X.organization?.id;if(!J)return{ok:!1,response:$.json({error:"Organization context required"},403)};if(rB(Y))return{ok:!0,ctx:X,organizationId:J};let G=await X.storage.connectionCredentialVault.authenticateWorkloadToken(Y);if(!G||G.organizationId!==J)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let W=await X.storage.connections.findById(G.subjectConnectionId,J);if(!W||W.status!=="active")return{ok:!1,response:$.json({error:"Unauthorized"},401)};if(!await X.storage.connectionCredentialVault.hasGrant({organizationId:J,subjectConnectionId:G.subjectConnectionId,targetConnectionId:Z,scope:Q}))return{ok:!1,response:$.json({error:"Forbidden"},403)};return{ok:!0,ctx:X,organizationId:J}}var nU8=()=>{let $=new Z1;return $.post("/vault/connections/batch",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=await Z.req.json().catch(()=>null),G=Array.isArray(J?.connectionIds)?[...new Set(J.connectionIds)].filter((B)=>typeof B==="string"&&B.length>0):[];if(G.length===0||G.length>20)return Z.json({error:"connectionIds must be a non-empty string array (max 20)"},400);let{items:W}=await Y.storage.connections.list(X,{includeVirtual:!0,where:{field:["id"],operator:"in",value:G},limit:G.length}),K=new Map(W.map((B)=>[B.id,B])),H=new Set((await Y.db.selectFrom("downstream_tokens").select("connectionId").where("connectionId","in",G).execute()).map((B)=>B.connectionId)),F=new Map((await Y.db.selectFrom("connections").select(["id","configuration_state","connection_token"]).where("id","in",G).where("organization_id","=",X).execute()).map((B)=>[B.id,B])),U=new e5(Y.db,Y.vault),N={};return await Promise.all(G.map(async(B)=>{try{let D=K.get(B);if(!D||D.status!=="active"){N[B]={error:"Connection not found"};return}if(F.get(B)?.configuration_state&&!D.configuration_state){N[B]={error:"MCP configuration could not be decrypted"};return}let O={type:"mcp_configuration",state:D.configuration_state??{},scopes:D.configuration_scopes??[]},j=null;if(H.has(B)){let w=await RJ({connectionId:B,connectionUrl:D.connection_url,tokenStorage:U});if(w.state==="valid"||w.state==="refreshed"){let E=await U.get(B);j={type:"oauth_access_token",tokenType:"Bearer",accessToken:w.accessToken,expiresAt:iU8(E?.expiresAt??null),scope:E?.scope??null}}}else if(D.connection_token)j={type:"static_token",tokenType:"Bearer",accessToken:D.connection_token,expiresAt:null,scope:null};else if(F.get(B)?.connection_token){N[B]={error:"Connection token could not be decrypted"};return}N[B]={configuration:O,accessToken:j}}catch(D){N[B]={error:D instanceof Error?D.message:String(D)}}})),Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json(N)}),$.post("/vault/connections/:connectionId/access-token",async(Z)=>{let Q=Z.req.param("connectionId"),Y=await pU8(Z,Q,BW0);if(!Y.ok)return Y.response;let{ctx:X,organizationId:J}=Y,G=await X.storage.connections.findById(Q,J);if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let W=new e5(X.db,X.vault),K=await RJ({connectionId:Q,connectionUrl:G.connection_url,tokenStorage:W});if(K.state==="missing"){if(G.connection_token)return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"static_token",tokenType:"Bearer",accessToken:G.connection_token,expiresAt:null,scope:null});if((await X.db.selectFrom("connections").select("connection_token").where("id","=",Q).where("organization_id","=",J).executeTakeFirst())?.connection_token)return Z.json({error:"Connection token could not be decrypted"},424);return Z.json({error:"Downstream token not found"},409)}if(K.state==="expired_without_refresh"||K.state==="refresh_failed")return Z.json({error:"Downstream token refresh failed"},424);let H=await W.get(Q);return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"oauth_access_token",tokenType:"Bearer",accessToken:K.accessToken,expiresAt:iU8(H?.expiresAt??null),scope:H?.scope??null})}),$.post("/vault/connections/:connectionId/configuration",async(Z)=>{let Q=Z.req.param("connectionId"),Y=await pU8(Z,Q,DW0);if(!Y.ok)return Y.response;let{ctx:X,organizationId:J}=Y,G=await X.db.selectFrom("connections").select(["status","configuration_state","configuration_scopes"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let W={};if(G.configuration_state)try{let K=await X.vault.decrypt(G.configuration_state),H=JSON.parse(K);if(typeof H!=="object"||H===null||Array.isArray(H))throw Error("MCP configuration state is not an object");W=H}catch{return Z.json({error:"MCP configuration could not be decrypted"},424)}return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"mcp_configuration",state:W,scopes:j45(G.configuration_scopes)})}),$};var w2=L(()=>{K8();s3();LW0();xK()});import{createHmac as w45}from"crypto";import{mkdir as E45,writeFile as P45}from"fs/promises";import{dirname as z45,join as sU8}from"path";function q45($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return sU8(A45,Z)}function tU8($,Z){let Q=q45($),Y=A3(Z);return sU8(Q,Y)}function oU8($,Z,Q,Y,X){let J=B0().encryptionKey||"dev-secret",G=`${$}:${Z}:${Q}:${Y}`,W=w45("sha256",J).update(G).digest("hex");return p70(X,W)}function nz1($){let Z=$.split(".").pop()?.toLowerCase()||"";return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",json:"application/json",xml:"application/xml",txt:"text/plain",html:"text/html",htm:"text/html",css:"text/css",csv:"text/csv",md:"text/markdown",js:"application/javascript",mjs:"application/javascript",ts:"application/typescript",mp4:"video/mp4",webm:"video/webm",avi:"video/x-msvideo",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",zip:"application/zip",gz:"application/gzip",tar:"application/x-tar",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf"}[Z]||"application/octet-stream"}function R45($){let Z={"X-Content-Type-Options":"nosniff"};if($==="text/html"||$==="image/svg+xml")Z["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin";return Z}var A45="./data/assets",T45=524288000,wy0=($)=>{let Z=new Z1,Q=$.orgFromPath?"/*":"/:orgId/*";return Z.get(Q,async(Y)=>{let X=$.orgFromPath?Y.get("studioContext")?.organization?.id:Y.req.param("orgId");if(!X)return Y.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${Y.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${X}/`,G=Y.req.path.replace(J,"");if(!G)return Y.json({error:"Missing key"},400);let W=Y.req.query("expires"),K=Y.req.query("signature"),H=Y.req.query("method");if(!W||!K||H!=="GET")return Y.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(W,10);if(!Number.isFinite(F))return Y.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return Y.json({error:"URL has expired"},403);if(!oU8(X,G,F,"GET",K))return Y.json({error:"Invalid signature"},403);let N=tU8(X,G);try{let B=Bun.file(N);if(!await B.exists())return Y.json({error:"File not found"},404);let O=nz1(G);return new Response(B.stream(),{headers:{"Content-Type":O,"Content-Length":B.size.toString(),"Cache-Control":"private, max-age=3600",...R45(O)}})}catch(B){return console.error("Error serving file:",B),Y.json({error:"Failed to read file"},500)}}),Z.put(Q,C6({maxSize:T45,onError:(Y)=>Y.json({error:"File exceeds the per-file size limit"},413)}),async(Y)=>{let X=$.orgFromPath?Y.get("studioContext")?.organization?.id:Y.req.param("orgId");if(!X)return Y.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${Y.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${X}/`,G=Y.req.path.replace(J,"");if(!G)return Y.json({error:"Missing key"},400);let W=Y.req.query("expires"),K=Y.req.query("signature"),H=Y.req.query("method");if(!W||!K||H!=="PUT")return Y.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(W,10);if(!Number.isFinite(F))return Y.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return Y.json({error:"URL has expired"},403);if(!oU8(X,G,F,"PUT",K))return Y.json({error:"Invalid signature"},403);let N=tU8(X,G),B=z45(N);try{await E45(B,{recursive:!0});let D=await Y.req.arrayBuffer();return await P45(N,Buffer.from(D)),Y.json({success:!0,key:G})}catch(D){return console.error("Error saving file:",D),Y.json({error:"Failed to save file"},500)}}),Z};var Ey0=L(()=>{K8();Q3();u1();iH();w2()});import{z as vu}from"zod";function I45($,Z,Q=Date.now()){return{accessToken:$.accessToken,refreshToken:$.refreshToken??null,expiresIn:$.expiresAt===void 0?null:Math.max(0,Math.floor(($.expiresAt-Q)/1000)),scope:$.scope??null,clientId:$.clientId??null,clientSecret:$.clientSecret??null,tokenEndpoint:Z}}async function rU8($,Z){let Q=$.organization?.id;if(!$.auth.user?.id||!Q)return{error:"Unauthorized",status:401};let X=(await $.storage.connections.findById(Z,Q))?.connection_url;if(!X||!Tw(X))return{error:"Not a sandbox sign-in connection",status:404};let J=await MB({virtualMcpId:V3(Q),branch:M45,purpose:"harness-run"},$),G=await OZ($);return{url:X,daemon:(K,H)=>G.proxyDaemonRequest(J.sandboxHandle,K,{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify(H)}),provider:G,handle:J.sandboxHandle}}var M45="mcp-sign-in",V45,aU8=()=>{let $=new Z1;return $.post("/connections/:connectionId/sandbox-sign-in",async(Z)=>{let Q=await rU8(Z.get("studioContext"),Z.req.param("connectionId"));if("error"in Q)return Z.json({error:Q.error},Q.status);let Y=await Q.daemon("/_sandbox/mcp-login",{name:"server",url:Q.url});return new Response(Y.body,{status:Y.status,headers:Y.headers})}),$.post("/connections/:connectionId/sandbox-sign-in/finish",async(Z)=>{let Q=await rU8(Z.get("studioContext"),Z.req.param("connectionId"));if("error"in Q)return Z.json({error:Q.error},Q.status);let Y=await Q.daemon("/_sandbox/mcp-login/finish",await Z.req.json().catch(()=>({})));if(!Y.ok)return new Response(Y.body,{status:Y.status,headers:Y.headers});let X=V45.safeParse(await Y.json().catch(()=>null));if(!X.success)return Z.json({error:"Sign-in returned no token"},502);await Q.provider.delete(Q.handle).catch((G)=>{console.warn("[sandbox-sign-in] failed to delete the sign-in sandbox",G instanceof Error?G.message:String(G))});let J=await D2(Q.url);return Z.json(I45(X.data,J))}),$};var eU8=L(()=>{q8();K8();q70();CX();Rh();V45=vu.object({accessToken:vu.string().min(1),refreshToken:vu.string().optional(),expiresAt:vu.number().optional(),scope:vu.string().optional(),clientId:vu.string().optional(),clientSecret:vu.string().optional()})});function $N8($,Z,Q){if(!["127.0.0.1","::1","::ffff:127.0.0.1"].includes($??""))return!1;try{let Y=new URL(Q),X=["localhost","127.0.0.1","[::1]"].includes(Y.hostname)||Y.hostname.endsWith(".localhost");return["http:","https:"].includes(Y.protocol)&&X&&Z===Y.origin}catch{return!1}}function tz1($){let Z=new URL(k45);if(Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("state",$.state),$.selectAccount)Z.searchParams.set("prompt","select_account");return Z.toString()}function C45($,Z=200){let Q=$!==null&&typeof $==="object"?$:{};if(typeof Q.error==="string"){let Y=typeof Q.error_description==="string"?` (${Q.error_description})`:"";throw new v0({provider:"github",status:400,message:`GitHub OAuth code exchange failed: ${Q.error}${Y}`})}if(typeof Q.access_token!=="string"||Q.access_token.length===0)throw new v0({provider:"github",status:Z,message:"GitHub OAuth code exchange returned no access token"});return{accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token.length>0?Q.refresh_token:null,expiresIn:typeof Q.expires_in==="number"&&Number.isFinite(Q.expires_in)?Q.expires_in:null,scope:typeof Q.scope==="string"&&Q.scope.length>0?Q.scope:null,tokenEndpoint:ZN8}}async function QN8($){let Z;try{let X=process.env.GITHUB_OAUTH_TOKEN_URL??ZN8;Z=await fetch(X,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),signal:AbortSignal.timeout(h71)})}catch(X){throw new v0({provider:"github",status:0,message:`GitHub OAuth code exchange failed: ${X instanceof Error?X.message:String(X)}`,cause:X})}let Q=await Z.text();if(!Z.ok)throw new v0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange failed: ${Z.status} ${Q.slice(0,300)}`});let Y;try{Y=JSON.parse(Q)}catch(X){throw new v0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange returned invalid JSON: ${Q.slice(0,300)}`,cause:X})}return C45(Y,Z.status)}var k45="https://github.com/login/oauth/authorize",ZN8="https://github.com/login/oauth/access_token";var YN8=L(()=>{S5();bP()});function XN8($){let Z=new URL(`https://${pL}/site/oauth2/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.toString()}function S45(){return`https://${pL}/site/oauth2/access_token`}async function JN8($){let Z=S45(),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),Y;try{Y=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(_45)})}catch(J){throw new v0({provider:"bitbucket",status:0,message:`Bitbucket token exchange failed: ${v45(J)}`,cause:J})}let X=await Y.json().catch(()=>null);if(!Y.ok||!X||typeof X.error==="string"){let J=X&&typeof X.error_description==="string"?X.error_description:X&&typeof X.error==="string"?X.error:Y.statusText;throw new v0({provider:"bitbucket",status:Y.status,message:`Bitbucket token exchange failed (${Y.status}): ${J}`})}if(typeof X.access_token!=="string"||!X.access_token)throw new v0({provider:"bitbucket",status:Y.status,message:"Bitbucket token exchange returned no access_token"});return{accessToken:X.access_token,refreshToken:typeof X.refresh_token==="string"&&X.refresh_token?X.refresh_token:null,expiresIn:typeof X.expires_in==="number"&&Number.isFinite(X.expires_in)?X.expires_in:null,scope:typeof X.scopes==="string"?X.scopes:null,tokenEndpoint:Z}}function v45($){return $ instanceof Error?$.message:String($)}var _45=15000;var GN8=L(()=>{S5();Fp()});function WN8($){let Z=new URL(`https://${$.host}/oauth/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.searchParams.set("scope",($.scopes??b45).join(" ")),Z.toString()}function x45($){return`https://${$}/oauth/token`}async function KN8($){let Z=x45($.host),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),Y;try{Y=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(f45)})}catch(J){throw new v0({provider:"gitlab",status:0,message:`GitLab token exchange failed: ${y45(J)}`,cause:J})}let X=await Y.json().catch(()=>null);if(!Y.ok||!X||typeof X.error==="string"){let J=X&&typeof X.error_description==="string"?X.error_description:X&&typeof X.error==="string"?X.error:Y.statusText;throw new v0({provider:"gitlab",status:Y.status,message:`GitLab token exchange failed (${Y.status}): ${J}`})}if(typeof X.access_token!=="string"||!X.access_token)throw new v0({provider:"gitlab",status:Y.status,message:"GitLab token exchange returned no access_token"});return{accessToken:X.access_token,refreshToken:typeof X.refresh_token==="string"&&X.refresh_token?X.refresh_token:null,expiresIn:typeof X.expires_in==="number"&&Number.isFinite(X.expires_in)?X.expires_in:null,scope:typeof X.scope==="string"?X.scope:null,tokenEndpoint:Z}}function y45($){return $ instanceof Error?$.message:String($)}var b45,f45=15000;var HN8=L(()=>{S5();b45=["api","read_user"]});import{z as Jj}from"zod";function n70($){if(!$)return"/";if(!$.startsWith("/")||$.startsWith("//")||$.includes("\\")||/[\r\n\t]/.test($))return"/";return $}function g45($){if($.htmlUrl)return $.htmlUrl;return`https://github.com${$.accountType==="Organization"?`/organizations/${encodeURIComponent($.login)}/settings/installations/${$.installationId}`:`/settings/installations/${$.installationId}`}`}function bu($){return`${B5()}/api/_git/${$}/callback`}function cX($,Z){let Q=new URL($,B5());if(Q.searchParams.delete("git_error"),Z)Q.searchParams.set("git_error",Z);return Q.toString()}async function Py0($,Z){let Q=$.organization?.id,Y=$.auth.user?.id;if(!Q||!Y)throw Error("Session with an organization is required");return $.storage.gitProviderOAuthStates.create({organizationId:Q,userId:Y,...Z})}async function zy0($,Z,Q){if(!Q)return{ok:!1,error:"missing_state",returnTo:"/"};let Y=await $.storage.gitProviderOAuthStates.consume(Q);if(!Y||Y.provider!==Z)return{ok:!1,error:"invalid_state",returnTo:"/"};let X=n70(Y.returnTo);if($.auth.user?.id!==Y.userId)return{ok:!1,error:"session_mismatch",returnTo:X};return{ok:!0,state:Y,returnTo:X}}var FN8=()=>{let $=new Z1;return $.post("/git-providers/github/cli/connect",async(Z)=>{if(!aq())return Z.json({error:"GitHub CLI requires local mode"},403);let Q;try{Q=b70(Z).remote.address}catch{}if(!$N8(Q,Z.req.header("Origin"),B5()))return Z.json({error:"GitHub CLI requires a local, same-origin request"},403);let Y=Z.get("studioContext");if(!Y.auth.user||!Y.organization)return Z.json({error:"Unauthorized"},401);try{await Y.access.check("GIT_ACCOUNT_CONNECT_TOKEN")}catch(G){if(G instanceof c6)return Z.json({error:"Forbidden"},403);throw G}if(Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let X;try{X=await ZT$()}catch{return Z.json({error:"Could not connect to GitHub CLI. Install gh and run gh auth login --hostname github.com, then try again."},400)}let J=await Y.storage.gitProviderAccounts.upsert({organizationId:Y.organization.id,type:"github",host:"github.com",authKind:"github_cli",...X,createdBy:Y.auth.user.id});return Z.json({account:{id:J.id,login:J.login}})}),$.get("/git-providers/github/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=kP();if(!Y)return Z.json({error:"GitHub App is not configured"},503);let X=await Py0(Q,{provider:"github",host:"github.com",returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(tz1({clientId:Y.clientId,redirectUri:bu("github"),state:X,selectAccount:!0}))}),$.get("/git-providers/github/install",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=kP();if(!Y)return Z.json({error:"GitHub App is not configured"},503);let X=await Py0(Q,{provider:"github",host:"github.com",returnTo:n70(Z.req.query("returnTo"))}),J=new URL(`https://github.com/apps/${encodeURIComponent(Y.slug)}/installations/new`);return J.searchParams.set("state",X),Z.redirect(J.toString())}),$.get("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},X=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!X)return Z.json({error:"flow_expired"},410);let J=bF();if(!J)return Z.json({error:"not_configured"},503);try{let G=await J.listConnectableInstallations(X.id,await Q.vault.decrypt(X.encrypted_access_token));return Z.json({installations:G.map((W)=>({installationId:W.installationId,login:W.login,avatarUrl:W.avatarUrl,accountType:W.accountType})),expiresAt:X.expires_at})}catch{return Z.json({error:"github_unavailable"},502)}}),$.get("/git-providers/github/flows/:id/repositories",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let Y=Jj.object({installationId:Jj.coerce.number().int().positive().safe(),page:Jj.coerce.number().int().positive().safe().default(1),query:Jj.string().trim().max(256).optional()}).safeParse(Z.req.query());if(!Y.success)return Z.json({error:"Invalid installation"},400);let X={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!J)return Z.json({error:"flow_expired"},410);let G=bF();if(!G)return Z.json({error:"not_configured"},503);try{let W=await Q.vault.decrypt(J.encrypted_access_token),K=await G.connectableInstallation(J.id,W,Y.data.installationId);if(!K)return Z.json({error:"installation_forbidden"},403);let H=await G.delegableRepositories(J.id,W,K.installationId),F=await Q.storage.gitProviderAccounts.findByExternalId({organizationId:X.organizationId,host:"github.com",externalAccountId:String(K.installationId)}),U=F&&F.installationRepositoryIds===null?await Q.storage.repositories.listByOrg(X.organizationId,{accountId:F.id}):[];return Z.json({...iA$(H,Y.data.page,Y.data.query),selectedRepositoryIds:nA$(H,F?.installationRepositoryIds??null,U),accountVersion:DP1(F)})}catch{return Z.json({error:"github_unavailable"},502)}}),$.post("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);if(await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let Y=Jj.object({installationId:Jj.number().int().positive().safe(),repositoryIds:Jj.array(Jj.number().int().positive().safe()).min(1).max(oq).refine((H)=>new Set(H).size===H.length),accountVersion:Jj.string().max(200).nullable()}).safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid installation"},400);let X={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!J)return Z.json({error:"flow_expired"},410);let G=bF();if(!G)return Z.json({error:"not_configured"},503);let W,K;try{let H=await Q.vault.decrypt(J.encrypted_access_token);if(W=await G.connectableInstallation(J.id,H,Y.data.installationId,{fresh:!0}),!W)return Z.json({error:"installation_forbidden"},403);let F=await G.delegableRepositories(J.id,H,W.installationId,{fresh:!0});if(!pA$(F,Y.data.repositoryIds))return Z.json({error:"repositories_forbidden"},403);K=await G.connectingUserId(H)}catch{return Z.json({error:"github_unavailable"},502)}try{let H=await Q.storage.githubConnectFlows.connect(J.id,X,{organizationId:X.organizationId,type:"github",host:"github.com",authKind:"github_app",externalAccountId:String(W.installationId),login:W.login,avatarUrl:W.avatarUrl,installationId:W.installationId,installationAuthorizedBy:K,installationRepositoryIds:Y.data.repositoryIds},Y.data.accountVersion);if(!H)return Z.json({error:"flow_expired"},410);return G.forgetFlow(J.id),Z.json({account:{id:H.id,login:H.login}})}catch(H){if(H instanceof Mf0)return Z.json({error:"account_changed"},409);throw H}}),$.delete("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);return await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),await Q.storage.githubConnectFlows.cancel(Z.req.param("id"),{organizationId:Q.organization.id,userId:Q.auth.user.id}),bF()?.forgetFlow(Z.req.param("id")),Z.body(null,204)}),$.get("/git-providers/github/accounts/:id/manage",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=await Q.storage.gitProviderAccounts.get(Z.req.param("id"),Q.organization.id);if(!Y||Y.type!=="github"||!Y.installationId)return Z.json({error:"Account not found"},404);let X=bF();if(!X)return Z.json({error:"not_configured"},503);let J=await X.getInstallation(Y.installationId);if(!J)return Z.json({error:"Installation not found"},404);return Z.redirect(g45(J))}),$.get("/git-providers/gitlab/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=FD0(),X=(Z.req.query("host")??Y?.host??"gitlab.com").trim().toLowerCase();if(!Y||Y.host!==X)return Z.json({error:`No GitLab OAuth application is configured for ${X}. Connect with an access token instead.`},503);let J=await Py0(Q,{provider:"gitlab",host:X,returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(WN8({host:X,clientId:Y.clientId,redirectUri:bu("gitlab"),state:J}))}),$.get("/git-providers/bitbucket/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let Y=tB0();if(!Y)return Z.json({error:"No Bitbucket OAuth consumer is configured. Connect with an access token instead."},503);let X=await Py0(Q,{provider:"bitbucket",host:Y.host,returnTo:n70(Z.req.query("returnTo"))});return Z.redirect(XN8({clientId:Y.clientId,redirectUri:bu("bitbucket"),state:X}))}),$},no;var oz1=L(()=>{K8();Dz1();vF();XX();H9();V40();OP1();d71();pB0();YN8();fP();Fp();eq();GN8();HN8();no=new Z1;no.get("/github/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,J=kP(),G=bF(),W=$.req.query("code");if(!J||!G)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await QN8({clientId:J.clientId,clientSecret:J.clientSecret,code:W,redirectUri:bu("github")}),H={organizationId:X.organizationId,userId:X.userId},F=new URL(Y,B5()),U=F.searchParams.get("git_flow"),N=await Z.vault.encrypt(K.accessToken),B=U&&await Z.storage.githubConnectFlows.refresh(U,H,N)?U:await Z.storage.githubConnectFlows.create(H,N);return F.searchParams.delete("git_error"),F.searchParams.set("git_flow",B),$.redirect(F.toString())}catch(K){return console.error("[git-providers] github callback failed",{message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}});no.get("/github/setup",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,J=kP();if(!J)return $.redirect(cX(Y,"not_configured"));let G=await Z.storage.gitProviderOAuthStates.create(X);return $.redirect(tz1({clientId:J.clientId,redirectUri:bu("github"),state:G}))});no.get("/gitlab/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"gitlab",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,{host:J}=X,G=FD0(),W=$.req.query("code");if(!G||G.host!==J)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await KN8({host:J,clientId:G.clientId,clientSecret:G.clientSecret,code:W,redirectUri:bu("gitlab")}),H=await nB0(J,K.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:X.organizationId,type:"gitlab",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:X.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:K.accessToken,refreshToken:K.refreshToken,scope:K.scope,expiresAt:K.expiresIn!==null?new Date(Date.now()+K.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:K.tokenEndpoint}),$.redirect(cX(Y))}catch(K){return console.error("[git-providers] gitlab callback failed",{host:J,message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}});no.get("/bitbucket/callback",async($)=>{let Z=await vY.create($.req.raw),Q=await zy0(Z,"bitbucket",$.req.query("state"));if(!Q.ok)return $.redirect(cX(Q.returnTo,Q.error));let{returnTo:Y,state:X}=Q,{host:J}=X,G=tB0(),W=$.req.query("code");if(!G||G.host!==J)return $.redirect(cX(Y,"not_configured"));if(!W)return $.redirect(cX(Y,$.req.query("error")??"denied"));try{let K=await JN8({clientId:G.clientId,clientSecret:G.clientSecret,code:W,redirectUri:bu("bitbucket")}),H=await oB0(J,K.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:X.organizationId,type:"bitbucket",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:X.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:K.accessToken,refreshToken:K.refreshToken,scope:K.scope,expiresAt:K.expiresIn!==null?new Date(Date.now()+K.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:K.tokenEndpoint}),$.redirect(cX(Y))}catch(K){return console.error("[git-providers] bitbucket callback failed",{host:J,message:K instanceof Error?K.message:String(K)}),$.redirect(cX(Y,"exchange_failed"))}})});var o70=y((d45)=>{d45.HttpAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(d45.HttpAuthLocation||(d45.HttpAuthLocation={}));d45.HttpApiKeyAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(d45.HttpApiKeyAuthLocation||(d45.HttpApiKeyAuthLocation={}));d45.EndpointURLScheme=void 0;(function($){$.HTTP="http",$.HTTPS="https"})(d45.EndpointURLScheme||(d45.EndpointURLScheme={}));d45.AlgorithmId=void 0;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(d45.AlgorithmId||(d45.AlgorithmId={}));var h45=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>d45.AlgorithmId.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>d45.AlgorithmId.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},u45=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},l45=($)=>{return h45($)},c45=($)=>{return u45($)};d45.FieldPosition=void 0;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(d45.FieldPosition||(d45.FieldPosition={}));var m45="__smithy_context";d45.IniSectionType=void 0;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(d45.IniSectionType||(d45.IniSectionType={}));d45.RequestHandlerProtocol=void 0;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(d45.RequestHandlerProtocol||(d45.RequestHandlerProtocol={}));d45.SMITHY_CONTEXT_KEY=m45;d45.getDefaultClientConfiguration=l45;d45.resolveDefaultRuntimeConfig=c45});var w21=y((T55)=>{var J21=V0("crypto"),Q21=V0("fs"),t45=ZQ0(),o45=QQ0(),aB=V0("stream"),jN8=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",so=($,Z=0,Q=$.byteLength-Z)=>{if(!jN8($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},Ry0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},s45=/^[A-Za-z0-9+/]*={0,2}$/,wN8=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!s45.exec($))throw TypeError("Invalid base64 string.");let Z=Ry0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},My0=($)=>{let Z=Ry0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},F21=($)=>{let Z;if(typeof $==="string")Z=My0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return so(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function r45($,Z,Q,Y){return class X extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return X.mutate(Y(J));return X.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,X.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var EN8=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return so($.buffer,$.byteOffset,$.byteLength).toString("utf8")},mX=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function a45($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,mX[Z[0]]+mX[Z[1]]+mX[Z[2]]+mX[Z[3]]+"-"+mX[Z[4]]+mX[Z[5]]+"-"+mX[Z[6]]+mX[Z[7]]+"-"+mX[Z[8]]+mX[Z[9]]+"-"+mX[Z[10]]+mX[Z[11]]+mX[Z[12]]+mX[Z[13]]+mX[Z[14]]+mX[Z[15]]}}var e45=($,Z,Q=(Y)=>Y)=>$,$65=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},Z65=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)$Q0.warn(Ty0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")$Q0.warn(Ty0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},a70=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))$Q0.warn(Ty0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},Q65=Math.ceil(340282346638528860000000000000000000000),Ay0=($)=>{let Z=a70($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>Q65)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},e70=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},Y65=e70,G21=($)=>U21($,32),W21=($)=>U21($,16),K21=($)=>U21($,8),U21=($,Z)=>{let Q=e70($);if(Q!==void 0&&X65(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},X65=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},J65=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},PN8=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},G65=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return $Q0.warn(Ty0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},W65=($)=>{if($===null||$===void 0)return;let Z=PN8($),Q=[];for(let Y in Z)if(Z[Y]!=null)Q.push(Y);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},N21=($)=>{if(typeof $=="string")return a70(eo($));return a70($)},K65=N21,zN8=($)=>{if(typeof $=="string")return Ay0(eo($));return Ay0($)},H65=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,eo=($)=>{let Z=$.match(H65);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},B21=($)=>{if(typeof $=="string")return AN8($);return a70($)},F65=B21,U65=B21,N65=($)=>{if(typeof $=="string")return AN8($);return Ay0($)},AN8=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},TN8=($)=>{if(typeof $==="string")return e70(eo($));return e70($)},B65=TN8,D65=($)=>{if(typeof $==="string")return G21(eo($));return G21($)},ro=($)=>{if(typeof $==="string")return W21(eo($));return W21($)},qN8=($)=>{if(typeof $==="string")return K21(eo($));return K21($)},Ty0=($)=>{return String(TypeError($).stack||$).split(`
|
|
4357
4357
|
`).slice(0,5).filter((Z)=>!Z.includes("stackTraceWarning")).join(`
|
|
4358
4358
|
`)},$Q0={warn:console.warn},L65=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],D21=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function O65($){let Z=$.getUTCFullYear(),Q=$.getUTCMonth(),Y=$.getUTCDay(),X=$.getUTCDate(),J=$.getUTCHours(),G=$.getUTCMinutes(),W=$.getUTCSeconds(),K=X<10?`0${X}`:`${X}`,H=J<10?`0${J}`:`${J}`,F=G<10?`0${G}`:`${G}`,U=W<10?`0${W}`:`${W}`;return`${L65[Y]}, ${K} ${D21[Q]} ${Z} ${H}:${F}:${U} GMT`}var j65=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),w65=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=j65.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H]=Z,F=ro(ao(Y)),U=eB(X,"month",1,12),N=eB(J,"day",1,31);return s70(F,U,N,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})},E65=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),P65=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=E65.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H,F]=Z,U=ro(ao(Y)),N=eB(X,"month",1,12),B=eB(J,"day",1,31),D=s70(U,N,B,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H});if(F.toUpperCase()!="Z")D.setTime(D.getTime()-v65(F));return D},z65=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),A65=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),T65=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),q65=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-7231 date-times must be expressed as strings");let Z=z65.exec($);if(Z){let[Q,Y,X,J,G,W,K,H]=Z;return s70(ro(ao(J)),Y21(X),eB(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})}if(Z=A65.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return I65(s70(M65(J),Y21(X),eB(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H}))}if(Z=T65.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return s70(ro(ao(H)),Y21(Y),eB(X.trimLeft(),"day",1,31),{hours:J,minutes:G,seconds:W,fractionalMilliseconds:K})}throw TypeError("Invalid RFC-7231 date-time value")},R65=($)=>{if($===null||$===void 0)return;let Z;if(typeof $==="number")Z=$;else if(typeof $==="string")Z=N21($);else if(typeof $==="object"&&$.tag===1)Z=$.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(Z)||Z===1/0||Z===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(Z*1000))},s70=($,Z,Q,Y)=>{let X=Z-1;return C65($,X,Q),new Date(Date.UTC($,X,Q,eB(Y.hours,"hour",0,23),eB(Y.minutes,"minute",0,59),eB(Y.seconds,"seconds",0,60),_65(Y.fractionalMilliseconds)))},M65=($)=>{let Z=new Date().getUTCFullYear(),Q=Math.floor(Z/100)*100+ro(ao($));if(Q<Z)return Q+100;return Q},V65=1576800000000,I65=($)=>{if($.getTime()-new Date().getTime()>V65)return new Date(Date.UTC($.getUTCFullYear()-100,$.getUTCMonth(),$.getUTCDate(),$.getUTCHours(),$.getUTCMinutes(),$.getUTCSeconds(),$.getUTCMilliseconds()));return $},Y21=($)=>{let Z=D21.indexOf($);if(Z<0)throw TypeError(`Invalid month: ${$}`);return Z+1},k65=[31,28,31,30,31,30,31,31,30,31,30,31],C65=($,Z,Q)=>{let Y=k65[Z];if(Z===1&&S65($))Y=29;if(Q>Y)throw TypeError(`Invalid day for ${D21[Z]} in ${$}: ${Q}`)},S65=($)=>{return $%4===0&&($%100!==0||$%400===0)},eB=($,Z,Q,Y)=>{let X=qN8(ao($));if(X<Q||X>Y)throw TypeError(`${Z} must be between ${Q} and ${Y}, inclusive`);return X},_65=($)=>{if($===null||$===void 0)return 0;return zN8("0."+$)*1000},v65=($)=>{let Z=$[0],Q=1;if(Z=="+")Q=1;else if(Z=="-")Q=-1;else throw TypeError(`Offset direction, ${Z}, must be "+" or "-"`);let Y=Number($.substring(1,3)),X=Number($.substring(4,6));return Q*(Y*60+X)*60*1000},ao=($)=>{let Z=0;while(Z<$.length-1&&$.charAt(Z)==="0")Z++;if(Z===0)return $;return $.slice(Z)},xu=function(Z){return Object.assign(new String(Z),{deserializeJSON(){return JSON.parse(String(Z))},toString(){return String(Z)},toJSON(){return String(Z)}})};xu.from=($)=>{if($&&typeof $==="object"&&($ instanceof xu||("deserializeJSON"in $)))return $;else if(typeof $==="string"||Object.getPrototypeOf($)===String.prototype)return xu(String($));return xu(JSON.stringify($))};xu.fromObject=xu.from;function b65($){if($.includes(",")||$.includes('"'))$=`"${$.replace(/"/g,"\\\"")}"`;return $}var L21="(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?",O21="(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)",j21="(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?",RN8="(\\d?\\d)",MN8="(\\d{4})",x65=new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/),f65=new RegExp(`^${L21}, ${RN8} ${O21} ${MN8} ${j21} GMT$`),y65=new RegExp(`^${L21}, ${RN8}-${O21}-(\\d\\d) ${j21} GMT$`),g65=new RegExp(`^${L21} ${O21} ( [1-9]|\\d\\d) ${j21} ${MN8}$`),h65=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],u65=($)=>{if($==null)return;let Z=NaN;if(typeof $==="number")Z=$;else if(typeof $==="string"){if(!/^-?\d*\.?\d+$/.test($))throw TypeError("parseEpochTimestamp - numeric string invalid.");Z=Number.parseFloat($)}else if(typeof $==="object"&&$.tag===1)Z=$.value;if(isNaN(Z)||Math.abs(Z)===1/0)throw TypeError("Epoch timestamps must be valid finite numbers.");return new Date(Math.round(Z*1000))},l65=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC3339 timestamps must be strings");let Z=x65.exec($);if(!Z)throw TypeError(`Invalid RFC3339 timestamp format ${$}`);let[,Q,Y,X,J,G,W,,K,H]=Z;Gj(Y,1,12),Gj(X,1,31),Gj(J,0,23),Gj(G,0,59),Gj(W,0,60);let F=new Date(Date.UTC(Number(Q),Number(Y)-1,Number(X),Number(J),Number(G),Number(W),Number(K)?Math.round(parseFloat(`0.${K}`)*1000):0));if(F.setUTCFullYear(Number(Q)),H.toUpperCase()!="Z"){let[,U,N,B]=/([+-])(\d\d):(\d\d)/.exec(H)||[void 0,"+",0,0],D=U==="-"?1:-1;F.setTime(F.getTime()+D*(Number(N)*60*60*1000+Number(B)*60*1000))}return F},c65=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC7231 timestamps must be strings.");let Z,Q,Y,X,J,G,W,K;if(K=f65.exec($))[,Z,Q,Y,X,J,G,W]=K;else if(K=y65.exec($))[,Z,Q,Y,X,J,G,W]=K,Y=(Number(Y)+1900).toString();else if(K=g65.exec($))[,Q,Z,X,J,G,W,Y]=K;if(Y&&G){let H=Date.UTC(Number(Y),h65.indexOf(Q),Number(Z),Number(X),Number(J),Number(G),W?Math.round(parseFloat(`0.${W}`)*1000):0);Gj(Z,1,31),Gj(X,0,23),Gj(J,0,59),Gj(G,0,60);let F=new Date(H);return F.setUTCFullYear(Number(Y)),F}throw TypeError(`Invalid RFC7231 date-time value ${$}.`)};function Gj($,Z,Q){let Y=Number($);if(Y<Z||Y>Q)throw Error(`Value ${Y} out of range [${Z}, ${Q}]`)}function m65($,Z,Q){if(Q<=0||!Number.isInteger(Q))throw Error("Invalid number of delimiters ("+Q+") for splitEvery.");let Y=$.split(Z);if(Q===1)return Y;let X=[],J="";for(let G=0;G<Y.length;G++){if(J==="")J=Y[G];else J+=Z+Y[G];if((G+1)%Q===0)X.push(J),J=""}if(J!=="")X.push(J);return X}var d65=($)=>{let Z=$.length,Q=[],Y=!1,X=void 0,J=0;for(let G=0;G<Z;++G){let W=$[G];switch(W){case'"':if(X!=="\\")Y=!Y;break;case",":if(!Y)Q.push($.slice(J,G)),J=G+1;break}X=W}return Q.push($.slice(J)),Q.map((G)=>{G=G.trim();let W=G.length;if(W<2)return G;if(G[0]==='"'&&G[W-1]==='"')G=G.slice(1,W-1);return G.replace(/\\"/g,'"')})},UN8=/^-?\d*(\.\d+)?$/;class Vy0{string;type;constructor($,Z){if(this.string=$,this.type=Z,!UN8.test($))throw Error('@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".')}toString(){return this.string}static[Symbol.hasInstance]($){if(!$||typeof $!=="object")return!1;let Z=$;return Vy0.prototype.isPrototypeOf($)||Z.type==="bigDecimal"&&UN8.test(Z.string)}}function i65($){return new Vy0(String($),"bigDecimal")}var VN8={},H21={};for(let $=0;$<256;$++){let Z=$.toString(16).toLowerCase();if(Z.length===1)Z=`0${Z}`;VN8[$]=Z,H21[Z]=$}function p65($){if($.length%2!==0)throw Error("Hex encoded strings must have an even number length");let Z=new Uint8Array($.length/2);for(let Q=0;Q<$.length;Q+=2){let Y=$.slice(Q,Q+2).toLowerCase();if(Y in H21)Z[Q/2]=H21[Y];else throw Error(`Cannot decode unrecognized sequence ${Y} as hexadecimal`)}return Z}function IN8($){let Z="";for(let Q=0;Q<$.byteLength;Q++)Z+=VN8[$[Q]];return Z}var n65=($)=>{if(!$)return 0;if(typeof $==="string")return Buffer.byteLength($);else if(typeof $.byteLength==="number")return $.byteLength;else if(typeof $.size==="number")return $.size;else if(typeof $.start==="number"&&typeof $.end==="number")return $.end+1-$.start;else if($ instanceof Q21.ReadStream){if($.path!=null)return Q21.lstatSync($.path).size;else if(typeof $.fd==="number")return Q21.fstatSync($.fd).size}throw Error(`Body Length computation failed for ${$}`)},kN8=($)=>{if(typeof $==="string")return My0($);if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array($)},CN8=($,Z)=>(Q,Y)=>async(X)=>{let{response:J}=await Q(X);try{let G=await Z(J,$);return{response:J,output:G}}catch(G){if(Object.defineProperty(G,"$response",{value:J,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in G)){try{G.message+=`
|
|
4359
4359
|
Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`}catch(K){if(!Y.logger||Y.logger?.constructor?.name==="NoOpLogger")console.warn("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.");else Y.logger?.warn?.("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.")}if(typeof G.$responseBodyText<"u"){if(G.$response)G.$response.body=G.$responseBodyText}try{if(t45.HttpResponse.isInstance(J)){let{headers:K={}}=J,H=Object.entries(K);G.$metadata={httpStatusCode:J.statusCode,requestId:X21(/^x-[\w-]+-request-?id$/,H),extendedRequestId:X21(/^x-[\w-]+-id-2$/,H),cfId:X21(/^x-[\w-]+-cf-id$/,H)}}}catch(K){}}throw G}},X21=($,Z)=>{return(Z.find(([Q])=>{return Q.match($)})||[void 0,void 0])[1]},SN8=($,Z)=>(Q,Y)=>async(X)=>{let J=$,G=Y.endpointV2?async()=>o45.toEndpointV1(Y.endpointV2):J.endpoint;if(!G)throw Error("No valid endpoint provider available.");let W=await Z(X.input,{...$,endpoint:G});return Q({...X,request:W})},_N8={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},vN8={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function t65($,Z,Q){return{applyToStack:(Y)=>{Y.add(CN8($,Q),_N8),Y.add(SN8($,Z),vN8)}}}class bN8{algorithmIdentifier;secret;hash;constructor($,Z){this.algorithmIdentifier=$,this.secret=Z,this.reset()}update($,Z){this.hash.update(kN8(NN8($,Z)))}digest(){return Promise.resolve(this.hash.digest())}reset(){this.hash=this.secret?J21.createHmac(this.algorithmIdentifier,NN8(this.secret)):J21.createHash(this.algorithmIdentifier)}}function NN8($,Z){if(Buffer.isBuffer($))return $;if(typeof $==="string")return Ry0($,Z);if(ArrayBuffer.isView($))return so($.buffer,$.byteOffset,$.byteLength);return so($)}var xN8=class extends aB.Duplex{expectedChecksum;checksumSourceLocation;checksum;source;base64Encoder;pendingCallback=null;constructor({expectedChecksum:Z,checksum:Q,source:Y,checksumSourceLocation:X,base64Encoder:J}){super();if(typeof Y.pipe==="function")this.source=Y;else throw Error(`@smithy/util-stream: unsupported source type ${Y?.constructor?.name??Y} in ChecksumStream.`);this.base64Encoder=J??F21,this.expectedChecksum=Z,this.checksum=Q,this.checksumSourceLocation=X,this.source.pipe(this)}_read(Z){if(this.pendingCallback){let Q=this.pendingCallback;this.pendingCallback=null,Q()}}_write(Z,Q,Y){try{if(this.checksum.update(Z),!this.push(Z)){this.pendingCallback=Y;return}}catch(X){return Y(X)}return Y()}async _final(Z){try{let Q=await this.checksum.digest(),Y=this.base64Encoder(Q);if(this.expectedChecksum!==Y)return Z(Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${Y}" in response header "${this.checksumSourceLocation}".`))}catch(Q){return Z(Q)}return this.push(null),Z()}},Wj=($)=>typeof ReadableStream==="function"&&($?.constructor?.name===ReadableStream.name||$ instanceof ReadableStream),fN8=($)=>{return typeof Blob==="function"&&($?.constructor?.name===Blob.name||$ instanceof Blob)},o65=($)=>new TextEncoder().encode($),yN8="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",BN8=Object.entries(yN8).reduce(($,[Z,Q])=>{return $[Q]=Number(Z),$},{}),s65=yN8.split(""),to=6,r70=8,r65=63;function gN8($){let Z;if(typeof $==="string")Z=o65($);else Z=$;let Q=typeof Z==="object"&&typeof Z.length==="number",Y=typeof Z==="object"&&typeof Z.byteOffset==="number"&&typeof Z.byteLength==="number";if(!Q&&!Y)throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let X="";for(let J=0;J<Z.length;J+=3){let G=0,W=0;for(let H=J,F=Math.min(J+3,Z.length);H<F;H++)G|=Z[H]<<(F-H-1)*r70,W+=r70;let K=Math.ceil(W/to);G<<=K*to-W;for(let H=1;H<=K;H++){let F=(K-H)*to;X+=s65[(G&r65<<F)>>F]}X+="==".slice(0,4-K)}return X}var a65=typeof ReadableStream==="function"?ReadableStream:function(){};class hN8 extends a65{}var e65=({expectedChecksum:$,checksum:Z,source:Q,checksumSourceLocation:Y,base64Encoder:X})=>{if(!Wj(Q))throw Error(`@smithy/util-stream: unsupported source type ${Q?.constructor?.name??Q} in ChecksumStream.`);let J=X??gN8;if(typeof TransformStream!=="function")throw Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");let G=new TransformStream({start(){},async transform(K,H){Z.update(K),H.enqueue(K)},async flush(K){let H=await Z.digest(),F=J(H);if($!==F){let U=Error(`Checksum mismatch: expected "${$}" but received "${F}" in response header "${Y}".`);K.error(U)}else K.terminate()}});Q.pipeThrough(G);let W=G.readable;return Object.setPrototypeOf(W,hN8.prototype),W};function $55($){if(typeof ReadableStream==="function"&&Wj($.source))return e65($);return new xN8($)}class qy0{allocByteArray;byteLength=0;byteArrays=[];constructor($){this.allocByteArray=$}push($){this.byteArrays.push($),this.byteLength+=$.byteLength}flush(){if(this.byteArrays.length===1){let Q=this.byteArrays[0];return this.reset(),Q}let $=this.allocByteArray(this.byteLength),Z=0;for(let Q=0;Q<this.byteArrays.length;++Q){let Y=this.byteArrays[Q];$.set(Y,Z),Z+=Y.byteLength}return this.reset(),$}reset(){this.byteArrays=[],this.byteLength=0}}function Z55($,Z,Q){let Y=$.getReader(),X=!1,J=0,G=["",new qy0((H)=>new Uint8Array(H))],W=-1,K=async(H)=>{let{value:F,done:U}=await Y.read(),N=F;if(U){if(W!==-1){let B=oo(G,W);if(E2(B)>0)H.enqueue(B)}H.close()}else{let B=lN8(N,!1);if(W!==B){if(W>=0)H.enqueue(oo(G,W));W=B}if(W===-1){H.enqueue(N);return}let D=E2(N);J+=D;let O=E2(G[W]);if(D>=Z&&O===0)H.enqueue(N);else{let j=uN8(G,W,N);if(!X&&J>Z*2)X=!0,Q?.warn(`@smithy/util-stream - stream chunk size ${D} is below threshold of ${Z}, automatically buffering.`);if(j>=Z)H.enqueue(oo(G,W));else await K(H)}}};return new ReadableStream({pull:K})}function uN8($,Z,Q){switch(Z){case 0:return $[0]+=Q,E2($[0]);case 1:case 2:return $[Z].push(Q),E2($[Z])}}function oo($,Z){switch(Z){case 0:let Q=$[0];return $[0]="",Q;case 1:case 2:return $[Z].flush()}throw Error(`@smithy/util-stream - invalid index ${Z} given to flush()`)}function E2($){return $?.byteLength??$?.length??0}function lN8($,Z=!0){if(Z&&typeof Buffer<"u"&&$ instanceof Buffer)return 2;if($ instanceof Uint8Array)return 1;if(typeof $==="string")return 0;return-1}function Q55($,Z,Q){if(Wj($))return Z55($,Z,Q);let Y=new aB.Readable({read(){}}),X=!1,J=0,G=["",new qy0((K)=>new Uint8Array(K)),new qy0((K)=>Buffer.from(new Uint8Array(K)))],W=-1;return $.on("data",(K)=>{let H=lN8(K,!0);if(W!==H){if(W>=0)Y.push(oo(G,W));W=H}if(W===-1){Y.push(K);return}let F=E2(K);J+=F;let U=E2(G[W]);if(F>=Z&&U===0)Y.push(K);else{let N=uN8(G,W,K);if(!X&&J>Z*2)X=!0,Q?.warn(`@smithy/util-stream - stream chunk size ${F} is below threshold of ${Z}, automatically buffering.`);if(N>=Z)Y.push(oo(G,W))}}),$.on("end",()=>{if(W!==-1){let K=oo(G,W);if(E2(K)>0)Y.push(K)}Y.push(null)}),Y}var Y55=($,Z)=>{let{base64Encoder:Q,bodyLengthChecker:Y,checksumAlgorithmFn:X,checksumLocationName:J,streamHasher:G}=Z,W=Q!==void 0&&Y!==void 0&&X!==void 0&&J!==void 0&&G!==void 0,K=W?G(X,$):void 0,H=$.getReader();return new ReadableStream({async pull(F){let{value:U,done:N}=await H.read();if(N){if(F.enqueue(`0\r
|
|
@@ -4407,7 +4407,7 @@ ${Z.error?`<div class="err">${sD8(Z.error)}</div>`:""}
|
|
|
4407
4407
|
(id, "organizationId", email, role, status, "inviterId", "expiresAt", "createdAt")
|
|
4408
4408
|
values
|
|
4409
4409
|
(${O}, ${X.id}, ${G}, 'user', 'pending', ${w.userId}, now() + interval '7 days', now())
|
|
4410
|
-
`.execute(W)}let j=`${F}/auth/accept-invitation?invitationId=${encodeURIComponent(O)}&redirectTo=${encodeURIComponent(H)}`;return Z.json({invitee_status:B?"existing":"new",accept_url:j,redirect_url:U,org_name:X.name,org_slug:K})}),$};var WL8=L(()=>{q8();K8();H9();w2();kG5=JL8.object({invitee_email:JL8.string().trim().email().max(320)})});import{z as m5}from"zod";function SG5($){return{repository_id:$.id,provider:$.provider,host:$.host,path:$.path,default_branch:$.defaultBranch,web_url:$.webUrl}}function _G5($){return{number:$.number,title:$.title,url:$.url,state:$.state,author:{login:$.author.login,is_bot:$.author.isBot},created_at:$.createdAt,updated_at:$.updatedAt,merged_at:$.mergedAt,closed_at:$.closedAt,base:$.base,head:$.head,additions:$.additions,deletions:$.deletions,commits:$.commits}}async function uG5($,Z,Q){if(!Q)return null;let Y=await $.storage.repositories.findByRef(Z,{host:Q.host,path:Q.path});return Y?.provider===Q.provider?Y:null}async function lG5($,Z){if(!Z.accountId)return{usable:!1,reason:"no_account"};let Q=await $.storage.gitProviderAccounts.get(Z.accountId,Z.organizationId);if(!Q)return{usable:!1,reason:"no_account"};if(Q.status!=="active")return{usable:!1,reason:"account_revoked"};if(!x40(Q))return{usable:!1,reason:UD0()[Q.type].configured?"account_revoked":"provider_unconfigured"};try{return await oN($,Q).getRepo(mL(Z))?{usable:!0,reason:"ok"}:{usable:!1,reason:"not_found"}}catch(Y){if(Y instanceof b0&&Y.isAuthFailure)return{usable:!1,reason:"auth_failed"};throw Y}}var vG5,bG5,xG5,fG5,yG5,gG5,hG5,KL8=($={})=>{let Z=$.insightsClientFor??HD0,Q=new Z1,Y=(K)=>{let H=AH(K.req.header("authorization"));if(!H||!rB(H))return{ok:!1,response:K.json({error:"Unauthorized"},401)};let F=K.get("studioContext"),U=F.organization?.id;if(!U)return{ok:!1,response:K.json({error:"Organization context required"},403)};return{ok:!0,ctx:F,organizationId:U}},X=(K)=>{console.log("[internal-repositories]",{route:K.route,org:K.org,repository_id:K.repositoryId,provider:K.provider,status:K.status,ms:Date.now()-K.startedAt})},J=async(K,H,F)=>{let U=(N,B)=>{return X({route:H.route,org:H.org,repositoryId:H.repository.id,provider:H.repository.provider,status:N,startedAt:H.startedAt}),K.header("Cache-Control","no-store"),K.json(B,N)};try{return U(200,await F())}catch(N){if(N instanceof b0&&N.isRateLimited){let B=Math.max(1,Math.ceil((N.retryAfterMs??60000)/1000));return K.header("Retry-After",String(B)),U(429,{error:"provider_rate_limited",provider_status:N.status})}if(N instanceof b0&&N.isAuthFailure)return U(502,{error:"provider_auth_failed",provider_status:N.status});return console.error("[internal-repositories] provider read failed",N),U(502,{error:"provider_error",provider_status:N instanceof b0?N.status:null})}},G=async(K,H,F)=>K.storage.repositories.get(F,H);Q.post("/internal/repositories/resolve",async(K)=>{let H=Date.now(),F=Y(K);if(!F.ok)return F.response;let{ctx:U,organizationId:N}=F,B=bG5.safeParse(await K.req.json().catch(()=>null));if(!B.success)return K.json({error:"Invalid body",issues:B.error.issues},422);let D=B.data.repository_id?await G(U,N,B.data.repository_id):await uG5(U,N,B.data.ref);if(!D)return X({route:"resolve",org:N,repositoryId:B.data.repository_id??null,provider:B.data.ref?.provider??null,status:404,startedAt:H}),K.json({error:"repository_not_found"},404);return J(K,{route:"resolve",org:N,repository:D,startedAt:H},async()=>({repository:SG5(D),...await lG5(U,D)}))});let W=(K,H,F)=>{Q.post(`/internal/repositories/:id/${K}`,async(U)=>{let N=Date.now(),B=await Y(U);if(!B.ok)return B.response;let{ctx:D,organizationId:O}=B,j=await G(D,O,U.req.param("id"));if(!j)return X({route:K,org:O,repositoryId:U.req.param("id"),provider:null,status:404,startedAt:N}),U.json({error:"repository_not_found"},404);let w=H.safeParse(await U.req.json().catch(()=>null));if(!w.success)return X({route:K,org:O,repositoryId:j.id,provider:j.provider,status:422,startedAt:N}),U.json({error:"Invalid body",issues:w.error.issues},422);return J(U,{route:K,org:O,repository:j,startedAt:N},async()=>F(await Z(D,j),w.data))})};return W("tree",xG5,async(K,H)=>{let F=await K.listTree({ref:H.ref,maxEntries:Q7(H.max_entries,TP,lL)});return{ref:F.ref,entries:F.entries,truncated:F.truncated}}),W("file",fG5,async(K,H)=>{let F=await K.readFile({path:H.path,ref:H.ref,maxBytes:Q7(H.max_bytes,qP,cL)});return{content:F.content,size:F.size,truncated:F.truncated}}),W("search",yG5,async(K,H)=>{let F=await K.searchCode({query:H.query,limit:H.limit});return{supported:F.supported,incomplete:F.incomplete,hits:F.hits}}),W("change-requests",gG5,async(K,H)=>{let F=await K.listChangeRequests({state:H.state,updatedAfter:H.updated_after,cursor:H.cursor,limit:H.limit,includeCommits:H.include_commits,includeStats:H.include_stats});return{items:F.items.map(_G5),next_cursor:F.nextCursor}}),W("commits",hG5,async(K,H)=>{let F=await K.listCommits({ref:H.ref,since:H.since,cursor:H.cursor,limit:H.limit});return{items:F.items,next_cursor:F.nextCursor}}),Q};var HL8=L(()=>{K8();T5();Gp();w2();vG5=m5.object({provider:m5.enum(["github","gitlab","bitbucket"]),host:m5.string().min(1).max(255),path:m5.string().min(1).max(400)}),bG5=m5.object({repository_id:m5.string().min(1).max(200).optional(),ref:vG5.optional()}).refine(($)=>$.repository_id!==void 0||$.ref!==void 0,{message:"one of repository_id or ref is required"}),xG5=m5.object({ref:m5.string().min(1).max(255).optional(),max_entries:m5.number().int().positive().max(lL).optional()}),fG5=m5.object({path:m5.string().min(1).max(1000),ref:m5.string().min(1).max(255).optional(),max_bytes:m5.number().int().positive().max(cL).optional()}),yG5=m5.object({query:m5.string().min(1).max(500),limit:m5.number().int().positive().max(RP).optional()}),gG5=m5.object({state:m5.enum(["merged","open","all"]),updated_after:m5.string().min(1).max(64).optional(),cursor:m5.string().min(1).max(500).optional(),limit:m5.number().int().positive().max(MP).optional(),include_commits:m5.boolean().optional(),include_stats:m5.boolean().optional()}),hG5=m5.object({ref:m5.string().min(1).max(255).optional(),since:m5.string().min(1).max(64),cursor:m5.string().min(1).max(500).optional(),limit:m5.number().int().positive().max(r3).optional()})});import{z as wA1}from"zod";function cG5($){let Z=process.env.ORGANIZATION_NOTICES_API_KEY;return!!Z&&p70($,Z)}async function UL8($,Z){let Q=AH($.req.header("authorization"));if(!Q||!cG5(Q))return $.json({error:"Unauthorized"},401);return Z()}function ay0($,Z){console.log("organization_notice_service_action",{action:$,...Z})}var lu="decommand_ar",ry0="service:decommand-center",FL8="/api/_organization-notices",mG5,NL8=()=>{let $=new Z1;return $.use("/internal/organization-notices",UL8),$.get("/internal/organization-notices",async(Z)=>{let Q=Z.get("studioContext"),Y=Q.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let X=await new f3(Q.db).getActive(Y);return Z.json({notice:X})}),$.put("/internal/organization-notices",async(Z)=>{let Q=af0.safeParse(await Z.req.json().catch(()=>null));if(!Q.success)return Z.json({error:"Invalid notice",issues:Q.error.issues},400);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=new f3(Y.db),G=await J.setActiveForSource({organizationId:X,notice:Q.data,source:lu,by:ry0});if(!G){let W=await J.getActive(X);return ay0("refused",{organization_id:X,requested_severity:Q.data.severity,active_source:W?.source??null,reason:"active_notice_owned_by_another_source"}),Z.json({error:"An active notice from another source must be cleared by a deployment admin",notice:W},409)}return od(X),ay0("set",{organization_id:X,severity:G.severity,source:lu}),c1.capture({distinctId:ry0,event:"organization_notice_service_set",groups:{organization:X},properties:{organization_id:X,severity:G.severity,source:lu}}),Z.json({notice:G})}),$.delete("/internal/organization-notices",async(Z)=>{let Q=Z.get("studioContext"),Y=Q.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let X=new f3(Q.db),J=await X.getActive(Y);if(!J)return Z.json({error:"No active notice for this organization"},404);if(J.source!==lu)return ay0("refused",{organization_id:Y,active_source:J.source,reason:"active_notice_owned_by_another_source"}),Z.json({error:"This notice belongs to another source and cannot be resolved by this service",notice:J},409);if(!await X.resolveActiveForSource({organizationId:Y,source:lu,by:ry0}))return Z.json({error:"The active notice changed before it could be resolved"},409);return od(Y),ay0("resolve",{organization_id:Y,source:lu}),c1.capture({distinctId:ry0,event:"organization_notice_service_resolved",groups:{organization:Y},properties:{organization_id:Y,source:lu}}),Z.json({ok:!0})}),$},BL8=()=>{let $=new Z1;return $.use("*",UL8),$.post("/site-organizations",async(Z)=>{let Q=mG5.safeParse(await Z.req.json().catch(()=>null));if(!Q.success)return Z.json({error:"Invalid site list",issues:Q.error.issues},400);let Y=Z.get("studioContext"),J=(await Y.db.selectFrom("org_sites").innerJoin("organization","organization.id","org_sites.organization_id").select(["org_sites.slug as siteSlug","organization.id as organizationId","organization.slug as organizationSlug","organization.name as organizationName","organization.metadata as organizationMetadata"]).where("org_sites.slug","in",Q.data.siteSlugs).execute()).filter((W)=>W.organizationSlug&&!u9({metadata:W.organizationMetadata})),G=await new f3(Y.db).getActiveForOrgs(J.map((W)=>W.organizationId));return Z.json({sites:J.map((W)=>({siteSlug:W.siteSlug,organizationId:W.organizationId,organizationSlug:W.organizationSlug,organizationName:W.organizationName,notice:G.get(W.organizationId)??null}))})}),$};var EA1=L(()=>{K8();Tz1();eY();Zq();Q6();$U0();w2();mG5=wA1.object({siteSlugs:wA1.array(wA1.string().trim().toLowerCase()).min(1).max(500).transform(($)=>[...new Set($)]).refine(($)=>$.every(_5),{message:"Every site slug must be a valid Studio site slug"})})});import{z as fW}from"zod";function ey0($){return $.trim().replace(/\s+/g," ").toLowerCase()}async function dG5($,Z,Q,Y,X){let J=[];if(Q.forEach((G,W)=>{if(G.externalKey&&X.has(G.externalKey))return;if(Y.has(ey0(G.title)))return;J.push({index:W,title:G.title,description:G.description})}),J.length===0)return{matches:new Map,dismissedIds:new Set};try{let G=(await $.storage.taskBoard.listDismissed(Z)).filter(m7);return{matches:await _Z8($,Z,J,G),dismissedIds:new Set(G.map((W)=>W.id))}}catch(G){return console.warn("[task-board-import] semantic dedup skipped",G),{matches:new Map,dismissedIds:new Set}}}var iG5,DL8=()=>{let $=new Z1;return $.post("/internal/task-board/import",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=iG5.safeParse(await Z.req.json().catch(()=>null));if(!J.success)return Z.json({error:"Invalid body",issues:J.error.issues},400);let W=(await Y.storage.organizationSettings.get(X))?.flags?.auto_assign_report_tasks_to_super_agent??!1,K=J.data.items.map((T)=>!T.assigneeId&&W?{...T,assigneeId:o$}:T);for(let T of K){if(!T.assigneeId||T.assigneeId===o$)continue;if(!await Y.db.selectFrom("member").select(["id"]).where("organizationId","=",X).where("userId","=",T.assigneeId).executeTakeFirst())return Z.json({error:`assignee is not a member: ${T.assigneeId}`},400)}let H=[...new Set(K.flatMap((T)=>T.repositoryId??[]))];if(H.length>0){let T=await Y.db.selectFrom("repositories").select(["id"]).where("organization_id","=",X).where("id","in",H).execute(),z=new Set(T.map((R)=>R.id)),A=H.find((R)=>!z.has(R));if(A)return Z.json({error:`invalid_repository: ${A}`},400)}let F=null;if(K.some((T)=>T.assigneeId===o$))F=(await Y.db.selectFrom("member").select(["userId"]).where("organizationId","=",X).where("role","=","owner").orderBy("createdAt","asc").executeTakeFirst())?.userId??null;let U=new Set((await Y.storage.taskBoard.list(X)).filter((T)=>T.status!=="done").map((T)=>ey0(T.title))),N=await Y.storage.taskBoard.heldFindingKeys(X,K.flatMap((T)=>T.externalKey??[])),{matches:B,dismissedIds:D}=await dG5(Y,X,K,U,N),O=J.data.source?.run_id,j=await Y.db.transaction().execute(async(T)=>{if(O){if(((await T.insertInto("task_board_import_runs").values({organization_id:X,run_id:O}).onConflict((o)=>o.columns(["organization_id","run_id"]).doNothing()).executeTakeFirst()).numInsertedOrUpdatedRows??0n)===0n)return null}let z=K.flatMap((U0)=>U0.externalKey??[]),A=new Map,R=new Map;if(z.length>0){let U0=await T.selectFrom("task_board_items").select(["id","key_seq","external_key","status","dismissed_at"]).where("organization_id","=",X).where("external_key","in",z).where((o)=>o.or([o("dismissed_at","is not",null),o("status","!=","done")])).execute();for(let o of U0){if(!o.external_key)continue;if(o.dismissed_at)R.set(o.external_key,{id:o.id,key_seq:o.key_seq});else if(o.status!=="done")A.set(o.external_key,o.id)}}let f=(U0)=>U0!==void 0&&(A.has(U0)||R.has(U0)),S=new Map,V=new Map;if(K.some((U0)=>!f(U0.externalKey))){let U0=await T.selectFrom("task_board_items").select(["id","key_seq","title","status","dismissed_at"]).where("organization_id","=",X).where((o)=>o.or([o("dismissed_at","is not",null),o("status","!=","done")])).execute();for(let o of U0){let t=ey0(o.title);if(o.dismissed_at)V.set(t,{id:o.id,key_seq:o.key_seq});else if(o.status!=="done"&&!S.has(t))S.set(t,o.id)}}let v=new Map,b=[...new Set(K.flatMap((U0)=>U0.tags??[]).map((U0)=>U0.trim()))].filter(Boolean);if(b.length>0){let U0=new V00(T),o=await U0.listOrgTags(X);for(let r of o)v.set(r.name.toLowerCase(),r.id);let t=o.length;for(let r of b){if(v.has(r.toLowerCase()))continue;let $0=await U0.createTag(X,r,IF0(t++));v.set($0.name.toLowerCase(),$0.id)}}let h=(U0)=>[...new Set((U0??[]).flatMap((o)=>v.get(o.trim().toLowerCase())??[]))],l=new jW(T),d=async(U0,o)=>{let t=h(o);if(t.length===0)return U0;return await l.addItemTags(U0.id,t,"system"),await l.getById(U0.id,X)??U0},W0=[],I0=[],J0=[];for(let[U0,o]of K.entries()){let t=ey0(o.title),r=o.externalKey,$0=f(r),X0=r!==void 0&&!$0?r:void 0,h0=$0?R.get(r):V.get(t);if(h0){if(X0)await l.adoptExternalKey(h0.id,X,X0),R.set(X0,h0);J0.push({index:U0,outcome:"dismissed",...h0});continue}let C0=$0?A.get(r):S.get(t);if(C0){if(X0)await l.adoptExternalKey(C0,X,X0),A.set(X0,C0);let o0=await l.update(C0,X,{description:o.description??null,priority:o.priority,...o.repositoryId!==void 0?{repositoryId:o.repositoryId}:{}},"system");W0.push(await d(o0,o.tags)),J0.push({index:U0,outcome:"updated",id:o0.id,key_seq:o0.keySeq});continue}let H1=$0?void 0:B.get(U0),c0=H1&&"draft"in H1?J0.find((o0)=>o0.index===H1.draft):void 0;if(c0?.outcome==="dismissed"){J0.push({...c0,index:U0});continue}if(H1&&"item"in H1&&D.has(H1.item.id)){if(X0)await l.adoptExternalKey(H1.item.id,X,X0),R.set(X0,{id:H1.item.id,key_seq:H1.item.keySeq});J0.push({index:U0,outcome:"dismissed",id:H1.item.id,key_seq:H1.item.keySeq});continue}let j0=H1&&"item"in H1?H1.item:c0&&await l.getById(c0.id,X);if(H1&&j0){let o0="item"in H1&&m7(j0)?await l.update(j0.id,X,{description:o.description??null,priority:o.priority,...o.repositoryId!==void 0?{repositoryId:o.repositoryId}:{}},"system"):j0;if(await l.recordActivity({taskBoardItemId:j0.id,action:"duplicate_reported",actorId:null,data:{title:o.title,reason:H1.reason}}),X0)await l.adoptExternalKey(j0.id,X,X0),A.set(X0,j0.id);S.set(t,j0.id),W0.push(await d(o0,o.tags)),J0.push({index:U0,outcome:"semantic_match",id:o0.id,key_seq:o0.keySeq});continue}let E0=o.assigneeId===o$,n0=await l.create({organizationId:X,title:o.title,description:o.description??null,status:E0?K1.progress:void 0,priority:o.priority,assigneeId:o.assigneeId??null,assignedBy:E0?F:o.assigneeId?"system":null,externalKey:o.externalKey??null,repositoryId:o.repositoryId??null,by:"system"});if(r)A.set(r,n0.id);S.set(t,n0.id),W0.push(await d(n0,o.tags));let O1={index:U0,outcome:"created",id:n0.id,key_seq:n0.keySeq};if(J0.push(O1),E0)I0.push({row:n0,result:O1})}return{touched:W0,delegations:I0,results:J0}});if(!j)return Z.json({created:0,updated:0,delegated:0,deduped:!0});for(let T of j.touched)H8(X,T);let w=0;for(let{row:T,result:z}of j.delegations)try{await tz(Y,T),w++}catch(A){if(!(A instanceof qX))throw A;z.outcome="quota_blocked",await new jW(Y.db).update(T.id,X,{assigneeId:null},"system").then((R)=>H8(X,R)).catch((R)=>{console.error("[task-board-import] un-delegate failed",R)})}let E=(...T)=>j.results.filter((z)=>T.includes(z.outcome)).length,P={created:E("created","quota_blocked"),updated:E("updated","semantic_match"),dismissed:E("dismissed"),semanticMatches:E("semantic_match"),quotaBlocked:E("quota_blocked")};return c7({event:"task_board_import_landed",organizationId:X,properties:{created:P.created,updated:P.updated,skipped:P.dismissed,semantic_matches:P.semanticMatches,delegated:w,quota_blocked:P.quotaBlocked,...O?{run_id:O}:{},...J.data.source?.url?{source_url:J.data.source.url}:{}}}),Z.json({created:P.created,updated:P.updated,delegated:w,...P.dismissed>0&&{dismissed:P.dismissed},...P.semanticMatches>0&&{semantic_matches:P.semanticMatches},...P.quotaBlocked>0&&{quota_blocked:P.quotaBlocked},items:j.results})}),$};var LL8=L(()=>{WW();K8();v8();XO1();Q6();P01();CO();vO();c5();LW();w2();iG5=fW.object({items:fW.array(fW.object({title:fW.string().min(1).max(500),description:fW.string().max(4000).nullable().optional(),priority:kh.optional(),assigneeId:fW.string().nullable().optional(),externalKey:fW.string().min(1).max(200).optional(),tags:fW.array(fW.string().min(1).max(50)).max(8).optional(),repositoryId:fW.string().min(1).max(200).optional()})).min(1).max(100),source:fW.object({url:fW.string().max(500),run_id:fW.string().max(200).optional()}).optional()})});import{z as cu}from"zod";var pG5,OL8=()=>{let $=new Z1;return $.post("/internal/task-board/resolve",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=pG5.safeParse(await Z.req.json().catch(()=>null));if(!J.success)return Z.json({error:"Invalid body",issues:J.error.issues},400);let{items:G,source:W}=J.data,K=new Map,H={closed:0,noted:0,skipped:0,not_found:0},F=0,U=[];for(let{id:N}of G){let B=K.get(N);if(!B){let D=await Y.storage.taskBoard.resolveFinding({id:N,organizationId:X,url:W.url,runId:W.run_id});if(B=D.outcome,K.set(N,B),H[B]++,D.replayed)F++;if(D.item)H8(X,D.item)}U.push({id:N,outcome:B})}if(K.size>0)c7({event:"task_board_resolve_landed",organizationId:X,properties:{...H,replayed:F,run_id:W.run_id,source_url:W.url}});return Z.json({items:U})}),$};var jL8=L(()=>{K8();Q6();c5();w2();pG5=cu.object({items:cu.array(cu.object({id:cu.string().min(1).max(200)})).max(100),source:cu.object({url:cu.string().min(1).max(500),run_id:cu.string().min(1).max(200)})})});function OQ0($){if(!$.auth?.user?.id&&!$.auth?.apiKey?.id)throw new R1(401,{message:"Unauthorized"});if(!$.organization?.id)throw new R1(400,{message:"Organization required"});if(!$.objectStorage)throw new R1(503,{message:"Object storage not configured"});return $.objectStorage}function jQ0($,Z){let Q=$.indexOf(Z),Y=Q>=0?$.slice(Q+Z.length):"",X=A3(Y);if(!X)throw new R1(400,{message:"Missing object key"});return X}function EL8($){if($===null||typeof $!=="object")return{expiresIn:wL8};let Z=$;return{expiresIn:iO(typeof Z.expiresIn==="number"?Z.expiresIn:void 0,wL8),...typeof Z.contentType==="string"?{contentType:Z.contentType}:{}}}function nG5($){return $.buffer instanceof ArrayBuffer?$.buffer.slice($.byteOffset,$.byteOffset+$.byteLength):Uint8Array.from($).buffer}var wL8=3600,PL8=()=>{let $=new Z1;return $.onError((Z,Q)=>{if(Z instanceof R1)return Q.json({error:Z.message},Z.status);throw Z}),$.post("/object-storage/presigned-get/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/presigned-get/"),X=EL8(await Z.req.json().catch(()=>({}))),J=await Q.presignedGetUrl(Y,X.expiresIn);return Z.json({url:J,expiresIn:X.expiresIn})}),$.post("/object-storage/presigned-put/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/presigned-put/"),X=EL8(await Z.req.json().catch(()=>({}))),J=await Q.presignedPutUrl(Y,X.expiresIn,X.contentType);return Z.json({url:J,expiresIn:X.expiresIn})}),$.put("/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),X=new Uint8Array(await Z.req.arrayBuffer()),J=await Q.put(Y,X,{contentType:Z.req.header("content-type")??x7(Y)});return Z.json(J)}),$.get("/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),[X,J]=await Promise.all([Q.head(Y),Q.getBytes(Y)]);return Z.body(nG5(J),200,{"Content-Type":X.contentType,"Content-Length":String(X.size),...X.etag?{ETag:X.etag}:{},...X.lastModified?{"Last-Modified":X.lastModified.toUTCString()}:{}})}),$.on("HEAD","/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),X=await Q.head(Y);return Z.body(null,200,{"Content-Type":X.contentType,"Content-Length":String(X.size),...X.etag?{ETag:X.etag}:{},...X.lastModified?{"Last-Modified":X.lastModified.toUTCString()}:{}})}),$};var zL8=L(()=>{K8();BG();iH();pO()});var $g0=()=>{let $=new Z1;return $.get("/threads/:threadId/outputs",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth?.user?.id)throw new R1(401,{message:"Unauthorized"});let X=Q.organization?.slug;if(!X)throw new R1(400,{message:"Organization required"});let J=Z.req.param("threadId");if(!J||!/^[A-Za-z0-9_-]+$/.test(J))throw new R1(400,{message:"Invalid thread ID"});if(!await Q.storage.threads.get(J))throw new R1(404,{message:"Thread not found"});let W=Q.organization?.id,K=W?await Q.storage.orgFsEntries.listSubtreeFiles(W,"outputs",J).catch(()=>[]):[];return Z.json({objects:K.map((H)=>({key:`org-fs:outputs/${H.path}`,filename:H.path.split("/").pop()??H.path,size:H.size,uploadedAt:H.updatedAt,downloadUrl:`${Q.baseUrl}/api/${encodeURIComponent(X)}/fs/outputs/read?path=${encodeURIComponent(H.path)}`}))})}),$};var PA1=L(()=>{K8();BG()});import{z as tG5}from"zod";var AL8=($)=>{if(!$||typeof $!=="object")return;try{return tG5.toJSONSchema($)}catch{return}},TL8=()=>{let $=new Z1;return $.get("/",(Z)=>{let Q=[...Mo.values()].map((Y)=>{let{config:X}=N70(Y);return{name:Y.name,description:X.description,inputSchema:AL8(X.inputSchema),outputSchema:AL8(X.outputSchema),annotations:X.annotations,_meta:X._meta}});return Z.json({tools:Q})}),$.post("/:toolName",async(Z)=>{let Q=Z.get("studioContext"),Y=Z.req.param("toolName"),X=Ff0(Y);if(!X)return Z.json({error:`Unknown tool: ${Y}`},404);let J;try{let W=await Z.req.text();J=W?JSON.parse(W):{}}catch{return Z.json({error:"Request body must be valid JSON"},400)}let G=X.inputSchema.safeParse(J);if(!G.success)return Z.json({error:"Invalid input",issues:G.error.issues},400);try{let W=await X.execute(G.data,Q);return Z.json(W??{})}catch(W){if(W instanceof XE)return Z.json({error:W.message},401);if(W instanceof e10)return Z.json({error:W.message,code:W.code},403);if(W instanceof c6){let H=W.code;return Z.json(typeof H==="string"?{error:W.message,code:H}:{error:W.message},403)}if(W instanceof pF0)return Z.json({error:W.message,...W.code?{code:W.code}:{}},W.status===503?503:403);let K=W instanceof Error?W.message:"Tool failed";return Z.json({error:K},500)}}),$};var qL8=L(()=>{K8();XX();dd();Zq();hL();Ix0()});import{z as wQ0}from"zod";function Zg0($){let Z=new Z1;return Z.post("/trigger-callback",C6({maxSize:sG5,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Q.req.header("authorization");if(!Y?.startsWith("Bearer "))return Q.json({error:"Missing or invalid Authorization header"},401);let X=Y.slice(7),J=await $.tokenStorage.validateToken(X);if(!J)return Q.json({error:"Invalid callback token"},401);let G=Q.get("studioContext")?.organization?.id;if(G&&G!==J.organizationId)return Q.json({error:"Invalid callback token"},401);Q.set("deprecatedRouteAttribution",{organizationId:J.organizationId,connectionId:J.connectionId});let W=oG5.safeParse(await Q.req.json().catch(()=>null));if(!W.success)return Q.json({error:"Invalid body",details:W.error.issues},400);let{type:K,data:H}=W.data;return $.automationEventDispatcher.dispatchForEvents([{source:J.connectionId,type:K,data:H??{},organizationId:J.organizationId}]),Q.json({ok:!0,type:K},202)}),Z}var oG5,sG5=1048576;var zA1=L(()=>{K8();Q3();oG5=wQ0.object({type:wQ0.string().min(1),data:wQ0.record(wQ0.string(),wQ0.unknown()).optional()})});var AA1=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor($,Z){this.writable=$,this.writer=$.getWriter(),this.encoder=new TextEncoder;let Q=Z.getReader();this.abortSubscribers.push(async()=>{await Q.cancel()}),this.responseReadable=new ReadableStream({async pull(Y){let{done:X,value:J}=await Q.read();X?Y.close():Y.enqueue(J)},cancel:()=>{this.abort()}})}async write($){try{if(typeof $==="string")$=this.encoder.encode($);await this.writer.write($)}catch{}return this}async writeln($){return await this.write($+`
|
|
4410
|
+
`.execute(W)}let j=`${F}/auth/accept-invitation?invitationId=${encodeURIComponent(O)}&redirectTo=${encodeURIComponent(H)}`;return Z.json({invitee_status:B?"existing":"new",accept_url:j,redirect_url:U,org_name:X.name,org_slug:K})}),$};var WL8=L(()=>{q8();K8();H9();w2();kG5=JL8.object({invitee_email:JL8.string().trim().email().max(320)})});import{z as m5}from"zod";function SG5($){return{repository_id:$.id,provider:$.provider,host:$.host,path:$.path,default_branch:$.defaultBranch,web_url:$.webUrl}}function _G5($){return{number:$.number,title:$.title,url:$.url,state:$.state,author:{login:$.author.login,is_bot:$.author.isBot},created_at:$.createdAt,updated_at:$.updatedAt,merged_at:$.mergedAt,closed_at:$.closedAt,base:$.base,head:$.head,additions:$.additions,deletions:$.deletions,commits:$.commits}}async function uG5($,Z,Q){if(!Q)return null;let Y=await $.storage.repositories.findByRef(Z,{host:Q.host,path:Q.path});return Y?.provider===Q.provider?Y:null}async function lG5($,Z){if(!Z.accountId)return{usable:!1,reason:"no_account"};let Q=await $.storage.gitProviderAccounts.get(Z.accountId,Z.organizationId);if(!Q)return{usable:!1,reason:"no_account"};if(Q.status!=="active")return{usable:!1,reason:"account_revoked"};if(!x40(Q))return{usable:!1,reason:UD0()[Q.type].configured?"account_revoked":"provider_unconfigured"};try{return await oN($,Q).getRepo(mL(Z))?{usable:!0,reason:"ok"}:{usable:!1,reason:"not_found"}}catch(Y){if(Y instanceof v0&&Y.isAuthFailure)return{usable:!1,reason:"auth_failed"};throw Y}}var vG5,bG5,xG5,fG5,yG5,gG5,hG5,KL8=($={})=>{let Z=$.insightsClientFor??HD0,Q=new Z1,Y=(K)=>{let H=AH(K.req.header("authorization"));if(!H||!rB(H))return{ok:!1,response:K.json({error:"Unauthorized"},401)};let F=K.get("studioContext"),U=F.organization?.id;if(!U)return{ok:!1,response:K.json({error:"Organization context required"},403)};return{ok:!0,ctx:F,organizationId:U}},X=(K)=>{console.log("[internal-repositories]",{route:K.route,org:K.org,repository_id:K.repositoryId,provider:K.provider,status:K.status,ms:Date.now()-K.startedAt})},J=async(K,H,F)=>{let U=(N,B)=>{return X({route:H.route,org:H.org,repositoryId:H.repository.id,provider:H.repository.provider,status:N,startedAt:H.startedAt}),K.header("Cache-Control","no-store"),K.json(B,N)};try{return U(200,await F())}catch(N){if(N instanceof v0&&N.isRateLimited){let B=Math.max(1,Math.ceil((N.retryAfterMs??60000)/1000));return K.header("Retry-After",String(B)),U(429,{error:"provider_rate_limited",provider_status:N.status})}if(N instanceof v0&&N.isAuthFailure)return U(502,{error:"provider_auth_failed",provider_status:N.status});return console.error("[internal-repositories] provider read failed",N),U(502,{error:"provider_error",provider_status:N instanceof v0?N.status:null})}},G=async(K,H,F)=>K.storage.repositories.get(F,H);Q.post("/internal/repositories/resolve",async(K)=>{let H=Date.now(),F=Y(K);if(!F.ok)return F.response;let{ctx:U,organizationId:N}=F,B=bG5.safeParse(await K.req.json().catch(()=>null));if(!B.success)return K.json({error:"Invalid body",issues:B.error.issues},422);let D=B.data.repository_id?await G(U,N,B.data.repository_id):await uG5(U,N,B.data.ref);if(!D)return X({route:"resolve",org:N,repositoryId:B.data.repository_id??null,provider:B.data.ref?.provider??null,status:404,startedAt:H}),K.json({error:"repository_not_found"},404);return J(K,{route:"resolve",org:N,repository:D,startedAt:H},async()=>({repository:SG5(D),...await lG5(U,D)}))});let W=(K,H,F)=>{Q.post(`/internal/repositories/:id/${K}`,async(U)=>{let N=Date.now(),B=await Y(U);if(!B.ok)return B.response;let{ctx:D,organizationId:O}=B,j=await G(D,O,U.req.param("id"));if(!j)return X({route:K,org:O,repositoryId:U.req.param("id"),provider:null,status:404,startedAt:N}),U.json({error:"repository_not_found"},404);let w=H.safeParse(await U.req.json().catch(()=>null));if(!w.success)return X({route:K,org:O,repositoryId:j.id,provider:j.provider,status:422,startedAt:N}),U.json({error:"Invalid body",issues:w.error.issues},422);return J(U,{route:K,org:O,repository:j,startedAt:N},async()=>F(await Z(D,j),w.data))})};return W("tree",xG5,async(K,H)=>{let F=await K.listTree({ref:H.ref,maxEntries:Q7(H.max_entries,TP,lL)});return{ref:F.ref,entries:F.entries,truncated:F.truncated}}),W("file",fG5,async(K,H)=>{let F=await K.readFile({path:H.path,ref:H.ref,maxBytes:Q7(H.max_bytes,qP,cL)});return{content:F.content,size:F.size,truncated:F.truncated}}),W("search",yG5,async(K,H)=>{let F=await K.searchCode({query:H.query,limit:H.limit});return{supported:F.supported,incomplete:F.incomplete,hits:F.hits}}),W("change-requests",gG5,async(K,H)=>{let F=await K.listChangeRequests({state:H.state,updatedAfter:H.updated_after,cursor:H.cursor,limit:H.limit,includeCommits:H.include_commits,includeStats:H.include_stats});return{items:F.items.map(_G5),next_cursor:F.nextCursor}}),W("commits",hG5,async(K,H)=>{let F=await K.listCommits({ref:H.ref,since:H.since,cursor:H.cursor,limit:H.limit});return{items:F.items,next_cursor:F.nextCursor}}),Q};var HL8=L(()=>{K8();T5();Gp();w2();vG5=m5.object({provider:m5.enum(["github","gitlab","bitbucket"]),host:m5.string().min(1).max(255),path:m5.string().min(1).max(400)}),bG5=m5.object({repository_id:m5.string().min(1).max(200).optional(),ref:vG5.optional()}).refine(($)=>$.repository_id!==void 0||$.ref!==void 0,{message:"one of repository_id or ref is required"}),xG5=m5.object({ref:m5.string().min(1).max(255).optional(),max_entries:m5.number().int().positive().max(lL).optional()}),fG5=m5.object({path:m5.string().min(1).max(1000),ref:m5.string().min(1).max(255).optional(),max_bytes:m5.number().int().positive().max(cL).optional()}),yG5=m5.object({query:m5.string().min(1).max(500),limit:m5.number().int().positive().max(RP).optional()}),gG5=m5.object({state:m5.enum(["merged","open","all"]),updated_after:m5.string().min(1).max(64).optional(),cursor:m5.string().min(1).max(500).optional(),limit:m5.number().int().positive().max(MP).optional(),include_commits:m5.boolean().optional(),include_stats:m5.boolean().optional()}),hG5=m5.object({ref:m5.string().min(1).max(255).optional(),since:m5.string().min(1).max(64),cursor:m5.string().min(1).max(500).optional(),limit:m5.number().int().positive().max(r3).optional()})});import{z as wA1}from"zod";function cG5($){let Z=process.env.ORGANIZATION_NOTICES_API_KEY;return!!Z&&p70($,Z)}async function UL8($,Z){let Q=AH($.req.header("authorization"));if(!Q||!cG5(Q))return $.json({error:"Unauthorized"},401);return Z()}function ay0($,Z){console.log("organization_notice_service_action",{action:$,...Z})}var lu="decommand_ar",ry0="service:decommand-center",FL8="/api/_organization-notices",mG5,NL8=()=>{let $=new Z1;return $.use("/internal/organization-notices",UL8),$.get("/internal/organization-notices",async(Z)=>{let Q=Z.get("studioContext"),Y=Q.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let X=await new f3(Q.db).getActive(Y);return Z.json({notice:X})}),$.put("/internal/organization-notices",async(Z)=>{let Q=af0.safeParse(await Z.req.json().catch(()=>null));if(!Q.success)return Z.json({error:"Invalid notice",issues:Q.error.issues},400);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=new f3(Y.db),G=await J.setActiveForSource({organizationId:X,notice:Q.data,source:lu,by:ry0});if(!G){let W=await J.getActive(X);return ay0("refused",{organization_id:X,requested_severity:Q.data.severity,active_source:W?.source??null,reason:"active_notice_owned_by_another_source"}),Z.json({error:"An active notice from another source must be cleared by a deployment admin",notice:W},409)}return od(X),ay0("set",{organization_id:X,severity:G.severity,source:lu}),c1.capture({distinctId:ry0,event:"organization_notice_service_set",groups:{organization:X},properties:{organization_id:X,severity:G.severity,source:lu}}),Z.json({notice:G})}),$.delete("/internal/organization-notices",async(Z)=>{let Q=Z.get("studioContext"),Y=Q.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let X=new f3(Q.db),J=await X.getActive(Y);if(!J)return Z.json({error:"No active notice for this organization"},404);if(J.source!==lu)return ay0("refused",{organization_id:Y,active_source:J.source,reason:"active_notice_owned_by_another_source"}),Z.json({error:"This notice belongs to another source and cannot be resolved by this service",notice:J},409);if(!await X.resolveActiveForSource({organizationId:Y,source:lu,by:ry0}))return Z.json({error:"The active notice changed before it could be resolved"},409);return od(Y),ay0("resolve",{organization_id:Y,source:lu}),c1.capture({distinctId:ry0,event:"organization_notice_service_resolved",groups:{organization:Y},properties:{organization_id:Y,source:lu}}),Z.json({ok:!0})}),$},BL8=()=>{let $=new Z1;return $.use("*",UL8),$.post("/site-organizations",async(Z)=>{let Q=mG5.safeParse(await Z.req.json().catch(()=>null));if(!Q.success)return Z.json({error:"Invalid site list",issues:Q.error.issues},400);let Y=Z.get("studioContext"),J=(await Y.db.selectFrom("org_sites").innerJoin("organization","organization.id","org_sites.organization_id").select(["org_sites.slug as siteSlug","organization.id as organizationId","organization.slug as organizationSlug","organization.name as organizationName","organization.metadata as organizationMetadata"]).where("org_sites.slug","in",Q.data.siteSlugs).execute()).filter((W)=>W.organizationSlug&&!u9({metadata:W.organizationMetadata})),G=await new f3(Y.db).getActiveForOrgs(J.map((W)=>W.organizationId));return Z.json({sites:J.map((W)=>({siteSlug:W.siteSlug,organizationId:W.organizationId,organizationSlug:W.organizationSlug,organizationName:W.organizationName,notice:G.get(W.organizationId)??null}))})}),$};var EA1=L(()=>{K8();Tz1();eY();Zq();Q6();$U0();w2();mG5=wA1.object({siteSlugs:wA1.array(wA1.string().trim().toLowerCase()).min(1).max(500).transform(($)=>[...new Set($)]).refine(($)=>$.every(_5),{message:"Every site slug must be a valid Studio site slug"})})});import{z as fW}from"zod";function ey0($){return $.trim().replace(/\s+/g," ").toLowerCase()}async function dG5($,Z,Q,Y,X){let J=[];if(Q.forEach((G,W)=>{if(G.externalKey&&X.has(G.externalKey))return;if(Y.has(ey0(G.title)))return;J.push({index:W,title:G.title,description:G.description})}),J.length===0)return{matches:new Map,dismissedIds:new Set};try{let G=(await $.storage.taskBoard.listDismissed(Z)).filter(m7);return{matches:await _Z8($,Z,J,G),dismissedIds:new Set(G.map((W)=>W.id))}}catch(G){return console.warn("[task-board-import] semantic dedup skipped",G),{matches:new Map,dismissedIds:new Set}}}var iG5,DL8=()=>{let $=new Z1;return $.post("/internal/task-board/import",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=iG5.safeParse(await Z.req.json().catch(()=>null));if(!J.success)return Z.json({error:"Invalid body",issues:J.error.issues},400);let W=(await Y.storage.organizationSettings.get(X))?.flags?.auto_assign_report_tasks_to_super_agent??!1,K=J.data.items.map((T)=>!T.assigneeId&&W?{...T,assigneeId:o$}:T);for(let T of K){if(!T.assigneeId||T.assigneeId===o$)continue;if(!await Y.db.selectFrom("member").select(["id"]).where("organizationId","=",X).where("userId","=",T.assigneeId).executeTakeFirst())return Z.json({error:`assignee is not a member: ${T.assigneeId}`},400)}let H=[...new Set(K.flatMap((T)=>T.repositoryId??[]))];if(H.length>0){let T=await Y.db.selectFrom("repositories").select(["id"]).where("organization_id","=",X).where("id","in",H).execute(),z=new Set(T.map((R)=>R.id)),A=H.find((R)=>!z.has(R));if(A)return Z.json({error:`invalid_repository: ${A}`},400)}let F=null;if(K.some((T)=>T.assigneeId===o$))F=(await Y.db.selectFrom("member").select(["userId"]).where("organizationId","=",X).where("role","=","owner").orderBy("createdAt","asc").executeTakeFirst())?.userId??null;let U=new Set((await Y.storage.taskBoard.list(X)).filter((T)=>T.status!=="done").map((T)=>ey0(T.title))),N=await Y.storage.taskBoard.heldFindingKeys(X,K.flatMap((T)=>T.externalKey??[])),{matches:B,dismissedIds:D}=await dG5(Y,X,K,U,N),O=J.data.source?.run_id,j=await Y.db.transaction().execute(async(T)=>{if(O){if(((await T.insertInto("task_board_import_runs").values({organization_id:X,run_id:O}).onConflict((o)=>o.columns(["organization_id","run_id"]).doNothing()).executeTakeFirst()).numInsertedOrUpdatedRows??0n)===0n)return null}let z=K.flatMap((U0)=>U0.externalKey??[]),A=new Map,R=new Map;if(z.length>0){let U0=await T.selectFrom("task_board_items").select(["id","key_seq","external_key","status","dismissed_at"]).where("organization_id","=",X).where("external_key","in",z).where((o)=>o.or([o("dismissed_at","is not",null),o("status","!=","done")])).execute();for(let o of U0){if(!o.external_key)continue;if(o.dismissed_at)R.set(o.external_key,{id:o.id,key_seq:o.key_seq});else if(o.status!=="done")A.set(o.external_key,o.id)}}let f=(U0)=>U0!==void 0&&(A.has(U0)||R.has(U0)),S=new Map,V=new Map;if(K.some((U0)=>!f(U0.externalKey))){let U0=await T.selectFrom("task_board_items").select(["id","key_seq","title","status","dismissed_at"]).where("organization_id","=",X).where((o)=>o.or([o("dismissed_at","is not",null),o("status","!=","done")])).execute();for(let o of U0){let t=ey0(o.title);if(o.dismissed_at)V.set(t,{id:o.id,key_seq:o.key_seq});else if(o.status!=="done"&&!S.has(t))S.set(t,o.id)}}let v=new Map,b=[...new Set(K.flatMap((U0)=>U0.tags??[]).map((U0)=>U0.trim()))].filter(Boolean);if(b.length>0){let U0=new V00(T),o=await U0.listOrgTags(X);for(let r of o)v.set(r.name.toLowerCase(),r.id);let t=o.length;for(let r of b){if(v.has(r.toLowerCase()))continue;let $0=await U0.createTag(X,r,IF0(t++));v.set($0.name.toLowerCase(),$0.id)}}let h=(U0)=>[...new Set((U0??[]).flatMap((o)=>v.get(o.trim().toLowerCase())??[]))],l=new jW(T),d=async(U0,o)=>{let t=h(o);if(t.length===0)return U0;return await l.addItemTags(U0.id,t,"system"),await l.getById(U0.id,X)??U0},W0=[],I0=[],J0=[];for(let[U0,o]of K.entries()){let t=ey0(o.title),r=o.externalKey,$0=f(r),X0=r!==void 0&&!$0?r:void 0,h0=$0?R.get(r):V.get(t);if(h0){if(X0)await l.adoptExternalKey(h0.id,X,X0),R.set(X0,h0);J0.push({index:U0,outcome:"dismissed",...h0});continue}let C0=$0?A.get(r):S.get(t);if(C0){if(X0)await l.adoptExternalKey(C0,X,X0),A.set(X0,C0);let o0=await l.update(C0,X,{description:o.description??null,priority:o.priority,...o.repositoryId!==void 0?{repositoryId:o.repositoryId}:{}},"system");W0.push(await d(o0,o.tags)),J0.push({index:U0,outcome:"updated",id:o0.id,key_seq:o0.keySeq});continue}let H1=$0?void 0:B.get(U0),c0=H1&&"draft"in H1?J0.find((o0)=>o0.index===H1.draft):void 0;if(c0?.outcome==="dismissed"){J0.push({...c0,index:U0});continue}if(H1&&"item"in H1&&D.has(H1.item.id)){if(X0)await l.adoptExternalKey(H1.item.id,X,X0),R.set(X0,{id:H1.item.id,key_seq:H1.item.keySeq});J0.push({index:U0,outcome:"dismissed",id:H1.item.id,key_seq:H1.item.keySeq});continue}let j0=H1&&"item"in H1?H1.item:c0&&await l.getById(c0.id,X);if(H1&&j0){let o0="item"in H1&&m7(j0)?await l.update(j0.id,X,{description:o.description??null,priority:o.priority,...o.repositoryId!==void 0?{repositoryId:o.repositoryId}:{}},"system"):j0;if(await l.recordActivity({taskBoardItemId:j0.id,action:"duplicate_reported",actorId:null,data:{title:o.title,reason:H1.reason}}),X0)await l.adoptExternalKey(j0.id,X,X0),A.set(X0,j0.id);S.set(t,j0.id),W0.push(await d(o0,o.tags)),J0.push({index:U0,outcome:"semantic_match",id:o0.id,key_seq:o0.keySeq});continue}let E0=o.assigneeId===o$,n0=await l.create({organizationId:X,title:o.title,description:o.description??null,status:E0?K1.progress:void 0,priority:o.priority,assigneeId:o.assigneeId??null,assignedBy:E0?F:o.assigneeId?"system":null,externalKey:o.externalKey??null,repositoryId:o.repositoryId??null,by:"system"});if(r)A.set(r,n0.id);S.set(t,n0.id),W0.push(await d(n0,o.tags));let O1={index:U0,outcome:"created",id:n0.id,key_seq:n0.keySeq};if(J0.push(O1),E0)I0.push({row:n0,result:O1})}return{touched:W0,delegations:I0,results:J0}});if(!j)return Z.json({created:0,updated:0,delegated:0,deduped:!0});for(let T of j.touched)H8(X,T);let w=0;for(let{row:T,result:z}of j.delegations)try{await tz(Y,T),w++}catch(A){if(!(A instanceof qX))throw A;z.outcome="quota_blocked",await new jW(Y.db).update(T.id,X,{assigneeId:null},"system").then((R)=>H8(X,R)).catch((R)=>{console.error("[task-board-import] un-delegate failed",R)})}let E=(...T)=>j.results.filter((z)=>T.includes(z.outcome)).length,P={created:E("created","quota_blocked"),updated:E("updated","semantic_match"),dismissed:E("dismissed"),semanticMatches:E("semantic_match"),quotaBlocked:E("quota_blocked")};return c7({event:"task_board_import_landed",organizationId:X,properties:{created:P.created,updated:P.updated,skipped:P.dismissed,semantic_matches:P.semanticMatches,delegated:w,quota_blocked:P.quotaBlocked,...O?{run_id:O}:{},...J.data.source?.url?{source_url:J.data.source.url}:{}}}),Z.json({created:P.created,updated:P.updated,delegated:w,...P.dismissed>0&&{dismissed:P.dismissed},...P.semanticMatches>0&&{semantic_matches:P.semanticMatches},...P.quotaBlocked>0&&{quota_blocked:P.quotaBlocked},items:j.results})}),$};var LL8=L(()=>{WW();K8();v8();XO1();Q6();P01();CO();vO();c5();LW();w2();iG5=fW.object({items:fW.array(fW.object({title:fW.string().min(1).max(500),description:fW.string().max(4000).nullable().optional(),priority:kh.optional(),assigneeId:fW.string().nullable().optional(),externalKey:fW.string().min(1).max(200).optional(),tags:fW.array(fW.string().min(1).max(50)).max(8).optional(),repositoryId:fW.string().min(1).max(200).optional()})).min(1).max(100),source:fW.object({url:fW.string().max(500),run_id:fW.string().max(200).optional()}).optional()})});import{z as cu}from"zod";var pG5,OL8=()=>{let $=new Z1;return $.post("/internal/task-board/resolve",async(Z)=>{let Q=AH(Z.req.header("authorization"));if(!Q||!rB(Q))return Z.json({error:"Unauthorized"},401);let Y=Z.get("studioContext"),X=Y.organization?.id;if(!X)return Z.json({error:"Organization context required"},403);let J=pG5.safeParse(await Z.req.json().catch(()=>null));if(!J.success)return Z.json({error:"Invalid body",issues:J.error.issues},400);let{items:G,source:W}=J.data,K=new Map,H={closed:0,noted:0,skipped:0,not_found:0},F=0,U=[];for(let{id:N}of G){let B=K.get(N);if(!B){let D=await Y.storage.taskBoard.resolveFinding({id:N,organizationId:X,url:W.url,runId:W.run_id});if(B=D.outcome,K.set(N,B),H[B]++,D.replayed)F++;if(D.item)H8(X,D.item)}U.push({id:N,outcome:B})}if(K.size>0)c7({event:"task_board_resolve_landed",organizationId:X,properties:{...H,replayed:F,run_id:W.run_id,source_url:W.url}});return Z.json({items:U})}),$};var jL8=L(()=>{K8();Q6();c5();w2();pG5=cu.object({items:cu.array(cu.object({id:cu.string().min(1).max(200)})).max(100),source:cu.object({url:cu.string().min(1).max(500),run_id:cu.string().min(1).max(200)})})});function OQ0($){if(!$.auth?.user?.id&&!$.auth?.apiKey?.id)throw new R1(401,{message:"Unauthorized"});if(!$.organization?.id)throw new R1(400,{message:"Organization required"});if(!$.objectStorage)throw new R1(503,{message:"Object storage not configured"});return $.objectStorage}function jQ0($,Z){let Q=$.indexOf(Z),Y=Q>=0?$.slice(Q+Z.length):"",X=A3(Y);if(!X)throw new R1(400,{message:"Missing object key"});return X}function EL8($){if($===null||typeof $!=="object")return{expiresIn:wL8};let Z=$;return{expiresIn:iO(typeof Z.expiresIn==="number"?Z.expiresIn:void 0,wL8),...typeof Z.contentType==="string"?{contentType:Z.contentType}:{}}}function nG5($){return $.buffer instanceof ArrayBuffer?$.buffer.slice($.byteOffset,$.byteOffset+$.byteLength):Uint8Array.from($).buffer}var wL8=3600,PL8=()=>{let $=new Z1;return $.onError((Z,Q)=>{if(Z instanceof R1)return Q.json({error:Z.message},Z.status);throw Z}),$.post("/object-storage/presigned-get/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/presigned-get/"),X=EL8(await Z.req.json().catch(()=>({}))),J=await Q.presignedGetUrl(Y,X.expiresIn);return Z.json({url:J,expiresIn:X.expiresIn})}),$.post("/object-storage/presigned-put/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/presigned-put/"),X=EL8(await Z.req.json().catch(()=>({}))),J=await Q.presignedPutUrl(Y,X.expiresIn,X.contentType);return Z.json({url:J,expiresIn:X.expiresIn})}),$.put("/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),X=new Uint8Array(await Z.req.arrayBuffer()),J=await Q.put(Y,X,{contentType:Z.req.header("content-type")??x7(Y)});return Z.json(J)}),$.get("/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),[X,J]=await Promise.all([Q.head(Y),Q.getBytes(Y)]);return Z.body(nG5(J),200,{"Content-Type":X.contentType,"Content-Length":String(X.size),...X.etag?{ETag:X.etag}:{},...X.lastModified?{"Last-Modified":X.lastModified.toUTCString()}:{}})}),$.on("HEAD","/object-storage/*",async(Z)=>{let Q=OQ0(Z.get("studioContext")),Y=jQ0(Z.req.path,"/object-storage/"),X=await Q.head(Y);return Z.body(null,200,{"Content-Type":X.contentType,"Content-Length":String(X.size),...X.etag?{ETag:X.etag}:{},...X.lastModified?{"Last-Modified":X.lastModified.toUTCString()}:{}})}),$};var zL8=L(()=>{K8();BG();iH();pO()});var $g0=()=>{let $=new Z1;return $.get("/threads/:threadId/outputs",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth?.user?.id)throw new R1(401,{message:"Unauthorized"});let X=Q.organization?.slug;if(!X)throw new R1(400,{message:"Organization required"});let J=Z.req.param("threadId");if(!J||!/^[A-Za-z0-9_-]+$/.test(J))throw new R1(400,{message:"Invalid thread ID"});if(!await Q.storage.threads.get(J))throw new R1(404,{message:"Thread not found"});let W=Q.organization?.id,K=W?await Q.storage.orgFsEntries.listSubtreeFiles(W,"outputs",J).catch(()=>[]):[];return Z.json({objects:K.map((H)=>({key:`org-fs:outputs/${H.path}`,filename:H.path.split("/").pop()??H.path,size:H.size,uploadedAt:H.updatedAt,downloadUrl:`${Q.baseUrl}/api/${encodeURIComponent(X)}/fs/outputs/read?path=${encodeURIComponent(H.path)}`}))})}),$};var PA1=L(()=>{K8();BG()});import{z as tG5}from"zod";var AL8=($)=>{if(!$||typeof $!=="object")return;try{return tG5.toJSONSchema($)}catch{return}},TL8=()=>{let $=new Z1;return $.get("/",(Z)=>{let Q=[...Mo.values()].map((Y)=>{let{config:X}=N70(Y);return{name:Y.name,description:X.description,inputSchema:AL8(X.inputSchema),outputSchema:AL8(X.outputSchema),annotations:X.annotations,_meta:X._meta}});return Z.json({tools:Q})}),$.post("/:toolName",async(Z)=>{let Q=Z.get("studioContext"),Y=Z.req.param("toolName"),X=Ff0(Y);if(!X)return Z.json({error:`Unknown tool: ${Y}`},404);let J;try{let W=await Z.req.text();J=W?JSON.parse(W):{}}catch{return Z.json({error:"Request body must be valid JSON"},400)}let G=X.inputSchema.safeParse(J);if(!G.success)return Z.json({error:"Invalid input",issues:G.error.issues},400);try{let W=await X.execute(G.data,Q);return Z.json(W??{})}catch(W){if(W instanceof XE)return Z.json({error:W.message},401);if(W instanceof e10)return Z.json({error:W.message,code:W.code},403);if(W instanceof c6){let H=W.code;return Z.json(typeof H==="string"?{error:W.message,code:H}:{error:W.message},403)}if(W instanceof pF0)return Z.json({error:W.message,...W.code?{code:W.code}:{}},W.status===503?503:403);let K=W instanceof Error?W.message:"Tool failed";return Z.json({error:K},500)}}),$};var qL8=L(()=>{K8();XX();dd();Zq();hL();Ix0()});import{z as wQ0}from"zod";function Zg0($){let Z=new Z1;return Z.post("/trigger-callback",C6({maxSize:sG5,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Q.req.header("authorization");if(!Y?.startsWith("Bearer "))return Q.json({error:"Missing or invalid Authorization header"},401);let X=Y.slice(7),J=await $.tokenStorage.validateToken(X);if(!J)return Q.json({error:"Invalid callback token"},401);let G=Q.get("studioContext")?.organization?.id;if(G&&G!==J.organizationId)return Q.json({error:"Invalid callback token"},401);Q.set("deprecatedRouteAttribution",{organizationId:J.organizationId,connectionId:J.connectionId});let W=oG5.safeParse(await Q.req.json().catch(()=>null));if(!W.success)return Q.json({error:"Invalid body",details:W.error.issues},400);let{type:K,data:H}=W.data;return $.automationEventDispatcher.dispatchForEvents([{source:J.connectionId,type:K,data:H??{},organizationId:J.organizationId}]),Q.json({ok:!0,type:K},202)}),Z}var oG5,sG5=1048576;var zA1=L(()=>{K8();Q3();oG5=wQ0.object({type:wQ0.string().min(1),data:wQ0.record(wQ0.string(),wQ0.unknown()).optional()})});var AA1=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor($,Z){this.writable=$,this.writer=$.getWriter(),this.encoder=new TextEncoder;let Q=Z.getReader();this.abortSubscribers.push(async()=>{await Q.cancel()}),this.responseReadable=new ReadableStream({async pull(Y){let{done:X,value:J}=await Q.read();X?Y.close():Y.enqueue(J)},cancel:()=>{this.abort()}})}async write($){try{if(typeof $==="string")$=this.encoder.encode($);await this.writer.write($)}catch{}return this}async writeln($){return await this.write($+`
|
|
4411
4411
|
`),this}sleep($){return new Promise((Z)=>setTimeout(Z,$))}async close(){try{await this.writer.close()}catch{}this.closed=!0}async pipe($){this.writer.releaseLock(),await $.pipeTo(this.writable,{preventClose:!0}),this.writer=this.writable.getWriter()}onAbort($){this.abortSubscribers.push($)}abort(){if(!this.aborted)this.aborted=!0,this.abortSubscribers.forEach(($)=>$())}};var TA1=()=>{};var Qg0=()=>{let $=typeof Bun<"u"?Bun.version:void 0;if($===void 0)return!1;let Z=$.startsWith("1.1")||$.startsWith("1.0")||$.startsWith("0.");return Qg0=()=>Z,Z};var qA1=()=>{};var RL8=L(()=>{TA1();qA1()});var ML8,rG5=async($,Z,Q)=>{try{await Z($)}catch(Y){if(Y instanceof Error&&Q)await Q(Y,$),await $.writeSSE({event:"error",data:Y.message});else console.error(Y)}finally{$.close()}},aG5,Bj=($,Z,Q)=>{let{readable:Y,writable:X}=new TransformStream,J=new ML8(X,Y);if(Qg0())$.req.raw.signal.addEventListener("abort",()=>{if(!J.closed)J.abort()});return aG5.set(J.responseReadable,$),$.header("Transfer-Encoding","chunked"),$.header("Content-Type","text/event-stream"),$.header("Cache-Control","no-cache"),$.header("Connection","keep-alive"),rG5(J,Z,Q),$.newResponse(J.responseReadable)};var VL8=L(()=>{$F0();TA1();qA1();ML8=class extends AA1{constructor($,Z){super($,Z)}async writeSSE($){let Q=(await O10($.data,eH0.Stringify,!1,{})).split(/\r\n|\r|\n/).map((X)=>{return`data: ${X}`}).join(`
|
|
4412
4412
|
`);for(let X of["event","id","retry"])if($[X]&&/[\r\n]/.test($[X]))throw Error(`${X} must not contain "\\r" or "\\n"`);let Y=[$.event&&`event: ${$.event}`,Q,$.id&&`id: ${$.id}`,$.retry&&`retry: ${$.retry}`].filter(Boolean).join(`
|
|
4413
4413
|
`)+`
|
|
@@ -4448,7 +4448,7 @@ When unsure between the two, lean toward NOT requiring review for small frontend
|
|
|
4448
4448
|
|
|
4449
4449
|
Respond with ONLY a JSON object of this shape, and nothing else:
|
|
4450
4450
|
{"requiresReview": true | false, "reason": "one short sentence, max ~120 chars"}`,gL8;var uL8=L(()=>{l4();jZ();w35=kA1.object({requiresReview:kA1.boolean().describe("true if the changes should go through pull-request review"),reason:kA1.string().describe("One short sentence explaining the decision (max ~120 chars)")});gL8={requiresReview:!1,reason:""}});function mL8($){if($==="added"||$==="copied")return"added";if($==="removed")return"removed";if($==="renamed")return"renamed";return"modified"}function lL8($){let{base:Z,branch:Q,headSha:Y,compared:X}=$,J=X.files.slice(0,cL8).map((G)=>({path:G.filename,status:mL8(G.status),...G.previousFilename?{previousPath:G.previousFilename}:{}}));return{not_added:[],conflicted:[],created:[],deleted:[],modified:[],renamed:[],files:[],staged:[],ahead:0,behind:0,current:Q,tracking:`origin/${Q}`,detached:!1,base:Z,aheadOfBase:X.aheadBy,behindBase:X.behindBy,headSha:Y,unpushed:0,changedFiles:J,changedFilesTotal:X.files.length,changedFilesTruncated:X.files.length>J.length}}async function T35($,Z,Q,Y){try{return await $.compareDetailed(Z,Q)}catch(X){if(_G(X)!==404)throw X;return await Y,$.compareDetailed(Z,Q)}}async function SA1($,Z){let Q=await $.getDefaultBranch();if(Q===Z){let G=await wp($,Z);return lL8({base:Q,branch:Z,headSha:G,compared:A35})}let Y=wp($,Z),[X,J]=await Promise.all([Y,T35($,Q,Z,Y)]);return lL8({base:Q,branch:Z,headSha:X,compared:J})}async function _A1($,Z,Q){let Y=Q??await $.getDefaultBranch(),X=await $.compareDetailed(Y,Z),J=X.files.slice(0,cL8);if(J.length===0)return{diffs:{},mergeBaseSha:X.mergeBaseSha};let G=await k5(J,z35,async(W)=>{let K=W.previousFilename??W.filename,[H,F]=await Promise.all([W.status==="added"?null:$.readFileAtRef(X.mergeBaseSha,K),W.status==="removed"?null:$.readBlob(W.sha)]);return[W.filename,{from:H,to:F}]});return{diffs:Object.fromEntries(G),mergeBaseSha:X.mergeBaseSha}}async function Jg0($,Z,Q){for(let Y=1;;Y++){let[X,J]=await Promise.all([$9($,Z),$.compareDetailed(Q,Z)]);if(J.behindBy===0&&J.aheadBy<=1)return;let G=await $9($,Q);if(J.aheadBy===0){if(await $9($,Z)!==X){if(Y<Xg0)continue;throw CA1($,Z,Q)}await $.forceBranchHead(Z,G);return}let W,K=!1,H=null;try{H=await $.mergeBranches(Z,Q,`chore(decofile): merge ${Q} into ${Z}`),W=H===null?J.files:(await $.compareDetailed(Q,Z)).files}catch(B){if(_G(B)!==409)throw B;W=J.files,K=!0}I35($,W);let F=k35(W,H??X),U=K?await M35($,F,{branch:Z,base:Q,branchHead:X,baseHead:G,branchModified:W}):F,N=H??X;try{if(U.length===0){if(await $9($,Z)!==N){if(Y<Xg0)continue;throw CA1($,Z,Q)}await $.forceBranchHead(Z,G);return}await $.commitFiles({branch:Z,message:_35(Z,Q,K,J.commitMessages),expectedHead:N,rewriteFrom:G,changes:U});return}catch(B){if(B instanceof h6&&Y<Xg0)continue;throw await S35($,Z,H,X),B instanceof h6?CA1($,Z,Q):B}}}async function M35($,Z,Q){let Y=(H)=>new Set(H.filter((F)=>mL8(F.status)==="modified"&&q35.test(F.filename)).map((F)=>F.filename)),X=Y(Q.branchModified);if(X.size===0)return Z;let J=await $.compareDetailed(Q.branch,Q.base),G=Y(J.files),W=[...X].filter((H)=>G.has(H));if(W.length===0)return Z;let K=new Map;return await k5(W,R35,async(H)=>{let[F,U,N]=await Promise.all([$.readFileAtRef(J.mergeBaseSha,H),$.readFileAtRef(Q.branchHead,H),$.readFileAtRef(Q.baseHead,H)]);if(F===null||U===null||N===null)return;try{let B=_71(JSON.parse(F),JSON.parse(U),JSON.parse(N));K.set(H,`${JSON.stringify(B,null,2)}
|
|
4451
|
-
`)}catch{}}),Z.map((H)=>{let F=K.get(H.path);return F===void 0?H:{path:H.path,content:F}})}function I35($,Z){if(Z.length<V35)return;throw new
|
|
4451
|
+
`)}catch{}}),Z.map((H)=>{let F=K.get(H.path);return F===void 0?H:{path:H.path,content:F}})}function I35($,Z){if(Z.length<V35)return;throw new v0({provider:$.repo.provider,status:409,message:`Too many changed files on the branch to auto-merge (${Z.length}); resolve it on ${$.repo.host}`})}function CA1($,Z,Q){return new v0({provider:$.repo.provider,status:409,message:`${Z} kept changing while syncing with ${Q}; try again`})}function k35($,Z){let Q=new Map;for(let Y of $)Q.set(Y.filename,Y.status==="removed"?{path:Y.filename,deleted:!0}:{path:Y.filename,copyFromRef:Z});for(let Y of $)if(Y.previousFilename&&Y.previousFilename!==Y.filename&&!Q.has(Y.previousFilename))Q.set(Y.previousFilename,{path:Y.previousFilename,deleted:!0});return[...Q.values()]}function C35($,Z,Q,Y){let X=[];for(let J of $){let G=Z.get(J),W=Q.get(J);if(G?.sha===W?.sha)continue;if(!G&&!W)continue;X.push(G?{path:J,copyFromRef:Y}:{path:J,deleted:!0})}return X}async function dL8($,Z,Q){if(Q.length===0)return;let Y=await $.getDefaultBranch();for(let X=1;;X++){let J=await $9($,Z),{mergeBaseSha:G}=await $.compareDetailed(Y,Z),[W,K]=await Promise.all([$.getEntriesAtPaths(G,Q),$.getEntriesAtPaths(J,Q)]),H=C35(Q,W,K,G);if(H.length===0)return;try{await $.commitFiles({branch:Z,message:`chore(decofile): discard changes to ${H.length} file(s)`,expectedHead:J,changes:H});return}catch(F){if(F instanceof h6&&X<Xg0)continue;throw F}}}async function S35($,Z,Q,Y){if(Q===null)return;try{if(await $9($,Z)!==Q)return;await $.forceBranchHead(Z,Y)}catch{}}function _35($,Z,Q,Y){let X=Q?`chore(decofile): sync ${$} with ${Z} (branch content wins)`:`chore(decofile): sync ${$} with ${Z}`,J=v35(Y);return J.length>0?`${X}
|
|
4452
4452
|
|
|
4453
4453
|
${J.join(`
|
|
4454
4454
|
`)}`:X}function v35($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
@@ -4483,7 +4483,7 @@ if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
|
4483
4483
|
fi
|
|
4484
4484
|
else
|
|
4485
4485
|
echo '@head none' >> "$w/g"
|
|
4486
|
-
fi`;mW5={name:"studio-sandbox",version:"1"},As=new Map});function nW5($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!pW5.test(Z))throw Error(`Invalid branch name: ${$}`)}function du($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(rW5)])}async function eW5($,Z){let Q=$.var.studioContext,Y=_Y(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=qh(G?.metadata?.runtime);if(W)return W;let K=AS0(Z.virtualMcpMetadata),H=K==="cms"?await RA1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)r50(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function $K5($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await OZ($.var.studioContext)}catch{return null}}function iu($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function vQ0($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=JW(Z,Q);if(!X)throw new b0({provider:"github",status:404,message:"Project has no repository"});let J=Q0(Y);return bG(Y,J.id,X)}function GT1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=gB0(Z);if(Y!==void 0)return $.json({error:Q},429,{...e9,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof h6)return $.json({error:Q},409,e9);let X=_G(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,e9)}return $.json({error:Q},502,e9)}async function JT1($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function oO8($){try{let Z=await vQ0($),Q=await SA1(Z,$.get("vmClaim").branch);return $.json(Q,200,e9)}catch(Z){return GT1($,Z)}}function _Q0($,Z){let Y=(Dg0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return Dg0.set($,X),X.finally(()=>{if(Dg0.get($)===X)Dg0.delete($)}),Y}async function iQ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,e9);let Y=Q?.runner??iu($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.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",...e9}})}}let D=await B.text(),O=Q?.redactRepoDir?QK5(D):D,j=B.headers.get("content-type")??"application/json";return new Response(O,{status:B.status,headers:{"content-type":j,...e9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((O,j)=>{if(F.aborted)return j(F.reason);F.addEventListener("abort",()=>j(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function ZK5($){let Z=$.get("vmClaim");if(Z.runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,e9);let Q=iu($);if(Q instanceof Response)return Q;return iO8({key:Z.claimName,packagePath:ZB(Z.virtualMcpMetadata),daemon:(X,J)=>Q.proxyDaemonRequest(Z.claimName,X,{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify(J),signal:AbortSignal.timeout(sW5)}),onError:(X)=>console.error("content protocol (sandbox): internal error",{virtualMcpId:Z.virtualMcpId,error:X instanceof Error?X.message:String(X)})})($.req.raw)}function QK5($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function sO8($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function YK5($){return rO8.includes($)}var pW5,tW5=524288,oW5=8454144,sW5=30000,nO8=65536,rW5=1e4,tO8=2000,aW5,Dg0,e9,rO8,aO8=()=>{let $=new Z1;$.use("/:virtualMcpId/:branch/*",aW5),$.post("/:virtualMcpId/:branch/write",(Q)=>iQ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>iQ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>iQ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>iQ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>iQ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>iQ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>iQ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return iQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return iQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.all("/:virtualMcpId/:branch/rpc",C6({maxSize:oW5,onError:(Q)=>Q.json({error:"Payload too large"},413,e9)}),ZK5),$.get("/:virtualMcpId/:branch/config",(Q)=>iQ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>iQ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!YK5(Y))return Q.json({error:`step must be one of: ${rO8.join(", ")}`},400);let X=Q.get("vmClaim"),J=await RA1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await $K5(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,e9);if(Y==="start"){let G=Q0(Q.var.studioContext),W=pn(X.virtualMcpMetadata);try{await ES0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return iQ(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return Bj(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vL8(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return oO8(Q);return Z(Q)});let Z=(Q)=>iQ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(tO8)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return oO8(Q);return iQ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(tO8)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await vQ0(Q),G=await _A1(J,Y.branch,X.base);return Q.json(G,200,e9)}catch(X){return GT1(Q,X)}return iQ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,e9);let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return _Q0(X,async()=>{try{await MA1(W,Y,X);let K=JW(J,G);if(K)await pf$(W,Y,X,K)}catch(K){if(K instanceof Gz)return Q.json({error:K.message},403,e9);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,e9)}return iQ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return _Q0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,e9);try{let G=await vQ0(Q);return await dL8(G,Y.branch,J),Q.json({ok:!0},200,e9)}catch(G){let W=_G(G)===409||G instanceof h6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,e9)}});return _Q0(Y.claimName,()=>iQ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return _Q0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await vQ0(Q),H=W.base??await K.getDefaultBranch();return await Jg0(K,Y.branch,H),Q.json({ok:!0},200,e9)}catch(W){return GT1(Q,W)}});let X=iu(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return _Q0(J,async()=>{try{await MA1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,e9)}return iQ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/judge-review",C6({maxSize:tW5,onError:(Q)=>Q.json({error:"Payload too large"},413,e9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=iu(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=fL8(F)&&N?[F,U]:X?await Promise.all([sO8(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),sO8(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let j=await vQ0(Q);return Promise.all([SA1(j,Y.branch),_A1(j,Y.branch)])})();await CK(K,Q0(K).id,"judging whether a change needs review");let O=await hL8(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(O,200,e9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,e9);return Q.json({error:F},502,e9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return JT1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",C6({maxSize:nO8,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=bA1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=xA1(J,W.resolveType);return JT1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",C6({maxSize:nO8,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let{runner:Y,claimName:X,virtualMcpMetadata:J}=Q.get("vmClaim"),G;try{G=Y?await Y.getPreviewUrl(X):AP(J)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W;try{W=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!W||typeof W!=="object"||Array.isArray(W))return Q.json({error:"Invalid JSON body"},400);let K=bA1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!iL8(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=xA1(G,K.resolveType);return JT1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var eO8=L(()=>{K8();Q3();Fs();Yg0();dn();CL8();yQ();nn();SL8();CX();IG();_L8();bL8();OF1();s50();uL8();T5();S5();vA1();pL8();$p();pO8();QR();vR();pW5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;aW5=Us(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=S0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=Q0(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{nW5(G)}catch(O){let j=O instanceof Error?O.message:String(O);return $.json({error:j},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=C50({orgId:X.id,virtualMcpId:J,branch:G}),H=await qF1(Q,G),F=RF1(H,Y),U=kL8({userId:F,projectRef:K}),N=W.metadata??null,B=await eW5($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],runtime:B}),Z();let D;try{D=await OZ(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],runtime:B}),Z()});Dg0=new Map;e9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};rO8=["clone","install","start"]});function XK5($){return $?`${$}/.deco/blocks.gen.json`:".deco/blocks.gen.json"}async function Lg0($){let{client:Z,tree:Q,packagePath:Y,branch:X}=$,J=XK5(Y);if(!Q.some((H)=>H.type==="blob"&&H.path===J))return null;let G=await xF(Z,$.nextBlocks,$.memo),{decofile:W,skipped:K}=D40(G);if(K.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:IF(Z.repo),branch:X,packagePath:Y,blocks:K.map((H)=>H.key)});return{path:J,content:W}}function Og0($,Z,Q){let Y=(J)=>{let G=J.slice(0,3).join(", ");return J.length>3?`${G} (+${J.length-3} more)`:G},X=[];if($.length>0)X.push(`update ${Y($)}`);if(Z.length>0)X.push(`delete ${Y(Z)}`);return SR(`chore(decofile): ${X.join("; ")}`,Q)}var WT1=L(()=>{Jn();Qp();t4();fF()});function $j8($,Z,Q){let Y=KT1.get($);if(!Y)Y={pending:null,running:!1},KT1.set($,Y);if(!Y.pending)Y.pending={patches:[],deps:Z};let X=Y.pending;X.deps=Z;let J=new Promise((G,W)=>{X.patches.push({patch:Q,resolve:G,reject:W})});if(!Y.running)GK5($,Y);return J}async function GK5($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let{sha:Y,accepted:X,conflicts:J}=await HK5(Q);for(let G of X)G.resolve(Y);for(let{queued:G,blocks:W}of J)G.reject(new jg0(W))}catch(Y){for(let X of Q.patches)X.reject(Y)}}}finally{if(Z.running=!1,!Z.pending)KT1.delete($)}}async function WK5($,Z,Q,Y){let X=new Map,J=[];for(let W of Q){let K=jD0(Z,W)[0],H=K?Z.find((F)=>F.path===K):void 0;if(!H)X.set(W,null);else J.push({key:W,stem:H.stem,sha:H.sha})}let G=await xF($,J,Y);for(let[W,{content:K}]of G.entries()){let H=J[W].key;try{X.set(H,await yB0(JSON.parse(K)))}catch{X.set(H,Zj8)}}return X}async function KK5($,Z){let Q=new Map(Z),Y=[],X=[];for(let J of $){let{patch:G}=J,W=Object.entries(G.expect??{}).filter(([K,H])=>{let F=Q.get(K);return F!==Zj8&&F!==H}).map(([K])=>K);if(W.length>0){X.push({queued:J,blocks:W});continue}Y.push(J);for(let[K,H]of Object.entries(G.set??{}))if(Q.has(K))Q.set(K,await yB0(H));for(let K of G.delete??[])if(Q.has(K))Q.set(K,null)}return{accepted:Y,conflicts:X}}async function HK5($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await wp(Z,Q),W=await Z.listDecofileEntries(G,Y),K=hK(W,Y),H=new Set($.patches.flatMap(({patch:w})=>Object.keys(w.expect??{}))),{accepted:F,conflicts:U}=await KK5($.patches,H.size>0?await WK5(Z,K,H,X):new Map),N=new Map,B=new Set;for(let{patch:w}of F){for(let[E,P]of Object.entries(w.set??{}))N.set(E,P),B.delete(E);for(let E of w.delete??[])B.add(E),N.delete(E)}let D=[],O=new Map(K.map((w)=>[w.path,{stem:w.stem,sha:w.sha}]));for(let[w,E]of N){let P=jD0(K,w),T=`${JSON.stringify(E,null,2)}
|
|
4486
|
+
fi`;mW5={name:"studio-sandbox",version:"1"},As=new Map});function nW5($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!pW5.test(Z))throw Error(`Invalid branch name: ${$}`)}function du($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(rW5)])}async function eW5($,Z){let Q=$.var.studioContext,Y=_Y(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=qh(G?.metadata?.runtime);if(W)return W;let K=AS0(Z.virtualMcpMetadata),H=K==="cms"?await RA1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)r50(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function $K5($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await OZ($.var.studioContext)}catch{return null}}function iu($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function vQ0($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=JW(Z,Q);if(!X)throw new v0({provider:"github",status:404,message:"Project has no repository"});let J=Q0(Y);return bG(Y,J.id,X)}function GT1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=gB0(Z);if(Y!==void 0)return $.json({error:Q},429,{...e9,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof h6)return $.json({error:Q},409,e9);let X=_G(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,e9)}return $.json({error:Q},502,e9)}async function JT1($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function oO8($){try{let Z=await vQ0($),Q=await SA1(Z,$.get("vmClaim").branch);return $.json(Q,200,e9)}catch(Z){return GT1($,Z)}}function _Q0($,Z){let Y=(Dg0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return Dg0.set($,X),X.finally(()=>{if(Dg0.get($)===X)Dg0.delete($)}),Y}async function iQ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,e9);let Y=Q?.runner??iu($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.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",...e9}})}}let D=await B.text(),O=Q?.redactRepoDir?QK5(D):D,j=B.headers.get("content-type")??"application/json";return new Response(O,{status:B.status,headers:{"content-type":j,...e9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((O,j)=>{if(F.aborted)return j(F.reason);F.addEventListener("abort",()=>j(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function ZK5($){let Z=$.get("vmClaim");if(Z.runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,e9);let Q=iu($);if(Q instanceof Response)return Q;return iO8({key:Z.claimName,packagePath:ZB(Z.virtualMcpMetadata),daemon:(X,J)=>Q.proxyDaemonRequest(Z.claimName,X,{method:"POST",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify(J),signal:AbortSignal.timeout(sW5)}),onError:(X)=>console.error("content protocol (sandbox): internal error",{virtualMcpId:Z.virtualMcpId,error:X instanceof Error?X.message:String(X)})})($.req.raw)}function QK5($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function sO8($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function YK5($){return rO8.includes($)}var pW5,tW5=524288,oW5=8454144,sW5=30000,nO8=65536,rW5=1e4,tO8=2000,aW5,Dg0,e9,rO8,aO8=()=>{let $=new Z1;$.use("/:virtualMcpId/:branch/*",aW5),$.post("/:virtualMcpId/:branch/write",(Q)=>iQ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>iQ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>iQ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>iQ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>iQ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>iQ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>iQ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:du(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return iQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return iQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.all("/:virtualMcpId/:branch/rpc",C6({maxSize:oW5,onError:(Q)=>Q.json({error:"Payload too large"},413,e9)}),ZK5),$.get("/:virtualMcpId/:branch/config",(Q)=>iQ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>iQ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!YK5(Y))return Q.json({error:`step must be one of: ${rO8.join(", ")}`},400);let X=Q.get("vmClaim"),J=await RA1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await $K5(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,e9);if(Y==="start"){let G=Q0(Q.var.studioContext),W=pn(X.virtualMcpMetadata);try{await ES0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return iQ(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return Bj(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vL8(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return oO8(Q);return Z(Q)});let Z=(Q)=>iQ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(tO8)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return oO8(Q);return iQ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(tO8)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await vQ0(Q),G=await _A1(J,Y.branch,X.base);return Q.json(G,200,e9)}catch(X){return GT1(Q,X)}return iQ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,e9);let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return _Q0(X,async()=>{try{await MA1(W,Y,X);let K=JW(J,G);if(K)await pf$(W,Y,X,K)}catch(K){if(K instanceof Gz)return Q.json({error:K.message},403,e9);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,e9)}return iQ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return _Q0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,e9);try{let G=await vQ0(Q);return await dL8(G,Y.branch,J),Q.json({ok:!0},200,e9)}catch(G){let W=_G(G)===409||G instanceof h6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,e9)}});return _Q0(Y.claimName,()=>iQ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return _Q0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await vQ0(Q),H=W.base??await K.getDefaultBranch();return await Jg0(K,Y.branch,H),Q.json({ok:!0},200,e9)}catch(W){return GT1(Q,W)}});let X=iu(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return _Q0(J,async()=>{try{await MA1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,e9)}return iQ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/judge-review",C6({maxSize:tW5,onError:(Q)=>Q.json({error:"Payload too large"},413,e9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=iu(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=fL8(F)&&N?[F,U]:X?await Promise.all([sO8(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),sO8(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let j=await vQ0(Q);return Promise.all([SA1(j,Y.branch),_A1(j,Y.branch)])})();await CK(K,Q0(K).id,"judging whether a change needs review");let O=await hL8(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(O,200,e9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,e9);return Q.json({error:F},502,e9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return JT1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",C6({maxSize:nO8,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=iu(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=bA1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=xA1(J,W.resolveType);return JT1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",C6({maxSize:nO8,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let{runner:Y,claimName:X,virtualMcpMetadata:J}=Q.get("vmClaim"),G;try{G=Y?await Y.getPreviewUrl(X):AP(J)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W;try{W=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!W||typeof W!=="object"||Array.isArray(W))return Q.json({error:"Invalid JSON body"},400);let K=bA1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!iL8(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=xA1(G,K.resolveType);return JT1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var eO8=L(()=>{K8();Q3();Fs();Yg0();dn();CL8();yQ();nn();SL8();CX();IG();_L8();bL8();OF1();s50();uL8();T5();S5();vA1();pL8();$p();pO8();QR();vR();pW5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;aW5=Us(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=S0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=Q0(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{nW5(G)}catch(O){let j=O instanceof Error?O.message:String(O);return $.json({error:j},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=C50({orgId:X.id,virtualMcpId:J,branch:G}),H=await qF1(Q,G),F=RF1(H,Y),U=kL8({userId:F,projectRef:K}),N=W.metadata??null,B=await eW5($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],runtime:B}),Z();let D;try{D=await OZ(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],runtime:B}),Z()});Dg0=new Map;e9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};rO8=["clone","install","start"]});function XK5($){return $?`${$}/.deco/blocks.gen.json`:".deco/blocks.gen.json"}async function Lg0($){let{client:Z,tree:Q,packagePath:Y,branch:X}=$,J=XK5(Y);if(!Q.some((H)=>H.type==="blob"&&H.path===J))return null;let G=await xF(Z,$.nextBlocks,$.memo),{decofile:W,skipped:K}=D40(G);if(K.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:IF(Z.repo),branch:X,packagePath:Y,blocks:K.map((H)=>H.key)});return{path:J,content:W}}function Og0($,Z,Q){let Y=(J)=>{let G=J.slice(0,3).join(", ");return J.length>3?`${G} (+${J.length-3} more)`:G},X=[];if($.length>0)X.push(`update ${Y($)}`);if(Z.length>0)X.push(`delete ${Y(Z)}`);return SR(`chore(decofile): ${X.join("; ")}`,Q)}var WT1=L(()=>{Jn();Qp();t4();fF()});function $j8($,Z,Q){let Y=KT1.get($);if(!Y)Y={pending:null,running:!1},KT1.set($,Y);if(!Y.pending)Y.pending={patches:[],deps:Z};let X=Y.pending;X.deps=Z;let J=new Promise((G,W)=>{X.patches.push({patch:Q,resolve:G,reject:W})});if(!Y.running)GK5($,Y);return J}async function GK5($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let{sha:Y,accepted:X,conflicts:J}=await HK5(Q);for(let G of X)G.resolve(Y);for(let{queued:G,blocks:W}of J)G.reject(new jg0(W))}catch(Y){for(let X of Q.patches)X.reject(Y)}}}finally{if(Z.running=!1,!Z.pending)KT1.delete($)}}async function WK5($,Z,Q,Y){let X=new Map,J=[];for(let W of Q){let K=jD0(Z,W)[0],H=K?Z.find((F)=>F.path===K):void 0;if(!H)X.set(W,null);else J.push({key:W,stem:H.stem,sha:H.sha})}let G=await xF($,J,Y);for(let[W,{content:K}]of G.entries()){let H=J[W].key;try{X.set(H,await yB0(JSON.parse(K)))}catch{X.set(H,Zj8)}}return X}async function KK5($,Z){let Q=new Map(Z),Y=[],X=[];for(let J of $){let{patch:G}=J,W=Object.entries(G.expect??{}).filter(([K,H])=>{let F=Q.get(K);return F!==Zj8&&F!==H}).map(([K])=>K);if(W.length>0){X.push({queued:J,blocks:W});continue}Y.push(J);for(let[K,H]of Object.entries(G.set??{}))if(Q.has(K))Q.set(K,await yB0(H));for(let K of G.delete??[])if(Q.has(K))Q.set(K,null)}return{accepted:Y,conflicts:X}}async function HK5($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await wp(Z,Q),W=await Z.listDecofileEntries(G,Y),K=hK(W,Y),H=new Set($.patches.flatMap(({patch:w})=>Object.keys(w.expect??{}))),{accepted:F,conflicts:U}=await KK5($.patches,H.size>0?await WK5(Z,K,H,X):new Map),N=new Map,B=new Set;for(let{patch:w}of F){for(let[E,P]of Object.entries(w.set??{}))N.set(E,P),B.delete(E);for(let E of w.delete??[])B.add(E),N.delete(E)}let D=[],O=new Map(K.map((w)=>[w.path,{stem:w.stem,sha:w.sha}]));for(let[w,E]of N){let P=jD0(K,w),T=`${JSON.stringify(E,null,2)}
|
|
4487
4487
|
`;await wD0(Z.repo,T);let z=P[0]??`${aN(Y)}/${I71(w)}.json`;D.push({path:z,content:T});let A=z.slice(z.lastIndexOf("/")+1,-5);O.set(z,{stem:A,content:T});for(let R of P.slice(1))D.push({path:R,deleted:!0}),O.delete(R)}for(let w of B)for(let E of jD0(K,w))D.push({path:E,deleted:!0}),O.delete(E);if(D.length===0)return{sha:G,accepted:F,conflicts:U};let j=await Lg0({client:Z,tree:W,packagePath:Y,branch:Q,nextBlocks:O.values(),memo:X});if(j)D.push(j);try{let{sha:w}=await Z.commitFiles({branch:Q,message:Og0([...N.keys()],[...B],$.deps.coAuthor),expectedHead:G,changes:D});return{sha:w,accepted:F,conflicts:U}}catch(w){if(!(w instanceof h6)||J>=JK5-1)throw w;await J$(k7(2000,200,J,2,0.5))}}}var JK5=3,jg0,KT1,Zj8;var Qj8=L(()=>{Qp();p$();T5();fF();WT1();jg0=class jg0 extends Error{blocks;constructor($){super(`Blocks changed since they were loaded: ${$.join(", ")}`);this.blocks=$;this.name="BlockConflictError"}};KT1=new Map;Zj8=Symbol("unreadable")});import{createHmac as Yj8,randomBytes as FK5,timingSafeEqual as UK5}from"crypto";function Xj8(){if(wg0)return wg0;let $;try{let Z=B0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return wg0=$?Buffer.from($):FK5(32),wg0}function Jj8($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+NK5)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=Yj8("sha256",Xj8()).update(Y).digest("base64url");return`${Y}.${X}`}function Gj8($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(Yj8("sha256",Xj8()).update(Y).digest("base64url"));if(X.length!==J.length||!UK5(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var NK5=21600000,wg0=null;var Wj8=L(()=>{u1()});function LK5($){let{zoneId:Z,apiToken:Q}=$;if(!Z||!Q){let W=$.warn??console.warn;return{async purge(K){W(`hosted delivery: Cloudflare purge not configured; skipped purging ${K} (the edge may serve the previous copy for up to 1 h)`)}}}let Y=$.fetch??fetch,X=$.timeoutMs??BK5,J=new URL($.publicOrigin??SQ1).origin,G=`https://api.cloudflare.com/client/v4/zones/${encodeURIComponent(Z)}/purge_cache`;return{async purge(W){let K=`${J}/${W}`,H=async()=>{let F;try{F=await Y(G,{method:"POST",headers:{authorization:`Bearer ${Q}`,"content-type":"application/json"},body:JSON.stringify({files:[K]}),signal:AbortSignal.timeout(X)})}catch(N){let B=N?.name;throw Error(B==="TimeoutError"?`purge ${K}: timed out after ${X} ms`:`purge ${K}: ${N instanceof Error?N.message:String(N)}`)}let U=await F.json().catch(()=>null);if(!F.ok||U?.success!==!0)throw Error(`purge ${K}: HTTP ${F.status}`)};for(let F=1;;F++)try{return await H()}catch(U){if(F>=DK5)throw U}}}}function Eg0(){let $=B0();return LK5({zoneId:$.cfDeliveryZoneId,apiToken:$.cfPurgeApiToken,publicOrigin:$.deliveryPublicOrigin})}var BK5=5000,DK5=2;var HT1=L(()=>{u1();$B()});function OK5($,Z){return $?`${$}/.deco/${Z}`:`.deco/${Z}`}async function qs($){try{return await $()}catch(Z){let Q=gB0(Z);if(Q!==void 0)throw new a9("the Git provider is rate-limiting this repository",Q??void 0);throw Z}}function Kj8($){let{client:Z,packagePath:Q,branch:Y}=$,X=`${aN(Q)}/`,J=async()=>{let F=await Z.getBranch(Y);if(F)return{sha:F.sha,ref:Y};let U=await Z.getDefaultBranch();return{sha:await $9(Z,U),ref:U}},G=async(F)=>{let U=PP(Q),N=(await Z.getEntriesAtPaths(F,[U])).get(U);return N?.type==="blob"?N:null},W=async(F)=>{let U=await G(F.sha);if(U)return{entry:U,ref:F.ref};let N=await Z.getDefaultBranch();if(N===F.ref)return null;let B=await G(await $9(Z,N));return B?{entry:B,ref:N}:null},K=async(F,U)=>{let[N]=await xF(Z,[{stem:F,sha:U}]);return N.content},H=async(F)=>{let U=await Z.listDecofileEntries(F,Q),N=hK(U,Q).map((B)=>({file:B.path.slice(X.length),version:B.sha,size:B.size}));return{tree:U,files:N}};return{head:()=>qs(J),snapshot:()=>qs(async()=>{let F=await J(),{tree:U,files:N}=await H(F.sha);if(U.length===0&&await G(F.sha)===null)throw new R2(`no .deco folder in ${Q??"the repository root"}`);return{revision:F.sha,resolvedRef:F.ref,files:N}}),snapshotAt:(F,U)=>qs(async()=>{let{files:N}=await H(F);return{revision:F,resolvedRef:U,files:N}}),readFiles:(F,U)=>qs(async()=>{let N=new Set(U),B=F.files.filter((j)=>N.has(j.file)),D=await xF(Z,B.map((j)=>({stem:j.file,sha:j.version}))),O={};return B.forEach((j,w)=>{O[j.file]={text:D[w].content,version:j.version}}),O}),readSchema:()=>qs(async()=>{let F=await W(await J());if(!F)return null;let U=await K(F.entry.path,F.entry.sha);if(!ai(U))return null;return{version:F.entry.sha,text:U,resolvedRef:F.ref}}),readSecretsPublicKey:()=>qs(async()=>{let F=await J(),U=OK5(Q,"secrets.pub"),N=(await Z.getEntriesAtPaths(F.sha,[U])).get(U);return N?.type==="blob"?K(N.path,N.sha):null})}}var Hj8=L(()=>{js();T5();fF()});function V2($){return iJ($).name}function Nj8($,Z){if($===Z)return!0;if(typeof $!=="object"||typeof Z!=="object"||!$||!Z)return!1;if(Array.isArray($)!==Array.isArray(Z))return!1;let Q=Object.keys($),Y=Object.keys(Z);if(Q.length!==Y.length)return!1;return Q.every((X)=>Object.hasOwn(Z,X)&&Nj8($[X],Z[X]))}function Pg0($,Z){return`${$}~${AD0(Z)??"none"}`}function Fj8($,Z){let Q=new Set([...Object.keys(Z.set),...Z.delete].map(_9)),Y=$.filter((J)=>!Q.has(V2(J.file))),X=new Map;for(let[J,G]of Object.entries(Z.set)){let W=qH(J),K=q2(G);X.set(W,K),Y.push({file:W,version:uP(K),size:Buffer.byteLength(K)})}return{files:Y,texts:X}}function jK5($,Z,Q,Y=new Set){let X={...$.set},J=new Set($.delete),G=(K)=>{for(let H of Object.keys(X))if(_9(H)===K)delete X[H];for(let H of J)if(_9(H)===K)J.delete(H)},W=new Set;for(let[K,H]of Object.entries(Z.put)){let F=V2(K);if(W.add(F),G(F),Y.has(F))continue;X[iX(K)]=JSON.parse(H)}for(let K of Z.delete){let H=V2(K);if(W.has(H))continue;if(G(H),Q.has(H))J.add(iX(K))}return{set:Object.fromEntries(Object.entries(X)),delete:[...J].sort()}}function wK5($,Z){return{set:Object.fromEntries(Object.entries($.set).filter(([Q])=>!Z.has(_9(Q)))),delete:$.delete.filter((Q)=>!Z.has(_9(Q)))}}function EK5($,Z){let Q=new Map($.files.map((J)=>[J.file,J.version])),Y=new Set(Z.files.map((J)=>J.file)),X=Z.files.filter((J)=>Q.get(J.file)!==J.version).map((J)=>J.file);for(let J of Q.keys())if(!Y.has(J))X.push(J);return X.sort()}function Bj8($){let{drafts:Z,ref:Q}=$,Y=Kj8({client:$.client,packagePath:$.packagePath,branch:$.mainBranch}),X=new Map,J=new Map,G=async(F)=>{let U=J.get(F.revision);if(U)return U;let N=await Y.snapshotAt(F.revision,F.resolvedRef??$.mainBranch);return J.set(F.revision,N),N},W=async()=>{let[F,U]=await Promise.all([Y.snapshot(),Z.load(Q)]);J.set(F.revision,F);let{files:N,texts:B}=Fj8(F.files,U?.body??{set:{},delete:[]}),D=Pg0(F.revision,U?.etag??null);return X.set(D,B),{revision:D,resolvedRef:F.resolvedRef,files:N}},K=async(F,U)=>{let N=new Map,B=[];for(let[O,j]of Object.entries(U)){let w=V2(O),E=F.files.filter((z)=>V2(z.file)===w);if(E.length!==1)continue;let P=JSON.parse(j),T=E[0];if(T.version===uP(q2(P)))N.set(w,T);else B.push({group:w,main:T,value:P})}if(B.length===0)return N;let D=await Y.readFiles(F,B.map((O)=>O.main.file));for(let{group:O,main:j,value:w}of B){let E=D[j.file]?.text;if(E===void 0)continue;try{if(Nj8(JSON.parse(E),w))N.set(O,j)}catch{}}return N},H=async(F,U)=>{let N=new Map(F.files.map((j)=>[j.file,j.version])),B={};for(let j of Object.keys(U.put)){let w=N.get(j);if(w===void 0)return{status:"stale"};B[j]=w}let D=new Set([...Object.keys(U.put),...U.delete].map(V2)),O=Object.entries(U.expected);try{let j=await Z.update(Q,(w)=>{if(O.length>0){let E=new Map(Fj8(F.files,w).files.map((P)=>[P.file,P.version]));for(let[P,T]of O)if((E.get(P)??null)!==T)throw Uj8}return wK5(w,D)});return{status:"committed",revision:Pg0(F.revision,j.etag),versions:B}}catch(j){if(j===Uj8)return{status:"stale"};throw j}};return{describe(){return{kind:"git",root:$.packagePath??".",readOnly:!1,assets:null}},snapshot:W,readFiles:async(F,U)=>{let N=X.get(F.revision)??new Map,B={},D=[];for(let O of U){let j=N.get(O);if(j===void 0)D.push(O);else B[O]={text:j,version:uP(j)}}if(D.length>0)Object.assign(B,await Y.readFiles(F,D));return B},readSchema:()=>Y.readSchema(),readSecretsPublicKey:()=>Y.readSecretsPublicKey(),base:async()=>{let F=await Y.head();return{revision:F.sha,resolvedRef:F.ref}},changes:async(F,U)=>{let N=await G(F);return{files:EK5(N,U),baseFiles:N.files}},readBaseFiles:async(F,U)=>Y.readFiles(await G(F),U),commit:async(F)=>{let U=await Y.readSchema();if(!U)throw hA1("not a Blocks v8 site");if(F.expectedSchemaVersion!==void 0&&U.version!==F.expectedSchemaVersion)return{status:"stale"};let N=await Y.snapshot();if(J.set(N.revision,N),F.expectedBase!==void 0&&N.revision!==F.expectedBase)return{status:"stale"};if(F.reason==="discard")return H(N,F);let B=new Set(N.files.map((w)=>V2(w.file))),D={};for(let[w,E]of Object.entries(F.put))D[w]=uP(q2(JSON.parse(E)));if(Object.keys(F.put).length+F.delete.length===0){let w=await Z.load(Q);return{status:"committed",revision:Pg0(N.revision,w?.etag??null),versions:D}}let O=await K(N,F.put);for(let w of Object.keys(F.put)){let E=O.get(V2(w));if(E?.file===w)D[w]=E.version}let j=await Z.update(Q,(w)=>jK5(w,F,B,new Set(O.keys())));return{status:"committed",revision:Pg0(N.revision,j.etag),versions:D}}}}function Dj8($){return{describe:()=>({kind:"git",root:$.packagePath??".",readOnly:!0,assets:null}),snapshot:async()=>({revision:"not-v8",resolvedRef:$.mainBranch,files:[]}),readFiles:async()=>({}),readSchema:async()=>null,readSecretsPublicKey:async()=>null,commit:async()=>{throw hA1("not a Blocks v8 site")},base:async()=>({revision:"not-v8",resolvedRef:$.mainBranch}),changes:async()=>({files:[],baseFiles:[]}),readBaseFiles:async()=>({})}}var Uj8;var Lj8=L(()=>{js();fF();Hj8();$B();Uj8=Symbol("stale draft")});async function PK5($){if(!ai($))return null;return EQ0(yA1(JSON.parse($)))}async function bQ0($,Z,Q){let Y=await $.readFileAtRef(Q,PP(Z)),X=Y===null?null:await PK5(Y);if(!X)throw new Rs;return X}function zK5($){return typeof $==="object"&&$!==null&&!Array.isArray($)}async function AK5($,Z,Q){let Y=`${aN(Z)}/`,X=await $.listDecofileEntries(Q,Z),J=hK(X,Z).map((H)=>({file:H.path.slice(Y.length),sha:H.sha})).filter((H)=>dX(H.file)),G=await xF($,J.map((H)=>({stem:H.file,sha:H.sha}))),W=J.map((H,F)=>{let[U]=TQ0(iX(H.file));if(U)throw new zg0(H.file,"not a valid entry name");let N;try{N=JSON.parse(G[F].content)}catch{throw new zg0(H.file,"invalid JSON")}if(!zK5(N))throw new zg0(H.file,"a saved block must be a JSON object");return{file:H.file,hasPath:Ds(N),entry:N}}),K=Object.create(null);for(let{name:H,winner:F}of Ls(W).values())K[H]=F.entry;return K}async function Oj8($,Z,Q){let[Y,X]=await Promise.all([bQ0($,Z,Q),AK5($,Z,Q)]);return{revision:Q,schemaHash:Y,blocks:X}}var Rs,zg0;var Ag0=L(()=>{js();fF();Rs=class Rs extends Error{constructor(){super("not a Blocks v8 site (.deco/schema.gen.json isn't a v8 schema)");this.name="NotV8Site"}};zg0=class zg0 extends Error{constructor($,Z){super(`.deco/blocks/${$}: ${Z}`);this.name="InvalidSavedBlock"}}});function TK5($){let Z=$;return typeof Z==="object"&&Z!==null&&typeof Z.revision==="string"&&typeof Z.schemaHash==="string"&&typeof Z.publishedAt==="string"?{revision:Z.revision,schemaHash:Z.schemaHash,publishedAt:Z.publishedAt}:null}async function wj8($,Z){let Q=await fq$($,yF.latest(Z));return Q?TK5(Q.value):null}async function FT1($,Z,Q){let Y=yF.revision(Z,Q);return(await $.listKeys(Y)).includes(Y)}async function qK5($,Z,Q){let Y=`${aN($.packagePath)}/`,X=await $.client.listDecofileEntries(Z,$.packagePath),J=hK(X,$.packagePath),G=new Map(J.map((U)=>[U.path,{stem:U.stem,sha:U.sha}])),W=new Map(J.map((U)=>[U.path,U.sha])),K=new Map;for(let U of J){let N=iJ(U.path.slice(Y.length)).name;K.set(N,[...K.get(N)??[],U.path])}let H=[],F=(U)=>{H.push({path:U,deleted:!0}),G.delete(U)};for(let[U,N]of Object.entries(Q.set)){let B=K.get(_9(U))??[],D=B.find((j)=>iX(j.slice(Y.length))===U)??`${Y}${qH(U)}`,O=q2(N);for(let j of B)if(j!==D)F(j);if(W.get(D)===uP(O))continue;H.push({path:D,content:O}),G.set(D,{stem:D.slice(Y.length,-5),content:O}),await wD0($.client.repo,O)}for(let U of Q.delete)for(let N of K.get(_9(U))??[])F(N);return{changes:H,tree:X,next:G}}async function UT1($,Z,Q,Y){let X=[...Q.changes],J=await Lg0({client:$.client,tree:Q.tree,packagePath:$.packagePath,branch:$.mainBranch,nextBlocks:Q.next,memo:new Map});if(J)X.push(J);try{let{sha:G}=await $.client.commitFiles({branch:$.mainBranch,message:Y,expectedHead:Z,changes:X});return G}catch(G){if(G instanceof h6)throw new Ms;throw G}}async function RK5($,Z,Q){let Y=await $9($.client,$.mainBranch),{changes:X,tree:J,next:G}=await qK5($,Y,Z);if(X.length===0)return null;return UT1($,Y,{changes:X,tree:J,next:G.values()},Q)}async function NT1($,Z){if(await FT1($.store,$.site,Z))return bQ0($.client,$.packagePath,Z);let Q=await Oj8($.client,$.packagePath,Z);return await $.store.putJson(yF.revision($.site,Z),Q,_q$),Q.schemaHash}async function BT1($,Z){let Q=yF.latest($.site);try{await $.store.putJson(Q,Z,Sq$),await $.purge.purge(Q)}catch(Y){throw new Tg0(Y)}}async function MK5($,Z,Q,Y){if(await Y.beforePointerWrite?.(),await $9($.client,$.mainBranch)!==Z)return!1;return await BT1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()}),!0}function jj8($,Z,Q,Y){console.error(`hosted publish: ${Q} failed`,{site:$.site,sha:Z,error:Y instanceof Error?Y.message:String(Y)})}async function Ej8($,Z,Q,Y,X={}){let J=await Z.load(Q);if(!J)return{result:"up-to-date"};let G=()=>Z.remove(Q,J.etag).catch((K)=>console.error("hosted publish: draft delete failed",{site:$.site,error:K instanceof Error?K.message:String(K)})),W=cq$(J.body)?null:await RK5($,J.body,Y.message.trim()?SR(Y.message.trim(),Y.coAuthor):Og0(Object.keys(J.body.set),J.body.delete,Y.coAuthor));if(await G(),W===null)return{result:"up-to-date"};return{result:"merged",sha:W,release:await DT1($,W,X)}}async function DT1($,Z,Q={}){let Y;try{Y=await NT1($,Z)}catch(X){return jj8($,Z,"release write",X),"none"}try{return await MK5($,Z,Y,Q)?"current":"created"}catch(X){return jj8($,Z,"latest.json update",X),"created"}}var Ms,Tg0;var xQ0=L(()=>{Jn();js();T5();WT1();fF();$B();bQ1();Ag0();Ms=class Ms extends Error{constructor(){super("main moved; publish again");this.name="MainMovedError"}};Tg0=class Tg0 extends Error{constructor($){super(`Making it current on the CDN failed (${$ instanceof Error?$.message:String($)}). Try again.`);this.name="LatestUpdateError"}}});function qg0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function VK5($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=qg0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function Pj8($){let Z;try{Z=qg0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=VK5(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=qg0(G),K=W&&qg0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Dj}from"zod";function kK5($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&IK5.test($)}function vK5($){return Object.fromEntries(Object.entries($).map(([Z,{userId:Q,at:Y}])=>[Z,{userId:Q,at:new Date(Y*1000).toISOString()}]))}function bK5($){return $.endsWith("/rpc")}function LT1($){let Z=$.get("decofileScope");if(!Z.userId||!Z.site)return null;let Q=nq$($.var.studioContext.storage.kv);if(!Q)return null;return{drafts:Q,ref:{organizationId:Z.organizationId,virtualMcpId:Z.virtualMcpId,branch:Z.branch,site:Z.site,editor:Z.userId}}}function jT1($,Z,Q,Y={}){let X=$.get("decofileScope");return RD0({projects:$.var.studioContext.storage.virtualMcps,project:{id:X.virtualMcpId,organizationId:X.organizationId,metadata:X.metadata},by:X.userId,client:Z,mainBranch:Q,fresh:Y.fresh})}async function Rj8($,Z,Q){let Y=$.get("decofileScope");if(!Y.userId||Y.site)return!1;try{return await jT1($,Z,await Q())}catch(X){return console.warn("decofile: main's schema unreadable, not an unowned v8",{organizationId:Y.organizationId,virtualMcpId:Y.virtualMcpId,error:X instanceof Error?X.message:String(X)}),!1}}function Rg0($){let Z=$.req.header(LA$);return Z==="v8"||Z==="v7"?Z:null}async function Mj8($,Z,Q){let Y=Rg0($),X=$.get("decofileScope");if(!(!!X.userId&&!!X.site)&&Y!=="v8")return null;try{return await jT1($,Z,await Q())}catch(G){if(Y==="v8")throw G;if(Y===null&&zP(X.metadata))throw G;return console.warn("decofile: main's schema unreadable, serving v7",{organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,error:G instanceof Error?G.message:String(G)}),!1}}function Vj8($,Z){let Q=Rg0($);return Q!==null&&Z!==null&&Q==="v8"!==Z}function Ij8($){return Jj8({organizationId:$.organizationId,virtualMcpId:$.virtualMcpId,branch:$.branch})}function kj8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Vs($){let Z=$.get("decofileScope");return $.var.repoClientFor($.var.studioContext,Z.organizationId,Z.repository)}function Is($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof jg0)return $.json({error:Q,code:"block-conflict",blocks:Z.blocks},409);if(Z instanceof h6)return $.json({error:Q},409);let Y=_G(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Cj8($={}){let Z=new Z1,Q=$.repoClientFor??bG;return Z.use("*",async(Y,X)=>{Y.set("repoClientFor",Q),await X()}),Z.use("/:virtualMcpId/:branch",qj8),Z.use("/:virtualMcpId/:branch/*",qj8),Z.get("/:virtualMcpId/:branch",async(Y)=>{let X=Y.get("decofileScope");try{let J=await Vs(Y);if(await Rj8(Y,J,()=>J.getDefaultBranch()))return Y.json(Pp,409);let G=LT1(Y),W=await Mj8(Y,J,()=>J.getDefaultBranch());if(Vj8(Y,W))return Y.json(OT1,409);if(G&&W){let U=await G.drafts.load(G.ref),N=AD0(U?.etag);return Y.json({draft:U&&N?yq$(G.ref.site,U.slug):null,version:N,changedBy:vK5(U?.editors??{})},200,{"Cache-Control":"no-store"})}let K=await Cq$(J,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),H={ETag:`"${K.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Y.req.header("if-none-match")===`"${K.sha}"`)return Y.body(null,304,H);if(!X.userId)return Y.body(Pj8(K.decofile),200,{...H,"content-type":"application/json"});let F=Ij8(X);return Y.body(`{"version":${JSON.stringify(K.sha)},"token":${JSON.stringify(F)},"apiHost":${JSON.stringify(kj8(Y))},"decofile":${K.decofile}}`,200,{...H,"content-type":"application/json"})}catch(J){return Is(Y,J)}}),Z.get("/:virtualMcpId/:branch/meta",async(Y)=>{let X=Y.get("decofileScope"),J=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let G=await Vs(Y),W=await G.readFileAtRef(X.branch,J);if(W===null){let K=await G.getDefaultBranch();if(K!==X.branch)W=await G.readFileAtRef(K,J)}if(W===null)return Y.json({error:"meta.gen.json not committed"},404);return Y.body(W,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(G){return Is(Y,G)}}),Z.patch("/:virtualMcpId/:branch",SK5,async(Y)=>{let X=Y.get("decofileScope"),J=Y.var.studioContext,G=_K5.safeParse(await Y.req.json().catch(()=>null));if(!G.success)return Y.json({error:"Invalid body",details:G.error.issues},400);let W;try{W=mq(G.data)}catch(K){if(K instanceof L40)return Y.json({error:K.message},400);throw K}for(let K of[...Object.keys(W.set??{}),...W.delete??[]])try{fB0(K)}catch(H){let F=H instanceof Error?H.message:String(H);return Y.json({error:F},400)}for(let[K,H]of Object.entries(W.set??{})){if(typeof H!=="object"||H===null||Array.isArray(H))return Y.json({error:`Block "${K}" must be a JSON object`},400);if(V71(K))return Y.json({error:`Block key "${K}" collides with a framework resolver module and cannot be written`},400)}try{let K=await Vs(Y),H=await $j8(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:K,branch:X.branch,packagePath:X.packagePath,coAuthor:QO(J)},W),F=Ij8(X);return Y.json({version:H,token:F,apiHost:kj8(Y)})}catch(K){return Is(Y,K)}}),Z.post("/:virtualMcpId/:branch/publish",async(Y)=>{let X=Y.get("decofileScope");try{let J=await Vs(Y),G=await J.getDefaultBranch();if(await Rj8(Y,J,async()=>G))return Y.json(Pp,409);let W=LT1(Y),K=await Mj8(Y,J,async()=>G);if(Vj8(Y,K))return Y.json(OT1,409);if(W&&K){let F=Ep();if(!F)return Y.json({error:"hosted delivery not configured"},503);let U=await Y.req.json().catch(()=>({}));try{let N=await Ej8({client:J,packagePath:X.packagePath,mainBranch:G,store:F,purge:Eg0(),site:W.ref.site},W.drafts,W.ref,{message:typeof U.note==="string"?U.note:"",coAuthor:QO(Y.var.studioContext)});return Y.json(N)}catch(N){if(N instanceof Ms)return Y.json({error:"main-moved"},409);throw N}}if(G===X.branch)return Y.json({error:"Branch is already the default branch"},400);let H=`chore(decofile): publish ${X.branch}`;try{let F;try{F=await J.mergeBranches(G,X.branch,H)}catch(U){if(_G(U)!==409)throw U;await Jg0(J,X.branch,G),F=await J.mergeBranches(G,X.branch,H)}return F?Y.json({result:"merged",sha:F}):Y.json({result:"up-to-date"})}catch(F){if(_G(F)===409)return Y.json({error:"merge-conflict"},409);if(_G(F)===405){let N=await J.findOpenChangeRequest(G,X.branch)??await J.createChangeRequest({base:G,head:X.branch,title:`Publish ${X.branch}`});return Y.json({result:"pull-request",number:N.number,url:N.url})}throw F}}catch(J){return Is(Y,J)}}),Z.get("/:virtualMcpId/:branch/status",async(Y)=>{let X=Y.get("decofileScope");try{let J=await Vs(Y),G=await J.getDefaultBranch();if(G===X.branch)return Y.json({baseBranch:G,aheadBy:0,behindBy:0});try{let{aheadBy:W,behindBy:K}=await J.compare(G,X.branch);return Y.json({baseBranch:G,aheadBy:W,behindBy:K})}catch(W){if(_G(W)===404)return Y.json({baseBranch:G,aheadBy:0,behindBy:0});throw W}}catch(J){return Is(Y,J)}}),Z.post("/:virtualMcpId/:branch/rpc",async(Y)=>{let X=Y.get("decofileScope"),J,G,W;try{J=await Vs(Y),G=await J.getDefaultBranch(),W=await jT1(Y,J,G,{fresh:Rg0(Y)===null})}catch(F){return Is(Y,F)}if(!W){if(Rg0(Y)==="v8")return Y.json(OT1,409);return zs(Dj8({packagePath:X.packagePath,mainBranch:G}),{server:{name:"studio-github",version:"1"},bodyCacheBytes:0})(Y.req.raw)}if(X.userId&&!X.site)return Y.json(Pp,409);let K=LT1(Y);if(!K)return Y.json({error:"hosted delivery not configured",code:jA$},503);return zs(Bj8({client:J,packagePath:X.packagePath,mainBranch:G,drafts:K.drafts,ref:K.ref}),{server:{name:"studio-github",version:"1"},preview:X.previewServerUrl?{url:new URL(X.previewServerUrl).origin}:null,bodyCacheBytes:0,onError:(F)=>console.error("content protocol: internal error",{organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,error:F instanceof Error?F.message:String(F)})})(Y.req.raw)}),Z}var IK5,zj8=500,Aj8=1048576,Tj8=1024,CK5=8388608,SK5,_K5,qj8,OT1;var Sj8=L(()=>{$p();Qp();K8();Q3();Yg0();n60();vR();T5();Qj8();Wj8();vA1();fF();$B();HT1();Lj8();xQ0();QR();zp();QT1();IG();IK5=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;SK5=C6({maxSize:CK5,onError:($)=>$.json({error:"Payload too large"},413)}),_K5=Dj.object({set:Dj.record(Dj.string(),Dj.unknown()).optional(),delete:Dj.array(Dj.string()).optional(),expect:Dj.record(Dj.string(),Dj.string().regex(/^[0-9a-f]{64}$/).nullable()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=zj8,{message:`Patch cannot touch more than ${zj8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Aj8),{message:`Each block must be at most ${Aj8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Tj8),{message:`Each block key must be at most ${Tj8} characters`}).refine(($)=>Object.keys($.expect??{}).every((Z)=>(Z in($.set??{}))||($.delete??[]).includes(Z)),{message:"Each expected block must be one the patch sets or deletes"}).refine(($)=>Object.keys($.set??{}).every((Z)=>!($.delete??[]).includes(Z)),{message:"A block cannot be both set and deleted in the same patch"}),qj8=Us(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!kK5(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let N=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!N||!Gj8(N,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await TQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null,H=AP(K);if(!H&&!bK5($.req.path))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((N)=>N.connection_id)??[],U=JW(K,F);if(!U)return $.json({error:"Project has no repository",code:"no_repository"},404);return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:ZB(K),repository:U,userId:G,previewServerUrl:H,site:await qD0(Q.storage.orgSites,X,Y.id),metadata:K}),Z()});OT1={code:OA$,error:"main's schema changed: read it again"}});function gK5($){let Z=new Date($);if(Number.isNaN(Z.getTime()))return null;return`${Z.toISOString().slice(0,16).replace("T"," ")} UTC`}function hK5($){let Z=$.message.split(`
|
|
4488
4488
|
`)[0]?.trim()??"";if(Z.startsWith(fQ0)&&Z.length>fQ0.length)return Z;if(Z&&!xK5.test(Z))return`${fQ0}${Z}`;let Q=gK5($.date);return Q?`${fQ0}release from ${Q}`:`${fQ0}earlier release`}function uK5($,Z,Q){let Y=hK5($),X=`${fK5}: ${Z}`,J=SR(Y,Q);return J===Y?`${Y}
|
|
4489
4489
|
|
|
@@ -4491,7 +4491,7 @@ ${X}`:`${Y}
|
|
|
4491
4491
|
|
|
4492
4492
|
${X}
|
|
4493
4493
|
${J.slice(Y.length).trimStart()}`}function vj8($){return $?.match(yK5)?.[1]?.toLowerCase()??null}async function lK5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(hK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=hK(X,$.packagePath),W=new Set(G.map((H)=>H.path)),K=[];for(let H of G){if(J.get(H.path)===H.sha)continue;K.push({path:H.path,copyFromRef:Q})}for(let H of J.keys())if(!W.has(H))K.push({path:H,deleted:!0});return{changes:K,tree:Y,next:G.map((H)=>({stem:H.stem,sha:H.sha}))}}async function _j8($,Z){try{return await bQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof Rs)return null;throw Q}}async function bj8($,Z,Q){let Y=PP($.packagePath),[X,J]=await Promise.all([$.client.getEntriesAtPaths(Z,[Y]),$.client.getEntriesAtPaths(Q,[Y])]);if(X.get(Y)?.sha===J.get(Y)?.sha)return!1;let[G,W]=await Promise.all([_j8($,Z),_j8($,Q)]);return G!==W}async function xj8($,Z){if(!zD0(Z))throw new pu;if(!await FT1($.store,$.site,Z))throw new pu}async function fj8($,Z){await xj8($,Z);let Q=await $9($.client,$.mainBranch);return bj8($,Q,Z)}async function yj8($,Z,Q={},Y={}){await xj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new pu;let J=await $9($.client,$.mainBranch),G=await lK5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await bj8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await UT1($,J,G,uK5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await DT1($,K,Y),schemaChanged:W}}var pu,fQ0="Reapply: ",xK5,fK5="Reapplied-From",yK5;var wT1=L(()=>{Jn();T5();fF();$B();xQ0();Ag0();pu=class pu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};xK5=/^chore\(decofile\):/,yK5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function gj8($,Z,Q){let[Y,X,J]=await Promise.all([wj8($.store,$.site),xq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:mK5,cursor:Q,limit:cK5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>vj8(H.body));await Promise.all([...new Set(W)].filter((H)=>H!==null&&!G.has(H)).map(async(H)=>{let F=await $.client.readCommit(H).catch(()=>null);if(F)G.set(H,F.date)}));let K=J.items.map((H,F)=>{let U=W[F];return{sha:H.sha,date:H.date,message:H.message,author:H.author.name??H.author.login,hasRelease:X.has(H.sha),reapplyOf:U?{sha:U,date:G.get(U)??null}:null}});return{current:Y,commits:K,nextCursor:J.nextCursor}}async function hj8($){let Z=await $9($.client,$.mainBranch),Q=await NT1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await BT1($,Y),Y}var cK5=50,mK5="1970-01-01T00:00:00Z";var uj8=L(()=>{T5();$B();xQ0();wT1()});function lj8($){return`site-tokens:${$}`}function dK5($){let Z=$?.tokens;if(!Array.isArray(Z))return[];return Z.filter((Q)=>typeof Q==="object"&&Q!==null&&typeof Q.kid==="string"&&typeof Q.iat==="number")}function cj8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function iK5($,Z){let Q=(J)=>ET1(new TextEncoder().encode(JSON.stringify(J))),Y=`${Q({alg:"EdDSA",typ:"JWT"})}.${Q({site:Z.site,kid:Z.kid,iat:Z.iat})}`,X=await crypto.subtle.sign({name:"Ed25519"},$,new TextEncoder().encode(Y));return`${Y}.${ET1(X)}`}function mj8($){let Z=async(Q,Y)=>dK5(await $.kv.get(Q,lj8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:ET1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await iK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,lj8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var ET1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function nK5(){let $=Ep();return $?{store:$,purge:Eg0()}:null}async function Vg0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site}}function dj8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return mj8({kv:$.var.studioContext.storage.kv,signingKey:()=>cj8(Z)})}function ks($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof Rs)return $.json({error:Q},409);if(Z instanceof Tg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=_G(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function ij8($={}){let Z=new Z1,Q=$.repoClientFor??bG,Y=$.insightsFor??sT$,X=$.delivery??nK5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",pK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await gj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ks(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);return J.json({current:await hj8(G)})}catch(G){return ks(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);return J.json({schemaChanged:await fj8(G,J.req.param("sha"))})}catch(G){if(G instanceof pu)return J.json({error:G.message},404);return ks(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Vg0(J);if(!G)return J.json(Mg0,503);let W=await yj8(G,J.req.param("sha"),{coAuthor:QO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof pu)return J.json({error:G.message},404);if(G instanceof Ms)return J.json({error:"main-moved"},409);return ks(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=dj8(J);if(!W)return J.json({error:"site tokens not configured"},503);return J.json({site:G.site,tokens:await W.list(G.organizationId,G.site)})}),Z.post("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=dj8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await ZR(K,G.packagePath,await K.getDefaultBranch());if(await Ap(J.var.studioContext.storage.virtualMcps,{id:G.virtualMcpId,organizationId:G.organizationId,metadata:G.metadata},H,J.var.studioContext.auth?.user?.id??"system"),!H)return J.json({error:"not a Blocks v8 site"},409);return J.json(await W.issue(G.organizationId,G.site))}catch(K){return ks(J,K)}}),Z}var pK5,Mg0;var pj8=L(()=>{SF();K8();Yg0();IG();_F();T5();$B();HT1();xQ0();Ag0();uj8();wT1();n60();QR();zp();u1();vR();pK5=Us(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await TQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!MQ(await r7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=JW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await RD0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return ks($,H)}let K=await qD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Pp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:ZB(G),repository:W,metadata:G}),Z()}),Mg0={error:"hosted delivery not configured"}});var nj8=($)=>{let Z=new Z1;if(Z.use("*",fo),Z.use("*",OU8),Z.route("/",DU8($.voiceSessions)),Z.route("/",Hy0()),Z.route("/",aU8()),Z.route("/",FN8()),Z.route("/",nU8()),Z.route("/",DL8()),Z.route("/",OL8()),Z.route("/",GL8()),Z.route("/",NL8()),Z.route("/",KL8()),Z.route("/",$g0()),Z.route("/tools",TL8()),Z.route("/",PL8()),Z.route("/",uD8({kvStorage:$.kvStorage})),Z.route("/",gD8()),Z.route("/fs",rD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",aO8()),Z.route("/decofile",Cj8()),Z.route("/hosted",ij8()),Z.route("/",YL8()),Z.route("/",eD8()),Z.route("/deco-sites",Uy0()),Z.route("/hosting",VU8()),Z.route("/monitor",hU8()),Z.route("/order-monitor",mU8()),Z.route("/sso",Yy0()),Z.route("/",Zg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",AU8()),$.mountDevAssets)Z.route("/dev-assets",wy0({orgFromPath:!0}));Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth);for(let Q of OA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",gW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of OA1)Z.route(Q,ZL8());return Z.route("/mcp",Yx0()),Z.route("/mcp/self",sy0()),Z.route("/mcp",Gx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var tj8=L(()=>{K8();LU8();jU8();pf0();TU8();mz1();IU8();uU8();dU8();Ey0();w2();gz1();eU8();oz1();hD8();lD8();aD8();$L8();rZ0();kz1();Wx0();LA1();QL8();XL8();WL8();HL8();EA1();LL8();jL8();zL8();PA1();qL8();zA1();Xx0();eO8();Sj8();pj8()});import{z as nu}from"zod";class PT1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new rj8.Kvm(Ig0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Ig0.StorageType.Memory,ttl:aj8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?sj8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await J$(200);continue}let G=oj8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await J$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,oj8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new R1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(Y){let X=await this.kv(),J=`agent.${Z.conversationKey}`,G=await X.get(J),W=G?.operation==="PUT"?sj8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Ig0,rj8,aj8,oj8,sj8;var ej8=L(()=>{BG();kB();p$();Ig0=_(xH(),1),rj8=_(_q(),1),aj8=_(o2(),1),oj8=new TextEncoder,sj8=nu.discriminatedUnion("state",[nu.object({state:nu.literal("ready"),agentId:nu.string()}),nu.object({state:nu.literal("creating"),expiresAt:nu.number()})])});import{z as Cs}from"zod";function tK5($){return{model:$.model,instructions:`${vt$}
|
|
4494
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class zT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:tK5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var $w8=L(()=>{kB()});var Zw8;var Qw8=L(()=>{Zw8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function AT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Zw8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:zO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var Yw8=L(()=>{kB();Qw8()});import{z as pJ}from"zod";import{createHash as oK5,createHmac as sK5}from"crypto";class kg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=oK5("sha256").update(JSON.stringify(AT1($))).digest("hex"),this.conversationKey=sK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new kg0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...AT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var Xw8=L(()=>{Yw8()});import{createHmac as rK5,timingSafeEqual as aK5}from"crypto";import{z as Ss}from"zod";function Gw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return rK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Ww8($,Z){let Q=Buffer.from(JSON.stringify(Jw8.parse($))).toString("base64url");return`${Q}.${Gw8(Q,Z)}`}function Kw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(Gw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aK5(W,G))return null;try{let K=Jw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Jw8;var Hw8=L(()=>{kB();Jw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as TT1}from"zod";function Fw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return qT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var qT1;var Uw8=L(()=>{qT1=TT1.object({provider:TT1.enum(["elevenlabs","openai"]),model:TT1.string().trim().min(1).max(128)})});import{createHash as eK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${eK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class MT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new Nw8.Kvm(Sg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Sg0.StorageType.Memory,ttl:Bw8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=Fw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+zO},W=Ww8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?Cg0.parse(F.json()):null,N=RT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:vs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=Kw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Cg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,RT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Cg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,RT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(vs($));if(Q?.operation==="PUT"&&Cg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Sg0,Nw8,Bw8,Cg0,RT1;var Dw8=L(()=>{BG();kB();Hw8();Uw8();Sg0=_(xH(),1),Nw8=_(_q(),1),Bw8=_(o2(),1),Cg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:qT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),RT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function HH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function FH5($,Z,Q){try{return JSON.parse($)}catch{throw new jw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function UH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:FH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function NH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?qN(Q.function.parameters):qN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function BH5($){if(!$)return;return{openai:{response_format:$}}}function DH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Lw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens: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:J};return X?{...G,providerOptions:X}:G}function Ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var $H5=256,ZH5,QH5,YH5,XH5,JH5,GH5,WH5,KH5,jw8,ww8,Ew8;var Pw8=L(()=>{l4();K8();Fs();FU();ZH5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),QH5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),YH5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(QH5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),XH5=m1.object({type:m1.literal("text")}),JH5=m1.object({type:m1.literal("json_object")}),GH5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),WH5=m1.union([XH5,JH5,GH5]),KH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(YH5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(ZH5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:WH5.optional(),user:m1.string().optional()});jw8=class jw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ww8=new Z1;ww8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=KH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=HH5(J.model);if(!G)return $.json(YD("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}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>cA(E.providerId));if(!w)return $.json(YD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=UH5(J.messages),N=J.tools?NH5(J.tools):void 0,B=BH5(J.response_format),D=DH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Lw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=$H5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:Ow8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=Lw8(F,U,N,J,B,$.req.raw.signal),w=await RO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:Ow8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});Ew8=ww8});function LH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function zw8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!LH5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Aw8=L(()=>{K8();eY()});var _g0;var VT1=L(()=>{_g0={name:"decocms",version:"4.509.6",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 dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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","@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":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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:"^7.0.107","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",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function wH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jH5}}var Tw8,jH5="https://ph.studio.decocms.com",qw8;var Rw8=L(()=>{K8();A10();Zu();H9();u1();jo();Lz1();VT1();Tw8=new Z1;Tw8.get("/",($)=>{let Z={version:_g0.version,theme:n3$(),...NF().logo&&{logo:NF().logo},...fO()&&{internalUrl:L$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:GF8(),posthog:wH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:qU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});qw8=Tw8});import{z as R$}from"zod";var EH5,Mw8;var Vw8=L(()=>{EH5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),Mw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(EH5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Iw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function vg0($,Z={}){let Q=await fetch(Iw8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return Mw8.parse(await Q.json())}async function kw8($,Z={}){let Q=await fetch(Iw8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var IT1=L(()=>{Vw8();xL()});import{join as Cw8}from"path";async function zH5($){try{let Z=await vg0($,{signal:AbortSignal.timeout(PH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||dw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function AH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||dw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
|
|
4494
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class zT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:tK5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var $w8=L(()=>{kB()});var Zw8;var Qw8=L(()=>{Zw8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function AT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Zw8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:zO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var Yw8=L(()=>{kB();Qw8()});import{z as pJ}from"zod";import{createHash as oK5,createHmac as sK5}from"crypto";class kg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=oK5("sha256").update(JSON.stringify(AT1($))).digest("hex"),this.conversationKey=sK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new kg0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...AT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var Xw8=L(()=>{Yw8()});import{createHmac as rK5,timingSafeEqual as aK5}from"crypto";import{z as Ss}from"zod";function Gw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return rK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Ww8($,Z){let Q=Buffer.from(JSON.stringify(Jw8.parse($))).toString("base64url");return`${Q}.${Gw8(Q,Z)}`}function Kw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(Gw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aK5(W,G))return null;try{let K=Jw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Jw8;var Hw8=L(()=>{kB();Jw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as TT1}from"zod";function Fw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return qT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var qT1;var Uw8=L(()=>{qT1=TT1.object({provider:TT1.enum(["elevenlabs","openai"]),model:TT1.string().trim().min(1).max(128)})});import{createHash as eK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${eK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class MT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new Nw8.Kvm(Sg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Sg0.StorageType.Memory,ttl:Bw8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=Fw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+zO},W=Ww8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?Cg0.parse(F.json()):null,N=RT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:vs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=Kw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Cg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,RT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Cg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,RT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(vs($));if(Q?.operation==="PUT"&&Cg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Sg0,Nw8,Bw8,Cg0,RT1;var Dw8=L(()=>{BG();kB();Hw8();Uw8();Sg0=_(xH(),1),Nw8=_(_q(),1),Bw8=_(o2(),1),Cg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:qT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),RT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function HH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function FH5($,Z,Q){try{return JSON.parse($)}catch{throw new jw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function UH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:FH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function NH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?qN(Q.function.parameters):qN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function BH5($){if(!$)return;return{openai:{response_format:$}}}function DH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Lw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens: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:J};return X?{...G,providerOptions:X}:G}function Ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var $H5=256,ZH5,QH5,YH5,XH5,JH5,GH5,WH5,KH5,jw8,ww8,Ew8;var Pw8=L(()=>{l4();K8();Fs();FU();ZH5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),QH5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),YH5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(QH5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),XH5=m1.object({type:m1.literal("text")}),JH5=m1.object({type:m1.literal("json_object")}),GH5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),WH5=m1.union([XH5,JH5,GH5]),KH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(YH5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(ZH5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:WH5.optional(),user:m1.string().optional()});jw8=class jw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ww8=new Z1;ww8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=KH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=HH5(J.model);if(!G)return $.json(YD("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}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>cA(E.providerId));if(!w)return $.json(YD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=UH5(J.messages),N=J.tools?NH5(J.tools):void 0,B=BH5(J.response_format),D=DH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Lw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=$H5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:Ow8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=Lw8(F,U,N,J,B,$.req.raw.signal),w=await RO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:Ow8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});Ew8=ww8});function LH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function zw8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!LH5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Aw8=L(()=>{K8();eY()});var _g0;var VT1=L(()=>{_g0={name:"decocms",version:"4.509.7",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 dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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","@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":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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:"^7.0.107","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",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function wH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jH5}}var Tw8,jH5="https://ph.studio.decocms.com",qw8;var Rw8=L(()=>{K8();A10();Zu();H9();u1();jo();Lz1();VT1();Tw8=new Z1;Tw8.get("/",($)=>{let Z={version:_g0.version,theme:n3$(),...NF().logo&&{logo:NF().logo},...fO()&&{internalUrl:L$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:GF8(),posthog:wH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:qU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});qw8=Tw8});import{z as R$}from"zod";var EH5,Mw8;var Vw8=L(()=>{EH5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),Mw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(EH5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Iw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function vg0($,Z={}){let Q=await fetch(Iw8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return Mw8.parse(await Q.json())}async function kw8($,Z={}){let Q=await fetch(Iw8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var IT1=L(()=>{Vw8();xL()});import{join as Cw8}from"path";async function zH5($){try{let Z=await vg0($,{signal:AbortSignal.timeout(PH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||dw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function AH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||dw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
|
|
4495
4495
|
`)}function TH5($,Z){return $.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>",` ${Z}
|
|
4496
4496
|
</head>`)}function Sw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=qu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Cw8($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(qH5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=qu(Q.req.param("file").replace(/\.md$/,""));try{let X=await kw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(RH5)});if(X===null)return Q.text("Deco Score not found",404);return Q.body(X,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?Cw8($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await zH5(qu(Y)),K=AH5(Y,W);return Q.html(TH5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var PH5=2500,qH5=1e4,RH5=1e4;var _w8=L(()=>{K8();xL();IT1();u1()});function bg0($,Z){return fetch(`${SK({})}${$}`,Z)}async function MH5($,Z){let Q=await vg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function kH5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:Y}}var VH5,IH5=8192,Lj,vw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},bw8;var xw8=L(()=>{K8();Q3();nK();xL();IT1();VH5=new Set(["complete","errored","terminated","unknown"]);Lj=new Z1;Lj.use("*",async($,Z)=>{let Q=await B4.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});Lj.use("/link-token/*",vw8);Lj.use("/suggest",vw8);Lj.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await MH5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Lj.post("/run",C6({maxSize:IH5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=kH5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await bg0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${HP({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});Lj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await bg0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${HP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:VH5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Lj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await bg0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});Lj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await bg0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});bw8=Lj});var CH5=1048576,kT1;var fw8=L(()=>{K8();Q3();u1();$z1();kT1=new Z1;kT1.post("/webhook",C6({maxSize:CH5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=B0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!EH8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=PH8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await zH8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as SH5}from"crypto";function bH5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return SH5(Buffer.from(X),Buffer.from(Y))}function xH5($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function yw8($){let Z=new Z1;return Z.post("/webhook",C6({maxSize:_H5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!bH5(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!vH5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});return m50().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=xH5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await fH5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function fH5($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await $48(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var _H5=5242880,vH5;var gw8=L(()=>{K8();Q3();CX();gQ();vH5=new Set(["check_suite","issue_comment"])});import{DBOS as ST1,SchedulerMode as yH5}from"@dbos-inc/dbos-sdk";async function hH5(){try{return await uH5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function uH5(){if(!c50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (QF1(),ZF1)),Promise.resolve().then(() => ($F1(),eH1))]),Q=await m50(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=Hp$({sandboxes:J,pools:G,records:await Fp$(X,J,G),legacyPools:sC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Up$(K,wj0(X,new GJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:eC0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function lH5($,Z){let Q=await ST1.runStep(hH5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function hw8(){if(CT1)return;if(!B0().agentSandboxEnabled||!c50())return;CT1=ST1.registerWorkflow(lH5,{name:"sandboxCredentialPushWorkflow"}),ST1.registerScheduled(CT1,{name:"sandboxCredentialPushWorkflow",crontab:gH5,mode:yH5.ExactlyOncePerIntervalWhenActive})}var gH5="1,11,21,31,41,51 * * * *",CT1=null;var uw8=L(()=>{S3();Nw();m31();$S0();rC0();CX();u1()});function lw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=J$8(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new ZQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var cw8=L(()=>{K8();Nw();IN1();MO()});function xg0(){try{return B0().jiraSettleSeconds*1000}catch{return ez}}function mw8($,Z){let Q=Z.windowMs??ez,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=cH5($,Q);if((X.id&&Y.toId?X.id===Y.toId:!1)||!X.id&&X.name===Y.to)return{kind:"returned",change:Y};return{kind:"moved",change:Y,from:X}}function cH5($,Z){for(let Y=$.length-2;Y>=0;Y--){let X=$[Y],J=$[Y+1];if(X&&J&&J.at-X.at>=Z)return{id:X.toId,name:X.to}}let Q=$[0];return{id:Q?.fromId??null,name:Q?.from??null}}var _T1=L(()=>{gO();u1()});function dw8($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,Y=Z.issue?.key,X=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof Y!=="string"||typeof X!=="string"&&typeof X!=="number")return null;let J=Z.changelog?.items?.find((G)=>G.field==="status");if(!J||typeof J.toString!=="string")return null;return{issueId:String(Q),issueKey:Y,toStatus:J.toString,changelogId:String(X)}}async function vT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=mw8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:xg0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:az(N)})),H=n98(K)&&Z.boardId?p98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=i98(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await XH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var bT1=L(()=>{KU();MO();tt();_T1()});import{DBOS as I2,SchedulerMode as mH5}from"@dbos-inc/dbos-sdk";function iw8($){fT1=$}function gT1(){if(!fT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return fT1}function hT1(){let $=gT1();return new aO($.db,new GJ($.encryptionKey))}async function tH5($){try{let Z=await hT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(gT1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${iH5}m"`,W=0,K;for(let H=0;H<pH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await vT1(Q,Z,{issueId:U.id,now:Date.now()})==="fired")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,fired:W}}catch(Z){return{integrationId:$,fired:0,error:Z instanceof Error?Z.message:String(Z)}}}async function oH5($,Z){let Q=await I2.runStep(()=>hT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>I2.runStep(()=>tH5(X),{name:`sweepJira:${X}`})));for(let X of Y)if(X.error)console.warn(`[jira-trigger] integration ${X.integrationId} failed: ${X.error}`);else if(X.fired>0)console.log(`[jira-trigger] integration ${X.integrationId} fired ${X.fired} automation(s) the webhook missed`)}async function sH5($,Z){try{let Q=await hT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(gT1().db,Q.organizationId);if(!Y)return"disabled";let X=await vT1(Y,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(X==="fired")console.log(`[jira-trigger] fired an automation for ${Z.issueKey} after it settled`);else if(X==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no fire`);return X}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function rH5($,Z){await I2.sleep(xg0()+nH5),await I2.runStep(()=>sH5($,Z),{name:"settleJiraMove"})}async function pw8($,Z){if(!yT1)throw Error("[jira-trigger] settle workflow is not registered");await I2.startWorkflow(yT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function nw8(){if(xT1)return;yT1=I2.registerWorkflow(rH5,{name:"jiraSettleWorkflow"}),xT1=I2.registerWorkflow(oH5,{name:"jiraTriggerSweepWorkflow"}),I2.registerScheduled(xT1,{name:"jiraTriggerSweepWorkflow",crontab:dH5,mode:mH5.ExactlyOncePerIntervalWhenActive})}var dH5="*/5 * * * *",iH5=20,pH5=5,nH5=5000,fT1=null,yT1=null,xT1=null;var uT1=L(()=>{Nw();pz();MO();_T1();bT1()});function tw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=ZE($.db);async function Y(J,G){let W=dw8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await pw8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",C6({maxSize:aH5}),async(J)=>{let G=J.req.param("secret");if(!await Z.getByWebhookSecret(G))return J.json({error:"Unknown webhook"},404);let K;try{K=await J.req.json()}catch{return J.json({error:"Body must be JSON"},400)}return Y(G,K).catch((H)=>{console.error("[jira-webhook] trigger failed",H)}),J.body(null,202)}),X}var aH5=1048576;var ow8=L(()=>{K8();Q3();Nw();uT1();bT1();q00()});function sw8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var rw8,eH5,$F5,aw8;var ew8=L(()=>{K8();BG();xt();ii();rw8=new Z1,eH5=["range","if-none-match","if-modified-since"],$F5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];rw8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(xo($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new R1(401,{message:"Authentication required"})}if(!Q)throw new R1(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new R1(400,{message:"Missing file key"});let X=await qZ0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&bK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return sw8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of eH5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new R1(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new R1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of $F5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),sw8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});aw8=rw8});var yQ0=y((tu)=>{var ZF5=tu&&tu.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),QF5=tu&&tu.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ZF5(Z,$,Q)};Object.defineProperty(tu,"__esModule",{value:!0});QF5(B3(),tu)});var QE8=y(($E8)=>{Object.defineProperty($E8,"__esModule",{value:!0});$E8.version=void 0;$E8.version="3.4.0"});var JE8=y((XD)=>{var YF5=XD&&XD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(XD,"__esModule",{value:!0});XD.NodeTransport=XD.VERSION=void 0;XD.nodeResolveHost=HF5;var J9=yQ0(),XF5=V0("net"),lT1=V0("tls"),JF5=V0("path"),YE8=V0("fs"),GF5=YF5(V0("dns")),WF5=QE8();XD.VERSION=WF5.version;var KF5="nats.js";class XE8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=KF5,this.version=XD.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,J9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw J9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new J9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new J9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,J9.deferred)(),Q,Y=(0,XF5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,J9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=J9.DataBuffer.concat(...this.yields),X=(0,J9.extractProtocolMessage)(Y);if(X!=="")try{let J=J9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,J9.deferred)();try{if($=(0,JF5.resolve)($),!(0,YE8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,YE8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,J9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,J9.deferred)();try{let X=(0,lT1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,J9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J9.deferred)();try{let Y=(0,lT1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,J9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J9.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 lT1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J9.render)($)}`);let Z=(0,J9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}XD.NodeTransport=XE8;function HF5($){let Z=(0,J9.deferred)();return GF5.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var FE8=y((HE8)=>{Object.defineProperty(HE8,"__esModule",{value:!0});HE8.connect=FF5;var GE8=JE8(),WE8=yQ0(),KE8=yQ0();function FF5($={}){if((0,KE8.hasWsProtocol)($))return Promise.reject(KE8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,WE8.setTransportFactory)({factory:()=>{return new GE8.NodeTransport},dnsResolveFn:GE8.nodeResolveHost}),WE8.NatsConnectionImpl.connect($)}});var UE8=y((Oj)=>{var NF5=Oj&&Oj.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),BF5=Oj&&Oj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))NF5(Z,$,Q)};Object.defineProperty(Oj,"__esModule",{value:!0});Oj.connect=void 0;var DF5=FE8();Object.defineProperty(Oj,"connect",{enumerable:!0,get:function(){return DF5.connect}});BF5(yQ0(),Oj)});function DE8($){let Z=$?.connectFn??wF5,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:jF5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=k7(OF5,LF5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?fg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?fg0.usernamePasswordAuthenticator(B.user,B.password):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=BE8.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function wF5($){return NE8.connect($)}var fg0,NE8,BE8,LF5=100,OF5=3000,jF5=3000;var LE8=L(()=>{p$();fg0=_(o2(),1),NE8=_(UE8(),1),BE8=_(xH(),1)});function yg0($,Z){return`${$}.${Z}`}class cT1{cache;constructor($){this.cache=eN({ttlMs:$?.ttlMs??EF5,maxSize:$?.maxSize??PF5})}async get($,Z){return this.cache.get(yg0($,Z))??null}async set($,Z,Q){this.cache.set(yg0($,Z),Q)}async invalidate($,Z){this.cache.delete(yg0($,Z)),this.cache.delete(yg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var EF5=600000,PF5=5000;var OE8=()=>{};function gg0($,Z){return`${$}:${Z}`}function mT1($){let Z=eN({ttlMs:$?.ttlMs??zF5,maxSize:$?.maxSize??AF5}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(jE8,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(gg0(K,H))},set(K,H,F){Z.set(gg0(K,H),F)},invalidate(K,H){Z.delete(gg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(jE8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(gg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var jE8="studio.ai-provider-keys.invalidate",zF5=30000,AF5=5000;var wE8=()=>{};class dT1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var EE8=($)=>{let Z;return()=>Z??=$()},iT1,pT1;var PE8=L(()=>{b6();iT1=EE8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),pT1=EE8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function kF5($=TE8){return{name:hB,subjects:[`${jL1}.>`],storage:zU.StorageType.File,max_age:RF5,max_bytes:VF5,max_msgs_per_subject:IF5,discard:zU.DiscardPolicy.Old,retention:zU.RetentionPolicy.Limits,duplicate_window:MF5,num_replicas:$}}class qE8{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*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=$}}function zE8($){let Z=AE8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function vF5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,qF5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function bF5($,Z){return $.info?.cluster?Z:1}function xF5($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class nT1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=kF5(X);try{await Y.streams.info(hB),await Y.streams.update(hB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(hB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(hB),await Y.streams.add(J);else throw G}},Q=await e$(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await zU.jetstreamManager($),X=bF5($,TE8);try{await Z(Y,X)}catch(J){if(X<=1||!xF5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:nt});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=vF5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=P98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=EL1(H,{runId:Z}),N=performance.now()-F;iT1().record(N),pT1().add(1,{"org.id":Y??"unknown"}),_F5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?zE8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),SF5)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await e$(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:zE8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=EL1(Z,{runId:$,dedup:Q});iT1().record(performance.now()-X),pT1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=E98({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?zU.DeliverPolicy.New:zU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=rz($),W;try{W=await e$(async()=>{return(await Y.consumers.get(hB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=zb0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(jb0()).pipeThrough(wb0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(hB,{filter:rz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var zU,AE8,TF5=($)=>{let Z;return()=>Z??=$()},qF5,RF5=86400000000000,MF5=120000000000,VF5=4294967296,TE8,IF5=500000,CF5,SF5,_F5;var RE8=L(()=>{p$();PL1();Ab0();Eb0();b6();PE8();zU=_(xH(),1),AE8=_(o2(),1),qF5=TF5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),TE8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);CF5=process.env.STREAM_ENCODE_TRACE==="1",SF5=process.env.DECOPILOT_STREAM_TRACE==="1";_F5=CF5?new qE8:null});function hg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,mU(Q,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,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var ME8=L(()=>{q8()});class tT1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function fF5($,Z,Q={}){let Y=$.startsWith("thread:")?eF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function oT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await VB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await IB($,{threadId:X,runBranch:G?.branch}),K=await l40($,Q,KD0(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=fF5(W,await TS0($,X),{flat:Mh(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await wW(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var VE8=L(()=>{T5();yQ();gQ()});async function IE8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!ah(Q))return!1;if(!await gd($,Y,m10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=K1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),H8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var kE8=L(()=>{jG();v8();xX();Vt();GU();c5()});function mF5($){return $ instanceof qX}function CE8($,Z){return Z-$>=lF5}class sT1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??yF5;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??hF5,Q=this.options.itemIntervalMs??gF5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-zN1),pB1);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-cF5));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await dB1(this.taskBoard,X,Y),await iB1(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==K1.progress||uJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await oT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!CE8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceFromProgress(X,J,K1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.review,reason:H}}).catch(()=>{}),H8(J,F),await WU(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==K1.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await _O(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),mF5(G)){await this.returnToBacklog(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+uF5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToBacklog($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==K1.progress)return;let X=await this.taskBoard.returnToBacklogAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),H8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to backlog failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!CE8(BL(Q,Z.reviewCycleStartedAt),Date.now()))return;await WU($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!uJ(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await oT1(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Ct(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await IE8(G,Y,W))return!0;if(!X)return!1;if(await O48(G,Y))return!0;if(!uB1(W))return!1;return await kt(G,Y,{previewMatchesHead:lB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var yF5=60000,gF5=300000,hF5=50,uF5=60000,lF5=900000,cF5=120000;var SE8=L(()=>{v8();jv0();VE8();vO();bt();GU();kE8();c5();WW();nB1();gQ();o90()});async function _E8($,Z,Q=ez){return await bE8($,Z,Q,{})}async function vE8($,Z,Q,Y=ez){return await bE8($,Q,Y,{activityId:Z})}async function bE8($,Z,Q,Y){let X=await $.automations.findActiveBoardColumnTriggers();if(X.length===0)return 0;let J=new Map;for(let K of X){let H=K.automation.organization_id;J.set(H,[...J.get(H)??[],K])}let G=await $.taskBoard.listSettledTransitions({organizationIds:[...J.keys()],since:new Date(Z-dF5),settledBefore:new Date(Z-Q),limit:iF5,...Y}),W=0;for(let K of G)try{let H=(J.get(K.organizationId)??[]).filter((U)=>U.column_key===K.to&&Date.parse(U.created_at)<Date.parse(K.occurredAt));if(H.length===0)continue;let F=await pF5($.taskBoard,K,Q);for(let U of H){if(!o98(U,{from:F,to:K.to}))continue;if(!await $.automations.claimTriggerFire(U.id,K.activityId))continue;await $.fire({automationId:U.automation_id,organizationId:K.organizationId,triggerId:U.id,target:{kind:"card",itemId:K.itemId,columnKey:K.to,eventKey:K.activityId,movedBy:K.actorId}},{idempotencyKey:`board:${U.id}:${K.activityId}`}),W++}}catch(H){console.error(`[automations] board transition ${K.activityId} failed`,H)}return W}async function pF5($,Z,Q){let X=(await $.listActivity(Z.itemId,Z.organizationId)).flatMap((J)=>{let G=J.data;if(J.action!=="status_changed"||typeof G?.to!=="string")return[];let W=typeof G.from==="string"?G.from:null;return W===G.to?[]:[{from:W,to:G.to,occurredAt:J.occurredAt}]});return X.length>0?s98(X,Q):Z.from}var dF5=1800000,iF5=200;var xE8=L(()=>{gO()});import{DBOS as k2,DBOSClient as nF5,SchedulerMode as tF5}from"@dbos-inc/dbos-sdk";function fE8($){jj=$}async function rF5($){if(!jj)return 0;try{return await vE8(jj,$,Date.now(),jj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function aF5(){if(!jj)return 0;try{return await _E8(jj,Date.now(),jj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function eF5($){await k2.sleep((jj?.settleMs??ez)+sF5),await k2.runStep(()=>rF5($),{name:"settleBoardMove"})}async function $U5($,Z){let Q=await k2.runStep(()=>aF5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function gE8($){let Z=jj;if(!Z||!aT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!k2.isWithinWorkflow()){await k2.startWorkflow(aT1,{workflowID:Q,queueName:f2})($.activityId);return}let Y=await nF5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:yE8,queueName:f2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function hE8(){if(rT1)return;aT1=k2.registerWorkflow(eF5,{name:yE8}),rT1=k2.registerWorkflow($U5,{name:"boardTransitionSweepWorkflow"}),k2.registerScheduled(rT1,{name:"boardTransitionSweepWorkflow",crontab:oF5,mode:tF5.ExactlyOncePerIntervalWhenActive})}var oF5="*/5 * * * *",sF5=2000,jj=null,yE8="boardTransitionSettleWorkflow",aT1=null,rT1=null;var uE8=L(()=>{gO();xE8()});import{readdir as ZU5,rm as ug0}from"fs/promises";import{join as lg0}from"path";async function cg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-QU5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await ou($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await lE8($,X,Z);else if(!X.startsWith(".")){let J=lg0($,X),G=await ou(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await lE8(J,K,Z)}if((await ou(J)).length===0)await ug0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function lE8($,Z,Q){let Y=0,X=lg0($,Z),J=await ou(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=lg0(X,W),H=await ou(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=lg0(K,U);await ug0(B,{recursive:!0,force:!0}),Y++}}if((await ou(K)).length===0)await ug0(K,{recursive:!0,force:!0})}if((await ou(X)).length===0)await ug0(X,{recursive:!0,force:!0});return Y}async function ou($){try{return(await ZU5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var QU5=30;var eT1=()=>{};import{DBOS as $q1,SchedulerMode as YU5}from"@dbos-inc/dbos-sdk";async function JU5(){let $=[VH(),Xl(),ND()],Z=0;for(let Q of $)try{Z+=await cg0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function GU5($,Z){await $q1.runStep(()=>JU5(),{name:"monitoringRetention"})}function mE8(){if(cE8)return;cE8=!0;let $=$q1.registerWorkflow(GU5,{name:"monitoringRetentionWorkflow"});$q1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:XU5,mode:YU5.ExactlyOncePerIntervalWhenActive})}var XU5="23 4 * * *",cE8=!1;var dE8=L(()=>{cW();eT1()});function iE8($){return async(Z,Q)=>{let Y=await $.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","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await vY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await EP($.db,Z,Y.role);return X.boundAuth=VP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new RT(Q,void 0,X.boundAuth,Y.role,"self"),nz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var pE8=L(()=>{XX();vF()});function nE8(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=gQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>gQ0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${L9.tool}${B}${L9.dim}(${j})${L9.reset}`}else if(N.method)J=`${L9.dim}${gQ0(N.method)}${L9.reset}`}}catch{}}let W=gQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${gQ0(F.slice(0,12))}\u2026${L9.reset}`}else if(X==="/mcp")W=`${L9.mcp}/mcp${L9.reset}`;else if(X==="/mcp/registry")W=`${L9.mcp}/mcp/registry${L9.reset}`;let K=KU5(Y),H=G?"\u25C0":"\u2190";console.log(`${L9.dim}${H}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=WU5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${L9.dim}${D}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""} ${N}${U}${L9.reset} ${L9.duration}${B}${L9.reset}`)}}}var L9,WU5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},KU5=($)=>{return L9[$]||L9.reset},gQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var tE8=L(()=>{L9={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 aE8}from"crypto";import{mkdir as HU5,readdir as FU5,rm as oE8,stat as eE8}from"fs/promises";import{join as Qq1,relative as UU5}from"path";import{z as J8}from"zod";function ZP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Qq1(NU5,Z)}function QP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function Zq1($,Z){let Q=ZP8($),Y=QP8(Z);return Qq1(Q,Y)}function BU5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return aE8("sha256",X).update(J).digest("hex")}function rE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=BU5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${QP8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function YP8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${aE8("md5","etag").update(Y).digest("hex")}"`}async function XP8($,Z,Q,Y,X){try{let J=await FU5($,{withFileTypes:!0});for(let G of J){let W=Qq1($,G.name),H=UU5(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await XP8(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await eE8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:YP8(W,F.mtime,F.size)})}catch{}}}}catch{}}function JP8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:J8.object({prefix:J8.string().optional(),maxKeys:J8.number().optional().default(1000),continuationToken:J8.string().optional(),delimiter:J8.string().optional()}),outputSchema:J8.object({objects:J8.array(J8.object({key:J8.string(),size:J8.number(),lastModified:J8.string(),etag:J8.string()})),nextContinuationToken:J8.string().optional(),isTruncated:J8.boolean(),commonPrefixes:J8.array(J8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=ZP8(Y);await HU5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await XP8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({contentType:J8.string().optional(),contentLength:J8.number(),lastModified:J8.string(),etag:J8.string(),metadata:J8.record(J8.string(),J8.string()).optional()}),handler:async(X)=>{let J=X,G=Zq1(Y,J.key),W=await eE8(G);return{contentType:nz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:YP8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,sE8);return{url:rE8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional(),contentType:J8.string().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,sE8);return{url:rE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({success:J8.boolean(),key:J8.string()}),handler:async(X)=>{let J=X,G=Zq1(Y,J.key);try{return await oE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:J8.object({keys:J8.array(J8.string()).max(1000)}),outputSchema:J8.object({deleted:J8.array(J8.string()),errors:J8.array(J8.object({key:J8.string(),message:J8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=Zq1(Y,K);try{await oE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function Yq1($,Z,Q){let Y=JP8(Z,Q),X=new OE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:CZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:J8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:J8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new qW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),BH(X,J,$,"mcp:dev-assets")}async function GP8($,Z,Q,Y){let J=JP8(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var NU5="./data/assets",sE8=3600,$P8,WP8;var KP8=L(()=>{u1();Xo();K8();MH0();Yo();NJ();pO();Ey0();$P8=new Z1;$P8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return Yq1($.req.raw,Z,Y)});WP8=$P8});var HP8={};O6(HP8,{mountDevRoutes:()=>DU5});function DU5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return Yq1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await GP8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",WP8);let Q=new Z1;Q.use("*",jU({mountPath:"/api/dev-assets"})),Q.route("/",wy0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var FP8=L(()=>{K8();hz1();Ey0();KP8()});var PP8={};O6(PP8,{watchHandler:()=>EP8,resolveVoiceSigningSecret:()=>OP8,resolveCorsOrigin:()=>jP8,isSsoExemptPath:()=>LP8,isAllowedOAuthRedirectUri:()=>wP8,createApp:()=>RU5});import{readFileSync as LU5}from"fs";import{randomBytes as OU5}from"crypto";import{PrometheusSerializer as jU5}from"@opentelemetry/exporter-prometheus";import{DBOS as JD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as PU5,oAuthProtectedResourceMetadata as zU5}from"better-auth/plugins";async function wU5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,NP8(UP8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),NP8(UP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function NP8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function LP8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${$y0}/`)||$.startsWith(`${tf0}/`)}function OP8($){let Z=$.studioJwtSecret||$.betterAuthSecret;if(Z)return Z;return console.warn("STUDIO_JWT_SECRET/BETTER_AUTH_SECRET not set - generating a random secret for voice sessions (not persistent across restarts)"),OU5(32).toString("base64")}function jP8($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function wP8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function RU5($={}){let Z=$.database??E8(),Q=!1;I6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new cT1,K,H,F,U=null;if($.disableNats)K=mT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new sZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(F0)=>{return(async()=>{let G0=F0.getReader();try{while(!0){let{done:P0}=await G0.read();if(P0)break}}catch{}finally{G0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=DE8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=LU5(F0,"utf8")}catch(B8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,B8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=tZ1()?new _Z1({getJetStream:()=>U.getJetStream(),selfListVersion:_g0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new w71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new eh(bB1,{getJetStream:()=>U.getJetStream()}),b$=new eh(s90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new Yj1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=mT1({getConnection:()=>U.getConnection()}),H=new dT1({getConnection:()=>U.getConnection()}),F=new nT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),lH8(U),U.onReady(()=>{P0?.init().catch((B8)=>{console.error("[McpListCache] Deferred init failed:",B8)}),z0.init().catch((B8)=>{console.error("[SkillCatalogCache] Deferred init failed:",B8)}),j1.init().catch((B8)=>{console.error("[PrReadCache] Deferred init failed:",B8)}),b$.init().catch((B8)=>{console.error("[PrCardCache] Deferred init failed:",B8)}),r$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),y2$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(C2)await C2();vZ1(Y),P71(X),A71(()=>U?.getConnection()??null),xB1(J),Xj1(G);let B={storage:new nc(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>_t(new jW(Z.db),F0,G0,new C3(Z.db))},D=new gD1(B),O=new M70(Z.db),j=new tT1(O);j.start(),YZ8(H),H.start((F0)=>{Wb0(F0),D.execute({type:"CANCEL",taskId:F0}).catch((G0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",G0)})}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast start failed:",F0)}),U?.onReady(()=>{H.start().catch((F0)=>{console.error("[CancelBroadcast] Deferred start failed:",F0)})});let w=()=>U?.getConnection()??null;vz1(w),U?.onReady(()=>vz1(w)),gj1(w),U?.onReady(()=>gj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),C2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),XU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),g2$(),G.teardown(),vZ1(null),P71(null),A71(null),xB1(null),Xj1(null)};let E=new Z1;if(E.use("*",$j1({enabled:(F0)=>bo(F0,"debug")==="1"})),E.use("*",Fh0),E.use("/*",fH8({origin:(F0,G0)=>jP8(F0,{baseUrl:B0().baseUrl,requestOrigin:new URL(G0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(F0,G0)=>{if(await G0(),F0.req.path.includes("/files/"))return;if(F0.req.path.includes("/fs/")&&F0.req.path.endsWith("/read"))return;F0.header("X-Frame-Options","DENY"),F0.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",nE8());E.use("*",async(F0,G0)=>{if(await G0(),ms(F0.req.path))return;if(F0.res.status>=500){let z0=await F0.res.clone().text();console.error(`[5xx Response] ${F0.req.method} ${F0.req.path} - ${F0.res.status}:`,z0)}}),E.get(tX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(tX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(tX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await wU5(Z.pool)?"up":"down"},U)G0.nats=U.isConnected()?{status:"up"}:{status:"down"};else G0.nats={status:"down"};let P0=G0.postgres.status==="up",z0=P0?200:503;return F0.json({status:P0?"ready":"not_ready",services:G0},z0)}),E.get(tX.METRICS,async(F0)=>{try{let G0=await Dh0.collect(),P0=EU5.serialize(G0.resourceMetrics);return F0.text(P0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(G0){return console.error("Failed to collect metrics:",G0),F0.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${tX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!AU5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([JD.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),JD.listQueuedWorkflows({queueName:G0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return F0.json({queue_length:P0.length,in_flight:z0.length})}),E.route("/api/config",qw8),E.route("/api/_reports",bw8),E.route("/api/_stripe",kT1),E.route("/api/_github",yw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",no);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",tw8(T)),E.route("/api/_jira",lw8(T)),E.route("/report",Sw8($.clientDir)),E.route("/api/auth/custom",WF8),E.all("/api/auth/admin/*",iF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=yW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",c70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",c70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",A70),E.route("/",cW8()),E.use("/oauth-proxy/:connectionId/*",c70),E.all("/oauth-proxy/:connectionId/*",BP8);let A=async(F0)=>{let P0=await TU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",c70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await qU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=gH8({ttlMs:120000}),S=await fK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Rj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});vY.set(S),Q$$({db:Z.db,baseUrl:B5()}),yK8({db:Z.db}),lK8({db:Z.db}),DH8({db:Z.db}),AH8({db:Z.db}),iw8({db:Z.db,encryptionKey:B0().encryptionKey}),H88({db:Z.db}),IH8({db:Z.db}),u88({db:Z.db});let V=ZE(Z.db),v=new R00(Z.db),b=iE8({db:Z.db});oL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl)}),_L1({systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),ML1({dispatchRunFn:N98,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new nc(Z.db),l=new jW(Z.db),d=new C3(Z.db),W0=new sT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=C2;C2=async()=>{await F0?.(),W0.dispose()}}fE8({automations:V,taskBoard:l,fire:XH,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),w88(gE8),v98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await DP8.jetstreamManager(F0):null},messageParts:h.messageParts(),resolveRun:async(F0)=>{let G0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",F0).executeTakeFirst();return G0?{orgId:G0.organization_id,createdBy:G0.created_by,version:G0.message_storage_version??1,status:G0.status,runFenceToken:G0.run_fence_token,title:G0.title??null}:null},completeRunIfNotCompleted:async(F0,G0)=>{let P0=await h.completeRunIfNotCompleted(F0,G0);if(hg0(I6,G0,F0,P0),P0)await _t(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return hg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(hg0(I6,G0,F0,j1),j1)await _t(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,sz(F0,G0),[])},persistTitle:(F0,G0,P0)=>h.update(F0,G0,{title:P0}),onTitleUpdated:async({runId:F0,orgId:G0,title:P0})=>{let z0=await h.get(F0,G0).catch(()=>null);I6.emit(G0,mU(F0,z0?.status??"in_progress",{title:P0,virtualMcpId:z0?.virtual_mcp_id??void 0,createdBy:z0?.created_by,triggerId:z0?.trigger_id,branch:z0?.branch??null,harnessId:z0?.harness_id??void 0,createdAt:z0?.created_at,updatedAt:z0?.updated_at}))},bumpProgress:async({runId:F0,orgId:G0})=>{await h.bumpProgress(F0,G0)},recordCompleted:async({runId:F0,orgId:G0,distinctId:P0,usage:z0})=>{c1.capture({distinctId:P0,event:"chat_message_completed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",input_tokens:z0.inputTokens,output_tokens:z0.outputTokens,total_tokens:z0.totalTokens}})},recordFailed:async({runId:F0,orgId:G0,distinctId:P0,reason:z0,kind:j1})=>{c1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:j1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),x58({studioContextFactory:b,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),mE8(),Y$$(),hK8(),mK8(),OH8(),qH8(),nw8(),hE8(),D88(),CH8(),l88(),hw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return $O1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new uo(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>XH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[VH(),Xl(),ND()];for(let F0 of U0)cg0(F0).then(()=>{}).catch((G0)=>console.error("[monitoring] Retention cleanup failed:",G0));let o=()=>B4.api.deleteAllExpiredApiKeys().catch((F0)=>console.error("[auth] Expired API key cleanup failed:",F0));o(),setInterval(o,86400000).unref(),E.use("*",async(F0,G0)=>{if(Kh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{NH(F0,j1);try{return await b$()}finally{RW(F0,j1)}}},z0=await vY.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),J$(30000)]).catch((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",fo),E.use("/api/:org/v1/*",fo),E.use("/api/:org/files/*",fo),E.use("*",async(F0,G0)=>{if(LP8(F0.req.path))return G0();let P0=F0.get("studioContext");if(!P0?.organization?.id||!P0?.auth?.user?.id)return G0();if(!(await P0.storage.orgSsoConfig.getByOrgId(P0.organization.id))?.enforced)return G0();if(!await P0.storage.orgSsoSessions.isValid(P0.auth.user.id,P0.organization.id))return F0.json({error:"SSO authentication required for this organization"},403);return G0()});let t=new Z1;t.use("*",jU({mountPath:"/api/org-sso"})),t.route("/",Yy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:C00,grouped:TT()})}),E.use("/mcp/*",async(F0,G0)=>{NH(F0,"mcp");try{return await G0()}finally{RW(F0,"mcp")}});let r=async(F0,G0)=>{let P0=F0.var.studioContext;if(!P0.auth.user?.id&&!P0.auth.apiKey?.id){let z0=new URL(F0.req.url),j1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=j1?`${j1}://${z0.host}`:z0.origin;return F0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b$}${z0.pathname}/.well-known/oauth-protected-resource"`}})}return await G0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),bK()){let{mountDevRoutes:F0}=(FP8(),sg0(HP8));F0(E,r)}let $0=new Z1;$0.use("*",jU({mountPath:"/mcp"})),$0.route("/",Yx0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",jU({mountPath:"/mcp/self"})),X0.route("/",sy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",jU({mountPath:"/mcp"})),h0.route("/",Gx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{NH(F0,"llm_models");try{return await G0()}finally{RW(F0,"llm_models")}});let C0=FU8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",aw8);let H1=new Z1;H1.use("*",jU({mountPath:"/api"})),H1.route("/",$g0()),E.route("/api",H1),E.route("/api",Ew8);let c0=new Z1;c0.use("*",jU({mountPath:"/api"})),c0.route("/",Zg0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let j0=new M00(Z.db),E0=new Z1;E0.use("*",jU({mountPath:"/api"})),E0.route("/",Hy0()),E.route("/api",E0),E.route("/api/deco-sites",RU8());let n0=new Z1;n0.use("*",jU({mountPath:"/api/deco-sites"})),n0.route("/",Uy0()),E.route("/api/deco-sites",n0),E.route($y0,pF8()),E.route(FL8,BL8()),E.route("/api/_editor-resolve",zw8()),E.route(FF8,UF8()),E.route(tf0,MF8());let O1=B0(),o0=O1.elevenlabsApiKey?new kg0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,x0={openai:O1.openaiLiveApiKey?new zT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new PT1(o0,()=>U?.getConnection()??null):null},d0=new MT1({adapter:o0,conversationAdapters:x0,defaults:O1,secret:OP8(O1),getConnection:()=>U?.getConnection()??null}),i0=nj8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:bK(),mcpAuth:r,oauthProxyHandler:BP8,watchHandler:EP8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",i0),E.notFound((F0)=>{return F0.json({error:"Not Found",path:F0.req.path},404)}),E.onError(NU8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),C2?Promise.resolve(C2()).finally(()=>{C2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await tJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await HH$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await JD.registerQueue(H3,{partitionQueue:!0,concurrency:pL1,minPollingIntervalMs:nL1}),await JD.registerQueue(uW,{partitionQueue:!0,concurrency:CL1,priorityEnabled:!0}),await JD.registerQueue(FD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(UD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(qj,{partitionQueue:!0,concurrency:b58}),await JD.registerQueue(x2,h88),await JD.registerQueue(f2),await uz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>JD.deleteQueue(F0))),await tL1(Z.pool),pN$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),yd(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),X$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var DP8,UP8=5000,C2=null,BP8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),Y=Q[Q.length-1],X=$.get("studioContext");if(!X)X=await vY.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let v=await $.req.json().catch(()=>({}));return $.json({...typeof v==="object"&&v!==null?v:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await Io(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=oE1(await W.json());if(!K)K=H.origin;let N=await T70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=lW8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!wP8(new URL(v),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(_H8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,R=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let d=atob(T.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let I0=decodeURIComponent(d.slice(0,W0)),J0=decodeURIComponent(d.slice(W0+1));A=I0||null,R=J0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),h=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof h==="string"&&h)R=h;let l=new URLSearchParams;for(let[d,W0]of v.entries())l.append(d,W0.toString());z=l.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),h={};try{h=b?JSON.parse(b):{}}catch{z=b}let l=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!l)z=b;if(z===void 0){let d=h,W0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(d),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await D2(G.connection_url)??D}catch{l=D}let d={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new e5(X.db,X.vault).upsert(d)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},EP8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!xB(Y)||!await fB(Z)))return $.json({error:"forbidden"},403);let W=G?Yv0:Y;if(G)SO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Bj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!I6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{I6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),I6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),I6.remove(W,K),N()})})})},EU5,AU5,TU5=()=>zU5(B4),qU5=()=>PU5(B4);var zP8=L(()=>{p$();u1();J$$();uK8();dK8();jH8();RH8();Y70();DB1();SH8();o90();H9();ii();q8();K8();df0();yH8();Zj1();nK();vF();Kz1();S3();b6();Q6();Lz1();NF8();VF8();Pz1();nF8();kz1();yz1();gz1();xK();q70();hz1();BU8();pf0();tj8();ej8();$w8();Xw8();Dw8();mz1();Xx0();rZ0();Pw8();Wx0();zA1();Aw8();EA1();Rw8();_w8();xw8();fw8();gw8();uw8();cw8();ow8();uT1();oz1();ew8();PA1();LA1();eQ0();LE8();VT1();TJ();_B0();F40();yB1();X40();G40();Gj1();OE8();wE8();bz1();RE8();sv0();ME8();We();k00();CO();c5();UP1();SE8();uE8();jG();pz();dE8();aF0();eT1();cW();lz1();IO();qL1();aF0();SZ0();q00();L01();pE8();QE();tE8();Fs();Kz1();Rt();dt();Kb0();DP8=_(xH(),1);EU5=new jU5,AU5=new Set([H3,uW,FD,UD,qj,x2])});var RP8={};O6(RP8,{resolveClientDir:()=>_U5,resolveAssetPathWithTraversalCheck:()=>qP8,isPathWithinDirectory:()=>TP8,createAssetHandler:()=>vU5});import{resolve as hQ0,dirname as MU5,join as VU5,extname as IU5,basename as kU5,sep as AP8}from"path";function CU5($,Z){if($===Z||kU5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${AP8}assets${AP8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function TP8($,Z){let Q=hQ0(Z),Y=hQ0($);return Y===Q||Y.startsWith(Q+"/")}function qP8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=hQ0(Z,Q);if(!TP8(Y,Z))return null;return Y}function _U5($,Z="../client"){let Q=new URL($),Y=MU5(Q.pathname);return hQ0(Y,Z)}function vU5($={}){let{env:Z="production",clientDir:Q=SU5,isServerPath:Y=()=>!1}=$;if(Z==="development")return async function(J){return null};return async function(J){if(J.method!=="GET")return null;let G=new URL(J.url),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(Y(W))return null;let K=qP8({requestPath:W,clientDir:Q});if(!K)return null;let H=VU5(K,"index.html"),F=hQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(IU5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:CU5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var SU5="./dist/client";var MP8=()=>{};var VP8={};O6(VP8,{tryUpgradePreviewWs:()=>uU5,tryHandlePreviewHttp:()=>hU5,previewWebSocketHandler:()=>lU5,parsePreviewBaseDomain:()=>gU5,isPreviewWsData:()=>mg0,extractHandleFromHost:()=>Xq1});function fU5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function yU5(){return new Response(xU5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function gU5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let Y=Q.hostname;if($.includes("{handle}")){let X=Y.indexOf(".");if(X<=0||X===Y.length-1)return null;return Y.slice(X+1)}return Y}function Xq1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),Y=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Y.endsWith(J))return null;let G=Y.slice(0,Y.length-J.length);if(!G||G.includes("."))return null;return G}async function hU5($,Z){let Q=Xq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return lQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Sn)&&fU5($))return yU5();return X.headers.delete(Sn),X}function lQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function mg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function uU5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=Xq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return lQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return lQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return lQ0(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return lQ0(426,"upgrade failed");return}function uQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var bU5=256,xU5='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',lU5;var IP8=L(()=>{x50();lU5={open($){let Z=$.data;if(!mg0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),uQ0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let Y=Z.pending.shift();if(Y!==void 0)Q.send(Y)}}),Q.addEventListener("message",(Y)=>{if(Z.closed)return;$.send(Y.data)}),Q.addEventListener("close",(Y)=>{uQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{uQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!mg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=bU5){uQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!mg0(Z))return;uQ0($,Z,1000,"")}}});p$();var jq1="14";function wq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:jq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}p$();import pP8 from"pg";var Eq1=8314027461559302n,nP8=600000,tP8=500;async function Pq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=nP8}=$,X=$.log??((K)=>console.log(K)),J=new pP8.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[Eq1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await J$(tP8)}let K=Date.now()-G;if(K>1000)X(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[Eq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();$h0();b6();function pz8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function jh0($,Z){for(let Q=0;Q<$.length;Q++){let Y=$[Q];if(Y===void 0)continue;if(Y===Z)return $[Q+1];if(Y.startsWith(`${Z}=`))return Y.slice(Z.length+1)}return}function QR1(){let $=pz8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:jh0($,"--cpu-prof-dir")??process.cwd(),name:jh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(jh0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}Ph0();var QY0;function UR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=h2();if(!Q)return;let Y={};try{let{heapStats:X}=await import("bun:jsc"),J=X(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);Y={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...Y}))};return Z().catch(()=>{}),QY0=setInterval(()=>void Z().catch(()=>{}),$),QY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),Y=typeof Q==="string"?Q:JSON.stringify(Q),X=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(X,Y),console.log(JSON.stringify({msg:"heap-snapshot-written",path:X}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(QY0)clearInterval(QY0)}}import*as oz8 from"bun:jsc";var{startSamplingProfiler:sz8,samplingProfilerStackTraces:rz8}=oz8;function NR1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{sz8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=rz8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function BR1(){QR1();let $=[UR1(),FR1(),NR1()];return()=>{for(let Z of $)Z()}}import{existsSync as oU5}from"fs";var gW=B0();eq1();var{DBOS:cQ0,DBOSClient:cU5}=await import("@dbos-inc/dbos-sdk");function Fq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var mU5=[H3,uW,FD,UD,qj,x2,f2],dU5=gW.dispatchRole==="worker"?mU5:gW.dispatchRole==="api"?[]:void 0;cQ0.setConfig(wq1({systemDatabaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl),poolSize:gW.dbosPoolSize,executorID:gW.podName,listenQueues:dU5}));var{createApp:iU5}=await Promise.resolve().then(() => (zP8(),PP8)),{isServerPath:pU5}=await Promise.resolve().then(() => (eQ0(),fq1)),{createAssetHandler:nU5,resolveClientDir:vP8}=await Promise.resolve().then(() => (MP8(),RP8)),tU5=gW.port,kP8=vP8(import.meta.url,"../client"),bP8=oU5(kP8)?kP8:vP8(import.meta.url,"../dist/client"),sU5=nU5({clientDir:bP8,isServerPath:pU5}),rU5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function aU5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(rU5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:eU5,tryHandlePreviewHttp:$N5,tryUpgradePreviewWs:ZN5,previewWebSocketHandler:Jq1,isPreviewWsData:Gq1}=await Promise.resolve().then(() => (IP8(),VP8)),{getOrInitSharedRunner:xP8}=await Promise.resolve().then(() => (CX(),Mn$)),fP8=eU5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),CP8={baseDomain:fP8??"",getRunner:xP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())xP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var dg0=await iU5({clientDir:bP8}),Wq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),SP8=process.env.DBOS_CONDUCTOR_URL?.trim();await Pq1({databaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl)},()=>cQ0.launch({...Wq1?{conductorKey:Wq1}:{},...Wq1&&SP8?{conductorURL:SP8}:{}}));console.log(`[dbos] application version: ${cQ0.applicationVersion}`);var Kq1=5,Hq1=0;await e$(async()=>{Hq1++;try{return await dg0.initDbos()}catch($){let Z=Hq1>=Kq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${Hq1}/${Kq1} failed, ${Z}`,$),$}},{maxAttempts:Kq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var QN5=Bun.serve({idleTimeout:0,port:tU5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(fP8){let Y=await ZN5($,Z,CP8);if(Y===void 0)return;if(Y)return Y;let X=await $N5($,CP8);if(X)return X}let Q=await sU5($);if(Q)return aU5(Q);return dg0.fetch($,{server:Z})},websocket:{open($){if(Gq1($.data))Jq1.open($)},message($,Z){if(Gq1($.data))Jq1.message($,Z)},close($){if(Gq1($.data))Jq1.close($)}},development:!1}),YN5=BR1();if(gW.localMode)Promise.resolve().then(() => (Zu(),mv0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Zu(),mv0));Z()}catch{}});var _P8=!1;async function XN5($){let Z;try{Z=await cU5.create({systemDatabaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:uW,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Y=Q.map((X)=>X.workflowID);await Z.resumeWorkflows(Y,{queueName:uW}),console.log(`[shutdown] re-enqueued ${Y.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Y)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function ig0($){if(_P8)return;_P8=!0,console.log(`
|
|
4497
4497
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),Y=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);Y.unref?.();let X=0;try{YN5(),dg0.markShuttingDown();let J=zq1(gW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await QN5.stop(!0);let G=cQ0.executorID;await cQ0.shutdown(),await XN5(G),await dg0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>ig0("SIGTERM"));process.on("SIGINT",()=>ig0("SIGINT"));process.on("SIGHUP",()=>ig0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),ig0("uncaughtException")});
|