decocms 4.220.8 → 4.220.9
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-DD8w89fy.js → AlertCircle-B39I-6Yy.js} +1 -1
- package/dist/client/assets/{AreaChart-TjG9DCTi.js → AreaChart-Bxc3_zOt.js} +1 -1
- package/dist/client/assets/{ArrowLeft-Bel9Y6iT.js → ArrowLeft-B6R03xtd.js} +1 -1
- package/dist/client/assets/{ArrowUp-DqZp6_S-.js → ArrowUp-CtuE2Qly.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-C-k1tiE0.js → ArrowUpRight-Bvr2krtJ.js} +1 -1
- package/dist/client/assets/{Check-DF1PVTXs.js → Check-nhEX_r5G.js} +1 -1
- package/dist/client/assets/{CheckCircle-BWgJ458b.js → CheckCircle-CWAvibZ5.js} +1 -1
- package/dist/client/assets/{ChevronDown-DgG2RDRW.js → ChevronDown-JreoVH42.js} +1 -1
- package/dist/client/assets/{ChevronRight-Dqv4SVtL.js → ChevronRight-B6Q8bwqI.js} +1 -1
- package/dist/client/assets/{ChevronUp-Df_qpxcd.js → ChevronUp-DyTc_n9X.js} +1 -1
- package/dist/client/assets/{Copy01-D9JtSymR.js → Copy01-DZsaq40a.js} +1 -1
- package/dist/client/assets/{CpuChip01-CwzTD8pc.js → CpuChip01-B6K1ML67.js} +1 -1
- package/dist/client/assets/{CreditCard01-DjNzhbYo.js → CreditCard01-eFVk7Sc0.js} +1 -1
- package/dist/client/assets/{DotsVertical-D-dT2T8F.js → DotsVertical-UFebPt1U.js} +1 -1
- package/dist/client/assets/{Eye-Dx8LQCoI.js → Eye-D-pF0Xef.js} +1 -1
- package/dist/client/assets/{FilterLines-DZcr0gYT.js → FilterLines-pxiZ7CMr.js} +1 -1
- package/dist/client/assets/{Globe01-cD-B9fh9.js → Globe01-C2rKwYk7.js} +1 -1
- package/dist/client/assets/{Globe04-BYOwMQCe.js → Globe04-DoS_GAOb.js} +1 -1
- package/dist/client/assets/{HardDrive-BtnjE_nh.js → HardDrive-CiZmm2Wc.js} +1 -1
- package/dist/client/assets/{Key01-oaDlOuWq.js → Key01-D2VNV5vQ.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DE0hZkrD.js → LayoutLeft-B8iZ0sZd.js} +1 -1
- package/dist/client/assets/{LinkExternal01-B3IOD7AL.js → LinkExternal01-GrnnsRUA.js} +1 -1
- package/dist/client/assets/{LogOut01-DXjMZ4o_.js → LogOut01-Qn2bYihj.js} +1 -1
- package/dist/client/assets/{Monitor01-CM8QflpD.js → Monitor01-DRdqLYjx.js} +1 -1
- package/dist/client/assets/{Palette-CDEq2n1o.js → Palette-D-2C5MQv.js} +1 -1
- package/dist/client/assets/{Play-DB0OT2JG.js → Play-BAAi29px.js} +1 -1
- package/dist/client/assets/{Plus-DH37BwlK.js → Plus-BbvCL3XU.js} +1 -1
- package/dist/client/assets/{SearchLg-D8JLDRQu.js → SearchLg-CaPTVOs_.js} +1 -1
- package/dist/client/assets/{SearchMd-j1Zqyycw.js → SearchMd-B52F186C.js} +1 -1
- package/dist/client/assets/{Settings02-Bh6Q8l1L.js → Settings02-CZb-5eqV.js} +1 -1
- package/dist/client/assets/{Share07-Bs7v9lL0.js → Share07-DKQEXkzY.js} +1 -1
- package/dist/client/assets/{Shield01-DaCpKbh6.js → Shield01-ltIBhFDY.js} +1 -1
- package/dist/client/assets/{Star01-DAjPJW6d.js → Star01-BzvLDGDM.js} +1 -1
- package/dist/client/assets/{Stars01-CVuFKB7q.js → Stars01-BkSObTJ7.js} +1 -1
- package/dist/client/assets/{Stars02-CpZd2lF-.js → Stars02-DDJqK-e7.js} +1 -1
- package/dist/client/assets/{Sun-DmLhVGbl.js → Sun-l4LWXrF1.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-D00PadAw.js → SwitchHorizontal01-Bg4WJYE3.js} +1 -1
- package/dist/client/assets/{Tool01-BbTB92On.js → Tool01-BxldP0GG.js} +1 -1
- package/dist/client/assets/{Tool02-DTILKJvk.js → Tool02-CXLm4hwF.js} +1 -1
- package/dist/client/assets/{Trash01-TLVRATwC.js → Trash01-CEcFwS22.js} +1 -1
- package/dist/client/assets/{TrendUp01-DgP-eGtu.js → TrendUp01-DwLb0ECa.js} +1 -1
- package/dist/client/assets/{Upload01-Cday2CXI.js → Upload01-BupYATGD.js} +1 -1
- package/dist/client/assets/{User01-nXJ18YRv.js → User01-G-MNoyqR.js} +1 -1
- package/dist/client/assets/{Users01-C1-w8May.js → Users01-CH10vbPC.js} +1 -1
- package/dist/client/assets/{Users03-5YKMpPfK.js → Users03-BW-8zJRh.js} +1 -1
- package/dist/client/assets/{X-CBMy7yKc.js → X-uy4uijj7.js} +1 -1
- package/dist/client/assets/{XCircle-oMG2V9aD.js → XCircle-B9S4YfYE.js} +1 -1
- package/dist/client/assets/{XClose-Doo5J85X.js → XClose-DAkoaj2N.js} +1 -1
- package/dist/client/assets/{YAxis-B68pTw0E.js → YAxis-CRRh3x1_.js} +1 -1
- package/dist/client/assets/{Zap-CdRWHrBL.js → Zap-v39IJMMQ.js} +1 -1
- package/dist/client/assets/{ZapSquare-BCBwgTVN.js → ZapSquare-yxa3uaNu.js} +1 -1
- package/dist/client/assets/{access-gate-BGmBp7wD.js → access-gate-X_z3-nKl.js} +1 -1
- package/dist/client/assets/{agent-icon-DcT2z6bS.js → agent-icon-I9-gtCnN.js} +1 -1
- package/dist/client/assets/{agents-list-DVljN_2W.js → agents-list-CzIUB20P.js} +1 -1
- package/dist/client/assets/{ai-providers-O3IwXDle.js → ai-providers-BYdUC-M-.js} +1 -1
- package/dist/client/assets/{alert-CSj2BccJ.js → alert-CLLI0Ytt.js} +1 -1
- package/dist/client/assets/{alert-dialog-DfkZLz7B.js → alert-dialog-DJVGipr8.js} +1 -1
- package/dist/client/assets/{api-keys-CcBrzHk-.js → api-keys-Ccvns7q3.js} +1 -1
- package/dist/client/assets/{app-editor-amyh84RQ.js → app-editor-C8jUMbis.js} +1 -1
- package/dist/client/assets/{auth-Crca_YJ1.js → auth-DSC4Kuxw.js} +1 -1
- package/dist/client/assets/{auth-catchall-Df8itIG8.js → auth-catchall-DSRhRpCW.js} +1 -1
- package/dist/client/assets/{auth-entry-DXdrT-1S.js → auth-entry-rQE7t9qE.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B3Oii0Iq.js → auth-split-layout-BTV2jike.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CQWeKOnw.js → authenticate-and-persist-oauth-DeW1oU3s.js} +1 -1
- package/dist/client/assets/{automation-list-row-pI6MVX-P.js → automation-list-row-CRSJR-pC.js} +1 -1
- package/dist/client/assets/{automation-runs-DkQundm9.js → automation-runs-CBrgJ5Ud.js} +1 -1
- package/dist/client/assets/{automations-B4OcQoc0.js → automations-DRagtOpG.js} +1 -1
- package/dist/client/assets/{avatar-KsRe27SW.js → avatar-C2jGYkv2.js} +1 -1
- package/dist/client/assets/{badge-9kWYVRiU.js → badge-DVIk4UJm.js} +1 -1
- package/dist/client/assets/{billing-CWfH7OQ-.js → billing-D6unyCX5.js} +1 -1
- package/dist/client/assets/{block-document-Cd2sIVv_.js → block-document-7o5nEk8l.js} +1 -1
- package/dist/client/assets/{brand-context-BdNMi2UO.js → brand-context-DStqmKl5.js} +1 -1
- package/dist/client/assets/{buckets-EBo17n4k.js → buckets-nDvnAKYn.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-Dr9JVikE.js → bulk-category-panel-5hg8fKeM.js} +1 -1
- package/dist/client/assets/{capability-load-error-lWIHy0ES.js → capability-load-error-B8GzklKa.js} +1 -1
- package/dist/client/assets/{card-5d_tJKgB.js → card-cDcBdqOE.js} +1 -1
- package/dist/client/assets/{cards-BaIF1f52.js → cards-DlAELERp.js} +1 -1
- package/dist/client/assets/{category-editor-pbtMIKi7.js → category-editor-Bliicdfc.js} +1 -1
- package/dist/client/assets/{chart-D3uZlfzD.js → chart-D2I4ilJl.js} +1 -1
- package/dist/client/assets/{chat-context-C9H5kwmd.js → chat-context-C5LE1tMD.js} +1 -1
- package/dist/client/assets/{checkbox-DBOgILkS.js → checkbox-olsTKT9T.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DgiYHn8A.js → cli-auth-success-BGz8Iygv.js} +1 -1
- package/dist/client/assets/{collection-detail-CCq_Lb5q.js → collection-detail-DlOCoeD5.js} +1 -1
- package/dist/client/assets/{collection-display-button-9wuyMT9U.js → collection-display-button-ChqKel9j.js} +1 -1
- package/dist/client/assets/{collection-search-IbqMvte9.js → collection-search-BIj__Saj.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BwFEnj20.js → collection-table-wrapper-CBr43YBp.js} +1 -1
- package/dist/client/assets/{collection-tabs-BiqInTX3.js → collection-tabs-r8BaiM7B.js} +1 -1
- package/dist/client/assets/{command-C4N36Pab.js → command-D9wn1Afx.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-BnQqYHjG.js → commerce-onboarding-BfhRMkT_.js} +1 -1
- package/dist/client/assets/{connect-B24IbEZG.js → connect-D4sQ-YYc.js} +1 -1
- package/dist/client/assets/{connection-DtiBCvZG.js → connection-CU9ozf5I.js} +1 -1
- package/dist/client/assets/{connection-card-CcOrVsKj.js → connection-card-BzN2mo_u.js} +1 -1
- package/dist/client/assets/{connection-detail-D88iAi_Y.js → connection-detail-DlaGC_qc.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-0jLf5-JS.js → connection-form-helpers-3IIqh-GW.js} +1 -1
- package/dist/client/assets/{connections-CRbBAUM-.js → connections-BbZbCoYz.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-CZlrNInL.js → decopilot-sse-pool-C41cR6gs.js} +1 -1
- package/dist/client/assets/{dialog-DvA2Eg_5.js → dialog-DeZu5Cmv.js} +1 -1
- package/dist/client/assets/{domain-settings-Bmg4YNNe.js → domain-settings-BmIQFw3u.js} +1 -1
- package/dist/client/assets/{drawer-Drkw-46F.js → drawer-CQPwPgc_.js} +1 -1
- package/dist/client/assets/{dropdown-menu-VwoCInhU.js → dropdown-menu-BcNpvxnO.js} +1 -1
- package/dist/client/assets/{empty-state-BiRKOvuR.js → empty-state-CBbffyXV.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CUJo5ZDK.js → extract-connection-data-B12hWnSU.js} +1 -1
- package/dist/client/assets/{file-explorer-A93Y3vdI.js → file-explorer-D40APAGL.js} +1 -1
- package/dist/client/assets/{file-type-icon-BZrJ7upE.js → file-type-icon-CQK-vTjk.js} +1 -1
- package/dist/client/assets/{form-CIZp1ki1.js → form-By5wD5n3.js} +1 -1
- package/dist/client/assets/{general-BU4lD4wx.js → general-SNYsPM7s.js} +1 -1
- package/dist/client/assets/{github-repo-picker-33OCy2_V.js → github-repo-picker-BZaj7JFv.js} +1 -1
- package/dist/client/assets/{hooks-Dw_OSmvW.js → hooks-CWdiDs_u.js} +1 -1
- package/dist/client/assets/{index-DKNn0dL0.js → index-1GBSsx_p.js} +1 -1
- package/dist/client/assets/{index-C67rJewW.js → index-4jr2fYBg.js} +1 -1
- package/dist/client/assets/{index-BdptdCOM.js → index-BTA2nrqK.js} +1 -1
- package/dist/client/assets/{index-Cq46oOIG.js → index-BVXAXt0B.js} +1 -1
- package/dist/client/assets/{index-CP0-934_.js → index-CElzJv1m.js} +3 -3
- package/dist/client/assets/{index-D9vbkVSL.js → index-CsF8HfvO.js} +1 -1
- package/dist/client/assets/{index-Dbail80J.js → index-Dk3SEK2j.js} +1 -1
- package/dist/client/assets/{index-Cbf4nIcl.js → index-Dn_zlHB1.js} +4 -4
- package/dist/client/assets/{index-DNbjrR11.js → index-_1SJSnQU.js} +1 -1
- package/dist/client/assets/{index-Cu8OAqu4.js → index-lhrSZEfi.js} +1 -1
- package/dist/client/assets/{index-redirect-F_WAhIiX.js → index-redirect-zdRlZmI8.js} +1 -1
- package/dist/client/assets/{infra-billing-ohg5OgM2.js → infra-billing-C-4b-kgs.js} +1 -1
- package/dist/client/assets/{input-C5ZlIxB4.js → input-C9o7nUB1.js} +1 -1
- package/dist/client/assets/{integration-icon-RigdZ0y9.js → integration-icon-2sESCs--.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DpG6z9CT.js → invite-member-dialog-CYkWIGrx.js} +1 -1
- package/dist/client/assets/{label-DpRm0AEI.js → label-ByNprOJY.js} +1 -1
- package/dist/client/assets/{layout-Cdi60T29.js → layout-Dc45rY_r.js} +1 -1
- package/dist/client/assets/{login-DVa8cZhy.js → login-DbYQum83.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BwJihd3U.js → mcp-oauth-C6-s6gqZ.js} +1 -1
- package/dist/client/assets/{members-B2_9zQ96.js → members-BpmncJdk.js} +1 -1
- package/dist/client/assets/{monaco-editor-DWZCxLJD.js → monaco-editor-WpmdbSeA.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BkW_myGC.js → monitoring-stats-row-7y5ua1B0.js} +1 -1
- package/dist/client/assets/{multi-select-BMTkLfNo.js → multi-select-DJ70gjpp.js} +1 -1
- package/dist/client/assets/{oauth-callback-br_icINV.js → oauth-callback-B_P-80Ma.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CkD2CPlG.js → oauth-callback-ai-provider-6qhSUOaU.js} +1 -1
- package/dist/client/assets/{onboarding-DuPYhISX.js → onboarding-CTBdJhX6.js} +1 -1
- package/dist/client/assets/{org-layout-DO5mCJ31.js → org-layout-DhfPQFrx.js} +1 -1
- package/dist/client/assets/{organization-choice-DIEAPdv1.js → organization-choice-DUPcpSbg.js} +1 -1
- package/dist/client/assets/{orgs-icEDN4mZ.js → orgs-pOnlGNnK.js} +1 -1
- package/dist/client/assets/{page-seo-form-CafHt-t_.js → page-seo-form-CdaNWm_-.js} +1 -1
- package/dist/client/assets/{popover-C7sozdhj.js → popover-C9zHqEPn.js} +1 -1
- package/dist/client/assets/{post-editor-GqTlN74_.js → post-editor-jLxtR92x.js} +1 -1
- package/dist/client/assets/{primitives-BOi39jqZ.js → primitives-BYuJOicJ.js} +1 -1
- package/dist/client/assets/{profile-Nnh25qlv.js → profile-BksDt1jr.js} +1 -1
- package/dist/client/assets/{project-app-view-BqKUanXS.js → project-app-view-BsZ-tb61.js} +1 -1
- package/dist/client/assets/record-editor-DzimUtVc.js +1 -0
- package/dist/client/assets/redirect-editor-C2fUkNtQ.js +1 -0
- package/dist/client/assets/registry-Cb1SQVBU.js +2 -0
- package/dist/client/assets/{registry-layout-Aid8mCZz.js → registry-layout-CC3p9Oc0.js} +1 -1
- package/dist/client/assets/{reports-DcRQH3ZU.js → reports-C5ReAgiZ.js} +1 -1
- package/dist/client/assets/{require-capability-BYTH9X3y.js → require-capability-CTEWJvcg.js} +1 -1
- package/dist/client/assets/{required-auth-layout-zU3iebij.js → required-auth-layout-BvUQ7OvT.js} +1 -1
- package/dist/client/assets/{reset-password-CBaBu9It.js → reset-password-yl0TsCGU.js} +1 -1
- package/dist/client/assets/{roles-C690TM4R.js → roles-Cdqwlv1k.js} +1 -1
- package/dist/client/assets/{search-input-D5OVMJX7.js → search-input-DvsgzoRO.js} +1 -1
- package/dist/client/assets/{secrets-CzTRVqBj.js → secrets-dOpn4WDS.js} +1 -1
- package/dist/client/assets/{sections-editor-CVZDX0y2.js → sections-editor-WVhmcLYl.js} +1 -1
- package/dist/client/assets/{select-BccNb2Fl.js → select-CAJAXk_R.js} +1 -1
- package/dist/client/assets/{select-model-DklSmgMd.js → select-model-BnFTmPCE.js} +1 -1
- package/dist/client/assets/{self-tool-result-B25eY6s_.js → self-tool-result-Bq2yH3pb.js} +1 -1
- package/dist/client/assets/{seo-editor-DS6-Vtnx.js → seo-editor-BqguhWqq.js} +1 -1
- package/dist/client/assets/{settings-layout-CanLhHm8.js → settings-layout-CEDo6_6x.js} +1 -1
- package/dist/client/assets/{settings-section-CY2PnN3M.js → settings-section-DVcxoFH_.js} +1 -1
- package/dist/client/assets/{shell-controls-Cyo2soFH.js → shell-controls-COG6eXBS.js} +1 -1
- package/dist/client/assets/{shell-layout-Dh06HRFX.js → shell-layout-CUGshooS.js} +1 -1
- package/dist/client/assets/{sidebar-BTUskRYR.js → sidebar-BfSKpvgc.js} +1 -1
- package/dist/client/assets/{skeleton-NTxYvVQG.js → skeleton-CVQH4kdj.js} +1 -1
- package/dist/client/assets/{spinner-amMiVFDC.js → spinner-CvWYMzXL.js} +1 -1
- package/dist/client/assets/{sso-Bz_cDFak.js → sso-C8F_aOIY.js} +1 -1
- package/dist/client/assets/{store-DRB1FxJM.js → store-E5JVeVhP.js} +1 -1
- package/dist/client/assets/store-registry-C1oTnUy9.js +2 -0
- package/dist/client/assets/{studio-tools-BgcmoF5i.js → studio-tools-FBp1YPxH.js} +1 -1
- package/dist/client/assets/{switch-Cuv-3ygS.js → switch-BcLZWeKc.js} +1 -1
- package/dist/client/assets/{synced-repos-BOiHlYgJ.js → synced-repos-D5KSh3pY.js} +1 -1
- package/dist/client/assets/{tab-id-Bl2tCDAa.js → tab-id-DK9Lk5p9.js} +1 -1
- package/dist/client/assets/{table-B00otXt0.js → table-CRMlz_7U.js} +1 -1
- package/dist/client/assets/{tabs-DoWsjRo9.js → tabs-CNVn_6iU.js} +1 -1
- package/dist/client/assets/{textarea-jCuJi0tv.js → textarea-BTl-pm_R.js} +1 -1
- package/dist/client/assets/{toggle-group-BPHNRdro.js → toggle-group-Rg4F7MNP.js} +1 -1
- package/dist/client/assets/{toolbar-DMG3Ci9K.js → toolbar-SVIx86AE.js} +1 -1
- package/dist/client/assets/{tooltip-CyhFIdTH.js → tooltip-CG_t9dzZ.js} +1 -1
- package/dist/client/assets/{track-BpcaufC5.js → track-JewuoQIt.js} +1 -1
- package/dist/client/assets/{types-CCN2pdDh.js → types-B4M6COcS.js} +1 -1
- package/dist/client/assets/{use-ai-providers-y5_7opa-.js → use-ai-providers-BLChBu3v.js} +1 -1
- package/dist/client/assets/{use-api-keys-DEHie8x2.js → use-api-keys-DAigxlo0.js} +1 -1
- package/dist/client/assets/{use-automations-DeV5tuw5.js → use-automations-CphsMvDu.js} +1 -1
- package/dist/client/assets/{use-autosave-BFgr8dlP.js → use-autosave-OZNZDARN.js} +1 -1
- package/dist/client/assets/{use-capability-Dn8wmkDt.js → use-capability-CjAs4HVf.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CBJMfDpK.js → use-clock-tick-mYiaifeO.js} +1 -1
- package/dist/client/assets/{use-connection-C6ZZZP8B.js → use-connection-COjx7LIh.js} +1 -1
- package/dist/client/assets/{use-copy-C2sZcuR4.js → use-copy-jq5B09ID.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BWtbV5Pa.js → use-create-virtual-mcp-lSlCuLKo.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DM62ht1I.js → use-debounced-autosave-HANeovz3.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BHxgxJe7.js → use-debounced-value-DuxbVEDu.js} +1 -1
- package/dist/client/assets/{use-deco-credits-pxzEgMM9.js → use-deco-credits-xs6CrCEp.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BumpA-kh.js → use-decopilot-events-dVF4FNyC.js} +1 -1
- package/dist/client/assets/{use-delete-connection-NEhxkWdC.js → use-delete-connection-B1SjKPA2.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DUeJdwRW.js → use-deployment-admin-c5yCHWND.js} +1 -1
- package/dist/client/assets/{use-file-configs-DrU8Kpk-.js → use-file-configs-H_haXM4F.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-ByMzcADb.js → use-infinite-scroll-Bpb0Vzrz.js} +1 -1
- package/dist/client/assets/{use-infra-billing-B5d8Pn7d.js → use-infra-billing-D-bofD0r.js} +1 -1
- package/dist/client/assets/{use-join-requests-CbKj0yzi.js → use-join-requests-B6_v48w5.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CxYgn3Qy.js → use-mcp-client-DG3RgU7p.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-Bqc1QME3.js → use-mcp-tools-gyrgRg7d.js} +1 -1
- package/dist/client/assets/{use-members-CQQ15SUZ.js → use-members-BJNNyGL0.js} +1 -1
- package/dist/client/assets/{use-mobile-BIOgiIHU.js → use-mobile-BVUlru_F.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BU1Lvdsm.js → use-navigate-to-agent-CN8QySYm.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-DJkoGWXI.js → use-open-billing-url-CNpjf1m0.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-56rN_jbc.js → use-org-auth-client-B9n9g9Jj.js} +1 -1
- package/dist/client/assets/{use-org-sso-Bi00q74R.js → use-org-sso-KbxZrOH-.js} +1 -1
- package/dist/client/assets/{use-organization-roles-nqNdUMMM.js → use-organization-roles-DAZZKscs.js} +1 -1
- package/dist/client/assets/{use-organization-settings-Chah6Wq8.js → use-organization-settings-CX0UR1aW.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BYotgCMq.js → use-registry-connections-NVNDMl0T.js} +1 -1
- package/dist/client/assets/{use-secrets-DBBF6G0l.js → use-secrets-C4lqTczM.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CEb1mjwv.js → use-section-preview-base-DdfxqX4J.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CMKLcezx.js → use-status-sounds-D796cxye.js} +1 -1
- package/dist/client/assets/{use-tags-BGSiL5Zq.js → use-tags-tS5kNlCa.js} +1 -1
- package/dist/client/assets/{use-view-mode-vOz9lGdI.js → use-view-mode-eMaeIkeG.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BMSi6Cid.js → use-virtual-mcp-CldGCICW.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DBk_7MI2.js +1 -0
- package/dist/client/assets/{useRouterState-B1LL0Soc.js → useRouterState-CdPiexDo.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-AWW6fKtZ.js +1 -0
- package/dist/client/assets/{users-CNBnT1Va.js → users-aUj-aiMG.js} +1 -1
- package/dist/client/assets/{variant-calendar-o0i2ENwm.js → variant-calendar-CSHWd4-Y.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-HBGiPNM4.js → view-mode-toggle-5FwBHIOw.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-FRT1bstc.js +0 -1
- package/dist/client/assets/redirect-editor-BiENTJgC.js +0 -1
- package/dist/client/assets/registry-DrSJNV3_.js +0 -2
- package/dist/client/assets/store-registry-CpsoWikP.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DKythQje.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DbMQh74D.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -2752,7 +2752,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
|
|
|
2752
2752
|
When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
|
|
2753
2753
|
|
|
2754
2754
|
Respond with the structured verdict and a short reason.`,tb$;var rb$=w(()=>{C4();ZB();F51();P76=N51.object({requiresReview:N51.boolean().describe("true if the changes should go through pull-request review"),reason:N51.string().describe("One short sentence explaining the decision (max ~120 chars)")});tb$={requiresReview:!1,reason:""}});function ab$($){let Z=$?.trim();if(!Z)return null;try{let X=new URL(Z);if(X.protocol!=="http:"&&X.protocol!=="https:")return null;return X.href}catch{return null}}function hz0($){return ab$($?.previewServerUrl)??ab$($?.productionUrl)}function sb$(){return process.env.GITHUB_API_BASE_URL??"https://api.github.com"}function eb$($,Z){return $==="GET"&&!Z.includes("/git/blobs/")&&!Z.includes("/git/trees/")&&!Z.includes("/tarball/")}function $x$($){let Z=zh.get($);if(!Z)return;zh.delete($),U51-=Z.bytes}function M76($,Z,X){let Q;try{Q=JSON.stringify(X)?.length??0}catch{return}if($x$($),Q>q76)return;zh.set($,{etag:Z,body:X,bytes:Q}),U51+=Q;while(U51>I76||zh.size>R76){let Y=zh.keys().next().value;if(Y===void 0)break;$x$(Y)}}function Zx$($){let{owner:Z,repo:X,accessToken:Q}=$,Y=`/repos/${Z}/${X}`,G=null;async function J(W,K,H,F){let N=`${sb$()}${K}`,U=eb$(W,K)?zh.get(N):void 0,O=await fetch(N,{method:W,headers:{Accept:"application/vnd.github+json","User-Agent":"studio-decofile",Authorization:`token ${Q}`,...U?{"If-None-Match":U.etag}:{},...H!==void 0?{"content-type":"application/json"}:{}},body:H!==void 0?JSON.stringify(H):void 0,signal:AbortSignal.timeout(15000)});if(U&&O.status===304)return{status:200,json:U.body};if(!O.ok&&!F?.allow?.includes(O.status)){let D=await O.text().catch(()=>""),L=D;try{L=JSON.parse(D).message??D}catch{}throw new C6(O.status,W,K,L)}let B=O.status===204?void 0:await O.json();if(O.status===200&&eb$(W,K)){let D=O.headers.get("etag");if(D)M76(N,D,B)}return{status:O.status,json:B}}return{owner:Z,repo:X,async getDefaultBranch(){if(G)return G;let{json:W}=await J("GET",Y);return G=W.default_branch,G},async getHeadSha(W){let{json:K}=await J("GET",`${Y}/git/ref/heads/${J_(W)}`);return K.object.sha},async getTarballStream(W){let K=`${Y}/tarball/${J_(W)}`,H=await fetch(`${sb$()}${K}`,{headers:{"User-Agent":"studio-decofile",Authorization:`token ${Q}`},signal:AbortSignal.timeout(60000)});if(!H.ok){let F=await H.text().catch(()=>"");throw new C6(H.status,"GET",K,F.slice(0,300))}if(!H.body)throw new C6(502,"GET",K,"tarball had no body");return H.body},async getCommitTreeSha(W){let{json:K}=await J("GET",`${Y}/git/commits/${W}`);return K.tree.sha},async getTreeRecursive(W){let{json:K}=await J("GET",`${Y}/git/trees/${W}?recursive=1`);if(K.truncated)throw new C6(502,"GET",`${Y}/git/trees/${W}`,"tree listing truncated by GitHub; repo too large for recursive read");return K.tree},async getBlobText(W){let{json:K}=await J("GET",`${Y}/git/blobs/${W}`);if(K.encoding!=="base64")throw new C6(502,"GET",`${Y}/git/blobs/${W}`,`unexpected blob encoding ${K.encoding}`);return Buffer.from(K.content,"base64").toString("utf-8")},async createBlob(W){let{json:K}=await J("POST",`${Y}/git/blobs`,{content:W,encoding:"utf-8"});return K.sha},async createTree(W,K){let{json:H}=await J("POST",`${Y}/git/trees`,{base_tree:W,tree:K});return H.sha},async createCommit({message:W,treeSha:K,parentShas:H}){let{json:F}=await J("POST",`${Y}/git/commits`,{message:W,tree:K,parents:H});return F.sha},async updateRef(W,K){await J("PATCH",`${Y}/git/refs/heads/${J_(W)}`,{sha:K,force:!1})},async createRef(W,K){await J("POST",`${Y}/git/refs`,{ref:`refs/heads/${W}`,sha:K})},async mergeBranch(W,K,H){let{status:F,json:N}=await J("POST",`${Y}/merges`,{base:W,head:K,commit_message:H},{allow:[204]});return F===204?null:N?.sha??null},async createPullRequest({base:W,head:K,title:H}){let{json:F}=await J("POST",`${Y}/pulls`,{base:W,head:K,title:H});return{number:F.number,html_url:F.html_url}},async findOpenPullRequest(W,K){let{json:H}=await J("GET",`${Y}/pulls?state=open&base=${encodeURIComponent(W)}&head=${encodeURIComponent(`${Z}:${K}`)}`),F=H[0];return F?{number:F.number,html_url:F.html_url}:null},async compare(W,K){let{json:H}=await J("GET",`${Y}/compare/${J_(W)}...${J_(K)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by}},async compareDetailed(W,K){let{json:H}=await J("GET",`${Y}/compare/${J_(W)}...${J_(K)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by,mergeBaseSha:H.merge_base_commit.sha,files:(H.files??[]).map((F)=>({filename:F.filename,status:F.status,sha:F.sha,...F.previous_filename?{previousFilename:F.previous_filename}:{}}))}}}}function J_($){return $.split("/").map(encodeURIComponent).join("/")}var R76=512,I76=8388608,q76=262144,zh,U51=0,C6;var W_=w(()=>{zh=new Map;C6=class C6 extends Error{status;method;path;constructor($,Z,X,Q){super(`GitHub ${Z} ${X} failed (${$}): ${Q}`);this.status=$;this.method=Z;this.path=X;this.name="GitHubApiError"}}});async function uz0($,Z,X){if(!X.connectionId)throw new C6(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Q=await $.storage.connections.findById(X.connectionId,Z);if(!Q)throw new C6(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Y=await k76($,Q);if(!Y)throw new C6(401,"AUTH","connection",CZ);return Zx$({owner:X.owner,repo:X.name,accessToken:Y})}async function k76($,Z){if(A5(Z)?.sourceConnectionId)return Px($,Z);return(await fY({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new q6($.db,$.vault)})).accessToken}var O51=w(()=>{jQ();P90();XK();qY();W_()});function S76($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;if(Z!==$&&Z.includes("/")){let X=($.match(/\//g)??[]).length;if((Z.match(/\//g)??[]).length>X)return!0}return!1}catch{return!0}}function cz0($){if(S76($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function Rr($){let Z=$;for(;;){let X;try{X=decodeURIComponent(Z)}catch{return Z}if(X===Z)return Z;Z=X}}function B51($){return cz0($),encodeURIComponent($)}function Ir($){let Z=[...$].sort((Y,G)=>{let J=`${Y.stem}.json`,W=`${G.stem}.json`;return J<W?-1:J>W?1:0}),X="{",Q=!0;for(let Y of Z){let G=Y.content.trim();if(G.length===0)continue;if(!Q)X+=",";Q=!1,X+=`${JSON.stringify(Rr(Y.stem))}:${G}`}return`${X}}`}var Xx$=()=>{};var lz0=w(()=>{Xx$()});function V76($){return $.startsWith("merged/")?"merged":"blobs"}function w51($,Z){let X=new Map;for(let G of $){let J=X.get(G.path);if(!J||G.mtimeMs>=J.mtimeMs)X.set(G.path,{bytes:G.bytes,mtimeMs:G.mtimeMs})}let Q=[...X.entries()].sort((G,J)=>G[1].mtimeMs-J[1].mtimeMs),Y={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[G,{bytes:J}]of Q){let W=V76(G);Y.entries.set(G,{bytes:J,area:W}),Y.totalBytes+=J,Y.areaBytes[W]+=J}return Y}function Qx$($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.entries.set(Z,X)}function Ph($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.totalBytes-=X.bytes,$.areaBytes[X.area]-=X.bytes}function Yx$($,Z){let{path:X,bytes:Q,area:Y}=Z,{config:G}=$;if(!Number.isFinite(Q)||Q<0||Q>G.maxEntryBytes[Y]||Q>G.maxTotalBytes||Y==="merged"&&Q>G.maxMergedBytes)return{admitted:!1,evict:[]};let W=$.entries.get(X),K=$.totalBytes-(W?.bytes??0),H=$.areaBytes.merged-(W?.area==="merged"?W.bytes:0),F=[],N=new Set;if(Y==="merged")for(let[U,O]of $.entries){if(H+Q<=G.maxMergedBytes)break;if(U===X||O.area!=="merged")continue;F.push(U),N.add(U),H-=O.bytes,K-=O.bytes}for(let[U,O]of $.entries){if(K+Q<=G.maxTotalBytes)break;if(U===X||N.has(U))continue;F.push(U),N.add(U),K-=O.bytes}for(let U of F)Ph($,U);return Ph($,X),$.entries.set(X,{bytes:Q,area:Y}),$.totalBytes+=Q,$.areaBytes[Y]+=Q,{admitted:!0,evict:F}}function qr($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),X="";for(let Q of new TextEncoder().encode(Z)){let Y=String.fromCharCode(Q);X+=/[a-z0-9._-]/.test(Y)?Y:`%${Q.toString(16).padStart(2,"0")}`}if(X==="."||X==="..")X=X.replaceAll(".","%2e");return X}function D51($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as Fx$}from"crypto";import{mkdir as Mr,readdir as C76,readFile as _76,rename as v76,rm as Nx$,stat as Ux$,statfs as f76,unlink as b76,writeFile as x76}from"fs/promises";import{tmpdir as y76}from"os";import{dirname as g76,join as T7}from"path";function Ah($,Z){let X=Bun.env[$];if(X===void 0||X==="")return Z;let Q=Number(X);return Number.isFinite(Q)&&Q>=0?Math.floor(Q):Z}function c76(){if(dz0)return dz0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?T7(y76(),"studio-fast-preview-cache"):$;return dz0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Ah("FAST_PREVIEW_CACHE_MAX_BYTES",2*Gx$),maxMergedBytes:Ah("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*mz0),maxEntryBytes:{blobs:Ah("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",mz0),merged:Ah("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*mz0)}},freeFloorBytes:Ah("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",Gx$),sweepIntervalMs:Ah("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},dz0}function l76(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function d76(){if(Ww)return;Ww={hits:S$.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:S$.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:S$.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:S$.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:S$.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},S$.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!Th)return;$.observe(Th.index.areaBytes.blobs,{area:"blobs"}),$.observe(Th.index.areaBytes.merged,{area:"merged"})}),S$.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!Th)return;let Z={blobs:0,merged:0};for(let X of Th.index.entries.values())Z[X.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function m76($){K_.hits[$]+=1,Ww?.hits.add(1,{area:$})}function Jx$($){K_.misses[$]+=1,Ww?.misses.add(1,{area:$})}function L51(){K_.evictions+=1,Ww?.evictions.add(1)}function ON($){K_.errors+=1,Ww?.errors.add(1,{op:$})}function i76($){K_.invalidKeySkips+=1,Ww?.errors.add(1,{op:`${$}_invalid_key`})}function E51(){return Wx$??=p76(),Wx$}async function p76(){let $=c76();if(!$.enabled)return null;d76();try{await Mr(T7($.root,"blobs"),{recursive:!0}),await Mr(T7($.root,"merged"),{recursive:!0}),await Mr(T7($.root,"tmp"),{recursive:!0})}catch{return ON("init"),null}let Z=[];try{Z=await Ox$($.root)}catch{ON("scan"),Z=[]}let X={root:$.root,index:w51(Z,$.index),cfg:$};return Th=X,r76(X),X}async function iz0($){try{return await C76($)}catch{return[]}}async function Ox$($){let Z=[];for(let X of["blobs","merged"]){let Q=T7($,X);for(let Y of await iz0(Q)){let G=T7(Q,Y);for(let J of await iz0(G)){let W=T7(G,J);for(let K of await iz0(W))try{let H=await Ux$(T7(W,K));if(!H.isFile())continue;Z.push({path:`${X}/${Y}/${J}/${K}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function Bx$($,Z,X){if(!D51(X))return null;try{return`blobs/${qr($)}/${qr(Z)}/${X}`}catch{return null}}function wx$($,Z,X){if(!D51(X))return null;try{return`merged/${qr($)}/${qr(Z)}/${X}.json`}catch{return null}}async function Dx$($,Z){try{let X=await E51();if(!X)return null;if(Z===null)return Jx$($),null;try{let Q=await _76(T7(X.root,Z),"utf8");return Qx$(X.index,Z),m76($),Q}catch{return Jx$($),null}}catch{return ON(`get_${$}`),null}}function Lx$($,Z,X){return Dx$("blobs",Bx$($,Z,X))}function Ex$($,Z,X){return Dx$("merged",wx$($,Z,X))}async function t76($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await f76($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function nz0($){try{await b76($)}catch{}}async function o76($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let X=$.index.entries.keys().next();if(X.done)break;Ph($.index,X.value),await nz0(T7($.root,X.value)),L51()}}catch{ON("emergency_evict")}}async function jx$($,Z,X,Q){try{let Y=await E51();if(!Y)return;if(X===null){i76(Z);return}if(!await t76(Y)){K_.floorSkips+=1,Ww?.floorSkips.add(1);return}let G=Buffer.byteLength(Q,"utf8"),J=Yx$(Y.index,{path:X,bytes:G,area:$});if(!J.admitted){K_.admissionRefusals+=1;return}for(let K of J.evict)await nz0(T7(Y.root,K)),L51();let W=T7(Y.root,"tmp",`stage-${Fx$()}`);try{await x76(W,Q,"utf8");let K=T7(Y.root,X);await Mr(g76(K),{recursive:!0}),await v76(W,K)}catch(K){if(Ph(Y.index,X),await nz0(W),ON(Z),K?.code==="ENOSPC")await o76(Y)}}catch{ON(Z)}}function pz0($,Z,X,Q){return jx$("blobs","put_blob",Bx$($,Z,X),Q)}function zx$($,Z,X,Q){return jx$("merged","put_merged",wx$($,Z,X),Q)}async function Px$(){try{let $=await E51();if(!$)return null;let Z=T7($.root,"tmp",Fx$());return await Mr(Z,{recursive:!0}),Z}catch{return ON("make_scratch"),null}}async function Ax$($){try{await Nx$($,{recursive:!0,force:!0})}catch{ON("remove_scratch")}}function r76($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;Kx$=new AbortController,I$(Math.random()*Z,{signal:Kx$.signal}).then(()=>{Hx$($);let X=setInterval(()=>void Hx$($),Z);X.unref?.(),n76=X}).catch(()=>{})}async function Hx$($){try{let Z=w51(await Ox$($.root),$.cfg.index),X=$.cfg.index;for(let[G,J]of Z.entries){let W=Z.totalBytes>X.maxTotalBytes,K=Z.areaBytes.merged>X.maxMergedBytes;if(!W&&!K)break;if(!W&&K&&J.area!=="merged")continue;Ph(Z,G),await nz0(T7($.root,G)),L51()}$.index=Z;let Q=T7($.root,"tmp"),Y=Date.now();for(let G of await iz0(Q)){let J=T7(Q,G);try{let W=await Ux$(J);if(Y-W.mtimeMs>u76)await Nx$(J,{recursive:!0,force:!0})}catch{}}}catch{ON("sweep")}}var h76=1024,mz0,Gx$,u76=3600000,dz0=null,Ww=null,K_,Wx$=null,Th=null,n76=null,Kx$=null;var Tx$=w(()=>{t4();f6();mz0=1024*h76,Gx$=1024*mz0;K_=l76()});function Rx$(){let $=new Map;return{run(Z,X){let Q=$.get(Z);if(Q)return Q;let Y=Promise.resolve().then(X).finally(()=>{$.delete(Z)});return $.set(Z,Y),Y}}}import{readdir as a76,stat as s76}from"fs/promises";import{join as Ix$}from"path";function e76($,Z,X){let Q=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Q,"--wildcards",X]:[...Q,X]}function $X6(){return qx$??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),qx$}async function Mx$($,Z,X){let Q=X.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Q===""||Q.split("/").includes(".."))throw new kr(`invalid blocks path prefix: ${X}`);let Y=await $X6(),G=`*/${Q}/*.json`,J=()=>Bun.spawn(["tar",...e76(Y,Z,G)],{stdin:$,stdout:"ignore",stderr:"pipe"}),W;try{W=J()}catch(N){throw new kr("failed to spawn tar",{cause:N})}let K=new Response(W.stderr).text().catch(()=>""),H=await W.exited;if(H!==0){let N=(await K).trim().slice(0,500);throw new kr(`tar exited with code ${H}${N?`: ${N}`:""}`)}let F=await ZX6(Z,Q);if(F.length===0)throw new kr(`tar extracted no ${G} members into ${Z}`);return F}async function ZX6($,Z){let X=Ix$($,...Z.split("/")),Q;try{Q=await a76(X)}catch{return[]}let Y=[];for(let G of Q){if(!G.endsWith(".json"))continue;let J=Ix$(X,G);try{if(!(await s76(J)).isFile())continue}catch{continue}Y.push({path:`${Z}/${G}`,diskPath:J})}return Y.sort((G,J)=>G.path.localeCompare(J.path))}var kr,qx$=null;var kx$=w(()=>{kr=class kr extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as XX6}from"crypto";import{readFile as QX6}from"fs/promises";async function Sr($,Z){try{return await $.getHeadSha(Z)}catch(Q){if(!(Q instanceof C6)||Q.status!==404)throw Q}let X=await $.getHeadSha(await $.getDefaultBranch());try{return await $.createRef(Z,X),X}catch(Q){if(Q instanceof C6&&Q.status===422)return $.getHeadSha(Z);throw Q}}function GX6(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Vx$;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Vx$}function JX6($){Cx$??=S$.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),Cx$.add(1,{path:$})}async function tz0($,Z,X){let Q=Array($.length),Y=0,G=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let J=Y++;if(J>=$.length)return;Q[J]=await X($[J])}});return await Promise.all(G),Q}function oz0($){return $?`${$}/.deco/blocks`:".deco/blocks"}function j51($,Z){let X=`${oz0(Z)}/`,Q=[];for(let Y of $){if(Y.type!=="blob"||!Y.path.startsWith(X))continue;let G=Y.path.slice(X.length);if(G.includes("/"))continue;if(!G.toLowerCase().endsWith(".json"))continue;Q.push({stem:G.slice(0,-5),sha:Y.sha,path:Y.path,size:Y.size})}return Q}function z51($,Z){return $.filter((X)=>Rr(X.stem)===Z).map((X)=>X.path).sort()}function _x$($,Z,X,Q){return pz0($,Z,X,Q)}function WX6($,Z){if(!Z)return $;return XX6("sha1").update(`${$}:${Z}`).digest("hex")}async function vx$($,Z,X,Q){let Y=Q?.createBranchIfMissing?await Sr($,Z):await $.getHeadSha(Z);return KX6.run(`${$.owner}/${$.repo}@${Y}:${X??""}`,()=>HX6($,Y,X))}async function HX6($,Z,X){let{owner:Q,repo:Y}=$,G=WX6(Z,X),J=await Ex$(Q,Y,G);if(J!==null)return{sha:Z,decofile:J};let W=await $.getCommitTreeSha(Z),K=await $.getTreeRecursive(W),H=j51(K,X),F=new Map;if(await tz0(H,Sx$,async(B)=>{let D=await Lx$(Q,Y,B.sha);if(D!==null)F.set(B.path,D)}),H.length-F.size>YX6){let B=await FX6($,Z,X,H);if(JX6(B!==null?"tarball":"blobs"),B!==null)for(let[D,L]of B)F.set(D,L)}let U=await tz0(H,Sx$,async(B)=>{let D=F.get(B.path);if(D!==void 0)return{stem:B.stem,content:D};let L=await $.getBlobText(B.sha);return await pz0(Q,Y,B.sha,L),{stem:B.stem,content:L}}),O=Ir(U);return await zx$(Q,Y,G,O),{sha:Z,decofile:O}}async function FX6($,Z,X,Q){let Y=`${$.owner}/${$.repo}`,G=GX6(),J=0;for(let K of Q){if(K.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:Y,sha:Z,path:K.path}),null;J+=K.size}if(J>G)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:Y,sha:Z,aggregateBytes:J,maxBytes:G}),null;let W=await Px$();if(W===null)return null;try{let K=await $.getTarballStream(Z),H=await Mx$(K,W,oz0(X)),F=new Map(Q.map((U)=>[U.path,U.sha])),N=new Map;for(let U of H){let O=F.get(U.path);if(O===void 0)continue;let B=await QX6(U.diskPath,"utf8");await pz0($.owner,$.repo,O,B),N.set(U.path,B)}return N}catch(K){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:Y,sha:Z,error:K instanceof Error?K.message:String(K)}),null}finally{await Ax$(W)}}var Sx$=12,YX6=50,Vx$=134217728,Cx$=null,KX6;var rz0=w(()=>{lz0();f6();Tx$();W_();kx$();KX6=Rx$()});async function az0($,Z){let X=await $.getDefaultBranch(),Q=await Sr($,Z),Y=X===Z?{aheadBy:0,behindBy:0}:await $.compare(X,Z);return{not_added:[],conflicted:[],created:[],deleted:[],modified:[],renamed:[],files:[],staged:[],ahead:0,behind:0,current:Z,tracking:`origin/${Z}`,detached:!1,base:X,aheadOfBase:Y.aheadBy,behindBase:Y.behindBy,headSha:Q,unpushed:0}}async function sz0($,Z,X){let Q=X??await $.getDefaultBranch(),Y=await $.compareDetailed(Q,Z),G=Y.files.slice(0,NX6),J=await $.getCommitTreeSha(Y.mergeBaseSha),W=await $.getTreeRecursive(J),K=new Map(W.filter((F)=>F.type==="blob").map((F)=>[F.path,F.sha])),H=await tz0(G,UX6,async(F)=>{let N=F.previousFilename??F.filename,U=F.status==="added"?void 0:K.get(N),O=U?await $.getBlobText(U):null,B=F.status==="removed"?null:await $.getBlobText(F.sha);return[F.filename,{from:O,to:B}]});return{diffs:Object.fromEntries(H),mergeBaseSha:Y.mergeBaseSha}}async function fx$($,Z,X,Q="fail"){try{await $.mergeBranch(Z,X,`chore(decofile): merge ${X} into ${Z}`);return}catch(Y){if(!(Y instanceof C6&&Y.status===409))throw Y;if(Q!=="branch-wins")throw new C6(409,"POST","merges",`Merge conflict updating ${Z} from ${X} \u2014 resolve on GitHub`)}await wX6($,Z,X)}async function wX6($,Z,X){for(let Q=1;;Q++){let Y=await $.getHeadSha(Z),G=await $.getHeadSha(X),{files:J}=await $.compareDetailed(X,Z);if(J.length>=OX6)throw new C6(409,"POST","merges",`Too many changed files on ${Z} to auto-merge (${J.length}); resolve on GitHub`);let W=await $.getTreeRecursive(await $.getCommitTreeSha(Y)),K=new Map(W.filter((U)=>U.type==="blob").map((U)=>[U.path,U])),H=[];for(let U of J){let O=K.get(U.filename);if(U.status==="removed"||!O)H.push({path:U.filename,mode:"100644",type:"blob",sha:null});else H.push({path:U.filename,mode:"100644",type:"blob",sha:O.sha});if(U.previousFilename&&U.previousFilename!==U.filename)H.push({path:U.previousFilename,mode:"100644",type:"blob",sha:null})}let F=await $.createTree(await $.getCommitTreeSha(G),H),N=await $.createCommit({message:`chore(decofile): merge ${X} into ${Z} (branch content wins)`,treeSha:F,parentShas:[Y,G]});try{await $.updateRef(Z,N);return}catch(U){if(U instanceof C6&&U.status===422&&Q<BX6)continue;throw U}}}var NX6=200,UX6=12,OX6=300,BX6=3;var bx$=w(()=>{W_();rz0()});function LX6($){if(!$||$.includes(".."))return!1;return DX6.test($)}function xx$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!LX6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function yx$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var DX6;var gx$=w(()=>{DX6=/^[\w./@-]+$/});function P51($){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 Vr($,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 hx$($,Z,X,Q){if(!Q.connectionId)throw new H_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new H_(CZ);await bO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:CZ;throw new H_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await xO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=Q8$(F instanceof Error?F.message:String(F));throw N?new H_(U):F}),K=jh($),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 eO(H,EX6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var EX6=10485760,H_;var A51=w(()=>{XK();gz0();Nn();sl0();Ax();H_=class H_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function zX6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!jX6.test(Z))throw Error(`Invalid branch name: ${$}`)}function F_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(AX6)])}function N_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Cr($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Vr(Z,X);if(!Y)throw new C6(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return uz0(Q,G.id,Y)}function T51($,Z){if(Z instanceof C6){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,A9)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,A9)}async function lx$($){try{let Z=await Cr($),X=await az0(Z,$.get("vmClaim").branch);return $.json(X,200,A9)}catch(Z){return T51($,Z)}}function $P0($,Z){let Q=(ez0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return ez0.set($,Y),Y.finally(()=>{if(ez0.get($)===Y)ez0.delete($)}),Q}async function hZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,A9);let Q=N_($);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",...A9}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?RX6(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...A9}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(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 RX6($){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 ZP0($,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 IX6($){return dx$.includes($)}var jX6,ux$=524288,PX6=65536,AX6=1e4,cx$=2000,TX6,ez0,A9,dx$,mx$=()=>{let $=new U1;$.use("/:virtualMcpId/:branch/*",TX6),$.post("/:virtualMcpId/:branch/write",(X)=>hZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>hZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>hZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>hZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>hZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>hZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:F_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>hZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:F_(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 hZ(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 hZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>hZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>hZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!IX6(Q))return X.json({error:`step must be one of: ${dx$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=hx(Y.virtualMcpMetadata);try{await sU0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return hZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return UN(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 lb$(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").fastPreview)return lx$(X);return Z(X)});let Z=(X)=>hZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(cx$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return lx$(X);return hZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(cx$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await Cr(X),J=await sz0(G,Q.branch,Y.base);return X.json(J,200,A9)}catch(Y){return T51(X,Y)}return hZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,A9);let Q=N_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return $P0(Y,async()=>{try{await Y51(W,Q,Y);let K=Vr(G,J);if(K)await hx$(W,Q,Y,K)}catch(K){if(K instanceof H_)return X.json({error:K.message},403,A9);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,A9)}return hZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let{claimName:Q,fastPreview:Y}=X.get("vmClaim");if(Y)return X.json({error:"Nothing to discard: Fast Preview projects have no working tree"},400,A9);return $P0(Q,()=>hZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return $P0(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Cr(X),H=W.base??await K.getDefaultBranch();return await fx$(K,Q.branch,H,W.onConflict==="branch-wins"?"branch-wins":"fail"),X.json({ok:!0},200,A9)}catch(W){return T51(X,W)}});let Y=N_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return $P0(G,async()=>{try{await Y51(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,A9)}return hZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",BZ({maxSize:ux$,onError:(X)=>X.json({error:"Payload too large"},413,A9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=N_(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]=W51(F)&&U?[F,N]:Y?await Promise.all([ZP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),ZP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Cr(X);return Promise.all([az0(L,Q.branch),sz0(L,Q.branch)])})(),D=await pb$(K,O,B);return X.json(D,200,A9)}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,A9);return X.json({error:F},502,A9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",BZ({maxSize:ux$,onError:(X)=>X.json({error:"Payload too large"},413,A9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=N_(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]=W51(F)&&U?[F,N]:Y?await Promise.all([ZP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),ZP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Cr(X);return Promise.all([az0(L,Q.branch),sz0(L,Q.branch)])})(),D=await ob$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,A9)}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,A9);return X.json({error:F},502,A9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=N_(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=P51(`${W}${G}`),H;try{H=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let F;try{F=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(F,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",BZ({maxSize:PX6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=N_(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=xx$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=yx$(G,W.resolveType),H=P51(K),F;try{F=await fetch(H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await F.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:F.status,headers:{"content-type":F.headers.get("content-type")??"application/json"}})}),$};var ix$=w(()=>{C8();Xw();Eh();Q51();BF();ub$();M3();oO();cb$();db$();Ei0();Hn();F51();rb$();O51();W_();bx$();gx$();A51();jX6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;TX6=yz0(async($,Z)=>{let X=$.var.studioContext;try{e(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(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{zX6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},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=Vi({orgId:Y.id,virtualMcpId:G,branch:J}),H=await TF(X,J,Q),F=hb$({userId:H,projectRef:K}),N=W.metadata??null;if(N?.fastPreview===!0&&hz0(N))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await pX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});ez0=new Map;A9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};dx$=["clone","install","start"]});function nx$($,Z,X){let Q=R51.get($);if(!Q)Q={pending:null,running:!1},R51.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)MX6($,Q);return G}async function MX6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await kX6(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)R51.delete($)}}async function kX6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Sr(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=j51(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=z51(K,B),E=`${JSON.stringify(D,null,2)}
|
|
2755
|
-
`,j=await Z.createBlob(E);await _x$(Z.owner,Z.repo,j,E);let z=L[0]??`${oz0(Q)}/${B51(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 L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of z51(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);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(L)=>({stem:L.stem,content:L.content??await Z.getBlobText(L.sha)}))),D=await Z.createBlob(Ir(B));H.push({path:N,mode:"100644",type:"blob",sha:D})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:SX6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof C6&&B.status===422)||Y>=qX6-1)throw B;await I$(lZ(2000,200,Y,2,0.5))}}}function SX6($){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 dl0(Q,$.deps.coAuthor)}var qX6=3,R51;var px$=w(()=>{iU0();lz0();t4();W_();rz0();R51=new Map});import{createHmac as tx$,randomBytes as VX6,timingSafeEqual as CX6}from"crypto";function ox$(){if(XP0)return XP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return XP0=$?Buffer.from($):VX6(32),XP0}function I51($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+_X6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=tx$("sha256",ox$()).update(Q).digest("base64url");return`${Q}.${Y}`}function rx$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(tx$("sha256",ox$()).update(Q).digest("base64url"));if(Y.length!==G.length||!CX6(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 _X6=21600000,XP0=null;var ax$=w(()=>{P$()});import{z as Rh}from"zod";function fX6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&vX6.test($)}function ex$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function QP0($){let Z=$.get("decofileScope");return uz0($.var.studioContext,Z.organizationId,Z.githubRepo)}function YP0($,Z){if(Z instanceof C6){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 $y$(){let $=new U1;return $.use("/:virtualMcpId/:branch",sx$),$.use("/:virtualMcpId/:branch/*",sx$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(Z),Y=await vx$(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=I51({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ex$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return YP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=bX6.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{cz0(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 QP0(Z),W=await nx$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:jh(Q)},G),K=I51({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ex$(Z)})}catch(J){return YP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);try{let G=await Q.mergeBranch(Y,X.branch,`chore(decofile): publish ${X.branch}`);return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(G instanceof C6&&G.status===409)return Z.json({error:"merge-conflict"},409);if(G instanceof C6&&G.status===405){let W=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:W.number,url:W.html_url})}throw G}}catch(Q){return YP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(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 C6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return YP0(Z,Q)}}),$}var vX6,bX6,sx$;var Zy$=w(()=>{lz0();C8();Q51();gz0();A51();O51();px$();ax$();W_();rz0();vX6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bX6=Rh.object({set:Rh.record(Rh.string(),Rh.unknown()).optional(),delete:Rh.array(Rh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),sx$=yz0(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(!fX6(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||!rx$(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(!hz0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=Vr(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 Xy$=($)=>{let Z=new U1;if(Z.use("*",eC),Z.route("/",$z0()),Z.route("/",q_$()),Z.route("/",qb$()),Z.route("/",Tb$()),Z.route("/",fz0()),Z.route("/tools",vb$()),Z.route("/",Vb$()),Z.route("/",Gb$({kvStorage:$.kvStorage})),Z.route("/",Qb$()),Z.route("/fs",Db$({getConnection:$.getNatsConnection})),Z.route("/sandbox",mx$()),Z.route("/decofile",$y$()),Z.route("/",zb$()),Z.route("/deco-sites",Xz0()),Z.route("/sso",tj0()),Z.route("/",bz0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",E_$()),$.mountDevAssets)Z.route("/dev-assets",Qz0({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("/",YV$()),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",Eb$()),Z.route("/mcp",Nw0()),Z.route("/mcp/self",vz0()),Z.route("/mcp",Bw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Qy$=w(()=>{C8();I41();j_$();S41();Yz0();ao();T41();Yb$();Jb$();Lb$();Wp();w41();ww0();r61();jb$();Pb$();Rb$();Mb$();Cb$();s61();fb$();e61();Uw0();ix$();Zy$()});function yX6($){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}}))}async function gX6($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(xX6)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var xX6=1e4,hX6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Yy$=()=>{let $=new U1;return $.use("*",hX6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await gX6(Q,Y);return Z.json({apps:yX6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gy$=w(()=>{C8();P$()});import{z as M1}from"zod";function tK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function oX6($){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 rX6($,Z,X){try{return JSON.parse($)}catch{throw new Ky$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function aX6($){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:rX6(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 sX6($){let Z=$.map((X)=>{let Q=X.function.parameters?_Y(X.function.parameters):_Y({type:"object",properties:{}});return[X.function.name,f$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function eX6($){if(!$)return;return{openai:{response_format:$}}}function $Q6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jy$($,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 Wy$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var uX6=256,cX6,lX6,dX6,mX6,iX6,nX6,pX6,tX6,Ky$,Hy$,Fy$;var Ny$=w(()=>{C4();C8();Eh();nF();cX6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),lX6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),dX6=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(lX6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),mX6=M1.object({type:M1.literal("text")}),iX6=M1.object({type:M1.literal("json_object")}),nX6=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()})}),pX6=M1.union([mX6,iX6,nX6]),tX6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(dX6),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(cX6).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:pX6.optional(),user:M1.string().optional()});Ky$=class Ky$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Hy$=new U1;Hy$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(tK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(tK("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(tK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=tX6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(tK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=oX6(G.model);if(!J)return $.json(tK("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)=>LD(j.providerId));if(!E)return $.json(tK("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(tK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=aX6(G.messages),U=G.tools?sX6(G.tools):void 0,O=eX6(G.response_format),B=$Q6(),D=Math.floor(Date.now()/1000);if(G.stream)return UN($,async(L)=>{let E=Jy$(F,N,U,G,O,$.req.raw.signal);try{let j=vO(E),z=!1,A=0,P="",q=async()=>{if(P.length===0)return;let M=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of j.fullStream){if(!z&&(M.type==="text-delta"||M.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(M.type==="text-delta"){if(P+=M.text,P.length>=uX6)await q()}else if(M.type==="tool-call"){await q();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await q(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Wy$(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await q(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Jy$(F,N,U,G,O,$.req.raw.signal),E=await CO(L),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:D,model:G.model,choices:[{index:0,message:j,finish_reason:Wy$(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(tK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(tK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(tK(Y.message,"server_error"),500)}});Fy$=Hy$});var Oy$;var Uy$=w(()=>{Oy$={name:"decocms",version:"4.220.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",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 QQ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??XQ6}}var By$,XQ6="https://ph.studio.decocms.com",wy$;var Dy$=w(()=>{C8();Tg0();dV();t9();P$();F41();Uy$();By$=new U1;By$.get("/",($)=>{let Z={version:Oy$.version,theme:Pl1(),...WL().logo&&{logo:WL().logo},...LK()&&{internalUrl:ak1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:bC$(),posthog:QQ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!LK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});wy$=By$});function Ih($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function q51($){return(Ih($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ey$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Ih($))}&sz=${Z}`}function Ly$($,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 jy$($){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()?Ly$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Ly$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var U_,YQ6,GQ6,JQ6,WQ6,zy$;var Py$=w(()=>{U_=l0.enum(["good","bad","neutral"]),YQ6=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:U_.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 $})),GQ6=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(YQ6)),JQ6={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()},WQ6=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:U_.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:U_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:U_.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:U_.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(GQ6).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:U_.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:U_.optional()})).min(1)})]),zy$=l0.object({...JQ6,template:WQ6})});function GP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zy$.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 M51=w(()=>{Py$()});import{join as Ay$}from"path";async function HQ6($){try{let Z=await fetch(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(KQ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=GP0(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()||q51($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function ZG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function FQ6($,Z){let X=Ih($),Q=Z?.brand?.trim()||q51(X),Y=Ey$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jy$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${ZG(W)}</title>`,`<meta name="description" content="${ZG(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="${ZG(W)}" />`,`<meta property="og:description" content="${ZG(K)}" />`,`<meta property="og:url" content="${ZG(J)}" />`,`<meta property="og:image" content="${ZG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${ZG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${ZG(W)}" />`,`<meta name="twitter:description" content="${ZG(K)}" />`,`<meta name="twitter:image" content="${ZG(H)}" />`,`<meta name="twitter:image:alt" content="${ZG(F)}" />`,`<link rel="canonical" href="${ZG(J)}" />`,`<link rel="icon" href="${ZG(Y)}" sizes="any" />`].join(`
|
|
2755
|
+
`,j=await Z.createBlob(E);await _x$(Z.owner,Z.repo,j,E);let z=L[0]??`${oz0(Q)}/${B51(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 L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of z51(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);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(L)=>({stem:L.stem,content:L.content??await Z.getBlobText(L.sha)}))),D=await Z.createBlob(Ir(B));H.push({path:N,mode:"100644",type:"blob",sha:D})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:SX6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof C6&&B.status===422)||Y>=qX6-1)throw B;await I$(lZ(2000,200,Y,2,0.5))}}}function SX6($){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 dl0(Q,$.deps.coAuthor)}var qX6=3,R51;var px$=w(()=>{iU0();lz0();t4();W_();rz0();R51=new Map});import{createHmac as tx$,randomBytes as VX6,timingSafeEqual as CX6}from"crypto";function ox$(){if(XP0)return XP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return XP0=$?Buffer.from($):VX6(32),XP0}function I51($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+_X6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=tx$("sha256",ox$()).update(Q).digest("base64url");return`${Q}.${Y}`}function rx$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(tx$("sha256",ox$()).update(Q).digest("base64url"));if(Y.length!==G.length||!CX6(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 _X6=21600000,XP0=null;var ax$=w(()=>{P$()});import{z as Rh}from"zod";function fX6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&vX6.test($)}function ex$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function QP0($){let Z=$.get("decofileScope");return uz0($.var.studioContext,Z.organizationId,Z.githubRepo)}function YP0($,Z){if(Z instanceof C6){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 $y$(){let $=new U1;return $.use("/:virtualMcpId/:branch",sx$),$.use("/:virtualMcpId/:branch/*",sx$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(Z),Y=await vx$(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=I51({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ex$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return YP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=bX6.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{cz0(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 QP0(Z),W=await nx$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:jh(Q)},G),K=I51({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ex$(Z)})}catch(J){return YP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);try{let G=await Q.mergeBranch(Y,X.branch,`chore(decofile): publish ${X.branch}`);return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(G instanceof C6&&G.status===409)return Z.json({error:"merge-conflict"},409);if(G instanceof C6&&G.status===405){let W=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:W.number,url:W.html_url})}throw G}}catch(Q){return YP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await QP0(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 C6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return YP0(Z,Q)}}),$}var vX6,bX6,sx$;var Zy$=w(()=>{lz0();C8();Q51();gz0();A51();O51();px$();ax$();W_();rz0();vX6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bX6=Rh.object({set:Rh.record(Rh.string(),Rh.unknown()).optional(),delete:Rh.array(Rh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),sx$=yz0(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(!fX6(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||!rx$(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(!hz0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=Vr(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 Xy$=($)=>{let Z=new U1;if(Z.use("*",eC),Z.route("/",$z0()),Z.route("/",q_$()),Z.route("/",qb$()),Z.route("/",Tb$()),Z.route("/",fz0()),Z.route("/tools",vb$()),Z.route("/",Vb$()),Z.route("/",Gb$({kvStorage:$.kvStorage})),Z.route("/",Qb$()),Z.route("/fs",Db$({getConnection:$.getNatsConnection})),Z.route("/sandbox",mx$()),Z.route("/decofile",$y$()),Z.route("/",zb$()),Z.route("/deco-sites",Xz0()),Z.route("/sso",tj0()),Z.route("/",bz0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",E_$()),$.mountDevAssets)Z.route("/dev-assets",Qz0({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("/",YV$()),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",Eb$()),Z.route("/mcp",Nw0()),Z.route("/mcp/self",vz0()),Z.route("/mcp",Bw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Qy$=w(()=>{C8();I41();j_$();S41();Yz0();ao();T41();Yb$();Jb$();Lb$();Wp();w41();ww0();r61();jb$();Pb$();Rb$();Mb$();Cb$();s61();fb$();e61();Uw0();ix$();Zy$()});function yX6($){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}}))}async function gX6($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(xX6)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var xX6=1e4,hX6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Yy$=()=>{let $=new U1;return $.use("*",hX6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await gX6(Q,Y);return Z.json({apps:yX6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gy$=w(()=>{C8();P$()});import{z as M1}from"zod";function tK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function oX6($){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 rX6($,Z,X){try{return JSON.parse($)}catch{throw new Ky$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function aX6($){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:rX6(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 sX6($){let Z=$.map((X)=>{let Q=X.function.parameters?_Y(X.function.parameters):_Y({type:"object",properties:{}});return[X.function.name,f$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function eX6($){if(!$)return;return{openai:{response_format:$}}}function $Q6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jy$($,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 Wy$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var uX6=256,cX6,lX6,dX6,mX6,iX6,nX6,pX6,tX6,Ky$,Hy$,Fy$;var Ny$=w(()=>{C4();C8();Eh();nF();cX6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),lX6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),dX6=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(lX6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),mX6=M1.object({type:M1.literal("text")}),iX6=M1.object({type:M1.literal("json_object")}),nX6=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()})}),pX6=M1.union([mX6,iX6,nX6]),tX6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(dX6),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(cX6).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:pX6.optional(),user:M1.string().optional()});Ky$=class Ky$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Hy$=new U1;Hy$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(tK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(tK("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(tK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=tX6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(tK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=oX6(G.model);if(!J)return $.json(tK("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)=>LD(j.providerId));if(!E)return $.json(tK("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(tK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=aX6(G.messages),U=G.tools?sX6(G.tools):void 0,O=eX6(G.response_format),B=$Q6(),D=Math.floor(Date.now()/1000);if(G.stream)return UN($,async(L)=>{let E=Jy$(F,N,U,G,O,$.req.raw.signal);try{let j=vO(E),z=!1,A=0,P="",q=async()=>{if(P.length===0)return;let M=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of j.fullStream){if(!z&&(M.type==="text-delta"||M.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(M.type==="text-delta"){if(P+=M.text,P.length>=uX6)await q()}else if(M.type==="tool-call"){await q();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await q(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Wy$(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await q(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Jy$(F,N,U,G,O,$.req.raw.signal),E=await CO(L),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:D,model:G.model,choices:[{index:0,message:j,finish_reason:Wy$(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(tK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(tK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(tK(Y.message,"server_error"),500)}});Fy$=Hy$});var Oy$;var Uy$=w(()=>{Oy$={name:"decocms",version:"4.220.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",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 QQ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??XQ6}}var By$,XQ6="https://ph.studio.decocms.com",wy$;var Dy$=w(()=>{C8();Tg0();dV();t9();P$();F41();Uy$();By$=new U1;By$.get("/",($)=>{let Z={version:Oy$.version,theme:Pl1(),...WL().logo&&{logo:WL().logo},...LK()&&{internalUrl:ak1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:bC$(),posthog:QQ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!LK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});wy$=By$});function Ih($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function q51($){return(Ih($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ey$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Ih($))}&sz=${Z}`}function Ly$($,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 jy$($){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()?Ly$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Ly$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var U_,YQ6,GQ6,JQ6,WQ6,zy$;var Py$=w(()=>{U_=l0.enum(["good","bad","neutral"]),YQ6=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:U_.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 $})),GQ6=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(YQ6)),JQ6={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()},WQ6=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:U_.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:U_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:U_.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:U_.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(GQ6).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:U_.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:U_.optional()})).min(1)})]),zy$=l0.object({...JQ6,template:WQ6})});function GP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zy$.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 M51=w(()=>{Py$()});import{join as Ay$}from"path";async function HQ6($){try{let Z=await fetch(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(KQ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=GP0(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()||q51($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function ZG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function FQ6($,Z){let X=Ih($),Q=Z?.brand?.trim()||q51(X),Y=Ey$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jy$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${ZG(W)}</title>`,`<meta name="description" content="${ZG(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="${ZG(W)}" />`,`<meta property="og:description" content="${ZG(K)}" />`,`<meta property="og:url" content="${ZG(J)}" />`,`<meta property="og:image" content="${ZG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${ZG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${ZG(W)}" />`,`<meta name="twitter:description" content="${ZG(K)}" />`,`<meta name="twitter:image" content="${ZG(H)}" />`,`<meta name="twitter:image:alt" content="${ZG(F)}" />`,`<link rel="canonical" href="${ZG(J)}" />`,`<link rel="icon" href="${ZG(Y)}" sizes="any" />`].join(`
|
|
2756
2756
|
`)}function NQ6($,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}
|
|
2757
2757
|
</head>`)}function Ty$($){let Z=new U1;return Z.get("/:domain/og.png",async(X)=>{let Q=Ih(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Ay$($,"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(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(UQ6)}),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=$?Ay$($,"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 HQ6(Ih(Q)),K=FQ6(Q,W);return X.html(NQ6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var KQ6=2500,UQ6=1e4;var Ry$=w(()=>{C8();M51();PL();P$()});function _r($,Z){return fetch(`${cW({})}${$}`,Z)}async function OQ6($,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 _r(`/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}=GP0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var BQ6,BN,Iy$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},qy$;var My$=w(()=>{C8();bG();PL();M51();BQ6=new Set(["complete","errored","terminated","unknown"]),BN=new U1;BN.use("*",async($,Z)=>{let X=await j8.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});BN.use("/link-token/*",Iy$);BN.use("/suggest",Iy$);BN.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 OQ6(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)}});BN.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 _r("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${zL({})}`},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)}});BN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await _r(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${zL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:BQ6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});BN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await _r(`/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)}});BN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await _r(`/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:[]})}});qy$=BN});import{createHmac as wQ6,timingSafeEqual as DQ6}from"crypto";function Sy$($,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)>LQ6)return!1;let W=wQ6("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&&DQ6(K,F)})}function Vy$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=DJ(Z),Q=DJ(DJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:oK(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 Cy$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function oK($){return typeof $==="string"?$:void 0}function DJ($){return typeof $==="object"&&$!==null?$:void 0}function JP0($){return typeof $==="number"?new Date($*1000):null}function V51($){return oK($)??oK(DJ($)?.id)}function EQ6($){return V51($.subscription)??oK(DJ(DJ($.parent)?.subscription_details)?.subscription)}function jQ6($){let Z=JP0($.current_period_end);if(Z)return Z;let X=DJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=DJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function k51($,Z){let X=JP0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function S51($,Z){let X=JP0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function zQ6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=oK(DJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(oK(DJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(oK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=oK(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(DJ(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:DJ(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(oK(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=V51(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(k51(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:V51(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:S51(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=oK(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&&k51(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Cy$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:jQ6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:S51(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=EQ6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(k51(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:JP0(X.period_end),lastStripeEventAt:S51(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function PQ6($,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:Cy$(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 ky$($,Z){let X=PQ6($,Z);if(!X)return;AY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Sm1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function _y$($){let Z=new yW(m8().db),X=await zQ6(Z,$);if(!(X.handled&&X.topUp))ky$($,X);if(X.handled&&X.topUp)await pO$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),ky$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await dr1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof SY&&(Q.status===400||Q.status===404)))throw Q}return X}var LQ6=300;var vy$=w(()=>{VG();q4();f40();VL();ma0()});var AQ6=1048576,C51;var fy$=w(()=>{C8();Xw();P$();vy$();C51=new U1;C51.post("/webhook",BZ({maxSize:AQ6,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(!Sy$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Vy$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await _y$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as TQ6}from"crypto";function IQ6($,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 TQ6(Buffer.from(Y),Buffer.from(Q))}var RQ6=5242880,_51;var by$=w(()=>{C8();Xw();Jn();_51=new U1;_51.post("/webhook",BZ({maxSize:RQ6,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(!IQ6(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 Ui0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function xy$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var yy$,qQ6,MQ6,gy$;var hy$=w(()=>{C8();Y3();$y();eb();yy$=new U1,qQ6=["range","if-none-match","if-modified-since"],MQ6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];yy$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if($h($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new e1(401,{message:"Authentication required"})}if(!X)throw new e1(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new e1(400,{message:"Missing file key"});let Y=await yn(Q,Z);if(!Y)throw new e1(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&H3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new e1(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 xy$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of qQ6){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 e1(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 e1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of MQ6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),xy$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});gy$=yy$});var vr=C((O_)=>{var kQ6=O_&&O_.__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]}),SQ6=O_&&O_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))kQ6(Z,$,X)};Object.defineProperty(O_,"__esModule",{value:!0});SQ6(WY(),O_)});var ly$=C((uy$)=>{Object.defineProperty(uy$,"__esModule",{value:!0});uy$.version=void 0;uy$.version="3.4.0"});var iy$=C((rK)=>{var VQ6=rK&&rK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(rK,"__esModule",{value:!0});rK.NodeTransport=rK.VERSION=void 0;rK.nodeResolveHost=xQ6;var p6=vr(),CQ6=z0("net"),v51=z0("tls"),_Q6=z0("path"),dy$=z0("fs"),vQ6=VQ6(z0("dns")),fQ6=ly$();rK.VERSION=fQ6.version;var bQ6="nats.js";class my${socket;version;lang;yields=[];signal=(0,p6.deferred)();closedNotification=(0,p6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=bQ6,this.version=rK.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,p6.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 p6.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 p6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new p6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,p6.deferred)(),X,Q=(0,CQ6.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,p6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=p6.DataBuffer.concat(...this.yields),Y=(0,p6.extractProtocolMessage)(Q);if(Y!=="")try{let G=p6.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,p6.deferred)();try{if($=(0,_Q6.resolve)($),!(0,dy$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,dy$.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,p6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new p6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,p6.deferred)();try{let Y=(0,v51.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 p6.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,p6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new p6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,p6.deferred)();try{let Q=(0,v51.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 p6.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,p6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,p6.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 v51.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,p6.render)($)}`);let Z=(0,p6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,p6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,p6.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}}rK.NodeTransport=my$;function xQ6($){let Z=(0,p6.deferred)();return vQ6.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 ry$=C((oy$)=>{Object.defineProperty(oy$,"__esModule",{value:!0});oy$.connect=yQ6;var ny$=iy$(),py$=vr(),ty$=vr();function yQ6($={}){if((0,ty$.hasWsProtocol)($))return Promise.reject(ty$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,py$.setTransportFactory)({factory:()=>{return new ny$.NodeTransport},dnsResolveFn:ny$.nodeResolveHost}),py$.NatsConnectionImpl.connect($)}});var ay$=C((wN)=>{var hQ6=wN&&wN.__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]}),uQ6=wN&&wN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))hQ6(Z,$,X)};Object.defineProperty(wN,"__esModule",{value:!0});wN.connect=void 0;var cQ6=ry$();Object.defineProperty(wN,"connect",{enumerable:!0,get:function(){return cQ6.connect}});uQ6(vr(),wN)});function Zg$($){let Z=$?.connectFn??iQ6,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:mQ6,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 D=lZ(dQ6,lQ6,B-1,2,0.5);await I$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?sy$.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=$g$.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 iQ6($){return ey$.connect($)}var sy$,ey$,$g$,lQ6=100,dQ6=3000,mQ6=3000;var Xg$=w(()=>{t4();sy$=S(rh(),1),ey$=S(ay$(),1),$g$=S(Iw(),1)});function f51($,Z){return`${$}.${Z}`}class b51{cache;constructor($){this.cache=lg({ttlMs:$?.ttlMs??nQ6,maxSize:$?.maxSize??pQ6})}async get($,Z){return this.cache.get(f51($,Z))??null}async set($,Z,X){this.cache.set(f51($,Z),X)}async invalidate($,Z){this.cache.delete(f51($,Z))}teardown(){this.cache.clear()}}var nQ6=600000,pQ6=5000;var Qg$=()=>{};function WP0($,Z){return`${$}:${Z}`}function x51($){let Z=lg({ttlMs:$?.ttlMs??tQ6,maxSize:$?.maxSize??oQ6}),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(Yg$,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(WP0(K,H))},set(K,H,F){Z.set(WP0(K,H),F)},invalidate(K,H){Z.delete(WP0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Yg$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(WP0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Yg$="studio.ai-provider-keys.invalidate",tQ6=30000,oQ6=5000;var Gg$=()=>{};class y51{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=Jg$.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 Jg$)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 Jg$;var Wg$=w(()=>{Jg$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Kg$=($)=>{let Z;return()=>Z??=$()},g51,h51;var Hg$=w(()=>{f6();g51=Kg$(()=>S$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),h51=Kg$(()=>S$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function XY6(){return{name:fF,subjects:[`${SB0}.>`],storage:s3.StorageType.File,max_age:sQ6,max_bytes:$Y6,max_msgs_per_subject:ZY6,discard:s3.DiscardPolicy.Old,retention:s3.RetentionPolicy.Limits,duplicate_window:eQ6,num_replicas:1}}class Ug${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 Fg$($){let Z=Ng$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function JY6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,aQ6().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 WY6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class u51{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=XY6(),X=await dZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await s3.jetstreamManager($);try{await Q.streams.info(fF),await Q.streams.update(fF,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(fF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:WY6});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=JY6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=IK$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=yp0(H,{runId:Z}),U=performance.now()-F;if(g51().record(U),h51().add(1,{"org.id":Q??"unknown"}),GY6?.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?Fg$(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((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),YY6)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=yp0(Z,{runId:$,dedup:X});if(g51().record(performance.now()-Y),h51().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:Fg$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=RK$({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"?s3.DeliverPolicy.New:s3.DeliverPolicy.All,G=X?.closeOnDone??!1,J=BB($),W;try{W=await(await Q.consumers.get(fF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=fB0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(VB0()).pipeThrough(CB0()).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(D){for(;;){let{done:L,value:E}=await F.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(fF,{filter:BB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var s3,Ng$,rQ6=($)=>{let Z;return()=>Z??=$()},aQ6,sQ6=86400000000000,eQ6=120000000000,$Y6=4294967296,ZY6=500000,QY6,YY6,GY6;var Og$=w(()=>{t4();gp0();bB0();_B0();f6();Hg$();s3=S(Iw(),1),Ng$=S(rh(),1),aQ6=rQ6(()=>S$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));QY6=process.env.STREAM_ENCODE_TRACE==="1",YY6=process.env.DECOPILOT_STREAM_TRACE==="1";GY6=QY6?new Ug$:null});function KP0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,zW(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 Bg$=w(()=>{L8()});class c51{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function BY6($){return $ instanceof i7}function wY6($,Z){return Z-$>=UY6}class l51{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??KY6;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??FY6,X=this.options.itemIntervalMs??HY6,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()-z3$),Tt0);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()-OY6));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 Gp0(this.taskBoard,Y,Q),await Jp0(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!==E4)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await bF(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),BY6(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()+NY6)).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(()=>{}),p8(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(!wY6(KF(X),Date.now()))return;await EK($,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===E4,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}if(await gH$(J,Q))return!0;if(!Y)return!1;let W=await Promise.all(G.map(async(K)=>({...K,...await Uy(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(!jt0(W))return!1;return await cB0(J,Q,{previewMatchesHead:zt0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var KY6=60000,HY6=300000,FY6=50,NY6=60000,UY6=900000,OY6=120000;var wg$=w(()=>{e9();Nt0();wB();Xp();P9();B3();Rt0();zK();an()});import{readdir as DY6,rm as HP0}from"fs/promises";import{join as FP0}from"path";async function NP0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-LY6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await B_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Dg$($,Y,Z);else if(!Y.startsWith(".")){let G=FP0($,Y),J=await B_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Dg$(G,K,Z)}if((await B_(G)).length===0)await HP0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Dg$($,Z,X){let Q=0,Y=FP0($,Z),G=await B_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=FP0(Y,W),H=await B_(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=FP0(K,N);await HP0(O,{recursive:!0,force:!0}),Q++}}if((await B_(K)).length===0)await HP0(K,{recursive:!0,force:!0})}if((await B_(Y)).length===0)await HP0(Y,{recursive:!0,force:!0});return Q}async function B_($){try{return(await DY6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var LY6=30;var d51=()=>{};import{DBOS as m51,SchedulerMode as EY6}from"@dbos-inc/dbos-sdk";async function zY6(){let $=[PJ(),D_(),eK()],Z=0;for(let X of $)try{Z+=await NP0(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 PY6($,Z){await m51.runStep(()=>zY6(),{name:"monitoringRetention"})}function Eg$(){if(Lg$)return;Lg$=!0;let $=m51.registerWorkflow(PY6,{name:"monitoringRetentionWorkflow"});m51.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:jY6,mode:EY6.ExactlyOncePerIntervalWhenActive})}var jY6="23 4 * * *",Lg$=!1;var jg$=w(()=>{QY();d51()});function zg$($){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 oG.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await n81($.db,Z,Q.role);return Y.boundAuth=i81({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new QL(X,void 0,Y.boundAuth,Q.role,"self"),DB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Pg$=w(()=>{YL();nV()});function AY6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function RY6(){for(let $ of TY6)$()}function Ag$($){let Z=[...i51.logs,$];i51={...i51,logs:Z.length>500?Z.slice(-500):Z},RY6()}function n51(){return IY6}var i51,TY6,IY6=!1;var p51=w(()=>{i51=AY6(),TY6=new Set});import{EventEmitter as qY6}from"events";var t51;var Tg$=w(()=>{p51();t51=new qY6;t51.on("request",($)=>{Ag$($)})});function Rg$(){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=qh(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>qh(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${Q5.tool}${O}${Q5.dim}(${L})${Q5.reset}`}else if(U.method)G=`${Q5.dim}${qh(U.method)}${Q5.reset}`}}catch{}}let W=qh(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${Q5.mcp}${qh(F.slice(0,12))}\u2026${Q5.reset}`}else if(Y==="/mcp")W=`${Q5.mcp}/mcp${Q5.reset}`;else if(Y==="/mcp/registry")W=`${Q5.mcp}/mcp/registry${Q5.reset}`;let K=kY6(Q),H=J?"\u25C0":"\u2190";if(!n51())console.log(`${Q5.dim}${H}${Q5.reset} ${K}${Q}${Q5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=MY6(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!n51())console.log(`${Q5.dim}${B}${Q5.reset} ${K}${Q}${Q5.reset} ${W}${G?` ${G}`:""} ${U}${N}${Q5.reset} ${Q5.duration}${O}${Q5.reset}`);t51.emit("request",{method:Q,path:qh(Y),status:N,duration:F,timestamp:new Date})}}}var Q5,MY6=($)=>{if($>=500)return Q5.serverError;if($>=400)return Q5.clientError;if($>=300)return Q5.redirect;return Q5.ok},kY6=($)=>{return Q5[$]||Q5.reset},qh=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Ig$=w(()=>{p51();Tg$();Q5={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 Sg$}from"crypto";import{mkdir as SY6,readdir as VY6,rm as qg$,stat as Vg$}from"fs/promises";import{join as r51,relative as CY6}from"path";import{z as E$}from"zod";function _g$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return r51(_Y6,Z)}function vg$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function o51($,Z){let X=_g$($),Q=vg$(Z);return r51(X,Q)}function vY6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Sg$("sha256",Y).update(G).digest("hex")}function kg$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=vY6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${vg$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function fg$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Sg$("md5","etag").update(Q).digest("hex")}"`}async function bg$($,Z,X,Q,Y){try{let G=await VY6($,{withFileTypes:!0});for(let J of G){let W=r51($,J.name),H=CY6(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 bg$(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 Vg$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:fg$(W,F.mtime,F.size)})}catch{}}}}catch{}}function xg$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=_g$(Q);await SY6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await bg$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=o51(Q,G.key),W=await Vg$(J);return{contentType:C41(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:fg$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Mg$;return{url:kg$(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:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Mg$;return{url:kg$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(Y)=>{let G=Y,J=o51(Q,G.key);try{return await qg$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=o51(Q,K);try{await qg$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function a51($,Z,X){let Q=xg$(Z,X),Y=new MW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:K5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.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 oX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),ZJ(Y,G,$,"mcp:dev-assets")}async function yg$($,Z,X,Q){let G=xg$(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 _Y6="./data/assets",Mg$=3600,Cg$,gg$;var hg$=w(()=>{P$();Ey();C8();Pl();aV();VX();Yz0();Cg$=new U1;Cg$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return a51($.req.raw,Z,Q)});gg$=Cg$});var ug$={};N4(ug$,{mountDevRoutes:()=>fY6});function fY6($,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 a51(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 yg$(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",gg$);let X=new U1;X.use("*",r3({mountPath:"/api/dev-assets"})),X.route("/",Qz0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var cg$=w(()=>{C8();R41();Yz0();hg$()});import{sql as bY6}from"kysely";import{randomUUID as lg$}from"crypto";import{z as xY6}from"zod";async function gY6($){let Z=new Date().toISOString(),X=lg$(),Q=u4.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:lg$(),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 bY6`SELECT
|
|
2758
2758
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as L,b as R,j as r}from"./index-CP0-934_.js";import{I as A}from"./input-C5ZlIxB4.js";import{L as I}from"./label-DpRm0AEI.js";import{S as z,a as J,b as O,c as V,d as $}from"./select-BccNb2Fl.js";import{T as D}from"./textarea-jCuJi0tv.js";import{R as M,T as U,U as W,J as q,W as G,$ as H}from"./index-Cbf4nIcl.js";import{s as F}from"./primitives-BOi39jqZ.js";import{u as Q}from"./use-autosave-BFgr8dlP.js";import"./tooltip-CyhFIdTH.js";import"./Check-DF1PVTXs.js";import"./ChevronDown-DgG2RDRW.js";import"./ChevronUp-Df_qpxcd.js";import"./ArrowUp-DqZp6_S-.js";import"./chat-context-C9H5kwmd.js";import"./tab-id-Bl2tCDAa.js";import"./dialog-DvA2Eg_5.js";import"./X-CBMy7yKc.js";import"./Copy01-D9JtSymR.js";import"./hooks-Dw_OSmvW.js";import"./use-mcp-client-CxYgn3Qy.js";import"./auth-Crca_YJ1.js";import"./decopilot-sse-pool-CZlrNInL.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BMSi6Cid.js";import"./use-ai-providers-y5_7opa-.js";import"./studio-tools-BgcmoF5i.js";import"./use-decopilot-events-BumpA-kh.js";import"./use-organization-settings-Chah6Wq8.js";import"./automation-runs-DkQundm9.js";import"./agent-icon-DcT2z6bS.js";import"./AlertCircle-DD8w89fy.js";import"./Tool01-BbTB92On.js";import"./ArrowLeft-Bel9Y6iT.js";import"./Tool02-DTILKJvk.js";import"./XCircle-oMG2V9aD.js";import"./ArrowUpRight-C-k1tiE0.js";import"./TrendUp01-DgP-eGtu.js";import"./ZapSquare-BCBwgTVN.js";import"./Users03-5YKMpPfK.js";import"./CheckCircle-BWgJ458b.js";import"./ChevronRight-Dqv4SVtL.js";import"./DotsVertical-D-dT2T8F.js";import"./Stars02-CpZd2lF-.js";import"./CpuChip01-CwzTD8pc.js";import"./CreditCard01-DjNzhbYo.js";import"./Globe01-cD-B9fh9.js";import"./Settings02-Bh6Q8l1L.js";import"./Eye-Dx8LQCoI.js";import"./FilterLines-DZcr0gYT.js";import"./Share07-Bs7v9lL0.js";import"./Star01-DAjPJW6d.js";import"./Globe04-BYOwMQCe.js";import"./SwitchHorizontal01-D00PadAw.js";import"./HardDrive-BtnjE_nh.js";import"./Key01-oaDlOuWq.js";import"./LayoutLeft-DE0hZkrD.js";import"./LinkExternal01-B3IOD7AL.js";import"./LogOut01-DXjMZ4o_.js";import"./Monitor01-CM8QflpD.js";import"./Sun-DmLhVGbl.js";import"./Palette-CDEq2n1o.js";import"./Play-DB0OT2JG.js";import"./Plus-DH37BwlK.js";import"./SearchLg-D8JLDRQu.js";import"./SearchMd-j1Zqyycw.js";import"./Shield01-DaCpKbh6.js";import"./Stars01-CVuFKB7q.js";import"./Trash01-TLVRATwC.js";import"./Upload01-Cday2CXI.js";import"./User01-nXJ18YRv.js";import"./Users01-C1-w8May.js";import"./XClose-Doo5J85X.js";import"./Zap-CdRWHrBL.js";import"./useInfiniteQuery-DKythQje.js";import"./use-infinite-scroll-ByMzcADb.js";import"./use-connection-C6ZZZP8B.js";import"./card-5d_tJKgB.js";import"./sidebar-BTUskRYR.js";import"./use-mobile-BIOgiIHU.js";import"./table-B00otXt0.js";import"./empty-state-BiRKOvuR.js";import"./use-members-CQQ15SUZ.js";import"./use-org-auth-client-56rN_jbc.js";import"./use-clock-tick-CBJMfDpK.js";import"./use-automations-DeV5tuw5.js";import"./useSuspenseInfiniteQuery-DbMQh74D.js";import"./avatar-KsRe27SW.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-C2sZcuR4.js";import"./monaco-editor-DWZCxLJD.js";import"./spinner-amMiVFDC.js";import"./types-CCN2pdDh.js";import"./shell-layout-Dh06HRFX.js";import"./required-auth-layout-zU3iebij.js";import"./use-org-sso-Bi00q74R.js";import"./integration-icon-RigdZ0y9.js";import"./use-navigate-to-agent-BU1Lvdsm.js";import"./reusable-new-chat-CouMjkYR.js";import"./chart-D3uZlfzD.js";import"./index-Cu8OAqu4.js";import"./form-CIZp1ki1.js";import"./file-type-icon-BZrJ7upE.js";import"./drawer-Drkw-46F.js";import"./collection-search-IbqMvte9.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-DoWsjRo9.js";import"./toggle-group-BPHNRdro.js";import"./use-deco-credits-pxzEgMM9.js";import"./popover-C7sozdhj.js";import"./self-tool-result-B25eY6s_.js";import"./alert-dialog-DfkZLz7B.js";import"./extract-connection-data-CUJo5ZDK.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-BHxgxJe7.js";import"./authenticate-and-persist-oauth-CQWeKOnw.js";import"./mcp-oauth-BwJihd3U.js";import"./track-BpcaufC5.js";import"./toolbar-DMG3Ci9K.js";import"./skeleton-NTxYvVQG.js";import"./github-repo-picker-33OCy2_V.js";import"./use-mcp-tools-Bqc1QME3.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-CcOrVsKj.js";import"./use-registry-connections-BYotgCMq.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-0jLf5-JS.js";import"./collection-tabs-BiqInTX3.js";import"./badge-9kWYVRiU.js";import"./use-open-billing-url-DJkoGWXI.js";import"./select-model-DklSmgMd.js";import"./checkbox-DBOgILkS.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-CY2PnN3M.js";import"./cards-BaIF1f52.js";import"./dropdown-menu-VwoCInhU.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-CMKLcezx.js";import"./use-capability-Dn8wmkDt.js";import"./pt-BR-CLy76QW2.js";import"./switch-Cuv-3ygS.js";import"./use-debounced-autosave-DM62ht1I.js";import"./index-DKNn0dL0.js";import"./search-input-D5OVMJX7.js";import"./index-BdptdCOM.js";import"./use-secrets-DBBF6G0l.js";import"./AreaChart-TjG9DCTi.js";import"./use-tags-BGSiL5Zq.js";import"./get-initials-D-f_fDFw.js";import"./command-C4N36Pab.js";import"./index-Dbail80J.js";import"./use-file-configs-DrU8Kpk-.js";import"./automation-list-row-pI6MVX-P.js";const X={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"}]},Y={authors:"sandbox.recordEditor.titleAuthor"};function Hr(C){const t=L.c(40),{orgSlug:K,virtualMcpId:h,branch:w,kind:a,blockKey:g,block:f}=C,i=R(),P=M(h);let b;t[0]!==w||t[1]!==K||t[2]!==P||t[3]!==h?(b={orgSlug:K,virtualMcpId:h,branch:w,packagePath:P},t[0]=w,t[1]=K,t[2]=P,t[3]=h,t[4]=b):b=t[4];const p=U(b);let k;t[5]!==f||t[6]!==a?(k=W(f,a),t[5]=f,t[6]=a,t[7]=k):k=t[7];const B=k;let v;t[8]!==g||t[9]!==a||t[10]!==p?(v=l=>{p.mutate({blockKey:g,data:G(g,a,l)})},t[8]=g,t[9]=a,t[10]=p,t[11]=v):v=t[11];const[e,S]=Q(B,v);let j;t[12]!==e||t[13]!==S?(j=(l,o)=>S({...e,[l]:o}),t[12]=e,t[13]=S,t[14]=j):j=t[14];const s=j,T=Y[a];let n;t[15]!==i||t[16]!==T?(n=i(T),t[15]=i,t[16]=T,t[17]=n):n=t[17];let c;t[18]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[18]=n,t[19]=c):c=t[19];let d;t[20]!==p.isError||t[21]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[20]=p.isError,t[21]=p.isPending,t[22]=d):d=t[22];let y;t[23]!==c||t[24]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[23]=c,t[24]=d,t[25]=y):y=t[25];const N=X[a];let x;if(t[26]!==e||t[27]!==s||t[28]!==i||t[29]!==N){let l;t[31]!==e||t[32]!==s||t[33]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{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(I,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(z,{value:F(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(J,{id:o.key,className:"h-10 w-full",children:r.jsx(O,{placeholder:i(o.labelKey)})}),r.jsx(V,{children:(o.options??[]).map(m=>r.jsx($,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(I,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:F(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:F(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[31]=e,t[32]=s,t[33]=i,t[34]=l):l=t[34],x=N.map(l),t[26]=e,t[27]=s,t[28]=i,t[29]=N,t[30]=x}else x=t[30];let u;t[35]!==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[35]=x,t[36]=u):u=t[36];let E;return t[37]!==y||t[38]!==u?(E=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[37]=y,t[38]=u,t[39]=E):E=t[39],E}export{Hr as RecordEditor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as pt,b as at,j as r}from"./index-CP0-934_.js";import{C as ct}from"./checkbox-DBOgILkS.js";import{I as rt}from"./input-C5ZlIxB4.js";import{L as et}from"./label-DpRm0AEI.js";import{d as dt,a as nt,b as ft,c as xt,S as ht}from"./select-BccNb2Fl.js";import{F as ut,bw as bt,J as yt,bx as jt,by as vt}from"./index-Cbf4nIcl.js";import{u as gt}from"./use-autosave-BFgr8dlP.js";import"./Check-DF1PVTXs.js";import"./tooltip-CyhFIdTH.js";import"./ChevronDown-DgG2RDRW.js";import"./ChevronUp-Df_qpxcd.js";import"./ArrowUp-DqZp6_S-.js";import"./chat-context-C9H5kwmd.js";import"./tab-id-Bl2tCDAa.js";import"./dialog-DvA2Eg_5.js";import"./X-CBMy7yKc.js";import"./Copy01-D9JtSymR.js";import"./hooks-Dw_OSmvW.js";import"./use-mcp-client-CxYgn3Qy.js";import"./auth-Crca_YJ1.js";import"./decopilot-sse-pool-CZlrNInL.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BMSi6Cid.js";import"./use-ai-providers-y5_7opa-.js";import"./studio-tools-BgcmoF5i.js";import"./use-decopilot-events-BumpA-kh.js";import"./use-organization-settings-Chah6Wq8.js";import"./automation-runs-DkQundm9.js";import"./agent-icon-DcT2z6bS.js";import"./AlertCircle-DD8w89fy.js";import"./Tool01-BbTB92On.js";import"./ArrowLeft-Bel9Y6iT.js";import"./Tool02-DTILKJvk.js";import"./XCircle-oMG2V9aD.js";import"./ArrowUpRight-C-k1tiE0.js";import"./TrendUp01-DgP-eGtu.js";import"./ZapSquare-BCBwgTVN.js";import"./Users03-5YKMpPfK.js";import"./CheckCircle-BWgJ458b.js";import"./ChevronRight-Dqv4SVtL.js";import"./DotsVertical-D-dT2T8F.js";import"./Stars02-CpZd2lF-.js";import"./CpuChip01-CwzTD8pc.js";import"./CreditCard01-DjNzhbYo.js";import"./Globe01-cD-B9fh9.js";import"./Settings02-Bh6Q8l1L.js";import"./Eye-Dx8LQCoI.js";import"./FilterLines-DZcr0gYT.js";import"./Share07-Bs7v9lL0.js";import"./Star01-DAjPJW6d.js";import"./Globe04-BYOwMQCe.js";import"./SwitchHorizontal01-D00PadAw.js";import"./HardDrive-BtnjE_nh.js";import"./Key01-oaDlOuWq.js";import"./LayoutLeft-DE0hZkrD.js";import"./LinkExternal01-B3IOD7AL.js";import"./LogOut01-DXjMZ4o_.js";import"./Monitor01-CM8QflpD.js";import"./Sun-DmLhVGbl.js";import"./Palette-CDEq2n1o.js";import"./Play-DB0OT2JG.js";import"./Plus-DH37BwlK.js";import"./SearchLg-D8JLDRQu.js";import"./SearchMd-j1Zqyycw.js";import"./Shield01-DaCpKbh6.js";import"./Stars01-CVuFKB7q.js";import"./Trash01-TLVRATwC.js";import"./Upload01-Cday2CXI.js";import"./User01-nXJ18YRv.js";import"./Users01-C1-w8May.js";import"./XClose-Doo5J85X.js";import"./Zap-CdRWHrBL.js";import"./useInfiniteQuery-DKythQje.js";import"./use-infinite-scroll-ByMzcADb.js";import"./use-connection-C6ZZZP8B.js";import"./card-5d_tJKgB.js";import"./sidebar-BTUskRYR.js";import"./use-mobile-BIOgiIHU.js";import"./table-B00otXt0.js";import"./empty-state-BiRKOvuR.js";import"./use-members-CQQ15SUZ.js";import"./use-org-auth-client-56rN_jbc.js";import"./use-clock-tick-CBJMfDpK.js";import"./use-automations-DeV5tuw5.js";import"./useSuspenseInfiniteQuery-DbMQh74D.js";import"./avatar-KsRe27SW.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-C2sZcuR4.js";import"./monaco-editor-DWZCxLJD.js";import"./spinner-amMiVFDC.js";import"./types-CCN2pdDh.js";import"./shell-layout-Dh06HRFX.js";import"./required-auth-layout-zU3iebij.js";import"./use-org-sso-Bi00q74R.js";import"./integration-icon-RigdZ0y9.js";import"./use-navigate-to-agent-BU1Lvdsm.js";import"./reusable-new-chat-CouMjkYR.js";import"./chart-D3uZlfzD.js";import"./index-Cu8OAqu4.js";import"./form-CIZp1ki1.js";import"./file-type-icon-BZrJ7upE.js";import"./drawer-Drkw-46F.js";import"./collection-search-IbqMvte9.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-DoWsjRo9.js";import"./toggle-group-BPHNRdro.js";import"./use-deco-credits-pxzEgMM9.js";import"./popover-C7sozdhj.js";import"./self-tool-result-B25eY6s_.js";import"./alert-dialog-DfkZLz7B.js";import"./extract-connection-data-CUJo5ZDK.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-BHxgxJe7.js";import"./authenticate-and-persist-oauth-CQWeKOnw.js";import"./mcp-oauth-BwJihd3U.js";import"./track-BpcaufC5.js";import"./toolbar-DMG3Ci9K.js";import"./skeleton-NTxYvVQG.js";import"./github-repo-picker-33OCy2_V.js";import"./use-mcp-tools-Bqc1QME3.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-CcOrVsKj.js";import"./use-registry-connections-BYotgCMq.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./textarea-jCuJi0tv.js";import"./connection-form-helpers-0jLf5-JS.js";import"./collection-tabs-BiqInTX3.js";import"./badge-9kWYVRiU.js";import"./use-open-billing-url-DJkoGWXI.js";import"./select-model-DklSmgMd.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-CY2PnN3M.js";import"./cards-BaIF1f52.js";import"./dropdown-menu-VwoCInhU.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-CMKLcezx.js";import"./use-capability-Dn8wmkDt.js";import"./pt-BR-CLy76QW2.js";import"./switch-Cuv-3ygS.js";import"./use-debounced-autosave-DM62ht1I.js";import"./index-DKNn0dL0.js";import"./search-input-D5OVMJX7.js";import"./index-BdptdCOM.js";import"./use-secrets-DBBF6G0l.js";import"./AreaChart-TjG9DCTi.js";import"./use-tags-BGSiL5Zq.js";import"./get-initials-D-f_fDFw.js";import"./command-C4N36Pab.js";import"./index-Dbail80J.js";import"./use-file-configs-DrU8Kpk-.js";import"./automation-list-row-pI6MVX-P.js";const Et=[{value:"temporary",labelKey:"sandbox.redirectEditor.typeTemporary"},{value:"permanent",labelKey:"sandbox.redirectEditor.typePermanent"}];function bi(it){const t=pt.c(106),{orgSlug:G,virtualMcpId:H,branch:W,blockKey:X,block:Z}=it,e=at();let V;t[0]!==W||t[1]!==G||t[2]!==H?(V={orgSlug:G,virtualMcpId:H,branch:W},t[0]=W,t[1]=G,t[2]=H,t[3]=V):V=t[3];const s=ut(V);let J;t[4]!==Z?(J=bt(Z),t[4]=Z,t[5]=J):J=t[5];const ot=J;let M;t[6]!==X||t[7]!==s?(M=i=>{s.mutate({blockKey:X,data:vt(i)})},t[6]=X,t[7]=s,t[8]=M):M=t[8];const[o,tt]=gt(ot,M);let Y;t[9]!==o||t[10]!==tt?(Y=i=>tt({...o,...i}),t[9]=o,t[10]=tt,t[11]=Y):Y=t[11];const m=Y;let l;t[12]!==e?(l=e("sandbox.redirectEditor.title"),t[12]=e,t[13]=l):l=t[13];let p;t[14]!==l?(p=r.jsx("span",{className:"text-sm font-medium",children:l}),t[14]=l,t[15]=p):p=t[15];let a;t[16]!==s.isError||t[17]!==s.isPending?(a=r.jsx(yt,{isPending:s.isPending,isError:s.isError}),t[16]=s.isError,t[17]=s.isPending,t[18]=a):a=t[18];let c;t[19]!==p||t[20]!==a?(c=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[p,a]}),t[19]=p,t[20]=a,t[21]=c):c=t[21];let d;t[22]!==e?(d=e("sandbox.redirectEditor.fromLabel"),t[22]=e,t[23]=d):d=t[23];let n;t[24]!==d?(n=r.jsx(et,{htmlFor:"redirect-from",children:d}),t[24]=d,t[25]=n):n=t[25];const mt=o.from;let f;t[26]!==e?(f=e("sandbox.redirectEditor.fromPlaceholder"),t[26]=e,t[27]=f):f=t[27];let x;t[28]!==m?(x=i=>m({from:i.target.value}),t[28]=m,t[29]=x):x=t[29];let h;t[30]!==o.from||t[31]!==f||t[32]!==x?(h=r.jsx(rt,{id:"redirect-from",value:mt,placeholder:f,onChange:x,className:"h-10"}),t[30]=o.from,t[31]=f,t[32]=x,t[33]=h):h=t[33];let u;t[34]!==e?(u=e("sandbox.redirectEditor.fromDescription"),t[34]=e,t[35]=u):u=t[35];let b;t[36]!==u?(b=r.jsx("p",{className:"text-xs text-muted-foreground",children:u}),t[36]=u,t[37]=b):b=t[37];let y;t[38]!==n||t[39]!==h||t[40]!==b?(y=r.jsxs("div",{className:"space-y-2",children:[n,h,b]}),t[38]=n,t[39]=h,t[40]=b,t[41]=y):y=t[41];let j;t[42]!==e?(j=e("sandbox.redirectEditor.toLabel"),t[42]=e,t[43]=j):j=t[43];let v;t[44]!==j?(v=r.jsx(et,{htmlFor:"redirect-to",children:j}),t[44]=j,t[45]=v):v=t[45];const st=o.to;let g;t[46]!==e?(g=e("sandbox.redirectEditor.toPlaceholder"),t[46]=e,t[47]=g):g=t[47];let E;t[48]!==m?(E=i=>m({to:i.target.value}),t[48]=m,t[49]=E):E=t[49];let P;t[50]!==o.to||t[51]!==g||t[52]!==E?(P=r.jsx(rt,{id:"redirect-to",value:st,placeholder:g,onChange:E,className:"h-10"}),t[50]=o.to,t[51]=g,t[52]=E,t[53]=P):P=t[53];let N;t[54]!==e?(N=e("sandbox.redirectEditor.toDescription"),t[54]=e,t[55]=N):N=t[55];let S;t[56]!==N?(S=r.jsx("p",{className:"text-xs text-muted-foreground",children:N}),t[56]=N,t[57]=S):S=t[57];let C;t[58]!==v||t[59]!==P||t[60]!==S?(C=r.jsxs("div",{className:"space-y-2",children:[v,P,S]}),t[58]=v,t[59]=P,t[60]=S,t[61]=C):C=t[61];let T;t[62]!==e?(T=e("sandbox.redirectEditor.typeLabel"),t[62]=e,t[63]=T):T=t[63];let k;t[64]!==T?(k=r.jsx(et,{htmlFor:"redirect-type",children:T}),t[64]=T,t[65]=k):k=t[65];const lt=o.type;let w;t[66]!==m?(w=i=>m({type:i}),t[66]=m,t[67]=w):w=t[67];let R;t[68]!==e?(R=e("sandbox.redirectEditor.typePlaceholder"),t[68]=e,t[69]=R):R=t[69];let I;t[70]!==R?(I=r.jsx(nt,{id:"redirect-type",className:"h-10 w-full",children:r.jsx(ft,{placeholder:R})}),t[70]=R,t[71]=I):I=t[71];let _;t[72]!==e?(_=Et.map(i=>r.jsx(dt,{value:i.value,children:e(i.labelKey,{status:jt[i.value]})},i.value)),t[72]=e,t[73]=_):_=t[73];let F;t[74]!==_?(F=r.jsx(xt,{children:_}),t[74]=_,t[75]=F):F=t[75];let L;t[76]!==o.type||t[77]!==w||t[78]!==I||t[79]!==F?(L=r.jsxs(ht,{value:lt,onValueChange:w,children:[I,F]}),t[76]=o.type,t[77]=w,t[78]=I,t[79]=F,t[80]=L):L=t[80];let $;t[81]===Symbol.for("react.memo_cache_sentinel")?($=r.jsx("strong",{children:"Temporary"}),t[81]=$):$=t[81];let q;t[82]===Symbol.for("react.memo_cache_sentinel")?(q=r.jsxs("p",{className:"text-xs text-muted-foreground",children:["Use ",$," when the redirect may change;"," ",r.jsx("strong",{children:"Permanent"})," lets browsers cache it."]}),t[82]=q):q=t[82];let Q;t[83]!==k||t[84]!==L?(Q=r.jsxs("div",{className:"space-y-2",children:[k,L,q]}),t[83]=k,t[84]=L,t[85]=Q):Q=t[85];let K;t[86]!==m?(K=i=>m({discardQueryParameters:i===!0}),t[86]=m,t[87]=K):K=t[87];let D;t[88]!==o.discardQueryParameters||t[89]!==K?(D=r.jsx(ct,{checked:o.discardQueryParameters,onCheckedChange:K}),t[88]=o.discardQueryParameters,t[89]=K,t[90]=D):D=t[90];let A;t[91]!==e?(A=e("sandbox.redirectEditor.discardQueryParameters"),t[91]=e,t[92]=A):A=t[92];let B;t[93]!==A?(B=r.jsx("span",{className:"text-sm",children:A}),t[93]=A,t[94]=B):B=t[94];let O;t[95]!==D||t[96]!==B?(O=r.jsxs("label",{className:"flex cursor-pointer items-center gap-2.5",children:[D,B]}),t[95]=D,t[96]=B,t[97]=O):O=t[97];let U;t[98]!==y||t[99]!==C||t[100]!==Q||t[101]!==O?(U=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsxs("div",{className:"mx-auto max-w-xl space-y-6",children:[y,C,Q,O]})}),t[98]=y,t[99]=C,t[100]=Q,t[101]=O,t[102]=U):U=t[102];let z;return t[103]!==U||t[104]!==c?(z=r.jsxs("div",{className:"flex h-full flex-col",children:[c,U]}),t[103]=U,t[104]=c,t[105]=z):z=t[105],z}export{bi as RedirectEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-Aid8mCZz.js","assets/index-CP0-934_.js","assets/index-Dncm6IaE.css","assets/Tool02-DTILKJvk.js","assets/CheckCircle-BWgJ458b.js","assets/Settings02-Bh6Q8l1L.js","assets/use-mcp-client-CxYgn3Qy.js","assets/auth-Crca_YJ1.js","assets/useInfiniteQuery-DKythQje.js","assets/use-infinite-scroll-ByMzcADb.js","assets/studio-tools-BgcmoF5i.js","assets/badge-9kWYVRiU.js","assets/input-C5ZlIxB4.js","assets/dropdown-menu-VwoCInhU.js","assets/Check-DF1PVTXs.js","assets/ChevronRight-Dqv4SVtL.js","assets/DotsVertical-D-dT2T8F.js","assets/table-B00otXt0.js","assets/toggle-group-BPHNRdro.js","assets/use-view-mode-vOz9lGdI.js","assets/use-mobile-BIOgiIHU.js","assets/FilterLines-DZcr0gYT.js","assets/Globe01-cD-B9fh9.js","assets/SearchMd-j1Zqyycw.js","assets/dialog-DvA2Eg_5.js","assets/X-CBMy7yKc.js","assets/AlertCircle-DD8w89fy.js","assets/Upload01-Cday2CXI.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-DfkZLz7B.js","assets/card-5d_tJKgB.js","assets/Trash01-TLVRATwC.js","assets/label-DpRm0AEI.js","assets/select-BccNb2Fl.js","assets/tooltip-CyhFIdTH.js","assets/ChevronDown-DgG2RDRW.js","assets/ChevronUp-Df_qpxcd.js","assets/switch-Cuv-3ygS.js","assets/textarea-jCuJi0tv.js","assets/ArrowLeft-Bel9Y6iT.js","assets/XCircle-oMG2V9aD.js","assets/checkbox-DBOgILkS.js","assets/Eye-Dx8LQCoI.js","assets/LinkExternal01-B3IOD7AL.js","assets/use-copy-C2sZcuR4.js","assets/Copy01-D9JtSymR.js","assets/Key01-oaDlOuWq.js","assets/Plus-DH37BwlK.js","assets/mcp-oauth-BwJihd3U.js","assets/Play-DB0OT2JG.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as i,j as e,r as s,k as a,aG as o}from"./index-CP0-934_.js";import{R as m}from"./require-capability-BYTH9X3y.js";import"./use-capability-Dn8wmkDt.js";import"./access-gate-BGmBp7wD.js";import"./capability-load-error-lWIHy0ES.js";const n=s.lazy(()=>o(()=>import("./registry-layout-Aid8mCZz.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,47,48,49])));function f(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(m,{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{f as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-Aid8mCZz.js","assets/index-CP0-934_.js","assets/index-Dncm6IaE.css","assets/Tool02-DTILKJvk.js","assets/CheckCircle-BWgJ458b.js","assets/Settings02-Bh6Q8l1L.js","assets/use-mcp-client-CxYgn3Qy.js","assets/auth-Crca_YJ1.js","assets/useInfiniteQuery-DKythQje.js","assets/use-infinite-scroll-ByMzcADb.js","assets/studio-tools-BgcmoF5i.js","assets/badge-9kWYVRiU.js","assets/input-C5ZlIxB4.js","assets/dropdown-menu-VwoCInhU.js","assets/Check-DF1PVTXs.js","assets/ChevronRight-Dqv4SVtL.js","assets/DotsVertical-D-dT2T8F.js","assets/table-B00otXt0.js","assets/toggle-group-BPHNRdro.js","assets/use-view-mode-vOz9lGdI.js","assets/use-mobile-BIOgiIHU.js","assets/FilterLines-DZcr0gYT.js","assets/Globe01-cD-B9fh9.js","assets/SearchMd-j1Zqyycw.js","assets/dialog-DvA2Eg_5.js","assets/X-CBMy7yKc.js","assets/AlertCircle-DD8w89fy.js","assets/Upload01-Cday2CXI.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-DfkZLz7B.js","assets/card-5d_tJKgB.js","assets/Trash01-TLVRATwC.js","assets/label-DpRm0AEI.js","assets/select-BccNb2Fl.js","assets/tooltip-CyhFIdTH.js","assets/ChevronDown-DgG2RDRW.js","assets/ChevronUp-Df_qpxcd.js","assets/switch-Cuv-3ygS.js","assets/textarea-jCuJi0tv.js","assets/ArrowLeft-Bel9Y6iT.js","assets/XCircle-oMG2V9aD.js","assets/checkbox-DBOgILkS.js","assets/Eye-Dx8LQCoI.js","assets/LinkExternal01-B3IOD7AL.js","assets/use-copy-C2sZcuR4.js","assets/Copy01-D9JtSymR.js","assets/Key01-oaDlOuWq.js","assets/Plus-DH37BwlK.js","assets/mcp-oauth-BwJihd3U.js","assets/Play-DB0OT2JG.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as m,d as n,f as c,j as t,k as f,r as l,aG as p}from"./index-CP0-934_.js";import{R as u}from"./require-capability-BYTH9X3y.js";import"./use-capability-Dn8wmkDt.js";import"./access-gate-BGmBp7wD.js";import"./capability-load-error-lWIHy0ES.js";const g=l.lazy(()=>p(()=>import("./registry-layout-Aid8mCZz.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,47,48,49])));function j(){const e=m.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}=c(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{j as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./use-infinite-scroll-ByMzcADb.js";import{e6 as i}from"./index-CP0-934_.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-ByMzcADb.js";import{e6 as u,b3 as n}from"./index-CP0-934_.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};
|