decocms 4.363.0 → 4.363.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-Df7Uu4Sr.js → AlertCircle-CgERhdh6.js} +1 -1
- package/dist/client/assets/{AreaChart-BRLjJaJt.js → AreaChart-kU4sTinA.js} +2 -2
- package/dist/client/assets/{ArrowLeft-Ce4LVTaQ.js → ArrowLeft-BVx6AQzq.js} +1 -1
- package/dist/client/assets/{ArrowRight-CuO69upc.js → ArrowRight-DZQert3q.js} +1 -1
- package/dist/client/assets/{ArrowUp-DmWBbOjK.js → ArrowUp-lpfNBlP2.js} +1 -1
- package/dist/client/assets/{Check-C1wq38_E.js → Check-DClZtAIP.js} +1 -1
- package/dist/client/assets/{CheckCircle-DWvslkKl.js → CheckCircle-BGqFZ8sM.js} +1 -1
- package/dist/client/assets/{ChevronRight-B76sbAXC.js → ChevronRight-BNfU55ld.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-C4wJ3zDR.js → ChevronSelectorVertical-ilm76_0p.js} +1 -1
- package/dist/client/assets/{ChevronUp-B0KEDz5f.js → ChevronUp-CbF1Gmeo.js} +1 -1
- package/dist/client/assets/{Copy01-rsN5AnPv.js → Copy01-DiITYBuR.js} +1 -1
- package/dist/client/assets/{CreditCard01-Cqs_Biv7.js → CreditCard01-Zpy-4Wu9.js} +1 -1
- package/dist/client/assets/Database01-zcGUPFsG.js +1 -0
- package/dist/client/assets/{DotsVertical-CBmzJDPB.js → DotsVertical-LmkOTjL4.js} +1 -1
- package/dist/client/assets/{Download01-zZEPtQ0U.js → Download01-C4blLpML.js} +1 -1
- package/dist/client/assets/ErrorBarContext-KbkdtIBU.js +1 -0
- package/dist/client/assets/{Eye-DFgd5114.js → Eye-Cd7v-liN.js} +1 -1
- package/dist/client/assets/File02-CceuR6rF.js +1 -0
- package/dist/client/assets/{GitBranch01-B7iymaqC.js → GitBranch01-Dil6c2wv.js} +1 -1
- package/dist/client/assets/{Globe01-Df6dZmsR.js → Globe01-BVji6jXS.js} +1 -1
- package/dist/client/assets/{HardDrive-CiahcooN.js → HardDrive-B4UY5qYp.js} +1 -1
- package/dist/client/assets/{Image01-CMpSR3RQ.js → Image01-CpXdMb8x.js} +1 -1
- package/dist/client/assets/{Key01-t3bX5YI3.js → Key01-BsAAVoJx.js} +1 -1
- package/dist/client/assets/{Link01-pX5C3rEv.js → Link01-OqB-2yPE.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CzRiacvQ.js → LinkExternal01-DobnLseV.js} +1 -1
- package/dist/client/assets/{Monitor01-jzbehxNG.js → Monitor01-BTqHf-K4.js} +1 -1
- package/dist/client/assets/{Package-CiAH049d.js → Package-CCkk0w5h.js} +1 -1
- package/dist/client/assets/{Palette-CmMvG40G.js → Palette-BBWt8owf.js} +1 -1
- package/dist/client/assets/{Play-k9_JCuZW.js → Play-CPeIBqH_.js} +1 -1
- package/dist/client/assets/{Plus-Bac7Bl-V.js → Plus-DaErdsG1.js} +1 -1
- package/dist/client/assets/Printer-BG6NfeSZ.js +1 -0
- package/dist/client/assets/{SearchLg-iYej-M-S.js → SearchLg-DxQfk550.js} +1 -1
- package/dist/client/assets/{SearchMd-hxPQERkg.js → SearchMd-BNXjQ2BV.js} +1 -1
- package/dist/client/assets/Sector-D2wxgDkd.js +28 -0
- package/dist/client/assets/{Settings02-t15FjJbr.js → Settings02-DL8f5fN1.js} +1 -1
- package/dist/client/assets/{Share07-CJrTonmW.js → Share07-D1Sv14jA.js} +1 -1
- package/dist/client/assets/{Shield01-DS-tpugO.js → Shield01-BsobIEfQ.js} +1 -1
- package/dist/client/assets/{Stars01-ByE0-f1z.js → Stars01-f37Q7vDf.js} +1 -1
- package/dist/client/assets/{Sun-vdviKSpi.js → Sun-DjKz3VjB.js} +1 -1
- package/dist/client/assets/{XClose-DvenHyNp.js → SwitchHorizontal01-BIyO34Jw.js} +1 -1
- package/dist/client/assets/{Tool01-CmpQe3MS.js → Tool01-D6HOM_aJ.js} +1 -1
- package/dist/client/assets/{Tool02-BAA6OFl0.js → Tool02-BrfQeZRx.js} +1 -1
- package/dist/client/assets/{Trash01-C6vCLvEw.js → Trash01-DQjprOwc.js} +1 -1
- package/dist/client/assets/{TrendUp01-fHRYAiew.js → TrendUp01-DIz6JZwT.js} +1 -1
- package/dist/client/assets/{Upload01-lE597uPz.js → Upload01-BDeLrRhf.js} +1 -1
- package/dist/client/assets/{User01-BPodfm7s.js → User01-B8a5ssx2.js} +1 -1
- package/dist/client/assets/{UserSquare-CXhk4rLY.js → UserSquare-yIpHwPSn.js} +1 -1
- package/dist/client/assets/{Users01-Dgbd4CM_.js → Users01-BCRhQsCX.js} +1 -1
- package/dist/client/assets/{Users03-B4Km0_9u.js → Users03-DWh3D2_T.js} +1 -1
- package/dist/client/assets/{XCircle-BK1898xU.js → XCircle-DudPVYQR.js} +1 -1
- package/dist/client/assets/XClose-DpDcHm9Y.js +1 -0
- package/dist/client/assets/{Zap-nPZGKdXf.js → Zap-C5eiFR0N.js} +1 -1
- package/dist/client/assets/ZoomOut-DdupjPFF.js +1 -0
- package/dist/client/assets/access-gate-Dnh0JyKy.js +1 -0
- package/dist/client/assets/add-connection-dialog-BSihy3_s.js +1 -0
- package/dist/client/assets/agent-analytics-C1OAYjbt.js +2 -0
- package/dist/client/assets/agent-app-62cavSHy.js +1 -0
- package/dist/client/assets/agent-assets-vYQq8qui.js +1 -0
- package/dist/client/assets/agent-automation-BPNX454_.js +20 -0
- package/dist/client/assets/agent-automations-BLOXID0N.js +1 -0
- package/dist/client/assets/agent-connect-sources-BzEccd4r.js +1 -0
- package/dist/client/assets/agent-deck-DVW32bsA.js +1 -0
- package/dist/client/assets/agent-e2e-DM8adI3E.js +1 -0
- package/dist/client/assets/agent-file-C7nywZCe.js +1 -0
- package/dist/client/assets/agent-git-DarQSTRH.js +3 -0
- package/dist/client/assets/agent-hosting-Dnr2S-TT.js +1 -0
- package/dist/client/assets/agent-icon-vDfwuZu4.js +1 -0
- package/dist/client/assets/agent-library-file-D4p-8dXS.js +1 -0
- package/dist/client/assets/agent-monitor-DpaaBIhL.js +1 -0
- package/dist/client/assets/agent-overview-D9IrP622.js +1 -0
- package/dist/client/assets/agent-settings-CxGAsqqN.js +1 -0
- package/dist/client/assets/agent-site-editor-DTFbZmEY.js +1 -0
- package/dist/client/assets/agent-site-editor-code-Dcgjtfwk.js +2 -0
- package/dist/client/assets/agent-site-editor-content-BE26aik7.js +2 -0
- package/dist/client/assets/agent-site-editor-preview-ki_D8wtP.js +504 -0
- package/dist/client/assets/agent-view-DYYYDEW_.js +1 -0
- package/dist/client/assets/agent-view-guard-DomQyuot.js +1 -0
- package/dist/client/assets/agents-list-B0vnsITA.js +1 -0
- package/dist/client/assets/ai-providers-CxaMjUP7.js +1 -0
- package/dist/client/assets/{alert-D8igu3TO.js → alert-DcFgIKLk.js} +1 -1
- package/dist/client/assets/{alert-dialog-CFCsKBpN.js → alert-dialog-CiKfgw9r.js} +2 -2
- package/dist/client/assets/{api-keys-BIjM5sVA.js → api-keys-CEPWE1iS.js} +1 -1
- package/dist/client/assets/api-keys-DoGNEUpY.js +1 -0
- package/dist/client/assets/app-editor-CRjlYU-M.js +1 -0
- package/dist/client/assets/asset-utils-DJXdpjr9.js +1 -0
- package/dist/client/assets/{auth-catchall-E5QBtigN.js → auth-catchall-DV5KEwZ2.js} +1 -1
- package/dist/client/assets/{auth-entry-C91RF11H.js → auth-entry-Fe8qT_kq.js} +1 -1
- package/dist/client/assets/{auth-DeD0YpKg.js → auth-ksbj4Esa.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BFF9n_Qv.js → auth-split-layout-CFJK_BXW.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-6UYdTwrd.js → authenticate-and-persist-oauth-DMvGjBUE.js} +1 -1
- package/dist/client/assets/{automation-list-row-Ba1cMA4W.js → automation-list-row-CkrObNhq.js} +1 -1
- package/dist/client/assets/automation-runs-C-5kRp10.js +1 -0
- package/dist/client/assets/automations-CKhgbURI.js +1 -0
- package/dist/client/assets/{autosend-DI1ZpOT0.js → autosend-BzUVLyEq.js} +1 -1
- package/dist/client/assets/{avatar-CfO1mReu.js → avatar-CW4PxBuN.js} +1 -1
- package/dist/client/assets/{badge-GP_pc1i_.js → badge-C5Ilvf_J.js} +1 -1
- package/dist/client/assets/{block-document-B_vPvGLi.js → block-document-Zfk-C1Kp.js} +3 -3
- package/dist/client/assets/breadcrumb-BajFgW5V.js +1 -0
- package/dist/client/assets/{buckets-BeX-azQt.js → buckets-CyNocIPE.js} +1 -1
- package/dist/client/assets/build-improve-prompt-doc-BrRLOIlw.js +2 -0
- package/dist/client/assets/bulk-category-panel-e217-dmm.js +1 -0
- package/dist/client/assets/calendar-DGiOuDgZ.js +1 -0
- package/dist/client/assets/{capability-load-error-BoR9RbMs.js → capability-load-error-DFv8gs5U.js} +1 -1
- package/dist/client/assets/{cards-m7YgOjsz.js → cards-XHNjVWeh.js} +3 -3
- package/dist/client/assets/category-editor-zLRtagcy.js +1 -0
- package/dist/client/assets/{chart-BanyRqbL.js → chart-C7CmtzOp.js} +2 -2
- package/dist/client/assets/chat-context-HB_KOUNM.js +35 -0
- package/dist/client/assets/{checkbox-ZsR1Bced.js → checkbox-Dg_GkeBT.js} +1 -1
- package/dist/client/assets/choose-editor-DO1mGCL1.js +1 -0
- package/dist/client/assets/{cli-auth-success-sB1yOlRg.js → cli-auth-success-e-RADpiN.js} +1 -1
- package/dist/client/assets/{client-icons-DHLFDmNu.js → client-icons-tt6oaVA2.js} +1 -1
- package/dist/client/assets/collapsible-CycyYnXe.js +1 -0
- package/dist/client/assets/collection-detail-DhtfN_Wl.js +1 -0
- package/dist/client/assets/collection-display-button-BRbx9UhH.js +1 -0
- package/dist/client/assets/{collection-search-7NUVJQfN.js → collection-search-j4HjYlys.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-D0kCJcbB.js → collection-table-wrapper-0LZ9BKlr.js} +1 -1
- package/dist/client/assets/{collection-tabs-MvaIz7gt.js → collection-tabs-Bc9QOlJ8.js} +1 -1
- package/dist/client/assets/{command-CF7nzIN2.js → command-BpjWfGyr.js} +1 -1
- package/dist/client/assets/command-palette-store-D19nXDNm.js +1 -0
- package/dist/client/assets/commerce-onboarding-CdG4FfWS.js +1 -0
- package/dist/client/assets/companion-mcps-section-CVcicsr9.js +1 -0
- package/dist/client/assets/companions-core-CZwGf1b1.js +1 -0
- package/dist/client/assets/{connect-G-ytX-wq.js → connect-COU6F3Do.js} +2 -2
- package/dist/client/assets/connect-layout-Bl-ol5HH.js +1 -0
- package/dist/client/assets/{connection-D885aDuM.js → connection-By77bjvj.js} +1 -1
- package/dist/client/assets/{connection-card-Nc1w-XCq.js → connection-card-Br8jDKgZ.js} +1 -1
- package/dist/client/assets/connection-detail-vVdPGlxv.js +1 -0
- package/dist/client/assets/{connection-form-helpers-B4IwDJJQ.js → connection-form-helpers-CFXh6BoJ.js} +1 -1
- package/dist/client/assets/connections-BBNFmXEe.js +1 -0
- package/dist/client/assets/content-blocks-o63cs2vh.js +1 -0
- package/dist/client/assets/{create-organization-dialog-gO5G25gp.js → create-organization-dialog-CRl8hry2.js} +1 -1
- package/dist/client/assets/decode-html-entities-Cf7wUEql.js +1 -0
- package/dist/client/assets/{decopilot-sse-pool-Bm_3HC4t.js → decopilot-sse-pool-D2Qtyl-A.js} +1 -1
- package/dist/client/assets/{dialog-CyDGwxcX.js → dialog-DJBpjJnY.js} +1 -1
- package/dist/client/assets/discover-y7BsppSE.js +1 -0
- package/dist/client/assets/{domain-settings-Cx6UibuZ.js → domain-settings-B_cuGCF0.js} +1 -1
- package/dist/client/assets/download-app-dialog-DYhv8XsJ.js +1 -0
- package/dist/client/assets/{drawer-CqSEztKC.js → drawer-B5NRhNfW.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CgwRqOnX.js → dropdown-menu-DzwCPltk.js} +1 -1
- package/dist/client/assets/{editor-D7S6MtwI.js → editor-BHnwprUT.js} +1 -1
- package/dist/client/assets/{empty-state-SN5mEPhX.js → empty-state-CJ95hR0w.js} +1 -1
- package/dist/client/assets/{empty-state-DfBha5W6.js → empty-state-CXolWOTn.js} +1 -1
- package/dist/client/assets/extract-connection-data-B1nPGa4h.js +1 -0
- package/dist/client/assets/{file-explorer-paPAvOUA.js → file-explorer-Dj1zqDxa.js} +2 -2
- package/dist/client/assets/file-preview-kRDXQYfi.js +1 -0
- package/dist/client/assets/file-share-button-P5GnoZYM.js +3 -0
- package/dist/client/assets/{file-type-icon--TvA6C0i.js → file-type-icon-Cg81au_Z.js} +1 -1
- package/dist/client/assets/folder-icon-Bey_C_xd.js +2 -0
- package/dist/client/assets/{form-BnUN8JhF.js → form-EGCuUtdG.js} +1 -1
- package/dist/client/assets/{general-DhiseHhA.js → general-BJ_Ksgnn.js} +1 -1
- package/dist/client/assets/github-D4UJ99TO.js +1 -0
- package/dist/client/assets/{github-icon-7BmoW2Y2.js → github-icon-CiNkodR8.js} +1 -1
- package/dist/client/assets/{github-repo-CTPv5ZM2.js → github-repo-C0igpkr9.js} +1 -1
- package/dist/client/assets/github-repo-scope-C8GSbvaz.js +1 -0
- package/dist/client/assets/home-Cmddezu3.js +1 -0
- package/dist/client/assets/{hooks-Bv30myGB.js → hooks-BSkeWBV7.js} +2 -2
- package/dist/client/assets/hooks-Bb9SArul.js +2 -0
- package/dist/client/assets/{index-y6Z5iMfg.js → index-6GXqHE0w.js} +42 -42
- package/dist/client/assets/{index-C2fs5Fhc.js → index-9FQARZdh.js} +1 -1
- package/dist/client/assets/index-B7ENeoW4.js +4 -0
- package/dist/client/assets/index-B9bOVdMd.js +90 -0
- package/dist/client/assets/index-BVRQ9yUZ.js +1 -0
- package/dist/client/assets/index-BaItIL-_.js +1 -0
- package/dist/client/assets/index-CUa7fAjf.js +24 -0
- package/dist/client/assets/index-CY40-aHW.js +1 -0
- package/dist/client/assets/{index-CnV8Y6tV.js → index-Cu77hgR2.js} +1 -1
- package/dist/client/assets/index-DCQ3taiG.js +1 -0
- package/dist/client/assets/{index-DD_a39Sy.js → index-Dg14Zpi9.js} +2 -2
- package/dist/client/assets/{index-B_j4TgZF.js → index-cEqwHhEg.js} +1 -1
- package/dist/client/assets/{index-Cf5RfBo5.js → index-hC6VOnUm.js} +2 -2
- package/dist/client/assets/index-qEipD_7S.js +1 -0
- package/dist/client/assets/index-redirect-BRL1uQPT.js +1 -0
- package/dist/client/assets/{infiniteQueryObserver-CvFtTJPb.js → infiniteQueryObserver-C7FrFXuf.js} +1 -1
- package/dist/client/assets/infra-billing-B0e93_qz.js +1 -0
- package/dist/client/assets/input-BRqLi1TH.js +8 -0
- package/dist/client/assets/input-D8xrvlz-.js +1 -0
- package/dist/client/assets/{input-DRjCNSPN.js → input-TvernbmY.js} +1 -1
- package/dist/client/assets/{integration-icon-CFGOsRgH.js → integration-icon-B6H5J7sl.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-qtYgFNfF.js → invite-member-dialog-CsolElt3.js} +1 -1
- package/dist/client/assets/{label-DGsSvY2I.js → label-aWEsDmHM.js} +1 -1
- package/dist/client/assets/{layout-C7iOarOb.js → layout-CAwe_kK2.js} +1 -1
- package/dist/client/assets/legacy-agents-deep-DJ_t0QLc.js +1 -0
- package/dist/client/assets/legacy-main-redirect-CySqEohs.js +1 -0
- package/dist/client/assets/library-DRmbr8Ht.js +161 -0
- package/dist/client/assets/{login-B4RHcX-Z.js → login-DQDbHhI7.js} +1 -1
- package/dist/client/assets/{markdown-Y6owwpHy.js → markdown-CBvmi8AF.js} +30 -30
- package/dist/client/assets/match-site-slug-config-D3fUJ6vX.js +1 -0
- package/dist/client/assets/{mcp-app-renderer-Cy31bAY0.js → mcp-app-renderer-BQ7hPzlx.js} +2 -2
- package/dist/client/assets/{mcp-oauth-Bm9ijvfC.js → mcp-oauth-DhRKpyTH.js} +1 -1
- package/dist/client/assets/members-NHaXKGgP.js +1 -0
- package/dist/client/assets/mini-report-page-BcG9QHwQ.js +1 -0
- package/dist/client/assets/monaco-editor-C5zvkMO4.js +9 -0
- package/dist/client/assets/monitoring-stats-row-CWqusnLf.js +1 -0
- package/dist/client/assets/{multi-select-kzt94BG4.js → multi-select-CvACpZbb.js} +1 -1
- package/dist/client/assets/mustache-DQXz9E52.js +4 -0
- package/dist/client/assets/{oauth-callback-CsYpPVhX.js → oauth-callback-BHJTnNxG.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CkroR0wl.js → oauth-callback-ai-provider-wF0_7wc5.js} +1 -1
- package/dist/client/assets/omit-sandbox-map-jj4lCB2U.js +1 -0
- package/dist/client/assets/{onboarding-DN_VeGxV.js → onboarding-20FUHLvO.js} +1 -1
- package/dist/client/assets/optimistic-project-sidebar-views-DKtRXqQ0.js +1 -0
- package/dist/client/assets/org-layout-DRrVivAL.js +1 -0
- package/dist/client/assets/{organization-choice-Bugd-m5W.js → organization-choice-BmSYuBSE.js} +1 -1
- package/dist/client/assets/{orgs-Bv7LuXwC.js → orgs-1ZlqeM-y.js} +1 -1
- package/dist/client/assets/page-seo-form-Cpi2Oike.js +1 -0
- package/dist/client/assets/pair-CD8Vxcvs.js +47 -0
- package/dist/client/assets/{popover-DrJcYe9C.js → popover-Ci-k968-.js} +1 -1
- package/dist/client/assets/post-calendar-CgTLYrrU.js +1 -0
- package/dist/client/assets/post-editor-DyayPm7u.js +1 -0
- package/dist/client/assets/preview-content-DhEgigNG.js +1 -0
- package/dist/client/assets/preview-dialog-CKWnRekk.js +1 -0
- package/dist/client/assets/primitives-1lR28duD.js +1 -0
- package/dist/client/assets/{profile-Bs-irLLH.js → profile-DixSbE4L.js} +1 -1
- package/dist/client/assets/project-app-view-DBHiU3Rg.js +1 -0
- package/dist/client/assets/project-feed-boKgu_TR.js +1 -0
- package/dist/client/assets/project-icon-DIXBuD-A.js +1 -0
- package/dist/client/assets/project-reports-ChLta7_v.js +1 -0
- package/dist/client/assets/project-tasks-nUWazd1g.js +1 -0
- package/dist/client/assets/{prompts-wjQ-EFKj.js → prompts-BROxvafI.js} +1 -1
- package/dist/client/assets/provision-repo-scoped-github-connection-B6zdkC6p.js +1 -0
- package/dist/client/assets/record-editor-FqHaN2k4.js +1 -0
- package/dist/client/assets/redirect-editor-CWYZom_C.js +1 -0
- package/dist/client/assets/registry-C3_EEMj-.js +2 -0
- package/dist/client/assets/{registry-layout-DHYm94rU.js → registry-layout-BUEF9YqP.js} +4 -4
- package/dist/client/assets/{reports-D4elpaqK.js → reports-B1C9NU2m.js} +1 -1
- package/dist/client/assets/reports-BY7Ca1Ey.js +1 -0
- package/dist/client/assets/reports-tab-uLMivl2p.js +2 -0
- package/dist/client/assets/{repositories-3ia_V4sE.js → repositories-BgD13VwL.js} +1 -1
- package/dist/client/assets/repository-import-picker-DVnadPZ8.js +1 -0
- package/dist/client/assets/{repository-picker-s01uE4_E.js → repository-picker-BGpoa_g_.js} +1 -1
- package/dist/client/assets/require-capability-DSFKKTc-.js +1 -0
- package/dist/client/assets/{required-auth-layout-mSUodrzA.js → required-auth-layout-DMNBbcf3.js} +1 -1
- package/dist/client/assets/{reset-password-B_-cD_PK.js → reset-password-GCDcBOjo.js} +1 -1
- package/dist/client/assets/review-settings-VwYzzjCc.js +1 -0
- package/dist/client/assets/rich-text-link-control-C6A8Q9Jd.js +5 -0
- package/dist/client/assets/roles-PgEO9KN-.js +1 -0
- package/dist/client/assets/runnable-block-editor-Db2XbJYi.js +16 -0
- package/dist/client/assets/sandbox-lifecycle-context-DxbfUbxP.js +2 -0
- package/dist/client/assets/sandbox-url-D3mC8qhT.js +1 -0
- package/dist/client/assets/{schema-BDy_4D7A.js → schema-Cnskrzk1.js} +1 -1
- package/dist/client/assets/{scroll-area-C18Y2v3L.js → scroll-area-CaE3a4_T.js} +1 -1
- package/dist/client/assets/{search-input-L0lrukmF.js → search-input-lFP9sD3O.js} +1 -1
- package/dist/client/assets/{secrets-CdpkfmHa.js → secrets-BU_daRxy.js} +1 -1
- package/dist/client/assets/sections-editor-D-W8vM7g.js +2 -0
- package/dist/client/assets/{select-BGnwGqnU.js → select-Ce9NznPv.js} +1 -1
- package/dist/client/assets/select-model-CjTijsS7.js +1 -0
- package/dist/client/assets/self-tool-result-8OxPN9Nm.js +1 -0
- package/dist/client/assets/seo-editor-O94He1NF.js +1 -0
- package/dist/client/assets/serial-task-queue-CGOeQgpr.js +1 -0
- package/dist/client/assets/settings-layout-CWQI71Tg.js +1 -0
- package/dist/client/assets/settings-sidebar-BcAe-WS4.js +1 -0
- package/dist/client/assets/settings-tab-Cg5CqTki.js +5 -0
- package/dist/client/assets/shell-controls-gkZZS07l.js +1 -0
- package/dist/client/assets/shell-layout-C3IRibnI.js +1 -0
- package/dist/client/assets/site-url-en5df9c-.js +1 -0
- package/dist/client/assets/skill-preview-MIddvDZe.js +1 -0
- package/dist/client/assets/skills-hRnVKZ5K.js +1 -0
- package/dist/client/assets/{sso-CVpMpJ2m.js → sso-BePH_NId.js} +1 -1
- package/dist/client/assets/store-CqeIEwHN.js +1 -0
- package/dist/client/assets/store-registry-BCokMLik.js +2 -0
- package/dist/client/assets/switch-D5GcuD9Z.js +1 -0
- package/dist/client/assets/synced-repos-Cnp4m7yg.js +1 -0
- package/dist/client/assets/{table-DSIbUmyY.js → table-O0SpY8ZO.js} +1 -1
- package/dist/client/assets/{tabs-BVFMEVzk.js → tabs-DQoXHeZr.js} +1 -1
- package/dist/client/assets/{task-board-By8eCqZc.js → task-board-DyZE7mH1.js} +1 -1
- package/dist/client/assets/task-route-CayeX6cv.js +1 -0
- package/dist/client/assets/task-status-CyTozLxL.js +1 -0
- package/dist/client/assets/tasks-DGTMeQBa.js +1 -0
- package/dist/client/assets/{tasks-kFCSziTb.js → tasks-Da-h-zLm.js} +1 -1
- package/dist/client/assets/{textarea-CuF3aDTE.js → textarea-BpFOmm9_.js} +1 -1
- package/dist/client/assets/{thread-intent-q_RVjRN0.js → thread-intent-AJKohiRy.js} +1 -1
- package/dist/client/assets/thread-route-CEvVLI2K.js +1 -0
- package/dist/client/assets/thread-sheet-body-Bs4b4fMK.js +1 -0
- package/dist/client/assets/toggle-group-Cs1yIHkK.js +1 -0
- package/dist/client/assets/tool-namespace-ySa3S1AM.js +1 -0
- package/dist/client/assets/{toolbar-B5cewwJb.js → toolbar-DOOz2W24.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-BtBUZ8nA.js → toolbar-icon-button-Dp-AbzNZ.js} +1 -1
- package/dist/client/assets/{track-BYunSel2.js → track-Dns1NpdC.js} +1 -1
- package/dist/client/assets/{types-BB_Up-3A.js → types-C1gRrnQe.js} +6 -6
- package/dist/client/assets/usage-stats-D5mXC24B.js +141 -0
- package/dist/client/assets/{use-ai-providers-BMexfNaB.js → use-ai-providers-Bg_y9f3x.js} +1 -1
- package/dist/client/assets/{use-automations-BgzAjzua.js → use-automations-BI_yIok-.js} +1 -1
- package/dist/client/assets/{use-autosave-D70NA0HD.js → use-autosave-BB0U2eiK.js} +1 -1
- package/dist/client/assets/use-commerce-diagnostic-DqKipeip.js +1 -0
- package/dist/client/assets/use-connect-companion-Mci4Y6hu.js +1 -0
- package/dist/client/assets/{use-connection-ClORxmw4.js → use-connection-DCUpGmsb.js} +1 -1
- package/dist/client/assets/{use-copy-DUxpBqXm.js → use-copy-GVBAvo9n.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DBeldBRq.js → use-create-virtual-mcp-CizXpVyQ.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-40K6SzJD.js → use-date-fns-locale-CcPpBz8y.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-kf66WQZj.js → use-debounced-autosave-wCEzYUZh.js} +1 -1
- package/dist/client/assets/{use-debounced-value-v41IOreQ.js → use-debounced-value-D0SYNQsR.js} +1 -1
- package/dist/client/assets/use-deco-credits-DjxZxHMq.js +1 -0
- package/dist/client/assets/{use-decopilot-events-C0NWoSQc.js → use-decopilot-events-zpeu2MCG.js} +1 -1
- package/dist/client/assets/{use-delete-connection-qmqqgsKa.js → use-delete-connection-B-DNpbCU.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-C7c9x0vv.js → use-deployment-admin-Dpkh4HgH.js} +1 -1
- package/dist/client/assets/{use-file-configs-Dm3fOdMk.js → use-file-configs-B1FdrMZJ.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Bw5rNIGx.js → use-infinite-scroll-BXOEU8Y7.js} +1 -1
- package/dist/client/assets/{use-join-requests-DbtrL0Pl.js → use-join-requests-1Ow065Yq.js} +1 -1
- package/dist/client/assets/use-main-panel-tabs-CeyJWpQP.js +1 -0
- package/dist/client/assets/{use-mcp-auth-status-kHe3lJRg.js → use-mcp-auth-status-CSQiZCDG.js} +1 -1
- package/dist/client/assets/use-mcp-client-Bq-mjhw3.js +10 -0
- package/dist/client/assets/{use-mcp-prompts-CtjkJFfg.js → use-mcp-prompts-CWmeNLXn.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DRBItGTD.js → use-mcp-tools-DGdyHn8U.js} +1 -1
- package/dist/client/assets/{use-members-C23rfxcZ.js → use-members-Dnee1tF2.js} +1 -1
- package/dist/client/assets/use-navigate-to-agent-Drdqs1cr.js +1 -0
- package/dist/client/assets/use-open-billing-url-Cju1isPI.js +1 -0
- package/dist/client/assets/{use-org-auth-client-DvlpnDFO.js → use-org-auth-client-CVFBkaiI.js} +1 -1
- package/dist/client/assets/use-org-fs-DG1oJieK.js +1 -0
- package/dist/client/assets/{use-org-notice-DlsdC1WA.js → use-org-notice-PUfO84YR.js} +1 -1
- package/dist/client/assets/{use-org-sso-xd-5IiLc.js → use-org-sso-uleG21Aq.js} +1 -1
- package/dist/client/assets/{use-organization-roles-B3neE_6D.js → use-organization-roles-yO3kgQbK.js} +1 -1
- package/dist/client/assets/use-organization-settings-DrJN-E78.js +1 -0
- package/dist/client/assets/use-panel-navigate-CCqZdv2O.js +1 -0
- package/dist/client/assets/use-project-native-view-presence-01L5j4lu.js +1 -0
- package/dist/client/assets/use-project-scope-DZ9tacAx.js +1 -0
- package/dist/client/assets/use-registry-connections-cro5WL6A.js +1 -0
- package/dist/client/assets/{use-secrets-PkTonlJ_.js → use-secrets-w6G8jtp4.js} +1 -1
- package/dist/client/assets/use-section-preview-base-lro_p1nx.js +1 -0
- package/dist/client/assets/use-session-runtime-TS34dEJv.js +1 -0
- package/dist/client/assets/{use-status-sounds-C-6LEj0t.js → use-status-sounds-DQ2pMmh0.js} +1 -1
- package/dist/client/assets/{use-tags-BuxETA7b.js → use-tags-B6zE47mm.js} +1 -1
- package/dist/client/assets/use-task-metadata-C4MfiHBQ.js +1 -0
- package/dist/client/assets/use-thread-outputs-CpCqTMOi.js +1 -0
- package/dist/client/assets/{use-view-mode-BGsTNFK8.js → use-view-mode-B9wUn2ad.js} +1 -1
- package/dist/client/assets/use-virtual-mcp-CMlCV8Oj.js +1 -0
- package/dist/client/assets/useInfiniteQuery-CM35R0yt.js +1 -0
- package/dist/client/assets/useQueries-C6OAJOs7.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DWyGwvh9.js +1 -0
- package/dist/client/assets/{users-CuqlxLsH.js → users-CYflDdFv.js} +1 -1
- package/dist/client/assets/utils-B-5U5Z26.js +4 -0
- package/dist/client/assets/utils-CVEq3hMx.js +1 -0
- package/dist/client/assets/variant-calendar-BsFwTl3D.js +1 -0
- package/dist/client/assets/variant-matcher-override-CRlEf4IL.js +1 -0
- package/dist/client/assets/{view-mode-toggle-BlEO3gFJ.js → view-mode-toggle-kY4gR8CN.js} +1 -1
- package/dist/client/assets/virtual-mcp-CKi1xJsO.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/ErrorBarContext-CQj5vlL8.js +0 -1
- package/dist/client/assets/Sector-CD1ykt0B.js +0 -28
- package/dist/client/assets/ZoomOut-DhJWoynj.js +0 -1
- package/dist/client/assets/access-gate-OgewzCmd.js +0 -1
- package/dist/client/assets/agent-icon-6EllA70W.js +0 -1
- package/dist/client/assets/agents-list-BY0vT0Wn.js +0 -1
- package/dist/client/assets/ai-providers-vUA1qSht.js +0 -1
- package/dist/client/assets/analytics-tab-Do-IciVD.js +0 -2
- package/dist/client/assets/api-keys-pPtOUmL_.js +0 -1
- package/dist/client/assets/app-editor-CSGywsTY.js +0 -1
- package/dist/client/assets/automation-runs-CoIkXCsB.js +0 -187
- package/dist/client/assets/automations-CJ2EIlox.js +0 -1
- package/dist/client/assets/breadcrumb-CAKgWNOZ.js +0 -1
- package/dist/client/assets/bulk-category-panel-BenSOwl7.js +0 -1
- package/dist/client/assets/category-editor-iK-flfht.js +0 -1
- package/dist/client/assets/cdn-tab-Ck8xjhCA.js +0 -1
- package/dist/client/assets/chat-context-C6UT7ht1.js +0 -35
- package/dist/client/assets/choose-editor-B8v8x2gP.js +0 -1
- package/dist/client/assets/collection-detail-CZicQp0E.js +0 -1
- package/dist/client/assets/collection-display-button-BiBiEJPp.js +0 -1
- package/dist/client/assets/commerce-onboarding-DKWZMrBI.js +0 -1
- package/dist/client/assets/connect-layout-BLwdQBWt.js +0 -1
- package/dist/client/assets/connection-detail-BboxJXTl.js +0 -1
- package/dist/client/assets/connections-H_c0ER6v.js +0 -1
- package/dist/client/assets/e2e-tab-DbA_PByD.js +0 -1
- package/dist/client/assets/extract-connection-data-DkL3Oqhk.js +0 -1
- package/dist/client/assets/folder-icon-C46JPU0-.js +0 -2
- package/dist/client/assets/index-9Wn-1DpE.js +0 -1
- package/dist/client/assets/index-BEyFhSeZ.js +0 -834
- package/dist/client/assets/index-DHHqS3nT.js +0 -1
- package/dist/client/assets/index-DR6uwZdc.js +0 -1
- package/dist/client/assets/index-I7v7d4v2.js +0 -1
- package/dist/client/assets/index-SmsG_b1w.js +0 -1
- package/dist/client/assets/index-redirect-C3gwJ6Fh.js +0 -1
- package/dist/client/assets/infra-billing-Ch_WWq-u.js +0 -1
- package/dist/client/assets/members-ypEfbto9.js +0 -1
- package/dist/client/assets/monaco-editor-D3QSLeam.js +0 -9
- package/dist/client/assets/monitoring-stats-row--wR3KC6f.js +0 -1
- package/dist/client/assets/org-layout-DzsJ720P.js +0 -1
- package/dist/client/assets/page-seo-form-DPrfWQ94.js +0 -1
- package/dist/client/assets/post-calendar-DyncB6BE.js +0 -1
- package/dist/client/assets/post-editor-FfaApBeX.js +0 -1
- package/dist/client/assets/primitives-DZEMS67c.js +0 -1
- package/dist/client/assets/project-app-view-C1W5Uv5V.js +0 -1
- package/dist/client/assets/project-icon-DQTfNALl.js +0 -1
- package/dist/client/assets/provision-repo-scoped-github-connection-WQFARyHG.js +0 -1
- package/dist/client/assets/record-editor-DaGE-E4Q.js +0 -1
- package/dist/client/assets/redirect-editor-BgylW9YL.js +0 -1
- package/dist/client/assets/registry-YIdSAHGV.js +0 -2
- package/dist/client/assets/repository-import-picker-DN9Nn9yd.js +0 -1
- package/dist/client/assets/require-capability-BVMwcBeZ.js +0 -1
- package/dist/client/assets/review-settings-BN9py8rz.js +0 -1
- package/dist/client/assets/roles-CGT8NKA4.js +0 -1
- package/dist/client/assets/sections-editor-BIoyRz1G.js +0 -2
- package/dist/client/assets/select-model-BNDe5FJr.js +0 -4
- package/dist/client/assets/self-tool-result-DM7xixxP.js +0 -1
- package/dist/client/assets/seo-editor-EIeTDSnb.js +0 -1
- package/dist/client/assets/settings-layout-CwJp96nZ.js +0 -1
- package/dist/client/assets/settings-sidebar-BvIIdmkC.js +0 -1
- package/dist/client/assets/shell-controls-nVElTnLJ.js +0 -1
- package/dist/client/assets/shell-layout-CTNVA2t4.js +0 -1
- package/dist/client/assets/skill-preview-BswJw8Eb.js +0 -4
- package/dist/client/assets/skills-DXWVIfB4.js +0 -1
- package/dist/client/assets/store-BUUS-eER.js +0 -1
- package/dist/client/assets/store-registry-DxfEOZiI.js +0 -2
- package/dist/client/assets/switch-CPLM-IZy.js +0 -1
- package/dist/client/assets/synced-repos-Bl-1vG4K.js +0 -1
- package/dist/client/assets/task-route-B8aecmdq.js +0 -1
- package/dist/client/assets/thread-route-jI9qvJe_.js +0 -1
- package/dist/client/assets/toggle-group-WfRpP-dB.js +0 -1
- package/dist/client/assets/use-destination-route-CY15sZqw.js +0 -1
- package/dist/client/assets/use-mcp-client-Cw1fcLqm.js +0 -10
- package/dist/client/assets/use-navigate-to-agent-COVw0ub8.js +0 -1
- package/dist/client/assets/use-organization-settings-DucmPYOE.js +0 -1
- package/dist/client/assets/use-panel-navigate-C6Ga2vR8.js +0 -1
- package/dist/client/assets/use-registry-connections-DBp-MS3e.js +0 -1
- package/dist/client/assets/use-section-preview-base-B4s2_IK6.js +0 -1
- package/dist/client/assets/use-virtual-mcp-Bnfc4yEo.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DThUrotQ.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Dsg0_SX3.js +0 -1
- package/dist/client/assets/variant-calendar-BhJlQ5r6.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -2990,7 +2990,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
2990
2990
|
${J.join(`
|
|
2991
2991
|
`)}`:X}function HT6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
2992
2992
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var jr$=200,e26=12,ZT6,YT6=300,oq0=3;var vG1=D(()=>{qZ();u$();tq0();ZT6={aheadBy:0,behindBy:0,files:[]}});function UT6($){if(!$||$.includes(".."))return!1;return FT6.test($)}function zr$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!UT6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function Pr$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var FT6;var Ar$=D(()=>{FT6=/^[\w./@-]+$/});function K10($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function Rr$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new zw(RZ);let J=await cD($.storage,X,Y);if(J&&await tU($.storage,J)){let F=await jH($,J,{forceRefresh:!0}).catch((U)=>{throw new zw(U instanceof Error?U.message:RZ)});await Tr$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new zw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await bh({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:RZ;throw new zw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await EH(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=T9$(F instanceof Error?F.message:String(F));throw U?new zw(N):F});await Tr$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function Tr$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=Qd($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await LL(K,NT6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var NT6=10485760,zw;var fG1=D(()=>{nG();hq0();kr();ZX0();Ao();qZ();zw=class zw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function OT6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!BT6.test(Z))throw Error(`Invalid branch name: ${$}`)}function zb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(LT6)])}async function jT6($,Z){let Q=$.var.studioContext,Y=MH(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=Ov(G?.metadata?.runtime);if(W)return W;let K=dj0(Z.virtualMcpMetadata),H=K==="cms"?await BG1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)Sr(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 ET6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await CY($.var.studioContext)}catch{return null}}function Pb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Wd($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=K10(Z,Q);if(!X)throw new b0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=p(Y);return vh(Y,J.id,X)}function bG1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=G5$(Z);if(Y!==void 0)return $.json({error:Q},429,{...E5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof L6)return $.json({error:Q},409,E5);let X=rG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,E5)}return $.json({error:Q},502,E5)}async function Mr$($,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 Vr$($){try{let Z=await Wd($),Q=await rq0(Z,$.get("vmClaim").branch);return $.json(Q,200,E5)}catch(Z){return bG1($,Z)}}function H10($,Z){let Y=(eq0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return eq0.set($,X),X.finally(()=>{if(eq0.get($)===X)eq0.delete($)}),Y}async function O7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,E5);let Y=Q?.runner??Pb($);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",...E5}})}}let O=await B.text(),L=Q?.redactRepoDir?zT6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...E5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function zT6($){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 $I0($,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 PT6($){return kr$.includes($)}var BT6,qr$=524288,DT6=65536,LT6=1e4,Ir$=2000,wT6,eq0,E5,kr$,Sr$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",wT6),$.post("/:virtualMcpId/:branch/write",(Q)=>O7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>O7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>O7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>O7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>O7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>O7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:zb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>O7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:zb(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 O7(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 O7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>O7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>O7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!PT6(Y))return Q.json({error:`step must be one of: ${kr$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await BG1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await ET6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,E5);if(Y==="start"){let G=p(Q.var.studioContext),W=ju(X.virtualMcpMetadata);try{await hj0({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 O7(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 YB(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 ko$(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 Vr$(Q);return Z(Q)});let Z=(Q)=>O7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(Ir$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Vr$(Q);return O7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(Ir$)])})}),$.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 Wd(Q),G=await sq0(J,Y.branch,X.base);return Q.json(G,200,E5)}catch(X){return bG1(Q,X)}return O7(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,E5);let Y=Pb(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return H10(X,async()=>{try{await OG1(W,Y,X);let K=K10(J,G);if(K)await Rr$(W,Y,X,K)}catch(K){if(K instanceof zw)return Q.json({error:K.message},403,E5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,E5)}return O7(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 H10(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,E5);try{let G=await Wd(Q);return await Er$(G,Y.branch,J),Q.json({ok:!0},200,E5)}catch(G){let W=rG(G)===409||G instanceof L6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,E5)}});return H10(Y.claimName,()=>O7(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 H10(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Wd(Q),H=W.base??await K.getDefaultBranch();return await aq0(K,Y.branch,H),Q.json({ok:!0},200,E5)}catch(W){return bG1(Q,W)}});let X=Pb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return H10(J,async()=>{try{await OG1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,E5)}return O7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",x5({maxSize:qr$,onError:(Q)=>Q.json({error:"Payload too large"},413,E5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Pb(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,O]=wG1(F)&&N?[F,U]:X?await Promise.all([$I0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),$I0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Wd(Q);return Promise.all([rq0(w,Y.branch),sq0(w,Y.branch)])})(),L=await fo$(K,B,O);return Q.json(L,200,E5)}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,E5);return Q.json({error:F},502,E5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",x5({maxSize:qr$,onError:(Q)=>Q.json({error:"Payload too large"},413,E5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Pb(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,O]=wG1(F)&&N?[F,U]:X?await Promise.all([$I0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),$I0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Wd(Q);return Promise.all([rq0(w,Y.branch),sq0(w,Y.branch)])})(),L=await xo$(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,E5)}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,E5);return Q.json({error:F},502,E5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Pb(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 Mr$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",x5({maxSize:DT6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Pb(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=zr$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Pr$(J,W.resolveType);return Mr$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Cr$=D(()=>{y$();HK();Zd();NG1();qr();Io$();$3();Eu();Mo$();kW();Vo$();So$();ia0();Mr();zG1();yo$();qZ();$5();vG1();Ar$();fG1();BT6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;wT6=gq0(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=i0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=p(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{OT6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},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=to({orgId:X.id,virtualMcpId:J,branch:G}),H=await Hs0(Q,G),F=Fs0(H,Y),U=qo$({userId:F,projectRef:K}),N=W.metadata??null,B=await jT6($,{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((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await CY(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});eq0=new Map;E5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};kr$=["clone","install","start"]});function _r$($,Z,Q){let Y=xG1.get($);if(!Y)Y={pending:null,running:!1},xG1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)TT6($,Y);return J}async function TT6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await RT6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)xG1.delete($)}}async function RT6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Gd(Z,Q),W=await Z.listDecofileEntries(G,Y),K=SG1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=CG1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
2993
|
-
`;await Or$(Z.repo,L);let w=O[0]??`${nq0(Y)}/${TG1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of CG1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await Dr$(Z,F.values(),X),{decofile:B,skipped:O}=Y10(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:LW(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:qT6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof L6)||J>=AT6-1)throw N;await z$(w7(2000,200,J,2,0.5))}}}function qT6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return xr0(Y,$.deps.coAuthor)}var AT6=3,xG1;var vr$=D(()=>{Vw0();lq0();Z6();u$();qZ();tq0();xG1=new Map});import{createHmac as fr$,randomBytes as IT6,timingSafeEqual as MT6}from"crypto";function br$(){if(ZI0)return ZI0;let $;try{let Z=I0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ZI0=$?Buffer.from($):IT6(32),ZI0}function yG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+VT6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=fr$("sha256",br$()).update(Y).digest("base64url");return`${Y}.${X}`}function xr$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(fr$("sha256",br$()).update(Y).digest("base64url"));if(X.length!==J.length||!MT6(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 VT6=21600000,ZI0=null;var yr$=D(()=>{j$()});import{z as Kd}from"zod";function ST6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kT6.test($)}function cr$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function F10($){let Z=$.get("decofileScope");return vh($.var.studioContext,Z.organizationId,Z.githubRepo)}function U10($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof L6)return $.json({error:Q},409);let Y=rG(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 dr$(){let $=new e0;return $.use("/:virtualMcpId/:branch",lr$),$.use("/:virtualMcpId/:branch/*",lr$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Lr$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=yG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(cr$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return U10(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await F10(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return U10(Z,X)}}),$.patch("/:virtualMcpId/:branch",_T6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=vT6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{uq0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(AG1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await F10(Z),W=await _r$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Qd(Y)},J),K=yG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:cr$(Z)})}catch(G){return U10(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(rG(W)!==409)throw W;await aq0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(rG(G)===409)return Z.json({error:"merge-conflict"},409);if(rG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return U10(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(rG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return U10(Z,Y)}}),$}var kT6,gr$=500,hr$=1048576,ur$=1024,CT6=8388608,_T6,vT6,lr$;var mr$=D(()=>{pa0();lq0();y$();HK();NG1();hq0();fG1();qZ();vr$();yr$();vG1();tq0();kT6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;_T6=x5({maxSize:CT6,onError:($)=>$.json({error:"Payload too large"},413)}),vT6=Kd.object({set:Kd.record(Kd.string(),Kd.unknown()).optional(),delete:Kd.array(Kd.string()).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)<=gr$,{message:`Patch cannot touch more than ${gr$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=hr$),{message:`Each block must be at most ${hr$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ur$),{message:`Each block key must be at most ${ur$} characters`}),lr$=gq0(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(!ST6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!xr$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}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;if(!cj0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=K10(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var ir$=($)=>{let Z=new e0;if(Z.use("*",vc),Z.use("*",Pi$),Z.route("/",tR0()),Z.route("/",Qp$()),Z.route("/",di$()),Z.route("/",No$()),Z.route("/",Yo$()),Z.route("/",Ho$()),Z.route("/",Jo$()),Z.route("/",bq0()),Z.route("/tools",Eo$()),Z.route("/",Lo$()),Z.route("/",bt$({kvStorage:$.kvStorage})),Z.route("/",vt$()),Z.route("/fs",tt$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Sr$()),Z.route("/decofile",dr$()),Z.route("/",$o$()),Z.route("/",rt$()),Z.route("/deco-sites",rR0()),Z.route("/hosting",_i$()),Z.route("/monitor",hi$()),Z.route("/sso",cR0()),Z.route("/",xq0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Mi$()),$.mountDevAssets)Z.route("/dev-assets",$q0({orgFromPath:!0}));return 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),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",gc$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",at$()),Z.route("/mcp",mz0()),Z.route("/mcp/self",_q0()),Z.route("/mcp",nz0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var pr$=D(()=>{y$();Ai$();CR0();Vi$();vX1();vi$();ui$();Zq0();Kb();VX1();gX1();ft$();xt$();ot$();st$();Cs();AX1();tz0();YG1();et$();Zo$();Xo$();Go$();GG1();Bo$();wo$();WG1();zo$();KG1();iz0();Cr$();mr$()});function fT6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var bT6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nr$=()=>{let $=new e0;return $.use("*",bT6),$.get("/",async(Z)=>{let Q=I0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await nX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fT6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var tr$=D(()=>{y$();j$();gT0()});import{z as V1}from"zod";function IF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function iT6($){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 pT6($,Z,Q){try{return JSON.parse($)}catch{throw new sr$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function nT6($){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:pT6(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 tT6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?lJ(Q.function.parameters):lJ({type:"object",properties:{}});return[Q.function.name,W$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function oT6($){if(!$)return;return{openai:{response_format:$}}}function rT6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function or$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function rr$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var xT6=256,yT6,gT6,hT6,uT6,lT6,cT6,dT6,mT6,sr$,ar$,er$;var $s$=D(()=>{C4();y$();Zd();vN();yT6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),gT6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),hT6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(gT6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),uT6=V1.object({type:V1.literal("text")}),lT6=V1.object({type:V1.literal("json_object")}),cT6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),dT6=V1.union([uT6,lT6,cT6]),mT6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(hT6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(yT6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:dT6.optional(),user:V1.string().optional()});sr$=class sr$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ar$=new e0;ar$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(IF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(IF("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(IF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=mT6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(IF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=iT6(J.model);if(!G)return $.json(IF("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 j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>Sj(E.providerId));if(!j)return $.json(IF("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(IF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=nT6(J.messages),N=J.tools?tT6(J.tools):void 0,B=oT6(J.response_format),O=rT6(),L=Math.floor(Date.now()/1000);if(J.stream)return YB($,async(w)=>{let j=or$(F,U,N,J,B,$.req.raw.signal);try{let E=BL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let V=A;A="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of E.fullStream){if(!z&&(V.type==="text-delta"||V.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(V.type==="text-delta"){if(A+=V.text,A.length>=xT6)await q()}else if(V.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:rr$(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=or$(F,U,N,J,B,$.req.raw.signal),j=await UL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:rr$(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(IF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(IF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(IF(X.message,"server_error"),500)}});er$=ar$});function sT6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Zs$(){let $=new e0;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=i0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!b7(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||d5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(n4$(U)!==J)continue;if(!sT6(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 Qs$=D(()=>{y$();HH()});var Xs$;var Ys$=D(()=>{Xs$={name:"decocms",version:"4.363.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@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:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",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 $R6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??eT6}}var Js$,eT6="https://ph.studio.decocms.com",Gs$;var Ws$=D(()=>{y$();cn();hv();R5();j$();KX1();Ys$();Js$=new e0;Js$.get("/",($)=>{let Z={version:Xs$.version,theme:Js1(),...NW().logo&&{logo:NW().logo},...zN()&&{internalUrl:wy1()},...I0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!I0().firecrawlApiKey,hostingEnabled:!!I0().controlplaneRestUrl&&!!I0().controlplaneServiceToken,hostingControlPlaneGa:I0().hostingControlPlaneGa,monitorEnabled:!!I0().clickhouseAnalyticsUrl&&!!I0().clickhouseAnalyticsPassword,monitorGa:I0().monitorGa,auth:Am$(),posthog:$R6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:E10()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Gs$=Js$});function Hd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function gG1($){return(Hd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Hs$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Hd($))}&sz=${Z}`}function Ks$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function Fs$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?Ks$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Ks$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as d0}from"zod";var Ab,ZR6,QR6,YR6,XR6,Us$;var Ns$=D(()=>{Ab=d0.enum(["good","bad","neutral"]),ZR6=d0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},d0.object({kind:d0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:d0.coerce.string().optional(),tone:Ab.optional(),muted:d0.boolean().optional(),delta:d0.coerce.string().optional(),deltaDir:d0.enum(["up","down","neutral"]).optional(),points:d0.array(d0.coerce.number()).optional(),label:d0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),QR6=d0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},d0.array(ZR6)),YR6={key:d0.coerce.string(),title:d0.coerce.string(),eyebrow:d0.coerce.string().optional(),headline:d0.coerce.string(),annotation:d0.coerce.string().optional(),methodology:d0.coerce.string().optional(),sources:d0.array(d0.object({name:d0.coerce.string(),logoUrl:d0.coerce.string()})).optional()},XR6=d0.discriminatedUnion("template",[d0.object({template:d0.literal("cover"),score:d0.object({value:d0.coerce.number(),max:d0.coerce.number().optional(),grade:d0.coerce.string().optional(),label:d0.coerce.string().optional()}).optional(),brandImage:d0.coerce.string().optional(),screenshot:d0.coerce.string().optional(),mobileScreenshot:d0.coerce.string().optional()}),d0.object({template:d0.literal("cta"),ctaUrl:d0.coerce.string().optional(),ctaLabel:d0.coerce.string().optional(),bullets:d0.array(d0.coerce.string()).optional()}),d0.object({template:d0.literal("series"),points:d0.array(d0.coerce.number()).min(2),xLabels:d0.array(d0.coerce.string()).min(1),unit:d0.coerce.string().optional(),callout:d0.object({index:d0.coerce.number(),value:d0.coerce.string(),tone:Ab.optional()})}),d0.object({template:d0.literal("threshold"),value:d0.coerce.string().default(""),metricLabel:d0.coerce.string().optional(),ratio:d0.coerce.number(),thresholdRatio:d0.coerce.number().optional(),thresholdLabel:d0.coerce.string().default(""),tone:Ab.optional()}),d0.object({template:d0.literal("stats"),stats:d0.array(d0.object({value:d0.coerce.string(),label:d0.coerce.string(),tone:Ab.optional()})).min(1)}),d0.object({template:d0.literal("bars"),items:d0.array(d0.object({value:d0.coerce.string(),label:d0.coerce.string(),ratio:d0.coerce.number(),tone:Ab.optional()})).min(1)}),d0.object({template:d0.literal("gauges"),gauges:d0.array(d0.object({label:d0.coerce.string(),value:d0.coerce.string(),status:d0.enum(["good","warn","bad"]).catch("warn"),caption:d0.coerce.string().optional(),ratio:d0.coerce.number().optional()})).min(1)}),d0.object({template:d0.literal("checklist"),checks:d0.array(d0.object({label:d0.coerce.string(),status:d0.enum(["pass","fail","warn"]).catch("fail"),value:d0.coerce.string().optional()})).min(1)}),d0.object({template:d0.literal("table"),columns:d0.array(d0.object({label:d0.coerce.string(),align:d0.enum(["left","right"]).optional()})).min(1),rows:d0.array(QR6).min(1),highlightRow:d0.coerce.number().optional()}),d0.object({template:d0.literal("products"),products:d0.array(d0.object({name:d0.coerce.string(),price:d0.coerce.string().optional(),image:d0.coerce.string().optional(),url:d0.coerce.string().optional()})).min(1)}),d0.object({template:d0.literal("list"),entries:d0.array(d0.object({label:d0.coerce.string(),severity:d0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:d0.coerce.number().optional()}),d0.object({template:d0.literal("keywords"),volumeLabel:d0.coerce.string().optional(),keywords:d0.array(d0.object({term:d0.coerce.string(),volume:d0.coerce.string(),position:d0.coerce.number().catch(0)})).min(1)}),d0.object({template:d0.literal("competitor"),metricLabel:d0.coerce.string().optional(),competitors:d0.array(d0.object({name:d0.coerce.string(),value:d0.coerce.string(),tone:Ab.optional(),isYou:d0.boolean().optional()})).min(1)}),d0.object({template:d0.literal("scorecard"),rivalLabel:d0.coerce.string().optional(),dimensions:d0.array(d0.object({label:d0.coerce.string(),you:d0.coerce.string(),rival:d0.coerce.string().optional(),rivalName:d0.coerce.string().optional(),tone:Ab.optional()})).min(1)})]),Us$=d0.object({...YR6,template:XR6})});function QI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=Us$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var hG1=D(()=>{Ns$()});import{join as Bs$}from"path";async function GR6($){try{let Z=await fetch(`${eK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(JR6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=QI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||gG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function WR6($,Z){let Q=Hd($),Y=Z?.brand?.trim()||gG1(Q),X=Hs$(Q,128),G=`${(I0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Fs$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(G)}" />`,`<meta property="og:image" content="${WG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(H)}" />`,`<meta name="twitter:image:alt" content="${WG(F)}" />`,`<link rel="canonical" href="${WG(G)}" />`,`<link rel="icon" href="${WG(X)}" sizes="any" />`].join(`
|
|
2993
|
+
`;await Or$(Z.repo,L);let w=O[0]??`${nq0(Y)}/${TG1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of CG1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await Dr$(Z,F.values(),X),{decofile:B,skipped:O}=Y10(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:LW(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:qT6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof L6)||J>=AT6-1)throw N;await z$(w7(2000,200,J,2,0.5))}}}function qT6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return xr0(Y,$.deps.coAuthor)}var AT6=3,xG1;var vr$=D(()=>{Vw0();lq0();Z6();u$();qZ();tq0();xG1=new Map});import{createHmac as fr$,randomBytes as IT6,timingSafeEqual as MT6}from"crypto";function br$(){if(ZI0)return ZI0;let $;try{let Z=I0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ZI0=$?Buffer.from($):IT6(32),ZI0}function yG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+VT6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=fr$("sha256",br$()).update(Y).digest("base64url");return`${Y}.${X}`}function xr$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(fr$("sha256",br$()).update(Y).digest("base64url"));if(X.length!==J.length||!MT6(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 VT6=21600000,ZI0=null;var yr$=D(()=>{j$()});import{z as Kd}from"zod";function ST6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kT6.test($)}function cr$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function F10($){let Z=$.get("decofileScope");return vh($.var.studioContext,Z.organizationId,Z.githubRepo)}function U10($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof L6)return $.json({error:Q},409);let Y=rG(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 dr$(){let $=new e0;return $.use("/:virtualMcpId/:branch",lr$),$.use("/:virtualMcpId/:branch/*",lr$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Lr$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=yG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(cr$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return U10(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await F10(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return U10(Z,X)}}),$.patch("/:virtualMcpId/:branch",_T6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=vT6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{uq0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(AG1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await F10(Z),W=await _r$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Qd(Y)},J),K=yG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:cr$(Z)})}catch(G){return U10(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(rG(W)!==409)throw W;await aq0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(rG(G)===409)return Z.json({error:"merge-conflict"},409);if(rG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return U10(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await F10(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(rG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return U10(Z,Y)}}),$}var kT6,gr$=500,hr$=1048576,ur$=1024,CT6=8388608,_T6,vT6,lr$;var mr$=D(()=>{pa0();lq0();y$();HK();NG1();hq0();fG1();qZ();vr$();yr$();vG1();tq0();kT6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;_T6=x5({maxSize:CT6,onError:($)=>$.json({error:"Payload too large"},413)}),vT6=Kd.object({set:Kd.record(Kd.string(),Kd.unknown()).optional(),delete:Kd.array(Kd.string()).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)<=gr$,{message:`Patch cannot touch more than ${gr$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=hr$),{message:`Each block must be at most ${hr$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ur$),{message:`Each block key must be at most ${ur$} characters`}),lr$=gq0(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(!ST6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!xr$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}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;if(!cj0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=K10(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var ir$=($)=>{let Z=new e0;if(Z.use("*",vc),Z.use("*",Pi$),Z.route("/",tR0()),Z.route("/",Qp$()),Z.route("/",di$()),Z.route("/",No$()),Z.route("/",Yo$()),Z.route("/",Ho$()),Z.route("/",Jo$()),Z.route("/",bq0()),Z.route("/tools",Eo$()),Z.route("/",Lo$()),Z.route("/",bt$({kvStorage:$.kvStorage})),Z.route("/",vt$()),Z.route("/fs",tt$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Sr$()),Z.route("/decofile",dr$()),Z.route("/",$o$()),Z.route("/",rt$()),Z.route("/deco-sites",rR0()),Z.route("/hosting",_i$()),Z.route("/monitor",hi$()),Z.route("/sso",cR0()),Z.route("/",xq0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Mi$()),$.mountDevAssets)Z.route("/dev-assets",$q0({orgFromPath:!0}));return 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),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",gc$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",at$()),Z.route("/mcp",mz0()),Z.route("/mcp/self",_q0()),Z.route("/mcp",nz0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var pr$=D(()=>{y$();Ai$();CR0();Vi$();vX1();vi$();ui$();Zq0();Kb();VX1();gX1();ft$();xt$();ot$();st$();Cs();AX1();tz0();YG1();et$();Zo$();Xo$();Go$();GG1();Bo$();wo$();WG1();zo$();KG1();iz0();Cr$();mr$()});function fT6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var bT6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nr$=()=>{let $=new e0;return $.use("*",bT6),$.get("/",async(Z)=>{let Q=I0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await nX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fT6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var tr$=D(()=>{y$();j$();gT0()});import{z as V1}from"zod";function IF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function iT6($){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 pT6($,Z,Q){try{return JSON.parse($)}catch{throw new sr$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function nT6($){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:pT6(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 tT6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?lJ(Q.function.parameters):lJ({type:"object",properties:{}});return[Q.function.name,W$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function oT6($){if(!$)return;return{openai:{response_format:$}}}function rT6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function or$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function rr$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var xT6=256,yT6,gT6,hT6,uT6,lT6,cT6,dT6,mT6,sr$,ar$,er$;var $s$=D(()=>{C4();y$();Zd();vN();yT6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),gT6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),hT6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(gT6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),uT6=V1.object({type:V1.literal("text")}),lT6=V1.object({type:V1.literal("json_object")}),cT6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),dT6=V1.union([uT6,lT6,cT6]),mT6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(hT6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(yT6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:dT6.optional(),user:V1.string().optional()});sr$=class sr$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ar$=new e0;ar$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(IF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(IF("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(IF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=mT6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(IF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=iT6(J.model);if(!G)return $.json(IF("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 j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>Sj(E.providerId));if(!j)return $.json(IF("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(IF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=nT6(J.messages),N=J.tools?tT6(J.tools):void 0,B=oT6(J.response_format),O=rT6(),L=Math.floor(Date.now()/1000);if(J.stream)return YB($,async(w)=>{let j=or$(F,U,N,J,B,$.req.raw.signal);try{let E=BL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let V=A;A="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of E.fullStream){if(!z&&(V.type==="text-delta"||V.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(V.type==="text-delta"){if(A+=V.text,A.length>=xT6)await q()}else if(V.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:rr$(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=or$(F,U,N,J,B,$.req.raw.signal),j=await UL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:rr$(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(IF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(IF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(IF(X.message,"server_error"),500)}});er$=ar$});function sT6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Zs$(){let $=new e0;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=i0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!b7(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||d5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(n4$(U)!==J)continue;if(!sT6(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 Qs$=D(()=>{y$();HH()});var Xs$;var Ys$=D(()=>{Xs$={name:"decocms",version:"4.363.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@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:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",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 $R6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??eT6}}var Js$,eT6="https://ph.studio.decocms.com",Gs$;var Ws$=D(()=>{y$();cn();hv();R5();j$();KX1();Ys$();Js$=new e0;Js$.get("/",($)=>{let Z={version:Xs$.version,theme:Js1(),...NW().logo&&{logo:NW().logo},...zN()&&{internalUrl:wy1()},...I0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!I0().firecrawlApiKey,hostingEnabled:!!I0().controlplaneRestUrl&&!!I0().controlplaneServiceToken,hostingControlPlaneGa:I0().hostingControlPlaneGa,monitorEnabled:!!I0().clickhouseAnalyticsUrl&&!!I0().clickhouseAnalyticsPassword,monitorGa:I0().monitorGa,auth:Am$(),posthog:$R6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:E10()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Gs$=Js$});function Hd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function gG1($){return(Hd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Hs$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Hd($))}&sz=${Z}`}function Ks$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function Fs$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?Ks$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Ks$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as d0}from"zod";var Ab,ZR6,QR6,YR6,XR6,Us$;var Ns$=D(()=>{Ab=d0.enum(["good","bad","neutral"]),ZR6=d0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},d0.object({kind:d0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:d0.coerce.string().optional(),tone:Ab.optional(),muted:d0.boolean().optional(),delta:d0.coerce.string().optional(),deltaDir:d0.enum(["up","down","neutral"]).optional(),points:d0.array(d0.coerce.number()).optional(),label:d0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),QR6=d0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},d0.array(ZR6)),YR6={key:d0.coerce.string(),title:d0.coerce.string(),eyebrow:d0.coerce.string().optional(),headline:d0.coerce.string(),annotation:d0.coerce.string().optional(),methodology:d0.coerce.string().optional(),sources:d0.array(d0.object({name:d0.coerce.string(),logoUrl:d0.coerce.string()})).optional()},XR6=d0.discriminatedUnion("template",[d0.object({template:d0.literal("cover"),score:d0.object({value:d0.coerce.number(),max:d0.coerce.number().optional(),grade:d0.coerce.string().optional(),label:d0.coerce.string().optional()}).optional(),brandImage:d0.coerce.string().optional(),screenshot:d0.coerce.string().optional(),mobileScreenshot:d0.coerce.string().optional()}),d0.object({template:d0.literal("cta"),ctaUrl:d0.coerce.string().optional(),ctaLabel:d0.coerce.string().optional(),bullets:d0.array(d0.coerce.string()).optional()}),d0.object({template:d0.literal("series"),points:d0.array(d0.coerce.number()).min(2),xLabels:d0.array(d0.coerce.string()).min(1),unit:d0.coerce.string().optional(),callout:d0.object({index:d0.coerce.number(),value:d0.coerce.string(),tone:Ab.optional()})}),d0.object({template:d0.literal("threshold"),value:d0.coerce.string().default(""),metricLabel:d0.coerce.string().optional(),ratio:d0.coerce.number(),thresholdRatio:d0.coerce.number().optional(),thresholdLabel:d0.coerce.string().default(""),tone:Ab.optional()}),d0.object({template:d0.literal("stats"),stats:d0.array(d0.object({value:d0.coerce.string(),label:d0.coerce.string(),tone:Ab.optional()})).min(1)}),d0.object({template:d0.literal("bars"),items:d0.array(d0.object({value:d0.coerce.string(),label:d0.coerce.string(),ratio:d0.coerce.number(),tone:Ab.optional()})).min(1)}),d0.object({template:d0.literal("gauges"),gauges:d0.array(d0.object({label:d0.coerce.string(),value:d0.coerce.string(),status:d0.enum(["good","warn","bad"]).catch("warn"),caption:d0.coerce.string().optional(),ratio:d0.coerce.number().optional()})).min(1)}),d0.object({template:d0.literal("checklist"),checks:d0.array(d0.object({label:d0.coerce.string(),status:d0.enum(["pass","fail","warn"]).catch("fail"),value:d0.coerce.string().optional()})).min(1)}),d0.object({template:d0.literal("table"),columns:d0.array(d0.object({label:d0.coerce.string(),align:d0.enum(["left","right"]).optional()})).min(1),rows:d0.array(QR6).min(1),highlightRow:d0.coerce.number().optional()}),d0.object({template:d0.literal("products"),products:d0.array(d0.object({name:d0.coerce.string(),price:d0.coerce.string().optional(),image:d0.coerce.string().optional(),url:d0.coerce.string().optional()})).min(1)}),d0.object({template:d0.literal("list"),entries:d0.array(d0.object({label:d0.coerce.string(),severity:d0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:d0.coerce.number().optional()}),d0.object({template:d0.literal("keywords"),volumeLabel:d0.coerce.string().optional(),keywords:d0.array(d0.object({term:d0.coerce.string(),volume:d0.coerce.string(),position:d0.coerce.number().catch(0)})).min(1)}),d0.object({template:d0.literal("competitor"),metricLabel:d0.coerce.string().optional(),competitors:d0.array(d0.object({name:d0.coerce.string(),value:d0.coerce.string(),tone:Ab.optional(),isYou:d0.boolean().optional()})).min(1)}),d0.object({template:d0.literal("scorecard"),rivalLabel:d0.coerce.string().optional(),dimensions:d0.array(d0.object({label:d0.coerce.string(),you:d0.coerce.string(),rival:d0.coerce.string().optional(),rivalName:d0.coerce.string().optional(),tone:Ab.optional()})).min(1)})]),Us$=d0.object({...YR6,template:XR6})});function QI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=Us$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var hG1=D(()=>{Ns$()});import{join as Bs$}from"path";async function GR6($){try{let Z=await fetch(`${eK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(JR6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=QI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||gG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function WR6($,Z){let Q=Hd($),Y=Z?.brand?.trim()||gG1(Q),X=Hs$(Q,128),G=`${(I0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Fs$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(G)}" />`,`<meta property="og:image" content="${WG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(H)}" />`,`<meta name="twitter:image:alt" content="${WG(F)}" />`,`<link rel="canonical" href="${WG(G)}" />`,`<link rel="icon" href="${WG(X)}" sizes="any" />`].join(`
|
|
2994
2994
|
`)}function KR6($,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}
|
|
2995
2995
|
</head>`)}function Os$($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=Hd(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Bs$($,"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(`${eK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(HR6)}),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("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?Bs$($,"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 GR6(Hd(Y)),K=WR6(Y,W);return Q.html(KR6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var JR6=2500,HR6=1e4;var Ds$=D(()=>{y$();hG1();lE();j$()});function N10($,Z){return fetch(`${eK({})}${$}`,Z)}async function FR6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await N10(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=QI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var UR6,JB,Ls$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},ws$;var js$=D(()=>{y$();MJ();lE();hG1();UR6=new Set(["complete","errored","terminated","unknown"]),JB=new e0;JB.use("*",async($,Z)=>{let Q=await Y8.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});JB.use("/link-token/*",Ls$);JB.use("/suggest",Ls$);JB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await FR6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});JB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await N10("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${uE({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});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)}});JB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await N10(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${uE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:UR6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});JB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await N10(`/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)}});JB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await N10(`/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:[]})}});ws$=JB});import{createHmac as NR6,timingSafeEqual as BR6}from"crypto";function zs$($,Z,Q,Y=Date.now()){if(!Z||!Q)return!1;let X,J=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let U=H.slice(0,F).trim(),N=H.slice(F+1).trim();if(U==="t")X=N;else if(U==="v1")J.push(N)}if(!X||J.length===0)return!1;let G=Number(X);if(!Number.isFinite(G)||Math.abs(Y/1000-G)>OR6)return!1;let W=NR6("sha256",Q).update(`${X}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return J.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&BR6(K,F)})}function Ps$($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=k3(Z),Y=k3(k3(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!Y)return null;return{id:MF(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:Y}}}function As$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function MF($){return typeof $==="string"?$:void 0}function k3($){return typeof $==="object"&&$!==null?$:void 0}function YI0($){return typeof $==="number"?new Date($*1000):null}function cG1($){return MF($)??MF(k3($)?.id)}function DR6($){return cG1($.subscription)??MF(k3(k3($.parent)?.subscription_details)?.subscription)}function LR6($){let Z=YI0($.current_period_end);if(Z)return Z;let Q=k3($.items)?.data;if(!Array.isArray(Q))return null;let Y=0;for(let X of Q){let J=k3(X)?.current_period_end;if(typeof J==="number"&&J>Y)Y=J}return Y>0?new Date(Y*1000):null}function uG1($,Z){let Q=YI0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function lG1($,Z){let Q=YI0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function wR6($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Y=MF(k3(Q.metadata)?.orgId);if(!Y)return{handled:!1,reason:"no orgId"};if(MF(k3(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(MF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let G=MF(Q.id);if(!G)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Y}),{handled:!1,reason:"topup session without id"};let W=Number(k3(Q.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Y,creditCents:k3(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Y,topUp:{creditCents:W,referenceId:`stripe-topup:${G}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(MF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let X=await $.getBilling(Y);if(!X)return{handled:!1,reason:"unknown org"};let J=cG1(Q.subscription);if(X.stripeSubscriptionId&&J&&X.stripeSubscriptionId!==J)return console.error("stripe webhook: refused checkout rebind",{organizationId:Y,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};if(uG1(Z,X))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y,{stripeCustomerId:cG1(Q.customer),stripeSubscriptionId:J,status:"active",lastStripeEventAt:lG1(Z,X)}),{handled:!0,organizationId:Y}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Y=MF(Q.id);if(!Y)return{handled:!1,reason:"no sub id"};let X=await $.getBillingByStripeSubscriptionId(Y);if(!X)return{handled:!1,reason:"unknown subscription"};let J=Z.type==="customer.subscription.deleted";if(!J&&uG1(Z,X))return{handled:!1,reason:"stale event"};let G=J?"canceled":As$(Q.status);return await $.updateStripeState(X.organizationId,{status:G,currentPeriodEnd:LR6(Q),...J&&{stripeSubscriptionId:null},lastStripeEventAt:lG1(Z,X)}),{handled:!0,organizationId:X.organizationId}}case"invoice.paid":{let Y=DR6(Q);if(!Y)return{handled:!1,reason:"no sub id"};let X=await $.getBillingByStripeSubscriptionId(Y);if(!X)return{handled:!1,reason:"unknown subscription"};if(uG1(Z,X))return{handled:!1,reason:"stale event"};return await $.updateStripeState(X.organizationId,{status:"active",currentPeriodEnd:YI0(Q.period_end),lastStripeEventAt:lG1(Z,X)}),{handled:!0,organizationId:X.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function jR6($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:As$(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Es$($,Z){let Q=jR6($,Z);if(!Q)return;jJ({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:Be1(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function Ts$($){let Z=new oK(Q8().db),Q=await wR6(Z,$);if(!(Q.handled&&Q.topUp))Es$($,Q);if(Q.handled&&Q.topUp)await lR$({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),Es$($,Q);if(!Q.handled&&Q.orphanSubscriptionId)try{await c6$(Q.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:Q.orphanSubscriptionId,eventId:$.id})}catch(Y){if(!(Y instanceof VJ&&(Y.status===400||Y.status===404)))throw Y}return Q}var OR6=300;var Rs$=D(()=>{cG();k4();z70();Fz();b61()});var ER6=1048576,dG1;var qs$=D(()=>{y$();HK();j$();Rs$();dG1=new e0;dG1.post("/webhook",x5({maxSize:ER6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=I0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!zs$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=Ps$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Ts$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as zR6}from"crypto";function TR6($,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 zR6(Buffer.from(X),Buffer.from(Y))}function RR6($,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 Is$($){let Z=new e0;return Z.post("/webhook",x5({maxSize:PR6,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(!TR6(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"&&!AR6.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"});let N=(await Gs0())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=RR6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await qR6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function qR6($,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 jL$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var PR6=5242880,AR6;var Ms$=D(()=>{y$();HK();kW();CZ();AR6=new Set(["check_suite","issue_comment"])});function Vs$($){let Z=new nN($.db,new FY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=gO$(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 mJ(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 ks$=D(()=>{y$();rB();Ee0();Tv()});function Ss$($){let Z=new nN($.db,new FY($.encryptionKey));async function Q(X,J){let G=zy$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await lH($.db,W.organizationId);if(!K)return;if(await uT0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",x5({maxSize:IR6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var IR6=1048576;var Cs$=D(()=>{y$();HK();rB();lT0();Cu()});import{DBOS as XI0,SchedulerMode as MR6}from"@dbos-inc/dbos-sdk";function vs$($){iG1=$}function fs$(){if(!iG1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return iG1}function bs$(){let $=fs$();return new nN($.db,new FY($.encryptionKey))}async function SR6($,Z){try{let Q=await bs$().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await lH(fs$().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new mJ(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${_s$}m"`,K=0,H;for(let F=0;F<kR6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=Py$(N,N.changelog?.histories??[],Z);for(let O of B)if(await uT0(Y,Q,O)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function CR6($,Z){let Q=new Date($.getTime()-_s$*60000),Y=await XI0.runStep(()=>bs$().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>XI0.runStep(()=>SR6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function xs$(){if(mG1)return;mG1=XI0.registerWorkflow(CR6,{name:"jiraTriggerSweepWorkflow"}),XI0.registerScheduled(mG1,{name:"jiraTriggerSweepWorkflow",crontab:VR6,mode:MR6.ExactlyOncePerIntervalWhenActive})}var VR6="7-59/10 * * * *",_s$=15,kR6=5,iG1=null,mG1=null;var ys$=D(()=>{rB();Cu();Tv();lT0()});function gs$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var hs$,_R6,vR6,us$;var ls$=D(()=>{y$();UW();bu();oE();hs$=new e0,_R6=["range","if-none-match","if-modified-since"],vR6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];hs$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(_c($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Y$(401,{message:"Authentication required"})}if(!Q)throw new Y$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new Y$(400,{message:"Missing file key"});let X=await Ys(Y,Z);if(!X)throw new Y$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&KX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Y$(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 gs$(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of _R6){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 Y$(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 Y$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of vR6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),gs$(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});us$=hs$});var B10=_((Tb)=>{var fR6=Tb&&Tb.__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]}),bR6=Tb&&Tb.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))fR6(Z,$,Q)};Object.defineProperty(Tb,"__esModule",{value:!0});bR6(ZJ(),Tb)});var ms$=_((cs$)=>{Object.defineProperty(cs$,"__esModule",{value:!0});cs$.version=void 0;cs$.version="3.4.0"});var ns$=_((VF)=>{var xR6=VF&&VF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(VF,"__esModule",{value:!0});VF.NodeTransport=VF.VERSION=void 0;VF.nodeResolveHost=cR6;var F5=B10(),yR6=z0("net"),pG1=z0("tls"),gR6=z0("path"),is$=z0("fs"),hR6=xR6(z0("dns")),uR6=ms$();VF.VERSION=uR6.version;var lR6="nats.js";class ps${socket;version;lang;yields=[];signal=(0,F5.deferred)();closedNotification=(0,F5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=lR6,this.version=VF.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,F5.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 F5.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 F5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new F5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,F5.deferred)(),Q,Y=(0,yR6.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,F5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=F5.DataBuffer.concat(...this.yields),X=(0,F5.extractProtocolMessage)(Y);if(X!=="")try{let J=F5.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,F5.deferred)();try{if($=(0,gR6.resolve)($),!(0,is$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,is$.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,F5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new F5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,F5.deferred)();try{let X=(0,pG1.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 F5.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,F5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new F5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,F5.deferred)();try{let Y=(0,pG1.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 F5.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,F5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,F5.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 pG1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,F5.render)($)}`);let Z=(0,F5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,F5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,F5.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}}VF.NodeTransport=ps$;function cR6($){let Z=(0,F5.deferred)();return hR6.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 as$=_((ss$)=>{Object.defineProperty(ss$,"__esModule",{value:!0});ss$.connect=dR6;var ts$=ns$(),os$=B10(),rs$=B10();function dR6($={}){if((0,rs$.hasWsProtocol)($))return Promise.reject(rs$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,os$.setTransportFactory)({factory:()=>{return new ts$.NodeTransport},dnsResolveFn:ts$.nodeResolveHost}),os$.NatsConnectionImpl.connect($)}});var es$=_((GB)=>{var iR6=GB&&GB.__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]}),pR6=GB&&GB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))iR6(Z,$,Q)};Object.defineProperty(GB,"__esModule",{value:!0});GB.connect=void 0;var nR6=as$();Object.defineProperty(GB,"connect",{enumerable:!0,get:function(){return nR6.connect}});pR6(B10(),GB)});function Ya$($){let Z=$?.connectFn??sR6,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 O=0;while(!J)try{Q=await Z({servers:N,timeout:rR6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=w7(oR6,tR6,O-1,2,0.5);await z$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?$a$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=Qa$.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 sR6($){return Za$.connect($)}var $a$,Za$,Qa$,tR6=100,oR6=3000,rR6=3000;var Xa$=D(()=>{u$();$a$=k(fd(),1),Za$=k(es$(),1),Qa$=k(gF(),1)});function nG1($,Z){return`${$}.${Z}`}class tG1{cache;constructor($){this.cache=Pc({ttlMs:$?.ttlMs??aR6,maxSize:$?.maxSize??eR6})}async get($,Z){return this.cache.get(nG1($,Z))??null}async set($,Z,Q){this.cache.set(nG1($,Z),Q)}async invalidate($,Z){this.cache.delete(nG1($,Z))}teardown(){this.cache.clear()}}var aR6=600000,eR6=5000;var Ja$=()=>{};function JI0($,Z){return`${$}:${Z}`}function oG1($){let Z=Pc({ttlMs:$?.ttlMs??$q6,maxSize:$?.maxSize??Zq6}),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(Ga$,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(JI0(K,H))},set(K,H,F){Z.set(JI0(K,H),F)},invalidate(K,H){Z.delete(JI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Ga$),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(JI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Ga$="studio.ai-provider-keys.invalidate",$q6=30000,Zq6=5000;var Wa$=()=>{};class rG1{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 Ka$=($)=>{let Z;return()=>Z??=$()},sG1,aG1;var Ha$=D(()=>{J6();sG1=Ka$(()=>Z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),aG1=Ka$(()=>Z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Kq6($=Na$){return{name:tH,subjects:[`${d11}.>`],storage:NK.StorageType.File,max_age:Xq6,max_bytes:Gq6,max_msgs_per_subject:Wq6,discard:NK.DiscardPolicy.Old,retention:NK.RetentionPolicy.Limits,duplicate_window:Jq6,num_replicas:$}}class Ba${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 Fa$($){let Z=Ua$.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function Nq6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Yq6().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 Bq6($,Z){return $.info?.cluster?Z:1}function Oq6($){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 eG1{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=Kq6(X);try{await Y.streams.info(tH),await Y.streams.update(tH,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(tH,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(tH),await Y.streams.add(J);else throw G}},Q=await U8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await NK.jetstreamManager($),X=Bq6($,Na$);try{await Z(Y,X)}catch(J){if(X<=1||!Oq6(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:pu});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=Nq6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=kz$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=i11(H,{runId:Z}),N=performance.now()-F;sG1().record(N),aG1().add(1,{"org.id":Y??"unknown"}),Uq6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?Fa$(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),Fq6)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 U8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Fa$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:pu}),!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=i11(Z,{runId:$,dedup:Q});sG1().record(performance.now()-X),aG1().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=Vz$({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"?NK.DeliverPolicy.New:NK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=SL($),W;try{W=await U8(async()=>{return(await Y.consumers.get(tH,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:pu})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=Rz0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(zz0()).pipeThrough(Pz0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){O(),L.close();return}let E=j;if(E.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(tH,{filter:SL($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var NK,Ua$,Qq6=($)=>{let Z;return()=>Z??=$()},Yq6,Xq6=86400000000000,Jq6=120000000000,Gq6=4294967296,Na$,Wq6=500000,Hq6,Fq6,Uq6;var Oa$=D(()=>{u$();p11();qz0();Az0();J6();Ha$();NK=k(gF(),1),Ua$=k(fd(),1),Yq6=Qq6(()=>Z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),Na$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Hq6=process.env.STREAM_ENCODE_TRACE==="1",Fq6=process.env.DECOPILOT_STREAM_TRACE==="1";Uq6=Hq6?new Ba$:null});function GI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,_K(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 Da$=D(()=>{T8()});class $31{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 Dq6($,Z){let Q=$.startsWith("thread:")?SW($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function La$($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await VH($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await ah($,{threadId:X,runBranch:G?.branch}),K=Dq6(W,await yw0($,X)),H=await jo($,Q,ft0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await G3(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 wa$=D(()=>{qZ();$3();CZ()});async function ja$($,Z,Q){let Y=Z.organizationId;if(!SX(Z))return!1;if(!kv(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=BH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await C6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),H8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var Ea$=D(()=>{E4();bQ();ku();uW();G9()});function Aq6($){return $ instanceof TY}function Tq6($,Z){return Z-$>=zq6}class Z31{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??Lq6;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??jq6,Q=this.options.itemIntervalMs??wq6,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)}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()-Be0),q01);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()-Pq6));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 A01(this.taskBoard,X,Y),await T01(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}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!==A$.progress||G.assigneeId!==t$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await lW(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),Aq6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+Eq6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==A$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),H8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!Tq6(uU(Q,Z.reviewCycleStartedAt),Date.now()))return;await hH($,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(!SX(Y))return!1;let X=Y.assigneeId===t$,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 La$(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 _u(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 ja$(G,Y,W))return!0;if(await EP$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!j01(W))return!1;return await SE0(G,Y,{previewMatchesHead:E01(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await AL($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Lq6=60000,wq6=300000,jq6=50,Eq6=60000,zq6=900000,Pq6=120000;var za$=D(()=>{E4();G01();wa$();uH();Ts();uW();Ea$();G9();oG();I01();CZ();er();Su()});import{readdir as Rq6,rm as WI0}from"fs/promises";import{join as KI0}from"path";async function HI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-qq6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Rb($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await Pa$($,X,Z);else if(!X.startsWith(".")){let J=KI0($,X),G=await Rb(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await Pa$(J,K,Z)}if((await Rb(J)).length===0)await WI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function Pa$($,Z,Q){let Y=0,X=KI0($,Z),J=await Rb(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=KI0(X,W),H=await Rb(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=KI0(K,U);await WI0(B,{recursive:!0,force:!0}),Y++}}if((await Rb(K)).length===0)await WI0(K,{recursive:!0,force:!0})}if((await Rb(X)).length===0)await WI0(X,{recursive:!0,force:!0});return Y}async function Rb($){try{return(await Rq6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var qq6=30;var Q31=()=>{};import{DBOS as Y31,SchedulerMode as Iq6}from"@dbos-inc/dbos-sdk";async function Vq6(){let $=[S3(),qb(),CF()],Z=0;for(let Q of $)try{Z+=await HI0(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 kq6($,Z){await Y31.runStep(()=>Vq6(),{name:"monitoringRetention"})}function Ta$(){if(Aa$)return;Aa$=!0;let $=Y31.registerWorkflow(kq6,{name:"monitoringRetentionWorkflow"});Y31.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Mq6,mode:Iq6.ExactlyOncePerIntervalWhenActive})}var Mq6="23 4 * * *",Aa$=!1;var Ra$=D(()=>{BG();Q31()});function qa$($){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 u7.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await $z($.db,Z,Y.role);return X.boundAuth=iY1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new _j(Q,void 0,X.boundAuth,Y.role,"self"),TL(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var Ia$=D(()=>{DU();KH()});function Sq6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Cq6(){return{services:Sq6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function vq6(){for(let $ of _q6)$()}function Ma$($){let Z=[...X31.logs,$];X31={...X31,logs:Z.length>500?Z.slice(-500):Z},vq6()}function J31(){return fq6}var X31,_q6,fq6=!1;var G31=D(()=>{X31=Cq6(),_q6=new Set});import{EventEmitter as bq6}from"events";var W31;var Va$=D(()=>{G31();W31=new bq6;W31.on("request",($)=>{Ma$($)})});function ka$(){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=Fd(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>Fd(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${z5.tool}${B}${z5.dim}(${w})${z5.reset}`}else if(N.method)J=`${z5.dim}${Fd(N.method)}${z5.reset}`}}catch{}}let W=Fd(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${z5.mcp}${Fd(F.slice(0,12))}\u2026${z5.reset}`}else if(X==="/mcp")W=`${z5.mcp}/mcp${z5.reset}`;else if(X==="/mcp/registry")W=`${z5.mcp}/mcp/registry${z5.reset}`;let K=yq6(Y),H=G?"\u25C0":"\u2190";if(!J31())console.log(`${z5.dim}${H}${z5.reset} ${K}${Y}${z5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=xq6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!J31())console.log(`${z5.dim}${O}${z5.reset} ${K}${Y}${z5.reset} ${W}${J?` ${J}`:""} ${N}${U}${z5.reset} ${z5.duration}${B}${z5.reset}`);W31.emit("request",{method:Y,path:Fd(X),status:U,duration:F,timestamp:new Date})}}}var z5,xq6=($)=>{if($>=500)return z5.serverError;if($>=400)return z5.clientError;if($>=300)return z5.redirect;return z5.ok},yq6=($)=>{return z5[$]||z5.reset},Fd=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Sa$=D(()=>{G31();Va$();z5={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 fa$}from"crypto";import{mkdir as gq6,readdir as hq6,rm as Ca$,stat as ba$}from"fs/promises";import{join as H31,relative as uq6}from"path";import{z as V$}from"zod";function ya$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return H31(lq6,Z)}function ga$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function K31($,Z){let Q=ya$($),Y=ga$(Z);return H31(Q,Y)}function cq6($,Z,Q,Y){let X=I0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return fa$("sha256",X).update(J).digest("hex")}function va$($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=cq6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${ga$(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function ha$($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${fa$("md5","etag").update(Y).digest("hex")}"`}async function ua$($,Z,Q,Y,X){try{let J=await hq6($,{withFileTypes:!0});for(let G of J){let W=H31($,G.name),H=uq6(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 ua$(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 ba$(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:ha$(W,F.mtime,F.size)})}catch{}}}}catch{}}function la$($,Z){let Y=p($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=ya$(Y);await gq6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await ua$(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(X)=>{let J=X,G=K31(Y,J.key),W=await ba$(G);return{contentType:xX1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:ha$(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??_a$;return{url:va$(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:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??_a$;return{url:va$(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(X)=>{let J=X,G=K31(Y,J.key);try{return await Ca$(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=K31(Y,K);try{await Ca$(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function F31($,Z,Q){let Y=la$(Z,Q),X=new uK({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:I5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.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 fY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),O3(X,J,$,"mcp:dev-assets")}async function ca$($,Z,Q,Y){let J=la$(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 lq6="./data/assets",_a$=3600,xa$,da$;var ma$=D(()=>{j$();su();y$();Jp();Yf();LQ();Zq0();xa$=new e0;xa$.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return F31($.req.raw,Z,Y)});da$=xa$});var ia$={};T4(ia$,{mountDevRoutes:()=>dq6});function dq6($,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 F31(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 ca$(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",da$);let Q=new e0;Q.use("*",FK({mountPath:"/api/dev-assets"})),Q.route("/",$q0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var pa$=D(()=>{y$();kX1();Zq0();ma$()});import{sql as mq6}from"kysely";import{randomUUID as na$}from"crypto";import{z as iq6}from"zod";async function nq6($){let Z=new Date().toISOString(),Q=na$(),Y=A8.SELF($.organizationId),X="registry.publish_request.created",J={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:na$(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await mq6`SELECT
|
|
2996
2996
|
pg_notify('studio_events', ${Q}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,cB as ee,cx as me}from"./index-y6Z5iMfg.js";import{S as ye,R as be}from"./Sector-CD1ykt0B.js";import{ap as x,e as w,aL as re,D as Oe,_ as ge,aM as Pe,$ as de,aN as m,a0 as y,L as q,ax as he}from"./AreaChart-BRLjJaJt.js";import{S as je,s as we,c as Se,d as Ee,e as xe,f as _e,g as Te,h as te}from"./chart-BanyRqbL.js";var De=["type","size","sizeType"];function _(){return _=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var a in t)({}).hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},_.apply(null,arguments)}function k(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,a)}return t}function B(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?k(Object(t),!0).forEach(function(a){$e(e,a,t[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))})}return e}function $e(e,r,t){return(r=Re(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Re(e){var r=Ae(e,"string");return typeof r=="symbol"?r:r+""}function Ae(e,r){if(typeof e!="object"||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var a=t.call(e,r);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function Le(e,r){if(e==null)return{};var t,a,n=Ne(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)===-1&&{}.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}function Ne(e,r){if(e==null)return{};var t={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(r.indexOf(a)!==-1)continue;t[a]=e[a]}return t}var ae={symbolCircle:te,symbolCross:Te,symbolDiamond:_e,symbolSquare:xe,symbolStar:Ee,symbolTriangle:Se,symbolWye:we},Ie=Math.PI/180,Ce=e=>{var r="symbol".concat(re(e));return ae[r]||te},We=(e,r,t)=>{if(r==="area")return e;switch(t){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var a=18*Ie;return 1.25*e*e*(Math.tan(a)-Math.tan(a*2)*Math.tan(a)**2)}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Me=(e,r)=>{ae["symbol".concat(re(e))]=r},ne=e=>{var{type:r="circle",size:t=64,sizeType:a="area"}=e,n=Le(e,De),i=B(B({},n),{},{type:r,size:t,sizeType:a}),s="circle";typeof r=="string"&&(s=r);var f=()=>{var u=Ce(s),l=je().type(u).size(We(t,a,s)),P=l();if(P!==null)return P},{className:p,cx:v,cy:O}=i,g=x(i);return w(v)&&w(O)&&w(t)?o.createElement("path",_({},g,{className:ee("recharts-symbols",p),transform:"translate(".concat(v,", ").concat(O,")"),d:f()})):null};ne.registerSymbol=Me;var S={},F;function qe(){return F||(F=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function r(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){const n=t[Symbol.toStringTag];return n==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${n}]`}let a=t;for(;Object.getPrototypeOf(a)!==null;)a=Object.getPrototypeOf(a);return Object.getPrototypeOf(t)===a}e.isPlainObject=r})(S)),S}var E,K;function ke(){return K||(K=1,E=qe().isPlainObject),E}var Be=ke();const Fe=me(Be);var U,H,V,X,Y;function z(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,a)}return t}function G(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?z(Object(t),!0).forEach(function(a){Ke(e,a,t[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):z(Object(t)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))})}return e}function Ke(e,r,t){return(r=Ue(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Ue(e){var r=He(e,"string");return typeof r=="symbol"?r:r+""}function He(e,r){if(typeof e!="object"||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var a=t.call(e,r);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var a in t)({}).hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},d.apply(null,arguments)}function b(e,r){return r||(r=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(r)}}))}var J=(e,r,t,a,n)=>{var i=t-a,s;return s=m(U||(U=b(["M ",",",""])),e,r),s+=m(H||(H=b(["L ",",",""])),e+t,r),s+=m(V||(V=b(["L ",",",""])),e+t-i/2,r+n),s+=m(X||(X=b(["L ",",",""])),e+t-i/2-a,r+n),s+=m(Y||(Y=b(["L ",","," Z"])),e,r),s},Ve={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},Xe=e=>{var r=Oe(e,Ve),{x:t,y:a,upperWidth:n,lowerWidth:i,height:s,className:f}=r,{animationEasing:p,animationDuration:v,animationBegin:O,isUpdateAnimationActive:g}=r,u=o.useRef(null),[l,P]=o.useState(-1),T=o.useRef(n),D=o.useRef(i),$=o.useRef(s),R=o.useRef(t),A=o.useRef(a),L=ge(e,"trapezoid-");if(o.useEffect(()=>{if(u.current&&u.current.getTotalLength)try{var c=u.current.getTotalLength();c&&P(c)}catch{}},[]),t!==+t||a!==+a||n!==+n||i!==+i||s!==+s||n===0&&i===0||s===0)return null;var N=ee("recharts-trapezoid",f);if(!g)return o.createElement("g",null,o.createElement("path",d({},x(r),{className:N,d:J(t,a,n,i,s)})));var ie=T.current,oe=D.current,se=$.current,ce=R.current,ue=A.current,le="0px ".concat(l===-1?1:l,"px"),pe="".concat(l,"px ").concat(l,"px"),fe=Pe(["strokeDasharray"],v,p);return o.createElement(de,{animationId:L,key:L,canBegin:l>0,duration:v,easing:p,isActive:g,begin:O},c=>{var j=y(ie,n,c),I=y(oe,i,c),C=y(se,s,c),W=y(ce,t,c),M=y(ue,a,c);u.current&&(T.current=j,D.current=I,$.current=C,R.current=W,A.current=M);var ve=c>0?{transition:fe,strokeDasharray:pe}:{strokeDasharray:le};return o.createElement("path",d({},x(r),{className:N,d:J(W,M,j,I,C),ref:u,style:G(G({},ve),r.style)}))})},Ye=["option","shapeType","activeClassName","inActiveClassName"];function ze(e,r){if(e==null)return{};var t,a,n=Ge(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)===-1&&{}.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}function Ge(e,r){if(e==null)return{};var t={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(r.indexOf(a)!==-1)continue;t[a]=e[a]}return t}function Z(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,a)}return t}function h(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Z(Object(t),!0).forEach(function(a){Je(e,a,t[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Z(Object(t)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))})}return e}function Je(e,r,t){return(r=Ze(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Ze(e){var r=Qe(e,"string");return typeof r=="symbol"?r:r+""}function Qe(e,r){if(typeof e!="object"||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var a=t.call(e,r);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function er(e,r){return h(h({},r),e)}function rr(e,r){return e==="symbols"}function Q(e){var{shapeType:r,elementProps:t}=e;switch(r){case"rectangle":return o.createElement(be,t);case"trapezoid":return o.createElement(Xe,t);case"sector":return o.createElement(ye,t);case"symbols":if(rr(r))return o.createElement(ne,t);break;case"curve":return o.createElement(he,t);default:return null}}function tr(e){return o.isValidElement(e)?e.props:e}function fr(e){var{option:r,shapeType:t,activeClassName:a="recharts-active-shape",inActiveClassName:n="recharts-shape"}=e,i=ze(e,Ye),s;if(o.isValidElement(r))s=o.cloneElement(r,h(h({},i),tr(r)));else if(typeof r=="function")s=r(i,i.index);else if(Fe(r)&&typeof r!="boolean"){var f=er(r,i);s=o.createElement(Q,{shapeType:t,elementProps:f})}else{var p=i;s=o.createElement(Q,{shapeType:t,elementProps:p})}return i.isActive?o.createElement(q,{className:a},s):o.createElement(q,{className:n},s)}var ar=["children"];function nr(e,r){if(e==null)return{};var t,a,n=ir(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)===-1&&{}.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}function ir(e,r){if(e==null)return{};var t={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(r.indexOf(a)!==-1)continue;t[a]=e[a]}return t}var or={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},sr=o.createContext(or);function vr(e){var{children:r}=e,t=nr(e,ar);return o.createElement(sr.Provider,{value:t},r)}export{fr as S,vr as a};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import{r as y,cB as ge}from"./index-y6Z5iMfg.js";import{D as me,_ as Me,ap as $,aM as Ee,$ as Te,aN as g,a0 as C,aO as M,g as Le,a6 as be,aq as P,aP as U}from"./AreaChart-BRLjJaJt.js";var Se=["radius"],_e=["radius"],V,q,J,F,G,Q,R,w,ee,re;function te(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);e&&(a=a.filter(function(l){return Object.getOwnPropertyDescriptor(r,l).enumerable})),t.push.apply(t,a)}return t}function ae(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?te(Object(t),!0).forEach(function(a){De(r,a,t[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):te(Object(t)).forEach(function(a){Object.defineProperty(r,a,Object.getOwnPropertyDescriptor(t,a))})}return r}function De(r,e,t){return(e=Ie(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Ie(r){var e=Ce(r,"string");return typeof e=="symbol"?e:e+""}function Ce(r,e){if(typeof r!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var a=t.call(r,e);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function W(){return W=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var a in t)({}).hasOwnProperty.call(t,a)&&(r[a]=t[a])}return r},W.apply(null,arguments)}function ne(r,e){if(r==null)return{};var t,a,l=Ne(r,e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);for(a=0;a<n.length;a++)t=n[a],e.indexOf(t)===-1&&{}.propertyIsEnumerable.call(r,t)&&(l[t]=r[t])}return l}function Ne(r,e){if(r==null)return{};var t={};for(var a in r)if({}.hasOwnProperty.call(r,a)){if(e.indexOf(a)!==-1)continue;t[a]=r[a]}return t}function h(r,e){return e||(e=r.slice(0)),Object.freeze(Object.defineProperties(r,{raw:{value:Object.freeze(e)}}))}var ce=(r,e,t,a,l)=>{var n=M(t),p=M(a),u=Math.min(Math.abs(n)/2,Math.abs(p)/2),o=p>=0?1:-1,c=n>=0?1:-1,s=p>=0&&n>=0||p<0&&n<0?1:0,v;if(u>0&&Array.isArray(l)){for(var i=[0,0,0,0],m=0,O=4;m<O;m++){var b,A=(b=l[m])!==null&&b!==void 0?b:0;i[m]=A>u?u:A}v=g(V||(V=h(["M",",",""])),r,e+o*i[0]),i[0]>0&&(v+=g(q||(q=h(["A ",",",",0,0,",",",",",""])),i[0],i[0],s,r+c*i[0],e)),v+=g(J||(J=h(["L ",",",""])),r+t-c*i[1],e),i[1]>0&&(v+=g(F||(F=h(["A ",",",",0,0,",`,
|
|
2
|
-
`,",",""])),i[1],i[1],s,r+t,e+o*i[1])),v+=g(G||(G=h(["L ",",",""])),r+t,e+a-o*i[2]),i[2]>0&&(v+=g(Q||(Q=h(["A ",",",",0,0,",`,
|
|
3
|
-
`,",",""])),i[2],i[2],s,r+t-c*i[2],e+a)),v+=g(R||(R=h(["L ",",",""])),r+c*i[3],e+a),i[3]>0&&(v+=g(w||(w=h(["A ",",",",0,0,",`,
|
|
4
|
-
`,",",""])),i[3],i[3],s,r,e+a-o*i[3])),v+="Z"}else if(u>0&&l===+l&&l>0){var f=Math.min(u,l);v=g(ee||(ee=h(["M ",",",`
|
|
5
|
-
A `,",",",0,0,",",",",",`
|
|
6
|
-
L `,",",`
|
|
7
|
-
A `,",",",0,0,",",",",",`
|
|
8
|
-
L `,",",`
|
|
9
|
-
A `,",",",0,0,",",",",",`
|
|
10
|
-
L `,",",`
|
|
11
|
-
A `,",",",0,0,",",",","," Z"])),r,e+o*f,f,f,s,r+c*f,e,r+t-c*f,e,f,f,s,r+t,e+o*f,r+t,e+a-o*f,f,f,s,r+t-c*f,e+a,r+c*f,e+a,f,f,s,r,e+a-o*f)}else v=g(re||(re=h(["M ",","," h "," v "," h "," Z"])),r,e,t,a,-t);return v},oe={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},He=r=>{var e=me(r,oe),t=y.useRef(null),[a,l]=y.useState(-1);y.useEffect(()=>{if(t.current&&t.current.getTotalLength)try{var j=t.current.getTotalLength();j&&l(j)}catch{}},[]);var{x:n,y:p,width:u,height:o,radius:c,className:s}=e,{animationEasing:v,animationDuration:i,animationBegin:m,isAnimationActive:O,isUpdateAnimationActive:b}=e,A=y.useRef(u),f=y.useRef(o),d=y.useRef(n),E=y.useRef(p),S=y.useMemo(()=>({x:n,y:p,width:u,height:o,radius:c}),[n,p,u,o,c]),_=Me(S,"rectangle-");if(n!==+n||p!==+p||u!==+u||o!==+o||u===0||o===0)return null;var T=ge("recharts-rectangle",s);if(!b){var L=$(e),{radius:z}=L,D=ne(L,Se);return y.createElement("path",W({},D,{x:M(n),y:M(p),width:M(u),height:M(o),radius:typeof c=="number"?c:void 0,className:T,d:ce(n,p,u,o,c)}))}var Oe=A.current,he=f.current,je=d.current,Ae=E.current,de="0px ".concat(a===-1?1:a,"px"),B="".concat(a,"px ").concat(a,"px"),Pe=Ee(["strokeDasharray"],i,typeof v=="string"?v:oe.animationEasing);return y.createElement(Te,{animationId:_,key:_,canBegin:a>0,duration:i,easing:v,isActive:b,begin:m},j=>{var Z=C(Oe,u,j),H=C(he,o,j),X=C(je,n,j),Y=C(Ae,p,j);t.current&&(A.current=Z,f.current=H,d.current=X,E.current=Y);var I;O?j>0?I={transition:Pe,strokeDasharray:B}:I={strokeDasharray:de}:I={strokeDasharray:B};var K=$(e),{radius:ke}=K,xe=ne(K,_e);return y.createElement("path",W({},xe,{radius:typeof c=="number"?c:void 0,className:T,d:ce(X,Y,Z,H,c),ref:t,style:ae(ae({},I),e.style)}))})},ie,le,se,ue,ve,fe,pe;function k(){return k=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var a in t)({}).hasOwnProperty.call(t,a)&&(r[a]=t[a])}return r},k.apply(null,arguments)}function x(r,e){return e||(e=r.slice(0)),Object.freeze(Object.defineProperties(r,{raw:{value:Object.freeze(e)}}))}var We=(r,e)=>{var t=be(e-r),a=Math.min(Math.abs(e-r),359.999);return t*a},N=r=>{var{cx:e,cy:t,radius:a,angle:l,sign:n,isExternal:p,cornerRadius:u,cornerIsExternal:o}=r,c=u*(p?1:-1)+a,s=Math.asin(u/c)/U,v=o?l:l+n*s,i=P(e,t,c,v),m=P(e,t,a,v),O=o?l-n*s:l,b=P(e,t,c*Math.cos(s*U),O);return{center:i,circleTangency:m,lineTangency:b,theta:s}},ye=r=>{var{cx:e,cy:t,innerRadius:a,outerRadius:l,startAngle:n,endAngle:p}=r,u=We(n,p),o=n+u,c=P(e,t,l,n),s=P(e,t,l,o),v=g(ie||(ie=x(["M ",",",`
|
|
12
|
-
A `,",",`,0,
|
|
13
|
-
`,",",`,
|
|
14
|
-
`,",",`
|
|
15
|
-
`])),c.x,c.y,l,l,+(Math.abs(u)>180),+(n>o),s.x,s.y);if(a>0){var i=P(e,t,a,n),m=P(e,t,a,o);v+=g(le||(le=x(["L ",",",`
|
|
16
|
-
A `,",",`,0,
|
|
17
|
-
`,",",`,
|
|
18
|
-
`,","," Z"])),m.x,m.y,a,a,+(Math.abs(u)>180),+(n<=o),i.x,i.y)}else v+=g(se||(se=x(["L ",","," Z"])),e,t);return v},Ze=r=>{var{cx:e,cy:t,innerRadius:a,outerRadius:l,cornerRadius:n,forceCornerRadius:p,cornerIsExternal:u,startAngle:o,endAngle:c}=r,s=be(c-o),{circleTangency:v,lineTangency:i,theta:m}=N({cx:e,cy:t,radius:l,angle:o,sign:s,cornerRadius:n,cornerIsExternal:u}),{circleTangency:O,lineTangency:b,theta:A}=N({cx:e,cy:t,radius:l,angle:c,sign:-s,cornerRadius:n,cornerIsExternal:u}),f=u?Math.abs(o-c):Math.abs(o-c)-m-A;if(f<0)return p?g(ue||(ue=x(["M ",",",`
|
|
19
|
-
a`,",",",0,0,1,",`,0
|
|
20
|
-
a`,",",",0,0,1,",`,0
|
|
21
|
-
`])),i.x,i.y,n,n,n*2,n,n,-n*2):ye({cx:e,cy:t,innerRadius:a,outerRadius:l,startAngle:o,endAngle:c});var d=g(ve||(ve=x(["M ",",",`
|
|
22
|
-
A`,",",",0,0,",",",",",`
|
|
23
|
-
A`,",",",0,",",",",",",",`
|
|
24
|
-
A`,",",",0,0,",",",",",`
|
|
25
|
-
`])),i.x,i.y,n,n,+(s<0),v.x,v.y,l,l,+(f>180),+(s<0),O.x,O.y,n,n,+(s<0),b.x,b.y);if(a>0){var{circleTangency:E,lineTangency:S,theta:_}=N({cx:e,cy:t,radius:a,angle:o,sign:s,isExternal:!0,cornerRadius:n,cornerIsExternal:u}),{circleTangency:T,lineTangency:L,theta:z}=N({cx:e,cy:t,radius:a,angle:c,sign:-s,isExternal:!0,cornerRadius:n,cornerIsExternal:u}),D=u?Math.abs(o-c):Math.abs(o-c)-_-z;if(D<0&&n===0)return"".concat(d,"L").concat(e,",").concat(t,"Z");d+=g(fe||(fe=x(["L",",",`
|
|
26
|
-
A`,",",",0,0,",",",",",`
|
|
27
|
-
A`,",",",0,",",",",",",",`
|
|
28
|
-
A`,",",",0,0,",",",",","Z"])),L.x,L.y,n,n,+(s<0),T.x,T.y,a,a,+(D>180),+(s>0),E.x,E.y,n,n,+(s<0),S.x,S.y)}else d+=g(pe||(pe=x(["L",",","Z"])),e,t);return d},$e={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Xe=r=>{var e=me(r,$e),{cx:t,cy:a,innerRadius:l,outerRadius:n,cornerRadius:p,forceCornerRadius:u,cornerIsExternal:o,startAngle:c,endAngle:s,className:v}=e;if(n<l||c===s)return null;var i=ge("recharts-sector",v),m=n-l,O=Le(p,m,0,!0),b;return O>0&&Math.abs(c-s)<360?b=Ze({cx:t,cy:a,innerRadius:l,outerRadius:n,cornerRadius:Math.min(O,m/2),forceCornerRadius:u,cornerIsExternal:o,startAngle:c,endAngle:s}):b=ye({cx:t,cy:a,innerRadius:l,outerRadius:n,startAngle:c,endAngle:s}),y.createElement("path",k({},$(e),{className:i,d:b}))};export{He as R,Xe as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t}from"./index-y6Z5iMfg.js";const i=({size:e=24,color:o="currentColor",...r})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:o,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r},t.createElement("path",{d:"M18.57 20a2.286 2.286 0 0 0 2.287-2.286v-4.571L22 12l-1.143-1.143V6.286A2.285 2.285 0 0 0 18.57 4M5.429 4a2.285 2.285 0 0 0-2.286 2.286v4.571L2 12l1.143 1.143v4.571A2.285 2.285 0 0 0 5.429 20"}));i.displayName="Brackets";const n=({size:e=24,color:o="currentColor",...r})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:o,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r},t.createElement("path",{d:"M14 11H8m2 4H8m8-8H8m12-.2v10.4c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C17.72 22 16.88 22 15.2 22H8.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C4 19.72 4 18.88 4 17.2V6.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C6.28 2 7.12 2 8.8 2h6.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C20 4.28 20 5.12 20 6.8Z"}));n.displayName="File02";const a=({size:e=24,color:o="currentColor",...r})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:o,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r},t.createElement("path",{d:"M14 2.27V6.4c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437c.214.11.494.11 1.054.11h4.13M14 17.5l2.5-2.5-2.5-2.5m-4 0L7.5 15l2.5 2.5m10-7.512V17.2c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C17.72 22 16.88 22 15.2 22H8.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C4 19.72 4 18.88 4 17.2V6.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C6.28 2 7.12 2 8.8 2h3.212c.733 0 1.1 0 1.446.083.306.073.598.195.867.36.303.185.562.444 1.08.963l3.19 3.188c.518.519.777.778.963 1.081a3 3 0 0 1 .36.867c.082.346.082.712.082 1.446Z"}));a.displayName="FileCode01";const s=({size:e=24,color:o="currentColor",...r})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:o,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r},t.createElement("path",{d:"m21 21-4.35-4.35M11 8v6m-3-3h6m5 0a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z"}));s.displayName="ZoomIn";const c=({size:e=24,color:o="currentColor",...r})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:o,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r},t.createElement("path",{d:"m21 21-4.35-4.35M8 11h6m5 0a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z"}));c.displayName="ZoomOut";export{a,c as b,n as i,s as n,i as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as r,bA as f,i as x}from"./index-y6Z5iMfg.js";import{C as p}from"./capability-load-error-BoR9RbMs.js";function d(a){const e=m.c(6),{granted:n,loading:l,error:c,area:o,children:i}=a;if(l){let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsx(f,{}),e[0]=t):t=e[0],t}if(c){let t;return e[1]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsx(p,{}),e[1]=t):t=e[1],t}if(!n){let t;return e[2]!==o?(t=r.jsx(x,{area:o}),e[2]=o,e[3]=t):t=e[3],t}let s;return e[4]!==i?(s=r.jsx(r.Fragment,{children:i}),e[4]=i,e[5]=s):s=e[5],s}export{d as A};
|