decocms 4.265.1 → 4.265.2
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-K4c3_kh1.js → AlertCircle-DWkBM4W1.js} +1 -1
- package/dist/client/assets/{AreaChart-GvwUbv3G.js → AreaChart-B9rZS49W.js} +1 -1
- package/dist/client/assets/{ArrowLeft-B9bNef-D.js → ArrowLeft-kPGmKCUt.js} +1 -1
- package/dist/client/assets/{ArrowUp-BmRRqDOE.js → ArrowUp-DEz7MqIN.js} +1 -1
- package/dist/client/assets/{Check-BdC7GYqE.js → Check-Dyyq0MkO.js} +1 -1
- package/dist/client/assets/{CheckCircle-CHsRWcPI.js → CheckCircle-D8MMCsFR.js} +1 -1
- package/dist/client/assets/{ChevronDown-tUIVQVex.js → ChevronDown-5McvRoPd.js} +1 -1
- package/dist/client/assets/{ChevronRight-BRITm73k.js → ChevronRight-rIqb5Xmb.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-COZAcJ8d.js → ChevronSelectorVertical-Cycfgqa8.js} +1 -1
- package/dist/client/assets/{ChevronUp-CUXreJQo.js → ChevronUp-BWwUg0o3.js} +1 -1
- package/dist/client/assets/{Copy01-CMPMXJL9.js → Copy01-Di7pgnur.js} +1 -1
- package/dist/client/assets/{CreditCard01-D9ghgc9X.js → CreditCard01-BvRFDLNQ.js} +1 -1
- package/dist/client/assets/{DotsVertical-Dr4BCfRr.js → DotsVertical-BLofKqkf.js} +1 -1
- package/dist/client/assets/{Download01-DvVZVTdr.js → Download01-BBDPWpN4.js} +1 -1
- package/dist/client/assets/{Eye-CCjNL7hF.js → Eye-BCZo_fMO.js} +1 -1
- package/dist/client/assets/{FilterLines-BgqP2TkV.js → FilterLines-Bo9Cr5bv.js} +1 -1
- package/dist/client/assets/{Globe01-DHYovNU0.js → Globe01-Cnj76UA8.js} +1 -1
- package/dist/client/assets/{Globe04-C69s6rZF.js → Globe04-DZxKjkxr.js} +1 -1
- package/dist/client/assets/{HardDrive-hcMIFk7s.js → HardDrive-DxCB1Yf_.js} +1 -1
- package/dist/client/assets/{Key01-DgQJKQik.js → Key01-DUclaNsG.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CL-3s53X.js → LinkExternal01-tyiILTk1.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-h5WHtvDx.js → LockUnlocked01-Dezz1R0c.js} +1 -1
- package/dist/client/assets/{LogOut01-Cj6PnKK9.js → LogOut01-IM1aLnGj.js} +1 -1
- package/dist/client/assets/{Monitor01-CnPayQYt.js → Monitor01-DShhwu73.js} +1 -1
- package/dist/client/assets/{Palette-DpOxLVys.js → Palette-BlKiYvHp.js} +1 -1
- package/dist/client/assets/{Play-CkgTg2xm.js → Play-CZFTOBUT.js} +1 -1
- package/dist/client/assets/{Plus-AdF7-pKo.js → Plus-CKYDBS5x.js} +1 -1
- package/dist/client/assets/{SearchLg-CqC0Su67.js → SearchLg-o-4llVRP.js} +1 -1
- package/dist/client/assets/{SearchMd-wLxvQ56U.js → SearchMd-BIWWOHoo.js} +1 -1
- package/dist/client/assets/{Settings02-CdgxCBQu.js → Settings02-DWX5KmV_.js} +1 -1
- package/dist/client/assets/{Share07-H5r7YUpC.js → Share07-BOmyofyA.js} +1 -1
- package/dist/client/assets/{Shield01-DTf8tU74.js → Shield01-ppjHnXDa.js} +1 -1
- package/dist/client/assets/{Stars01-aApBbyPI.js → Stars01-S-mCZf8g.js} +1 -1
- package/dist/client/assets/{Stars02-D0C68mPE.js → Stars02-Dpalz4UT.js} +1 -1
- package/dist/client/assets/{Sun-C-zGcOmX.js → Sun-B2PALxw-.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BFFDVgiR.js → SwitchHorizontal01-DYj2iKEz.js} +1 -1
- package/dist/client/assets/{Tool01-DH0zTmsa.js → Tool01-DWIhn5we.js} +1 -1
- package/dist/client/assets/{Tool02-DEkErxGT.js → Tool02-DLAQ8fNN.js} +1 -1
- package/dist/client/assets/{Trash01-Ch5nSdy8.js → Trash01-Bt9AF6j2.js} +1 -1
- package/dist/client/assets/{TrendUp01-D-nLqrZq.js → TrendUp01-DDi-KWmW.js} +1 -1
- package/dist/client/assets/{Upload01-BkgC8Gl1.js → Upload01-BNBS6avT.js} +1 -1
- package/dist/client/assets/{User01-CMITbClV.js → User01-BAAnqLJj.js} +1 -1
- package/dist/client/assets/{UserSquare-C0l_OlK5.js → UserSquare-XQJsaTkJ.js} +1 -1
- package/dist/client/assets/{Users01-B0tVmMvh.js → Users01-BHPZ0ijC.js} +1 -1
- package/dist/client/assets/{Users03-EMQg0CSB.js → Users03-HglHxKWs.js} +1 -1
- package/dist/client/assets/{XCircle-BSAc997L.js → XCircle-0kXBlFcB.js} +1 -1
- package/dist/client/assets/{XClose-BuS4I8B8.js → XClose-DfEkXfnz.js} +1 -1
- package/dist/client/assets/{YAxis-DgOEAsg7.js → YAxis-CkEOnO_r.js} +1 -1
- package/dist/client/assets/{Zap-D1-k2tHP.js → Zap-CwQTLYPu.js} +1 -1
- package/dist/client/assets/{ZapSquare-DSMAA7Lt.js → ZapSquare-DpgV9QK8.js} +1 -1
- package/dist/client/assets/{access-gate-jiwTs9Qe.js → access-gate-CDiaFvIq.js} +1 -1
- package/dist/client/assets/{agent-icon-BBFaaEpE.js → agent-icon-CG42Gw2C.js} +1 -1
- package/dist/client/assets/{agents-list-DowGAYGU.js → agents-list-B5D4IV1G.js} +1 -1
- package/dist/client/assets/{ai-providers-6EEw9c5z.js → ai-providers-Vn0-sItQ.js} +1 -1
- package/dist/client/assets/{alert-BSh7cBdY.js → alert-BwOcF9Nt.js} +1 -1
- package/dist/client/assets/{alert-dialog-CRT2wJrX.js → alert-dialog-CmnV-5bI.js} +1 -1
- package/dist/client/assets/{api-keys-D1-2H1xA.js → api-keys-DLoV1Mhy.js} +1 -1
- package/dist/client/assets/{app-editor-BRuT_J2C.js → app-editor-CdRS5qMy.js} +1 -1
- package/dist/client/assets/{auth-BVUGku9L.js → auth-CZoQxNuK.js} +1 -1
- package/dist/client/assets/{auth-catchall-COXPVSuM.js → auth-catchall-uoYI81pK.js} +1 -1
- package/dist/client/assets/{auth-entry-eZfro_WX.js → auth-entry-BjIVlcfT.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Bj8STizy.js → auth-split-layout-DUxxJvpS.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DKVgZtEq.js → authenticate-and-persist-oauth-CJ_aLR8W.js} +1 -1
- package/dist/client/assets/{automation-list-row-M4l__1fx.js → automation-list-row-DpOPYP5J.js} +1 -1
- package/dist/client/assets/{automation-runs-DK_Bw-dD.js → automation-runs-DP0kzKTQ.js} +1 -1
- package/dist/client/assets/{automations-h2-dlSqd.js → automations-CLsQGOFr.js} +1 -1
- package/dist/client/assets/{avatar-CY-IC3-F.js → avatar-BHG73k_T.js} +1 -1
- package/dist/client/assets/{badge-N3sFoPqK.js → badge-Bu2GGoEG.js} +1 -1
- package/dist/client/assets/{block-document-BBtDiVoJ.js → block-document-BHvHuvVy.js} +1 -1
- package/dist/client/assets/{buckets-CEVuEM9l.js → buckets-B4cBU5DR.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-Cs11Vypa.js → bulk-category-panel-Da_fEFvs.js} +1 -1
- package/dist/client/assets/{capability-load-error-DqS_NkKV.js → capability-load-error-BKYRhXZt.js} +1 -1
- package/dist/client/assets/{cards-TJGDZj9V.js → cards-BLbYPRIG.js} +1 -1
- package/dist/client/assets/{category-editor-B5hV3s9J.js → category-editor-CK_1eTYW.js} +1 -1
- package/dist/client/assets/{chart-aYqQLLx0.js → chart-D14bxiwj.js} +1 -1
- package/dist/client/assets/{chat-context-D3ERfB1P.js → chat-context-CuLK9B0g.js} +1 -1
- package/dist/client/assets/{checkbox-B_LFK7e8.js → checkbox-DCFDX5ql.js} +1 -1
- package/dist/client/assets/{choose-editor-Dybkj0pq.js → choose-editor-C0yZqWcR.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BBv6q1CF.js → cli-auth-success-DNuYxN7f.js} +1 -1
- package/dist/client/assets/{collection-detail-AdXihTRs.js → collection-detail-ylbpbcZ4.js} +1 -1
- package/dist/client/assets/{collection-display-button-9qwnn8x7.js → collection-display-button-CySwFqHe.js} +1 -1
- package/dist/client/assets/{collection-search-qRj2VsGw.js → collection-search-BsDrI4HK.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BrMtg-SV.js → collection-table-wrapper-DrzQIoSx.js} +1 -1
- package/dist/client/assets/{collection-tabs-GJHGaVCX.js → collection-tabs-BIJS3gD3.js} +1 -1
- package/dist/client/assets/{command-BBbi5Bx7.js → command-CZrKyBm9.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-mFeHbpVY.js → commerce-onboarding-C_pAxFQr.js} +1 -1
- package/dist/client/assets/{connect-CAKliErh.js → connect-DVLFzurK.js} +1 -1
- package/dist/client/assets/{connection-BXarc8Br.js → connection-CiSOG_iw.js} +1 -1
- package/dist/client/assets/{connection-card-BM1CnLH5.js → connection-card-VlyLt8LF.js} +1 -1
- package/dist/client/assets/{connection-detail-sN2PJBvZ.js → connection-detail-CuuVMIMs.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-7U8wJSAT.js → connection-form-helpers-DR4pbzpi.js} +1 -1
- package/dist/client/assets/{connections-Bx6CvTEa.js → connections-DmLY5ad5.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-R0h3HeX6.js → decopilot-sse-pool-Be-_sMSU.js} +1 -1
- package/dist/client/assets/{dialog-DkX6sgvT.js → dialog-DwLnc7bX.js} +1 -1
- package/dist/client/assets/{domain-settings-CtK__5fa.js → domain-settings-DbPYgtX-.js} +1 -1
- package/dist/client/assets/{drawer-BWu3pgOZ.js → drawer-DgRB213b.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DCIKyjxp.js → dropdown-menu-ByXXBC6W.js} +1 -1
- package/dist/client/assets/{empty-state-C2Q8LZJ4.js → empty-state-CJmB3lAY.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BSuDO5zy.js → extract-connection-data-B8C1_V1m.js} +1 -1
- package/dist/client/assets/{file-explorer-wzbFEV6R.js → file-explorer-B5cVTnR4.js} +1 -1
- package/dist/client/assets/{file-type-icon-BOMAkmt1.js → file-type-icon-Dg1fNTcm.js} +1 -1
- package/dist/client/assets/{form--7z_ZrL-.js → form-wlTjCMOi.js} +1 -1
- package/dist/client/assets/{general-Cz95tvTN.js → general-CFlV1Xxv.js} +1 -1
- package/dist/client/assets/{github-repo-picker-meSWrYYL.js → github-repo-picker-BIH9oO8M.js} +1 -1
- package/dist/client/assets/{hooks-BksH8l9r.js → hooks-C8VChG6T.js} +1 -1
- package/dist/client/assets/{index-BnxMsbh-.js → index-BHLNjBt3.js} +1 -1
- package/dist/client/assets/{index-BzCUmixy.js → index-BpqFiHPA.js} +1 -1
- package/dist/client/assets/{index-DcfB6tbJ.js → index-CHFN6Fwi.js} +3 -3
- package/dist/client/assets/{index-OTMhfH97.js → index-CIQFx46U.js} +1 -1
- package/dist/client/assets/{index-KIBbOEQ8.js → index-CYcSZn_L.js} +6 -6
- package/dist/client/assets/{index-BqvfNJzj.js → index-D1GVuS8Y.js} +1 -1
- package/dist/client/assets/{index-BmMxqkKV.js → index-DzVgf2fT.js} +1 -1
- package/dist/client/assets/{index-DA0reHtk.js → index-cwZfU7rg.js} +1 -1
- package/dist/client/assets/{index-DHsiVB9z.js → index-gAdknsN0.js} +1 -1
- package/dist/client/assets/{index-redirect-Bhm-8ijA.js → index-redirect-krEGuBOh.js} +1 -1
- package/dist/client/assets/{index-BSqM9wN0.js → index-sLuZ1xwS.js} +1 -1
- package/dist/client/assets/{infra-billing-Dbr_a21j.js → infra-billing-DT8xUteA.js} +1 -1
- package/dist/client/assets/{input-Qxe0VBEX.js → input-CIvOy8hE.js} +1 -1
- package/dist/client/assets/{integration-icon-BmZSnZGm.js → integration-icon-xS1OHKtQ.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-ChUIGzOh.js → invite-member-dialog-DBW4m4hZ.js} +1 -1
- package/dist/client/assets/{label-CXO1StyQ.js → label-CmTI2cM6.js} +1 -1
- package/dist/client/assets/{layout-BwP-bwDD.js → layout-BJU0Pza6.js} +1 -1
- package/dist/client/assets/{login-B2hoX5nK.js → login-BaHBvmGS.js} +1 -1
- package/dist/client/assets/{mcp-oauth-C7FlhfGV.js → mcp-oauth-BOANNgSG.js} +1 -1
- package/dist/client/assets/{members-tEAwBJeb.js → members-Bj__HBzG.js} +1 -1
- package/dist/client/assets/{monaco-editor-DJoYJV_D.js → monaco-editor-ComD5wpC.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-C8u54Vru.js → monitoring-stats-row-GYDOyJwK.js} +1 -1
- package/dist/client/assets/{multi-select-Dt8JtBvo.js → multi-select-CvijoLxs.js} +1 -1
- package/dist/client/assets/{oauth-callback-DGxocrR2.js → oauth-callback-BYh9DvA0.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-mwjhwUGl.js → oauth-callback-ai-provider-C0yMjeA3.js} +1 -1
- package/dist/client/assets/{onboarding-CsYI2ozB.js → onboarding-DI9aPLUT.js} +1 -1
- package/dist/client/assets/{org-layout-49wTUTOp.js → org-layout--O_61YGJ.js} +1 -1
- package/dist/client/assets/{organization-choice-Li2PASch.js → organization-choice-BiT2mTpm.js} +1 -1
- package/dist/client/assets/{orgs-7zRjPQFp.js → orgs-uRYUJGSd.js} +1 -1
- package/dist/client/assets/{page-seo-form-BMSNSaJe.js → page-seo-form-TOD6ngAh.js} +1 -1
- package/dist/client/assets/{popover-CsbfUNbm.js → popover-zQnN5aU9.js} +1 -1
- package/dist/client/assets/{post-calendar-Dof9VBOx.js → post-calendar-BfEbmJKe.js} +1 -1
- package/dist/client/assets/{post-editor-DT2ifqYm.js → post-editor-iwqTR0GC.js} +1 -1
- package/dist/client/assets/{primitives-BGyf6L7J.js → primitives-DjvlE2T7.js} +1 -1
- package/dist/client/assets/{profile-CBhn4-OC.js → profile-3XYrzDWQ.js} +1 -1
- package/dist/client/assets/{project-app-view-D0s5EHJm.js → project-app-view-BMlEJCr0.js} +1 -1
- package/dist/client/assets/record-editor-DZ6gEvua.js +1 -0
- package/dist/client/assets/{redirect-editor-DR7SxiYt.js → redirect-editor-BI9XOUgG.js} +1 -1
- package/dist/client/assets/registry-CNvXhbEP.js +2 -0
- package/dist/client/assets/{registry-layout-CXXCp4h3.js → registry-layout-C6SddOI7.js} +1 -1
- package/dist/client/assets/{reports-BQueTP63.js → reports-3qfpgMnk.js} +1 -1
- package/dist/client/assets/{require-capability-CAbFLnP2.js → require-capability-_HszqkZ4.js} +1 -1
- package/dist/client/assets/{required-auth-layout-46ONr0pn.js → required-auth-layout-CbrX2737.js} +1 -1
- package/dist/client/assets/{reset-password-587BPXRJ.js → reset-password-DLzB42XE.js} +1 -1
- package/dist/client/assets/{roles-DZPle9xe.js → roles-BPZjLK4k.js} +1 -1
- package/dist/client/assets/{search-input-PMs_PHg_.js → search-input-Opx81U5P.js} +1 -1
- package/dist/client/assets/{secrets-ChQPvb4F.js → secrets-B8fI2Nfx.js} +1 -1
- package/dist/client/assets/{sections-editor-CLPCdXLv.js → sections-editor-CoLT5-uu.js} +1 -1
- package/dist/client/assets/{select-CuRd38p6.js → select-BwfCxtXT.js} +1 -1
- package/dist/client/assets/{select-model-r1p0EVXw.js → select-model-D3LmUMCF.js} +1 -1
- package/dist/client/assets/{self-tool-result-DswtDKOf.js → self-tool-result-CMkTxrOh.js} +1 -1
- package/dist/client/assets/{seo-editor-BhooI-UE.js → seo-editor-Q_GDU7Du.js} +1 -1
- package/dist/client/assets/{settings-layout-Dj9PzSkc.js → settings-layout-oOwR0Taz.js} +1 -1
- package/dist/client/assets/{shell-controls-WhyhlhiN.js → shell-controls-TSMyXS1P.js} +1 -1
- package/dist/client/assets/{shell-layout-BY_lVex8.js → shell-layout-CqRIF7Ju.js} +1 -1
- package/dist/client/assets/{spinner-CzicJNc9.js → spinner-BoQQ7YL7.js} +1 -1
- package/dist/client/assets/{sprints-D8sY2qzx.js → sprints-D9vmTFOJ.js} +1 -1
- package/dist/client/assets/{sso-F2emWkhz.js → sso-BA1Tys3N.js} +1 -1
- package/dist/client/assets/{store-BvKg3pAY.js → store-D_d_M5Bo.js} +1 -1
- package/dist/client/assets/store-registry-DXdNCekI.js +2 -0
- package/dist/client/assets/{switch-DYe5xWKm.js → switch-B0JbBihd.js} +1 -1
- package/dist/client/assets/{synced-repos-CvBYEKpx.js → synced-repos-DHZdIi6o.js} +1 -1
- package/dist/client/assets/{tab-id-zm__xZUc.js → tab-id-COrpPZul.js} +1 -1
- package/dist/client/assets/{table-CBm3SZxC.js → table-0vvB7vP2.js} +1 -1
- package/dist/client/assets/{tabs-veBPFfBp.js → tabs-DfCO_UYs.js} +1 -1
- package/dist/client/assets/{tasks-AP2NGGDS.js → tasks-Dr7w1zuR.js} +1 -1
- package/dist/client/assets/{textarea-yERsDU06.js → textarea-CAIeyvoT.js} +1 -1
- package/dist/client/assets/{toggle-group-CkUPint2.js → toggle-group-D4n3xt3Y.js} +1 -1
- package/dist/client/assets/{toolbar-6Q2R6kXZ.js → toolbar-mMArDsFA.js} +1 -1
- package/dist/client/assets/{track-Yev1gk31.js → track-CJiVU2j6.js} +1 -1
- package/dist/client/assets/{types-CAACZF_1.js → types-D05E_sUp.js} +1 -1
- package/dist/client/assets/{use-ai-providers-C9XzhJLV.js → use-ai-providers-BfWbq2Ul.js} +1 -1
- package/dist/client/assets/{use-api-keys-Cc5qmyMd.js → use-api-keys-DW5wRonT.js} +1 -1
- package/dist/client/assets/{use-automations-CGmrRAji.js → use-automations-CzdacpFE.js} +1 -1
- package/dist/client/assets/{use-autosave-DqS0_Nde.js → use-autosave-DKNmBXs5.js} +1 -1
- package/dist/client/assets/{use-clock-tick-C98X2c9v.js → use-clock-tick-D1EhA1jd.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-8eBv23WW.js → use-commerce-diagnostic-CJePLZGL.js} +1 -1
- package/dist/client/assets/{use-connection-BlOBoiXz.js → use-connection-Bsa5t2Ho.js} +1 -1
- package/dist/client/assets/{use-copy-D3x8Q_cT.js → use-copy-HJodV8S_.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-YyxeGpc6.js → use-create-virtual-mcp-zRTurmFa.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-D7tnN3Gz.js → use-debounced-autosave-BgHmgVg-.js} +1 -1
- package/dist/client/assets/{use-debounced-value-CDaA_n0z.js → use-debounced-value-BqQaweo8.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-ClZzu3gE.js → use-decopilot-events-BDScGEjc.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DRmC-6K_.js → use-delete-connection-B0nE7d75.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-7UdTT4QK.js → use-deployment-admin-DYUQvTiS.js} +1 -1
- package/dist/client/assets/{use-file-configs-DS2-ipjR.js → use-file-configs-BEnmetYW.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-PlHBiMFT.js → use-infinite-scroll-D7TIeTfk.js} +1 -1
- package/dist/client/assets/{use-join-requests-UtAJru7z.js → use-join-requests-BqlSx4lO.js} +1 -1
- package/dist/client/assets/{use-mcp-client-jv5PcyVf.js → use-mcp-client-C69KO4jJ.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DuN6wH71.js → use-mcp-tools-DAYJo1wA.js} +1 -1
- package/dist/client/assets/{use-members-Dm6T6jjp.js → use-members-Su2ySMbG.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BUZPjjlL.js → use-navigate-to-agent-D6pVAWY4.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-1shqB-hs.js → use-org-auth-client-BuKCX06t.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-VtCJdFuC.js → use-org-repo-syncs-DnSbunEh.js} +1 -1
- package/dist/client/assets/{use-org-sso-BSoECkGT.js → use-org-sso-DDz4PZNS.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CdnI_eW7.js → use-organization-roles-UsX7ew32.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DwRcjquR.js → use-organization-settings-D6b2K5j6.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CnBfk6MQ.js → use-registry-connections-D0TM33HY.js} +1 -1
- package/dist/client/assets/{use-secrets-BlHMFxg-.js → use-secrets-BUJ5d_iV.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CfK5jeJy.js → use-section-preview-base-C5T2Fjn0.js} +1 -1
- package/dist/client/assets/{use-status-sounds-t_U5b1MH.js → use-status-sounds-ae8eOGTl.js} +1 -1
- package/dist/client/assets/{use-tags-j5819DUL.js → use-tags-n6sHDV5u.js} +1 -1
- package/dist/client/assets/{use-task-board-items-CTlCrCP7.js → use-task-board-items-CCacvABQ.js} +1 -1
- package/dist/client/assets/{use-view-mode-Cz6pL9Gu.js → use-view-mode-BzaioVeY.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CAadE0s9.js → use-virtual-mcp-GwD2U3RY.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-C8IE5y2O.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-Bpilmczb.js +1 -0
- package/dist/client/assets/{users-CZKIMfxy.js → users-DgDZcUz1.js} +1 -1
- package/dist/client/assets/{variant-calendar-BAWXzug-.js → variant-calendar-DwHFjFkS.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-B-caEoZw.js → view-mode-toggle-BCh5tTKd.js} +1 -1
- 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/record-editor-DApsz6WG.js +0 -1
- package/dist/client/assets/registry-CPMYL3LG.js +0 -2
- package/dist/client/assets/store-registry-CbwW2xIz.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CXKFbPa3.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CpIFVqRs.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -2862,7 +2862,7 @@ Respond with the structured verdict and a short reason.`,Ou$;var Du$=D(()=>{B4()
|
|
|
2862
2862
|
${G.join(`
|
|
2863
2863
|
`)}`:Y}function JH6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2864
2864
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var eu$=200,aK6=12,eK6,ZH6=300,yZ1=3;var gZ1=D(()=>{o_();cA0();eK6={aheadBy:0,behindBy:0,files:[]}});function KH6($){if(!$||$.includes(".."))return!1;return WH6.test($)}function Zc$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!KH6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Xc$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var WH6;var Qc$=D(()=>{WH6=/^[\w./@-]+$/});function hZ1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function ra($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Yc$($,Z,X,Q){if(!Q.connectionId)throw new a_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new a_(J9);await JB({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:J9;throw new a_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await WB(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=M6$(F instanceof Error?F.message:String(F));throw N?new a_(U):F}),K=Au($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await TB(H,HH6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var HH6=10485760,a_;var uZ1=D(()=>{rG();VA0();En();lm0();Ny();a_=class a_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function NH6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!FH6.test(Z))throw Error(`Invalid branch name: ${$}`)}function s_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(OH6)])}async function DH6($,Z){let X=$.var.studioContext,Q=h3(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=ZC(J?.metadata?.runtime);if(W)return W;let K=VB0(Z.virtualMcpMetadata),H=K==="cms"?await wZ1(X,{claimName:Z.claimName,userId:Z.sandboxUserId,branch:Z.branch,virtualMcpMetadata:Z.virtualMcpMetadata}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)jn(X,J.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:H,resolved:F,stamped:N});return F}async function LH6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{let{provider:X}=await gZ($.var.studioContext,{userId:Z.userId,branch:Z.branch,virtualMcpMetadata:Z.virtualMcpMetadata});return X}catch{return null}}function e_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function ku($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=ra(Z,X);if(!Y)throw new u4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return CA0(Q,G.id,Y)}function cZ1($,Z){if(Z instanceof SA0)return $.json({error:Z.message},429,{...z5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof u4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,z5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,z5)}async function Wc$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Kc$($){try{let Z=await ku($),X=await lA0(Z,$.get("vmClaim").branch);return $.json(X,200,z5)}catch(Z){return cZ1($,Z)}}function aa($,Z){let Q=(iA0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return iA0.set($,Y),Y.finally(()=>{if(iA0.get($)===Y)iA0.delete($)}),Q}async function pZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,z5);let Q=X?.runner??e_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.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",...z5}})}}let B=await O.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?wH6(B):B,w=O.headers.get("content-type")??"application/json";return new Response(L,{status:O.status,headers:{"content-type":w,...z5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function wH6($){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 pA0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function EH6($){return Hc$.includes($)}var FH6,Gc$=524288,UH6=65536,OH6=1e4,Jc$=2000,BH6,iA0,z5,Hc$,Fc$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",BH6),$.post("/:virtualMcpId/:branch/write",(X)=>pZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>pZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>pZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>pZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>pZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>pZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>pZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:s_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return pZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return pZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>pZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>pZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!EH6(Q))return X.json({error:`step must be one of: ${Hc$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await wZ1(X.var.studioContext,{claimName:Y.claimName,userId:Y.userId,branch:Y.branch,virtualMcpMetadata:Y.virtualMcpMetadata})==="gone"?null:await LH6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,z5);if(Q==="start"){let J=t(X.var.studioContext),W=Vy(Y.virtualMcpMetadata);try{await IB0({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return pZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return CN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Wu$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Kc$(X);return Z(X)});let Z=(X)=>pZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Jc$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Kc$(X);return pZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Jc$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await ku(X),J=await dA0(G,Q.branch,Y.base);return X.json(J,200,z5)}catch(Y){return cZ1(X,Y)}return pZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,z5);let Q=e_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return aa(Y,async()=>{try{await EZ1(W,Q,Y);let K=ra(G,J);if(K)await Yc$(W,Q,Y,K)}catch(K){if(K instanceof a_)return X.json({error:K.message},403,z5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,z5)}return pZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return aa(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,z5);try{let J=await ku(X);return await $c$(J,Q.branch,G),X.json({ok:!0},200,z5)}catch(J){let W=J instanceof u4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,z5)}});return aa(Q.claimName,()=>pZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return aa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await ku(X),H=W.base??await K.getDefaultBranch();return await mA0(K,Q.branch,H),X.json({ok:!0},200,z5)}catch(W){return cZ1(X,W)}});let Y=e_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return aa(G,async()=>{try{await EZ1(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,z5)}return pZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",S9({maxSize:Gc$,onError:(X)=>X.json({error:"Payload too large"},413,z5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=e_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=PZ1(F)&&U?[F,N]:Y?await Promise.all([pA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),pA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await ku(X);return Promise.all([lA0(w,Q.branch),dA0(w,Q.branch)])})(),L=await Uu$(K,O,B);return X.json(L,200,z5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,z5);return X.json({error:F},502,z5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",S9({maxSize:Gc$,onError:(X)=>X.json({error:"Payload too large"},413,z5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=e_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=PZ1(F)&&U?[F,N]:Y?await Promise.all([pA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),pA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await ku(X);return Promise.all([lA0(w,Q.branch),dA0(w,Q.branch)])})(),L=await Bu$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(L,200,z5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,z5);return X.json({error:F},502,z5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=e_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=hZ1(`${W}${G}`);return Wc$(X,K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}),$.post("/:virtualMcpId/:branch/preview-invoke",S9({maxSize:UH6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=e_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Zc$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Xc$(G,W.resolveType),H=hZ1(K);return Wc$(X,H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Nc$=D(()=>{w8();AN();Pu();LZ1();CF();Yu$();u3();Sy();Gu$();hF();Ju$();Ku$();Un0();Ln();RZ1();Du$();VZ1();o_();gZ1();Qc$();uZ1();FH6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;BH6=kA0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=s0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{NH6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=vp({orgId:Y.id,virtualMcpId:G,branch:J}),H=await Wn0(X,J),F=Kn0(H,Q),N=Qu$({userId:F,projectRef:K}),U=W.metadata??null,O=await DH6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(O==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:O}),Z();let B;try{B=(await gZ(X,{userId:F,branch:J,virtualMcpMetadata:U})).provider}catch{B=null}if(!B)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:B,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:O}),Z()});iA0=new Map;z5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Hc$=["clone","install","start"]});function Uc$($,Z,X){let Q=lZ1.get($);if(!Q)Q={pending:null,running:!1},lZ1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)zH6($,Q);return G}async function zH6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await PH6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)lZ1.delete($)}}async function PH6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Mu(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=bZ1(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,L]of $.set){let w=xZ1(K,B),E=`${JSON.stringify(L,null,2)}
|
|
2865
|
-
`,j=await Z.createBlob(E);await ru$(Z.owner,Z.repo,j,E);let z=w[0]??`${uA0(Q)}/${SZ1(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let L of xZ1(K,B))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=pa(B);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:AH6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof u4&&B.status===422)||Y>=jH6-1)throw B;await D$(oZ(2000,200,Y,2,0.5))}}}function AH6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return vm0(Q,$.deps.coAuthor)}var jH6=3,lZ1;var Oc$=D(()=>{wB0();vA0();w4();o_();cA0();lZ1=new Map});import{createHmac as Bc$,randomBytes as TH6,timingSafeEqual as RH6}from"crypto";function Dc$(){if(nA0)return nA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return nA0=$?Buffer.from($):TH6(32),nA0}function dZ1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+IH6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Bc$("sha256",Dc$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Lc$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Bc$("sha256",Dc$()).update(Q).digest("base64url"));if(Y.length!==G.length||!RH6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var IH6=21600000,nA0=null;var wc$=D(()=>{q$()});import{z as Vu}from"zod";function MH6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&qH6.test($)}function jc$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function sa($){let Z=$.get("decofileScope");return CA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ea($,Z){if(Z instanceof u4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function zc$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ec$),$.use("/:virtualMcpId/:branch/*",Ec$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await au$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=dZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(jc$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return ea(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await sa(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return ea(Z,Y)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=kH6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{_A0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await sa(Z),W=await Uc$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Au(Q)},G),K=dZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:jc$(Z)})}catch(J){return ea(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof u4&&W.status===409))throw W;await mA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof u4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof u4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return ea(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof u4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return ea(Z,Q)}}),$}var qH6,kH6,Ec$;var Pc$=D(()=>{vA0();w8();LZ1();VA0();uZ1();VZ1();Oc$();wc$();gZ1();o_();cA0();qH6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;kH6=Vu.object({set:Vu.record(Vu.string(),Vu.unknown()).optional(),delete:Vu.array(Vu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ec$=kA0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!MH6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Lc$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!kB0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=ra(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ac$=($)=>{let Z=new F1;if(Z.use("*",u_),Z.route("/",iP0()),Z.route("/",gx$()),Z.route("/",mh$()),Z.route("/",ch$()),Z.route("/",IA0()),Z.route("/tools",ah$()),Z.route("/",th$()),Z.route("/",zh$({kvStorage:$.kvStorage})),Z.route("/",Eh$()),Z.route("/fs",fh$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fc$()),Z.route("/decofile",zc$()),Z.route("/",gh$()),Z.route("/deco-sites",nP0()),Z.route("/sso",hP0()),Z.route("/",qA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Sx$()),$.mountDevAssets)Z.route("/dev-assets",tP0({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("/",Zf$()),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",xh$()),Z.route("/mcp",sL0()),Z.route("/mcp/self",RA0()),Z.route("/mcp",Zw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Tc$=D(()=>{w8();g51();Cx$();l51();oP0();Ea();x51();jh$();Ph$();bh$();Mt();k51();Xw0();HZ1();yh$();hh$();lh$();ih$();oh$();NZ1();sh$();UZ1();eL0();Nc$();Pc$()});function VH6($){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 SH6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Rc$=()=>{let $=new F1;return $.use("*",SH6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await iZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:VH6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ic$=D(()=>{w8();q$();pz0()});import{z as M1}from"zod";function BH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function uH6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function cH6($,Z,X){try{return JSON.parse($)}catch{throw new kc$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function lH6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:cH6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function dH6($){let Z=$.map((X)=>{let Q=X.function.parameters?lY(X.function.parameters):lY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function mH6($){if(!$)return;return{openai:{response_format:$}}}function iH6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function qc$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Mc$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var CH6=256,_H6,vH6,fH6,bH6,xH6,yH6,gH6,hH6,kc$,Vc$,Sc$;var Cc$=D(()=>{B4();w8();Pu();FN();_H6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),vH6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),fH6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(vH6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),bH6=M1.object({type:M1.literal("text")}),xH6=M1.object({type:M1.literal("json_object")}),yH6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),gH6=M1.union([bH6,xH6,yH6]),hH6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(fH6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(_H6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:gH6.optional(),user:M1.string().optional()});kc$=class kc$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Vc$=new F1;Vc$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(BH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(BH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(BH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=hH6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(BH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=uH6(G.model);if(!J)return $.json(BH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>dL(j.providerId));if(!E)return $.json(BH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(BH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=lH6(G.messages),U=G.tools?dH6(G.tools):void 0,O=mH6(G.response_format),B=iH6(),L=Math.floor(Date.now()/1000);if(G.stream)return CN($,async(w)=>{let E=qc$(F,N,U,G,O,$.req.raw.signal);try{let j=YB(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=CH6)await I()}else if(k.type==="tool-call"){await I();let q=A++;await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:Mc$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=qc$(F,N,U,G,O,$.req.raw.signal),E=await XB(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:Mc$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(BH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(BH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(BH(Y.message,"server_error"),500)}});Sc$=Vc$});function pH6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function _c$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=s0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!iG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let H of J){if(!H.slug||F7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Ds1(N)!==G)continue;if(!pH6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var vc$=D(()=>{w8();dO()});var bc$;var fc$=D(()=>{bc$={name:"decocms",version:"4.265.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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",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 oH6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??tH6}}var xc$,tH6="https://ph.studio.decocms.com",yc$;var gc$=D(()=>{w8();T50();RC();$9();q$();T51();fc$();xc$=new F1;xc$.get("/",($)=>{let Z={version:bc$.version,theme:cm1(),...BF().logo&&{logo:BF().logo},...vK()&&{internalUrl:EC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:tb$(),posthog:oH6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!vK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yc$=xc$});function Su($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function mZ1($){return(Su($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function uc$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Su($))}&sz=${Z}`}function hc$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function cc$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?hc$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):hc$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var $v,rH6,aH6,sH6,eH6,lc$;var dc$=D(()=>{$v=l0.enum(["good","bad","neutral"]),rH6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:$v.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.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 $})),aH6=l0.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},l0.array(rH6)),sH6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},eH6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:$v.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:$v.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:$v.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:$v.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(aH6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:$v.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:$v.optional()})).min(1)})]),lc$=l0.object({...sH6,template:eH6})});function tA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=lc$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var iZ1=D(()=>{dc$()});import{join as mc$}from"path";async function ZF6($){try{let Z=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout($F6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=tA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||mZ1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function NG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function XF6($,Z){let X=Su($),Q=Z?.brand?.trim()||mZ1(X),Y=uc$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=cc$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${NG(W)}</title>`,`<meta name="description" content="${NG(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="${NG(W)}" />`,`<meta property="og:description" content="${NG(K)}" />`,`<meta property="og:url" content="${NG(J)}" />`,`<meta property="og:image" content="${NG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${NG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${NG(W)}" />`,`<meta name="twitter:description" content="${NG(K)}" />`,`<meta name="twitter:image" content="${NG(H)}" />`,`<meta name="twitter:image:alt" content="${NG(F)}" />`,`<link rel="canonical" href="${NG(J)}" />`,`<link rel="icon" href="${NG(Y)}" sizes="any" />`].join(`
|
|
2865
|
+
`,j=await Z.createBlob(E);await ru$(Z.owner,Z.repo,j,E);let z=w[0]??`${uA0(Q)}/${SZ1(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let L of xZ1(K,B))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=pa(B);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:AH6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof u4&&B.status===422)||Y>=jH6-1)throw B;await D$(oZ(2000,200,Y,2,0.5))}}}function AH6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return vm0(Q,$.deps.coAuthor)}var jH6=3,lZ1;var Oc$=D(()=>{wB0();vA0();w4();o_();cA0();lZ1=new Map});import{createHmac as Bc$,randomBytes as TH6,timingSafeEqual as RH6}from"crypto";function Dc$(){if(nA0)return nA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return nA0=$?Buffer.from($):TH6(32),nA0}function dZ1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+IH6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Bc$("sha256",Dc$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Lc$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Bc$("sha256",Dc$()).update(Q).digest("base64url"));if(Y.length!==G.length||!RH6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var IH6=21600000,nA0=null;var wc$=D(()=>{q$()});import{z as Vu}from"zod";function MH6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&qH6.test($)}function jc$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function sa($){let Z=$.get("decofileScope");return CA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ea($,Z){if(Z instanceof u4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function zc$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ec$),$.use("/:virtualMcpId/:branch/*",Ec$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await au$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=dZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(jc$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return ea(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await sa(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return ea(Z,Y)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=kH6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{_A0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await sa(Z),W=await Uc$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Au(Q)},G),K=dZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:jc$(Z)})}catch(J){return ea(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof u4&&W.status===409))throw W;await mA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof u4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof u4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return ea(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await sa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof u4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return ea(Z,Q)}}),$}var qH6,kH6,Ec$;var Pc$=D(()=>{vA0();w8();LZ1();VA0();uZ1();VZ1();Oc$();wc$();gZ1();o_();cA0();qH6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;kH6=Vu.object({set:Vu.record(Vu.string(),Vu.unknown()).optional(),delete:Vu.array(Vu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ec$=kA0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!MH6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Lc$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!kB0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=ra(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ac$=($)=>{let Z=new F1;if(Z.use("*",u_),Z.route("/",iP0()),Z.route("/",gx$()),Z.route("/",mh$()),Z.route("/",ch$()),Z.route("/",IA0()),Z.route("/tools",ah$()),Z.route("/",th$()),Z.route("/",zh$({kvStorage:$.kvStorage})),Z.route("/",Eh$()),Z.route("/fs",fh$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fc$()),Z.route("/decofile",zc$()),Z.route("/",gh$()),Z.route("/deco-sites",nP0()),Z.route("/sso",hP0()),Z.route("/",qA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Sx$()),$.mountDevAssets)Z.route("/dev-assets",tP0({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("/",Zf$()),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",xh$()),Z.route("/mcp",sL0()),Z.route("/mcp/self",RA0()),Z.route("/mcp",Zw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Tc$=D(()=>{w8();g51();Cx$();l51();oP0();Ea();x51();jh$();Ph$();bh$();Mt();k51();Xw0();HZ1();yh$();hh$();lh$();ih$();oh$();NZ1();sh$();UZ1();eL0();Nc$();Pc$()});function VH6($){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 SH6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Rc$=()=>{let $=new F1;return $.use("*",SH6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await iZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:VH6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ic$=D(()=>{w8();q$();pz0()});import{z as M1}from"zod";function BH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function uH6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function cH6($,Z,X){try{return JSON.parse($)}catch{throw new kc$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function lH6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:cH6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function dH6($){let Z=$.map((X)=>{let Q=X.function.parameters?lY(X.function.parameters):lY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function mH6($){if(!$)return;return{openai:{response_format:$}}}function iH6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function qc$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Mc$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var CH6=256,_H6,vH6,fH6,bH6,xH6,yH6,gH6,hH6,kc$,Vc$,Sc$;var Cc$=D(()=>{B4();w8();Pu();FN();_H6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),vH6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),fH6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(vH6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),bH6=M1.object({type:M1.literal("text")}),xH6=M1.object({type:M1.literal("json_object")}),yH6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),gH6=M1.union([bH6,xH6,yH6]),hH6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(fH6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(_H6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:gH6.optional(),user:M1.string().optional()});kc$=class kc$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Vc$=new F1;Vc$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(BH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(BH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(BH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=hH6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(BH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=uH6(G.model);if(!J)return $.json(BH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>dL(j.providerId));if(!E)return $.json(BH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(BH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=lH6(G.messages),U=G.tools?dH6(G.tools):void 0,O=mH6(G.response_format),B=iH6(),L=Math.floor(Date.now()/1000);if(G.stream)return CN($,async(w)=>{let E=qc$(F,N,U,G,O,$.req.raw.signal);try{let j=YB(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=CH6)await I()}else if(k.type==="tool-call"){await I();let q=A++;await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:Mc$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=qc$(F,N,U,G,O,$.req.raw.signal),E=await XB(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:Mc$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(BH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(BH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(BH(Y.message,"server_error"),500)}});Sc$=Vc$});function pH6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function _c$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=s0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!iG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let H of J){if(!H.slug||F7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Ds1(N)!==G)continue;if(!pH6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var vc$=D(()=>{w8();dO()});var bc$;var fc$=D(()=>{bc$={name:"decocms",version:"4.265.2",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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",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 oH6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??tH6}}var xc$,tH6="https://ph.studio.decocms.com",yc$;var gc$=D(()=>{w8();T50();RC();$9();q$();T51();fc$();xc$=new F1;xc$.get("/",($)=>{let Z={version:bc$.version,theme:cm1(),...BF().logo&&{logo:BF().logo},...vK()&&{internalUrl:EC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:tb$(),posthog:oH6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!vK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yc$=xc$});function Su($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function mZ1($){return(Su($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function uc$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Su($))}&sz=${Z}`}function hc$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function cc$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?hc$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):hc$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var $v,rH6,aH6,sH6,eH6,lc$;var dc$=D(()=>{$v=l0.enum(["good","bad","neutral"]),rH6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:$v.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.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 $})),aH6=l0.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},l0.array(rH6)),sH6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},eH6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:$v.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:$v.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:$v.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:$v.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(aH6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:$v.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:$v.optional()})).min(1)})]),lc$=l0.object({...sH6,template:eH6})});function tA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=lc$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var iZ1=D(()=>{dc$()});import{join as mc$}from"path";async function ZF6($){try{let Z=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout($F6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=tA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||mZ1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function NG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function XF6($,Z){let X=Su($),Q=Z?.brand?.trim()||mZ1(X),Y=uc$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=cc$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${NG(W)}</title>`,`<meta name="description" content="${NG(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="${NG(W)}" />`,`<meta property="og:description" content="${NG(K)}" />`,`<meta property="og:url" content="${NG(J)}" />`,`<meta property="og:image" content="${NG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${NG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${NG(W)}" />`,`<meta name="twitter:description" content="${NG(K)}" />`,`<meta name="twitter:image" content="${NG(H)}" />`,`<meta name="twitter:image:alt" content="${NG(F)}" />`,`<link rel="canonical" href="${NG(J)}" />`,`<link rel="icon" href="${NG(Y)}" sizes="any" />`].join(`
|
|
2866
2866
|
`)}function QF6($,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}
|
|
2867
2867
|
</head>`)}function ic$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=Su(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(mc$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(YF6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?mc$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await ZF6(Su(Q)),K=XF6(Q,W);return X.html(QF6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var $F6=2500,YF6=1e4;var pc$=D(()=>{w8();iZ1();tw();q$()});function $s($,Z){return fetch(`${WK({})}${$}`,Z)}async function GF6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await $s(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=tA0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var JF6,vN,nc$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},tc$;var oc$=D(()=>{w8();gY();tw();iZ1();JF6=new Set(["complete","errored","terminated","unknown"]),vN=new F1;vN.use("*",async($,Z)=>{let X=await U8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});vN.use("/link-token/*",nc$);vN.use("/suggest",nc$);vN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await GF6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});vN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await $s("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${nw({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.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)}});vN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await $s(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${nw({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:JF6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});vN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await $s(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});vN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await $s(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});tc$=vN});import{createHmac as WF6,timingSafeEqual as KF6}from"crypto";function ac$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>HF6)return!1;let W=WF6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&KF6(K,F)})}function sc$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=CJ(Z),Q=CJ(CJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:DH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function ec$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function DH($){return typeof $==="string"?$:void 0}function CJ($){return typeof $==="object"&&$!==null?$:void 0}function oA0($){return typeof $==="number"?new Date($*1000):null}function tZ1($){return DH($)??DH(CJ($)?.id)}function FF6($){return tZ1($.subscription)??DH(CJ(CJ($.parent)?.subscription_details)?.subscription)}function NF6($){let Z=oA0($.current_period_end);if(Z)return Z;let X=CJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=CJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function pZ1($,Z){let X=oA0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function nZ1($,Z){let X=oA0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function UF6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=DH(CJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(DH(CJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(DH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=DH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(CJ(X.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:Q,creditCents:CJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(DH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=tZ1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(pZ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:tZ1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:nZ1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=DH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&pZ1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":ec$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:NF6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:nZ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=FF6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(pZ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:oA0(X.period_end),lastStripeEventAt:nZ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function OF6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.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:ec$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function rc$($,Z){let X=OF6($,Z);if(!X)return;vY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:op1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function $l$($){let Z=new QK(d8().db),X=await UF6(Z,$);if(!(X.handled&&X.topUp))rc$($,X);if(X.handled&&X.topUp)await Tw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),rc$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Ne1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof hY&&(Q.status===400||Q.status===404)))throw Q}return X}var HF6=300;var Zl$=D(()=>{hG();C4();X50();QE();Z01()});var BF6=1048576,oZ1;var Xl$=D(()=>{w8();AN();q$();Zl$();oZ1=new F1;oZ1.post("/webhook",S9({maxSize:BF6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!ac$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=sc$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await $l$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as DF6}from"crypto";function wF6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return DF6(Buffer.from(Y),Buffer.from(Q))}var LF6=5242880,rZ1;var Ql$=D(()=>{w8();AN();On();rZ1=new F1;rZ1.post("/webhook",S9({maxSize:LF6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!wF6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Yn0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Yl$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Gl$,EF6,jF6,Jl$;var Wl$=D(()=>{w8();w3();sy();lx();Gl$=new F1,EF6=["range","if-none-match","if-modified-since"],jF6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Gl$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Xu($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Z$(401,{message:"Authentication required"})}if(!X)throw new Z$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Z$(400,{message:"Missing file key"});let Y=await rn(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&dG()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Z$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Yl$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of EF6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Z$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Z$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of jF6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Yl$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Jl$=Gl$});var Zs=_((Zv)=>{var zF6=Zv&&Zv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),PF6=Zv&&Zv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))zF6(Z,$,X)};Object.defineProperty(Zv,"__esModule",{value:!0});PF6(EY(),Zv)});var Fl$=_((Kl$)=>{Object.defineProperty(Kl$,"__esModule",{value:!0});Kl$.version=void 0;Kl$.version="3.4.0"});var Ol$=_((LH)=>{var AF6=LH&&LH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(LH,"__esModule",{value:!0});LH.NodeTransport=LH.VERSION=void 0;LH.nodeResolveHost=kF6;var r6=Zs(),TF6=z0("net"),aZ1=z0("tls"),RF6=z0("path"),Nl$=z0("fs"),IF6=AF6(z0("dns")),qF6=Fl$();LH.VERSION=qF6.version;var MF6="nats.js";class Ul${socket;version;lang;yields=[];signal=(0,r6.deferred)();closedNotification=(0,r6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=MF6,this.version=LH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,r6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw r6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new r6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new r6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,r6.deferred)(),X,Q=(0,TF6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,r6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=r6.DataBuffer.concat(...this.yields),Y=(0,r6.extractProtocolMessage)(Q);if(Y!=="")try{let G=r6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,r6.deferred)();try{if($=(0,RF6.resolve)($),!(0,Nl$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Nl$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,r6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,r6.deferred)();try{let Y=(0,aZ1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,r6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,r6.deferred)();try{let Q=(0,aZ1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}return X}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,r6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,r6.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 aZ1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,r6.render)($)}`);let Z=(0,r6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}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(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}LH.NodeTransport=Ul$;function kF6($){let Z=(0,r6.deferred)();return IF6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var El$=_((wl$)=>{Object.defineProperty(wl$,"__esModule",{value:!0});wl$.connect=VF6;var Bl$=Ol$(),Dl$=Zs(),Ll$=Zs();function VF6($={}){if((0,Ll$.hasWsProtocol)($))return Promise.reject(Ll$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Dl$.setTransportFactory)({factory:()=>{return new Bl$.NodeTransport},dnsResolveFn:Bl$.nodeResolveHost}),Dl$.NatsConnectionImpl.connect($)}});var jl$=_((fN)=>{var CF6=fN&&fN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),_F6=fN&&fN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))CF6(Z,$,X)};Object.defineProperty(fN,"__esModule",{value:!0});fN.connect=void 0;var vF6=El$();Object.defineProperty(fN,"connect",{enumerable:!0,get:function(){return vF6.connect}});_F6(Zs(),fN)});function Tl$($){let Z=$?.connectFn??yF6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:xF6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let L=oZ(bF6,fF6,B-1,2,0.5);await D$(L)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?zl$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Al$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function yF6($){return Pl$.connect($)}var zl$,Pl$,Al$,fF6=100,bF6=3000,xF6=3000;var Rl$=D(()=>{w4();zl$=V(Zc(),1),Pl$=V(jl$(),1),Al$=V(rD(),1)});function sZ1($,Z){return`${$}.${Z}`}class eZ1{cache;constructor($){this.cache=gh({ttlMs:$?.ttlMs??gF6,maxSize:$?.maxSize??hF6})}async get($,Z){return this.cache.get(sZ1($,Z))??null}async set($,Z,X){this.cache.set(sZ1($,Z),X)}async invalidate($,Z){this.cache.delete(sZ1($,Z))}teardown(){this.cache.clear()}}var gF6=600000,hF6=5000;var Il$=()=>{};function rA0($,Z){return`${$}:${Z}`}function $71($){let Z=gh({ttlMs:$?.ttlMs??uF6,maxSize:$?.maxSize??cF6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(ql$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(rA0(K,H))},set(K,H,F){Z.set(rA0(K,H),F)},invalidate(K,H){Z.delete(rA0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(ql$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(rA0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var ql$="studio.ai-provider-keys.invalidate",uF6=30000,cF6=5000;var Ml$=()=>{};class Z71{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=kl$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.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 X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of kl$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var kl$;var Vl$=D(()=>{kl$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Sl$=($)=>{let Z;return()=>Z??=$()},X71,Q71;var Cl$=D(()=>{I6();X71=Sl$(()=>L$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),Q71=Sl$(()=>L$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function tF6(){return{name:$N,subjects:[`${ML0}.>`],storage:EW.StorageType.File,max_age:mF6,max_bytes:pF6,max_msgs_per_subject:nF6,discard:EW.DiscardPolicy.Old,retention:EW.RetentionPolicy.Limits,duplicate_window:iF6,num_replicas:1}}class fl${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 _l$($){let Z=vl$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function sF6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,dF6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function eF6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class Y71{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=tF6(),X=await v5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await EW.jetstreamManager($);try{await Q.streams.info($N),await Q.streams.update($N,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete($N),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:eF6});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=sF6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=EU$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=Pr0(H,{runId:Z}),U=performance.now()-F;if(X71().record(U),Q71().add(1,{"org.id":Q??"unknown"}),aF6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?_l$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),rF6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=Pr0(Z,{runId:$,dedup:X});if(X71().record(performance.now()-Y),Q71().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:_l$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=wU$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?EW.DeliverPolicy.New:EW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=lB($),W;try{W=await(await Q.consumers.get($N,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=_L0({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(kL0()).pipeThrough(VL0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){B(),L.close();return}let j=E;if(j.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge($N,{filter:lB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var EW,vl$,lF6=($)=>{let Z;return()=>Z??=$()},dF6,mF6=86400000000000,iF6=120000000000,pF6=4294967296,nF6=500000,oF6,rF6,aF6;var bl$=D(()=>{w4();Ar0();vL0();SL0();I6();Cl$();EW=V(rD(),1),vl$=V(Zc(),1),dF6=lF6(()=>L$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));oF6=process.env.STREAM_ENCODE_TRACE==="1",rF6=process.env.DECOPILOT_STREAM_TRACE==="1";aF6=oF6?new fl$:null});function aA0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,uW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var xl$=D(()=>{T8()});class G71{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}}async function yl$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!zC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await K6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),h$(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var gl$=D(()=>{KX();oy();w5()});function JN6($){return $ instanceof s7}function WN6($,Z){return Z-$>=YN6}class J71{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??$N6;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??XN6,X=this.options.itemIntervalMs??ZN6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} 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()-en0),gt0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-GN6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await xt0(this.taskBoard,Y,Q),await yt0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==F8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await n3(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),JN6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+QN6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),h$(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!WN6(IF(X),Date.now()))return;await _K($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===F8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await ay(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 yl$(J,Q,W))return!0;if(await YO$(J,Q))return!0;if(!Y)return!1;if(!Yo0(W))return!1;return await lD0(J,Q,{previewMatchesHead:Go0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var $N6=60000,ZN6=300000,XN6=50,QN6=60000,YN6=900000,GN6=120000;var hl$=D(()=>{Y9();ot0();CK();jt();gl$();w5();nG();ht0();WJ();pn()});import{readdir as KN6,rm as sA0}from"fs/promises";import{join as eA0}from"path";async function $T0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-HN6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Xv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await ul$($,Y,Z);else if(!Y.startsWith(".")){let G=eA0($,Y),J=await Xv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await ul$(G,K,Z)}if((await Xv(G)).length===0)await sA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function ul$($,Z,X){let Q=0,Y=eA0($,Z),G=await Xv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=eA0(Y,W),H=await Xv(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=eA0(K,N);await sA0(O,{recursive:!0,force:!0}),Q++}}if((await Xv(K)).length===0)await sA0(K,{recursive:!0,force:!0})}if((await Xv(Y)).length===0)await sA0(Y,{recursive:!0,force:!0});return Q}async function Xv($){try{return(await KN6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var HN6=30;var W71=()=>{};import{DBOS as K71,SchedulerMode as FN6}from"@dbos-inc/dbos-sdk";async function UN6(){let $=[fJ(),Qv(),zH()],Z=0;for(let X of $)try{Z+=await $T0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function ON6($,Z){await K71.runStep(()=>UN6(),{name:"monitoringRetention"})}function ll$(){if(cl$)return;cl$=!0;let $=K71.registerWorkflow(ON6,{name:"monitoringRetentionWorkflow"});K71.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:NN6,mode:FN6.ExactlyOncePerIntervalWhenActive})}var NN6="23 4 * * *",cl$=!1;var dl$=D(()=>{BY();W71()});function ml$($){return async(Z,X)=>{let Q=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","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await GJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await $t($.db,Z,Q.role);return Y.boundAuth=X51({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new Cw(X,void 0,Y.boundAuth,Q.role,"self"),_B(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var il$=D(()=>{_w();vB()});function BN6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function DN6(){return{services:BN6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function wN6(){for(let $ of LN6)$()}function pl$($){let Z=[...H71.logs,$];H71={...H71,logs:Z.length>500?Z.slice(-500):Z},wN6()}function F71(){return EN6}var H71,LN6,EN6=!1;var N71=D(()=>{H71=DN6(),LN6=new Set});import{EventEmitter as jN6}from"events";var U71;var nl$=D(()=>{N71();U71=new jN6;U71.on("request",($)=>{pl$($)})});function tl$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=Cu(U.params.name),B=U.params.arguments||{},L=Object.keys(B).map((E)=>Cu(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${G5.tool}${O}${G5.dim}(${w})${G5.reset}`}else if(U.method)G=`${G5.dim}${Cu(U.method)}${G5.reset}`}}catch{}}let W=Cu(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${G5.mcp}${Cu(F.slice(0,12))}\u2026${G5.reset}`}else if(Y==="/mcp")W=`${G5.mcp}/mcp${G5.reset}`;else if(Y==="/mcp/registry")W=`${G5.mcp}/mcp/registry${G5.reset}`;let K=PN6(Q),H=J?"\u25C0":"\u2190";if(!F71())console.log(`${G5.dim}${H}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=zN6(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!F71())console.log(`${G5.dim}${B}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""} ${U}${N}${G5.reset} ${G5.duration}${O}${G5.reset}`);U71.emit("request",{method:Q,path:Cu(Y),status:N,duration:F,timestamp:new Date})}}}var G5,zN6=($)=>{if($>=500)return G5.serverError;if($>=400)return G5.clientError;if($>=300)return G5.redirect;return G5.ok},PN6=($)=>{return G5[$]||G5.reset},Cu=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var ol$=D(()=>{N71();nl$();G5={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 el$}from"crypto";import{mkdir as AN6,readdir as TN6,rm as rl$,stat as $d$}from"fs/promises";import{join as B71,relative as RN6}from"path";import{z as A$}from"zod";function Xd$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return B71(IN6,Z)}function Qd$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function O71($,Z){let X=Xd$($),Q=Qd$(Z);return B71(X,Q)}function qN6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return el$("sha256",Y).update(G).digest("hex")}function sl$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=qN6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Qd$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Yd$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${el$("md5","etag").update(Q).digest("hex")}"`}async function Gd$($,Z,X,Q,Y){try{let G=await TN6($,{withFileTypes:!0});for(let J of G){let W=B71($,J.name),H=RN6(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Gd$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await $d$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Yd$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Jd$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:A$.object({prefix:A$.string().optional(),maxKeys:A$.number().optional().default(1000),continuationToken:A$.string().optional(),delimiter:A$.string().optional()}),outputSchema:A$.object({objects:A$.array(A$.object({key:A$.string(),size:A$.number(),lastModified:A$.string(),etag:A$.string()})),nextContinuationToken:A$.string().optional(),isTruncated:A$.boolean(),commonPrefixes:A$.array(A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Xd$(Q);await AN6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Gd$(F,F,J,K,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((w)=>w.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,L=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:A$.object({key:A$.string()}),outputSchema:A$.object({contentType:A$.string().optional(),contentLength:A$.number(),lastModified:A$.string(),etag:A$.string(),metadata:A$.record(A$.string(),A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=O71(Q,G.key),W=await $d$(J);return{contentType:m51(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Yd$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:A$.object({key:A$.string(),expiresIn:A$.number().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??al$;return{url:sl$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:A$.object({key:A$.string(),expiresIn:A$.number().optional(),contentType:A$.string().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??al$;return{url:sl$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:A$.object({key:A$.string()}),outputSchema:A$.object({success:A$.boolean(),key:A$.string()}),handler:async(Y)=>{let G=Y,J=O71(Q,G.key);try{return await rl$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:A$.object({keys:A$.array(A$.string()).max(1000)}),outputSchema:A$.object({deleted:A$.array(A$.string()),errors:A$.array(A$.object({key:A$.string(),message:A$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=O71(Q,K);try{await rl$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function D71($,Z,X){let Q=Jd$(Z,X),Y=new nW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:F5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:A$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:A$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.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 G=new XQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),DJ(Y,G,$,"mcp:dev-assets")}async function Wd$($,Z,X,Q){let G=Jd$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var IN6="./data/assets",al$=3600,Zd$,Kd$;var Hd$=D(()=>{q$();Bg();w8();Rd();hC();gX();oP0();Zd$=new F1;Zd$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return D71($.req.raw,Z,Q)});Kd$=Zd$});var Fd$={};J4(Fd$,{mountDevRoutes:()=>MN6});function MN6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return D71(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Wd$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Kd$);let X=new F1;X.use("*",LW({mountPath:"/api/dev-assets"})),X.route("/",tP0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Nd$=D(()=>{w8();y51();oP0();Hd$()});import{sql as kN6}from"kysely";import{randomUUID as Ud$}from"crypto";import{z as VN6}from"zod";async function CN6($){let Z=new Date().toISOString(),X=Ud$(),Q=C8.SELF($.organizationId),Y="registry.publish_request.created",G={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:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=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","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:Ud$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await kN6`SELECT
|
|
2868
2868
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,b as L,j as r}from"./index-DcfB6tbJ.js";import{I as A}from"./input-Qxe0VBEX.js";import{L as F}from"./label-CXO1StyQ.js";import{S as R,a as V,b as z,c as O,d as D}from"./select-CuRd38p6.js";import{T as G}from"./textarea-yERsDU06.js";import{G as J,V as M,K as X,X as $,a5 as q}from"./index-KIBbOEQ8.js";import{s as P}from"./primitives-BGyf6L7J.js";import{u as H}from"./use-autosave-DqS0_Nde.js";import"./Check-BdC7GYqE.js";import"./ChevronDown-tUIVQVex.js";import"./ChevronUp-CUXreJQo.js";import"./ArrowUp-BmRRqDOE.js";import"./chat-context-D3ERfB1P.js";import"./tab-id-zm__xZUc.js";import"./dialog-DkX6sgvT.js";import"./Copy01-CMPMXJL9.js";import"./Download01-DvVZVTdr.js";import"./session-runtime-wVXsCwcJ.js";import"./hooks-BksH8l9r.js";import"./use-mcp-client-jv5PcyVf.js";import"./constants-z9Iog-sb.js";import"./auth-BVUGku9L.js";import"./decopilot-sse-pool-R0h3HeX6.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-CAadE0s9.js";import"./use-ai-providers-C9XzhJLV.js";import"./use-decopilot-events-ClZzu3gE.js";import"./use-organization-settings-DwRcjquR.js";import"./automation-runs-DK_Bw-dD.js";import"./agent-icon-BBFaaEpE.js";import"./AlertCircle-K4c3_kh1.js";import"./Tool01-DH0zTmsa.js";import"./ArrowLeft-B9bNef-D.js";import"./Tool02-DEkErxGT.js";import"./XCircle-BSAc997L.js";import"./TrendUp01-D-nLqrZq.js";import"./ZapSquare-DSMAA7Lt.js";import"./Users03-EMQg0CSB.js";import"./UserSquare-C0l_OlK5.js";import"./CheckCircle-CHsRWcPI.js";import"./ChevronRight-BRITm73k.js";import"./ChevronSelectorVertical-COZAcJ8d.js";import"./DotsVertical-Dr4BCfRr.js";import"./Stars02-D0C68mPE.js";import"./CreditCard01-D9ghgc9X.js";import"./Settings02-CdgxCBQu.js";import"./Eye-CCjNL7hF.js";import"./FilterLines-BgqP2TkV.js";import"./Share07-H5r7YUpC.js";import"./Globe01-DHYovNU0.js";import"./Globe04-C69s6rZF.js";import"./SwitchHorizontal01-BFFDVgiR.js";import"./HardDrive-hcMIFk7s.js";import"./Key01-DgQJKQik.js";import"./LinkExternal01-CL-3s53X.js";import"./LockUnlocked01-h5WHtvDx.js";import"./LogOut01-Cj6PnKK9.js";import"./Monitor01-CnPayQYt.js";import"./Sun-C-zGcOmX.js";import"./Palette-DpOxLVys.js";import"./Play-CkgTg2xm.js";import"./Plus-AdF7-pKo.js";import"./SearchLg-CqC0Su67.js";import"./SearchMd-wLxvQ56U.js";import"./Shield01-DTf8tU74.js";import"./Stars01-aApBbyPI.js";import"./Trash01-Ch5nSdy8.js";import"./Upload01-BkgC8Gl1.js";import"./User01-CMITbClV.js";import"./Users01-B0tVmMvh.js";import"./XClose-BuS4I8B8.js";import"./Zap-D1-k2tHP.js";import"./useInfiniteQuery-CXKFbPa3.js";import"./use-infinite-scroll-PlHBiMFT.js";import"./use-connection-BlOBoiXz.js";import"./table-CBm3SZxC.js";import"./empty-state-C2Q8LZJ4.js";import"./use-members-Dm6T6jjp.js";import"./use-org-auth-client-1shqB-hs.js";import"./use-clock-tick-C98X2c9v.js";import"./use-automations-CGmrRAji.js";import"./useSuspenseInfiniteQuery-CpIFVqRs.js";import"./avatar-CY-IC3-F.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-D3x8Q_cT.js";import"./monaco-editor-DJoYJV_D.js";import"./spinner-CzicJNc9.js";import"./types-CAACZF_1.js";import"./shell-layout-BY_lVex8.js";import"./required-auth-layout-46ONr0pn.js";import"./use-org-sso-BSoECkGT.js";import"./integration-icon-BmZSnZGm.js";import"./use-navigate-to-agent-BUZPjjlL.js";import"./reusable-new-chat-CzvRy4Pe.js";import"./chart-aYqQLLx0.js";import"./index-BqvfNJzj.js";import"./form--7z_ZrL-.js";import"./file-type-icon-BOMAkmt1.js";import"./drawer-BWu3pgOZ.js";import"./collection-search-qRj2VsGw.js";import"./tabs-veBPFfBp.js";import"./toggle-group-CkUPint2.js";import"./use-commerce-diagnostic-8eBv23WW.js";import"./popover-CsbfUNbm.js";import"./self-tool-result-DswtDKOf.js";import"./alert-dialog-CRT2wJrX.js";import"./extract-connection-data-BSuDO5zy.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-CDaA_n0z.js";import"./authenticate-and-persist-oauth-DKVgZtEq.js";import"./mcp-oauth-C7FlhfGV.js";import"./track-Yev1gk31.js";import"./toolbar-6Q2R6kXZ.js";import"./github-repo-picker-meSWrYYL.js";import"./use-mcp-tools-DuN6wH71.js";import"./agent-capabilities-C4tLW0Za.js";import"./connection-card-BM1CnLH5.js";import"./use-registry-connections-CnBfk6MQ.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-7U8wJSAT.js";import"./collection-tabs-GJHGaVCX.js";import"./badge-N3sFoPqK.js";import"./command-BBbi5Bx7.js";import"./index-OTMhfH97.js";import"./select-model-r1p0EVXw.js";import"./checkbox-B_LFK7e8.js";import"./ai-providers-logos-DD3qZ33J.js";import"./cards-TJGDZj9V.js";import"./dropdown-menu-DCIKyjxp.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-t_U5b1MH.js";import"./use-file-configs-DS2-ipjR.js";import"./pt-BR-CLy76QW2.js";import"./switch-DYe5xWKm.js";import"./use-debounced-autosave-D7tnN3Gz.js";import"./search-input-PMs_PHg_.js";import"./index-DHsiVB9z.js";import"./use-secrets-BlHMFxg-.js";import"./AreaChart-GvwUbv3G.js";import"./use-task-board-items-CTlCrCP7.js";import"./sprints-D8sY2qzx.js";import"./use-tags-j5819DUL.js";import"./get-initials-D-f_fDFw.js";import"./task-key-BCHdFiOO.js";import"./automation-list-row-M4l__1fx.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-VtCJdFuC.js";const Q={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},U={authors:"sandbox.recordEditor.titleAuthor"};function Gr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=J(h);let g;t[4]!==f||t[5]!==a?(g=M(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:$(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=H(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=U[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(X,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=Q[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(q,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(D,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(G,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Gr as RecordEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-CXXCp4h3.js","assets/index-DcfB6tbJ.js","assets/index-B46eJszY.css","assets/Tool02-DEkErxGT.js","assets/CheckCircle-CHsRWcPI.js","assets/Settings02-CdgxCBQu.js","assets/use-mcp-client-jv5PcyVf.js","assets/constants-z9Iog-sb.js","assets/auth-BVUGku9L.js","assets/useInfiniteQuery-CXKFbPa3.js","assets/use-infinite-scroll-PlHBiMFT.js","assets/badge-N3sFoPqK.js","assets/input-Qxe0VBEX.js","assets/dropdown-menu-DCIKyjxp.js","assets/Check-BdC7GYqE.js","assets/ChevronRight-BRITm73k.js","assets/DotsVertical-Dr4BCfRr.js","assets/table-CBm3SZxC.js","assets/toggle-group-CkUPint2.js","assets/use-view-mode-Cz6pL9Gu.js","assets/FilterLines-BgqP2TkV.js","assets/Globe01-DHYovNU0.js","assets/SearchMd-wLxvQ56U.js","assets/dialog-DkX6sgvT.js","assets/AlertCircle-K4c3_kh1.js","assets/Download01-DvVZVTdr.js","assets/Upload01-BkgC8Gl1.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CRT2wJrX.js","assets/Trash01-Ch5nSdy8.js","assets/label-CXO1StyQ.js","assets/select-CuRd38p6.js","assets/ChevronDown-tUIVQVex.js","assets/ChevronUp-CUXreJQo.js","assets/switch-DYe5xWKm.js","assets/textarea-yERsDU06.js","assets/ArrowLeft-B9bNef-D.js","assets/XCircle-BSAc997L.js","assets/checkbox-B_LFK7e8.js","assets/Eye-CCjNL7hF.js","assets/LinkExternal01-CL-3s53X.js","assets/use-copy-D3x8Q_cT.js","assets/Copy01-CMPMXJL9.js","assets/Key01-DgQJKQik.js","assets/Plus-AdF7-pKo.js","assets/mcp-oauth-C7FlhfGV.js","assets/Play-CkgTg2xm.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as i,j as e,r as s,k as a,bc as o}from"./index-DcfB6tbJ.js";import{R as c}from"./require-capability-CAbFLnP2.js";import"./access-gate-jiwTs9Qe.js";import"./capability-load-error-DqS_NkKV.js";const n=s.lazy(()=>o(()=>import("./registry-layout-CXXCp4h3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function u(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(n,{})})}),r[0]=t):t=r[0],t}export{u as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-CXXCp4h3.js","assets/index-DcfB6tbJ.js","assets/index-B46eJszY.css","assets/Tool02-DEkErxGT.js","assets/CheckCircle-CHsRWcPI.js","assets/Settings02-CdgxCBQu.js","assets/use-mcp-client-jv5PcyVf.js","assets/constants-z9Iog-sb.js","assets/auth-BVUGku9L.js","assets/useInfiniteQuery-CXKFbPa3.js","assets/use-infinite-scroll-PlHBiMFT.js","assets/badge-N3sFoPqK.js","assets/input-Qxe0VBEX.js","assets/dropdown-menu-DCIKyjxp.js","assets/Check-BdC7GYqE.js","assets/ChevronRight-BRITm73k.js","assets/DotsVertical-Dr4BCfRr.js","assets/table-CBm3SZxC.js","assets/toggle-group-CkUPint2.js","assets/use-view-mode-Cz6pL9Gu.js","assets/FilterLines-BgqP2TkV.js","assets/Globe01-DHYovNU0.js","assets/SearchMd-wLxvQ56U.js","assets/dialog-DkX6sgvT.js","assets/AlertCircle-K4c3_kh1.js","assets/Download01-DvVZVTdr.js","assets/Upload01-BkgC8Gl1.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CRT2wJrX.js","assets/Trash01-Ch5nSdy8.js","assets/label-CXO1StyQ.js","assets/select-CuRd38p6.js","assets/ChevronDown-tUIVQVex.js","assets/ChevronUp-CUXreJQo.js","assets/switch-DYe5xWKm.js","assets/textarea-yERsDU06.js","assets/ArrowLeft-B9bNef-D.js","assets/XCircle-BSAc997L.js","assets/checkbox-B_LFK7e8.js","assets/Eye-CCjNL7hF.js","assets/LinkExternal01-CL-3s53X.js","assets/use-copy-D3x8Q_cT.js","assets/Copy01-CMPMXJL9.js","assets/Key01-DgQJKQik.js","assets/Plus-AdF7-pKo.js","assets/mcp-oauth-C7FlhfGV.js","assets/Play-CkgTg2xm.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c,d as n,f as m,j as t,k as f,r as l,bc as p}from"./index-DcfB6tbJ.js";import{R as u}from"./require-capability-CAbFLnP2.js";import"./access-gate-jiwTs9Qe.js";import"./capability-load-error-DqS_NkKV.js";const g=l.lazy(()=>p(()=>import("./registry-layout-CXXCp4h3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function h(){const e=c.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=m(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{h as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./use-infinite-scroll-PlHBiMFT.js";import{eR as i}from"./index-DcfB6tbJ.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./use-infinite-scroll-PlHBiMFT.js";import{eR as u,bD as n}from"./index-DcfB6tbJ.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};
|