decocms 4.518.2 → 4.518.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{ActiveShapeUtils-EYkJV7tD.js → ActiveShapeUtils-Docp8wLu.js} +1 -1
- package/dist/client/assets/{AlertCircle-CzTXJ0ax.js → AlertCircle-DbgHFTtO.js} +1 -1
- package/dist/client/assets/{AreaChart-8lCOmLfE.js → AreaChart-CcL-fFKM.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BQThfb60.js → ArrowLeft-B24gv2xe.js} +1 -1
- package/dist/client/assets/{ArrowUp-DUhCibLH.js → ArrowUp-CgN1Qhsf.js} +1 -1
- package/dist/client/assets/{BarChart-2wCpTPJ2.js → BarChart-CCFGMu0H.js} +1 -1
- package/dist/client/assets/{Building02-BOLEL9nK.js → Building02-DBmpU4M6.js} +1 -1
- package/dist/client/assets/{CartesianChart-CmRg3x8T.js → CartesianChart-DHq2iPiU.js} +1 -1
- package/dist/client/assets/{CategoricalChart-BtQQT8Ex.js → CategoricalChart-Do09x_e5.js} +1 -1
- package/dist/client/assets/{CheckCircle-OCgBlAwW.js → CheckCircle-Cqp__I1R.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-DaDJpoIU.js → ChevronSelectorVertical-Bg2KdIAv.js} +1 -1
- package/dist/client/assets/{ChevronUp-DtSKb4be.js → ChevronUp-BJfOFayd.js} +1 -1
- package/dist/client/assets/{Copy01-DVWv3lef.js → Copy01-C8oI3ru2.js} +1 -1
- package/dist/client/assets/{CreditCard01-Bw5uGiku.js → CreditCard01-DBg0t5KK.js} +1 -1
- package/dist/client/assets/{DotsVertical-CEoX1VVK.js → DotsVertical-MgtYn_XR.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-i8geYMQV.js → ErrorBarContext-Bjgx2BpF.js} +1 -1
- package/dist/client/assets/{Globe04-CMBPkECo.js → Globe04-8XNa-DGn.js} +1 -1
- package/dist/client/assets/{Image01-D_y3XkIW.js → Image01-BYSI_JTy.js} +1 -1
- package/dist/client/assets/{Key01-p2EsnMlr.js → Key01-CVBy3Esl.js} +1 -1
- package/dist/client/assets/{Link01-D28gAr0F.js → Link01-1YHKCfLl.js} +1 -1
- package/dist/client/assets/{LinkBroken01-Dz2vlPBe.js → LinkBroken01-D8vKURBw.js} +1 -1
- package/dist/client/assets/{Minus-DNpWuD14.js → Minus-D7Nn8Jj1.js} +1 -1
- package/dist/client/assets/{Monitor01-CYm-wjzD.js → Monitor01-th-leB7u.js} +1 -1
- package/dist/client/assets/{Play-cNq95jJS.js → Play-B3knqxcb.js} +1 -1
- package/dist/client/assets/{Plus-C4rGoU1F.js → Plus-Bf8vM3Sx.js} +1 -1
- package/dist/client/assets/{ReferenceLine-BvmA07RC.js → ReferenceLine-DevuDJh8.js} +1 -1
- package/dist/client/assets/{SearchMd-BYCOzBqa.js → SearchMd-C1vd4NNy.js} +1 -1
- package/dist/client/assets/{Sector-23KRNcXn.js → Sector-CjducGVR.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-DvN3FHxE.js → ShoppingBag01-Bkku1Te9.js} +1 -1
- package/dist/client/assets/{Sun-DFIh8Vd-.js → Sun-C_rfv84K.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-D6mwjnXs.js → SwitchHorizontal01-DsxrRdFb.js} +1 -1
- package/dist/client/assets/{Tool01-_CVpzZpk.js → Tool01-XzMXqYKz.js} +1 -1
- package/dist/client/assets/{Trash01-CgNTH-jr.js → Trash01-C68DqBe-.js} +1 -1
- package/dist/client/assets/{Upload01-CiTZ5ZQQ.js → Upload01-D4h8lLWj.js} +1 -1
- package/dist/client/assets/{User01-vLr2BfmM.js → User01-BKJMa06q.js} +1 -1
- package/dist/client/assets/{UserSquare-B7fe7FYj.js → UserSquare-ezkB_C7H.js} +1 -1
- package/dist/client/assets/{Users01-BgSWeeD_.js → Users01-sQ3Jopve.js} +1 -1
- package/dist/client/assets/{XClose-B_rQyiiY.js → XClose-5-Y_ZVDY.js} +1 -1
- package/dist/client/assets/{ZoomOut-DzrH576O.js → ZoomOut-CTwXyALk.js} +1 -1
- package/dist/client/assets/{access-gate-CjdHb0j3.js → access-gate-BAeTdIKF.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-DyCA7E5B.js → add-connection-dialog-CzGzxkZf.js} +1 -1
- package/dist/client/assets/agent-analytics-CyvLQ78l.js +1 -0
- package/dist/client/assets/agent-app-CNlTu6Xl.js +1 -0
- package/dist/client/assets/{agent-assets-AUU4xJcf.js → agent-assets-CDrWVXsZ.js} +1 -1
- package/dist/client/assets/{agent-automation-H4qJ1HOM.js → agent-automation-CANuyesn.js} +3 -3
- package/dist/client/assets/agent-automations-FCLkmptj.js +1 -0
- package/dist/client/assets/agent-calendar-ChKa8nwx.js +1 -0
- package/dist/client/assets/{agent-connect-sources-DO6Zn3Mx.js → agent-connect-sources-DPRFzy_W.js} +1 -1
- package/dist/client/assets/agent-deck-DgzTTX-H.js +1 -0
- package/dist/client/assets/{agent-e2e-BswlcjA7.js → agent-e2e-CGsydJDk.js} +1 -1
- package/dist/client/assets/agent-experiments-g1fOqVOr.js +1 -0
- package/dist/client/assets/agent-file-DZxHfHqj.js +1 -0
- package/dist/client/assets/{agent-hosting-CgIJCVf2.js → agent-hosting-DLdgWaMb.js} +1 -1
- package/dist/client/assets/{agent-icon-BVqmbz-P.js → agent-icon-Bl0Q4nDQ.js} +1 -1
- package/dist/client/assets/agent-library-T0msL9vO.js +1 -0
- package/dist/client/assets/agent-library-file-Dc6tLUFf.js +1 -0
- package/dist/client/assets/agent-monitor-64lw2Ndx.js +1 -0
- package/dist/client/assets/{agent-overview-BnCn329o.js → agent-overview-DmbW8VOm.js} +1 -1
- package/dist/client/assets/{agent-releases-PaWDRDlN.js → agent-releases-DJsbXDlS.js} +1 -1
- package/dist/client/assets/agent-settings-BEGX73lw.js +1 -0
- package/dist/client/assets/{agent-site-editor-Dgv9OUYF.js → agent-site-editor-Dn7we51s.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-MGF1GSqb.js +2 -0
- package/dist/client/assets/agent-site-editor-content-KSRD36m4.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-jNYBd5Qs.js +1 -0
- package/dist/client/assets/agent-view-Cmt42rZM.js +1 -0
- package/dist/client/assets/{agent-view-guard-CIz__L_S.js → agent-view-guard-B0aDsWRb.js} +1 -1
- package/dist/client/assets/{agents-list-B9ydQIh8.js → agents-list-lOOhfuKV.js} +1 -1
- package/dist/client/assets/{ai-providers-BvGFGpkW.js → ai-providers-Bm7atoS5.js} +1 -1
- package/dist/client/assets/{alert-dialog-Bbqu21pF.js → alert-dialog-SFY1grIM.js} +2 -2
- package/dist/client/assets/alert-fsJICKf8.js +1 -0
- package/dist/client/assets/{analytics-sections-CXA9Djw5.js → analytics-sections-KGMek742.js} +1 -1
- package/dist/client/assets/{analytics-tab-CNbGVSyT.js → analytics-tab-DrPnNwhC.js} +1 -1
- package/dist/client/assets/{api-keys-zMWE0eW-.js → api-keys-DGMEM3Pu.js} +1 -1
- package/dist/client/assets/api-keys-DxiLI10z.js +1 -0
- package/dist/client/assets/{app-editor-BnLt2HBc.js → app-editor-6m_ygtwU.js} +1 -1
- package/dist/client/assets/{asset-utils-CQBKR3VN.js → asset-utils-DJKQ3jqO.js} +1 -1
- package/dist/client/assets/{auth-catchall-BeibfVV0.js → auth-catchall-BDasxET4.js} +1 -1
- package/dist/client/assets/{auth-entry-DgsnWxp_.js → auth-entry-CIp781XC.js} +1 -1
- package/dist/client/assets/{auth-BypL5L1O.js → auth-k-50r1Jm.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Daxd6Ypw.js → auth-split-layout-DKyMuscv.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-ClTAD7nN.js → authenticate-and-persist-oauth-Citp3_ku.js} +1 -1
- package/dist/client/assets/{automation-list-row-CvwYuhxk.js → automation-list-row-DCYvqhb1.js} +1 -1
- package/dist/client/assets/{automation-runs-CApbL_Sf.js → automation-runs-Bv01EPr_.js} +1 -1
- package/dist/client/assets/{automations-Di1Er6hW.js → automations-CMa4N4ws.js} +1 -1
- package/dist/client/assets/{autosend-B4f5gabb.js → autosend-BUGExBM4.js} +1 -1
- package/dist/client/assets/{avatar-CFO-sRGJ.js → avatar-DZp2nksb.js} +1 -1
- package/dist/client/assets/badge-B8Ivcb6S.js +1 -0
- package/dist/client/assets/{block-document-C4MOQYjr.js → block-document-t9Z4rWQI.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-Bq9hpUEB.js → blocks-preview-workspace-context-guMABPcp.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-CwfYFgj9.js → blocks-tab-states-Ch0bvZWI.js} +1 -1
- package/dist/client/assets/{blog-schema-CgYPJyE9.js → blog-schema-DGhK3ld9.js} +1 -1
- package/dist/client/assets/{buckets-DoEfEinO.js → buckets-PCZkbjVY.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-BByi4O7Q.js → build-improve-prompt-doc-Ba28GGJ7.js} +1 -1
- package/dist/client/assets/{calendar-AEesHfNc.js → calendar-BDnGPQeR.js} +1 -1
- package/dist/client/assets/{campaigns-view-DTbZCmg6.js → campaigns-view-BzxbPG_g.js} +1 -1
- package/dist/client/assets/{capability-load-error-BfKRzvUM.js → capability-load-error-h9GaAVI2.js} +1 -1
- package/dist/client/assets/{category-editor-sR05FPNS.js → category-editor-BCaNtr8G.js} +1 -1
- package/dist/client/assets/{cdn-tab-9RYVl35J.js → cdn-tab-BxlHc73J.js} +1 -1
- package/dist/client/assets/{chart-D7lvPdFx.js → chart-CF2951Pl.js} +1 -1
- package/dist/client/assets/{chat-context-DqNUlJMY.js → chat-context-C_P788VD.js} +6 -6
- package/dist/client/assets/{chat-draft-DeylAkNb.js → chat-draft-Cd62GOk3.js} +1 -1
- package/dist/client/assets/{checkbox-JO6XiJJq.js → checkbox-D_LpTCuo.js} +1 -1
- package/dist/client/assets/{choose-editor-CQPIEsfr.js → choose-editor-CB85FQ98.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DksDQz1c.js → cli-auth-success-6cvMKGqI.js} +1 -1
- package/dist/client/assets/{client-icons-DbBtP136.js → client-icons-CwlNIvVS.js} +1 -1
- package/dist/client/assets/cms-settings-editor-CoBhi6-0.js +1 -0
- package/dist/client/assets/{collapsible-CXUiqrZ3.js → collapsible-BHKr0Yuy.js} +1 -1
- package/dist/client/assets/{collection-detail-BXm00G6J.js → collection-detail--pNpxuBG.js} +1 -1
- package/dist/client/assets/{collection-display-button-BYX1WGsT.js → collection-display-button-CmGqnHZR.js} +1 -1
- package/dist/client/assets/{collection-search-CVvFJ5Bb.js → collection-search-BfeTverb.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-_tytodYv.js → collection-table-wrapper-DbYcMpOp.js} +1 -1
- package/dist/client/assets/{collection-tabs-8dvqqnDR.js → collection-tabs-BCwnkCTo.js} +1 -1
- package/dist/client/assets/{column-rules-iw7Orhw0.js → column-rules-cuIMwEgL.js} +1 -1
- package/dist/client/assets/{combobox-CS_HItwQ.js → combobox-Br3ekqoF.js} +1 -1
- package/dist/client/assets/{command-C9iGFbUT.js → command-9a3EU_B7.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-DuvDeify.js → companion-mcps-section-Bict1-Py.js} +1 -1
- package/dist/client/assets/{config-Ba5RPb40.js → config-HnMhGwJ8.js} +1 -1
- package/dist/client/assets/{connect-Q-Yb-tbQ.js → connect-CPP1LzMI.js} +1 -1
- package/dist/client/assets/{connect-layout-BsURWVqR.js → connect-layout-CoCuwn0R.js} +1 -1
- package/dist/client/assets/{connect-source-dialog-Cugh2Kwq.js → connect-source-dialog-tW0_dVgF.js} +1 -1
- package/dist/client/assets/{connection-y8T_LUE4.js → connection-DA0DdtmE.js} +1 -1
- package/dist/client/assets/{connection-card-C_97TUuR.js → connection-card-D6khbIvi.js} +1 -1
- package/dist/client/assets/{connection-detail-B2pboQAc.js → connection-detail-3DINZ9Ps.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B61Y3llL.js → connection-form-helpers-CD1Glq-b.js} +1 -1
- package/dist/client/assets/{connections-BtM211zd.js → connections-5zgE9hOg.js} +1 -1
- package/dist/client/assets/{content-tab-6aM6SPfn.js → content-tab-DsX079ZZ.js} +3 -3
- package/dist/client/assets/{context-Dhzbo3rE.js → context-D_yEBKdV.js} +1 -1
- package/dist/client/assets/{context-menu-DvfYSbOF.js → context-menu-CQmIAsNX.js} +1 -1
- package/dist/client/assets/{context-shell-DQlTMTgZ.js → context-shell-Cm9pkJeZ.js} +3 -3
- package/dist/client/assets/{core.esm-Bnj1keGH.js → core.esm-KXf7B9P5.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BJw0GqGQ.js → create-organization-dialog-CU3HQ3J9.js} +1 -1
- package/dist/client/assets/{daily-pulse-ambOqGdx.js → daily-pulse-BTMsF03t.js} +1 -1
- package/dist/client/assets/{discover-BaCG_0h-.js → discover-CF8v9Owa.js} +1 -1
- package/dist/client/assets/{domain-settings-DvRELpY-.js → domain-settings-BE6GV0Yp.js} +1 -1
- package/dist/client/assets/{drawer-txFUQcqx.js → drawer-BTNZfEU6.js} +1 -1
- package/dist/client/assets/{editor-classes-C__SrxMV.js → editor-classes-DQrtem9w.js} +1 -1
- package/dist/client/assets/{editor-DxbkHv3R.js → editor-swke_0an.js} +1 -1
- package/dist/client/assets/{empty-state-bJzQYitF.js → empty-state-CkRk6emt.js} +1 -1
- package/dist/client/assets/{empty-state-BCgDvmX-.js → empty-state-DjnYxJoJ.js} +1 -1
- package/dist/client/assets/experiments-tab-6fYgjeCj.js +1 -0
- package/dist/client/assets/experiments-tab-choice-DLYJ3Xgw.js +1 -0
- package/dist/client/assets/{extract-connection-data-DrQExIK1.js → extract-connection-data-BcSeYo2b.js} +1 -1
- package/dist/client/assets/{feature-gate-Q2dMtYpF.js → feature-gate-DnDfxxPc.js} +1 -1
- package/dist/client/assets/{feature-paywall-XpETcjbv.js → feature-paywall-DbYyln6a.js} +1 -1
- package/dist/client/assets/{file-explorer-CfVYwLoJ.js → file-explorer-CmXZRbDC.js} +1 -1
- package/dist/client/assets/{file-preview-Dd06GGvy.js → file-preview-CB-QuWoi.js} +1 -1
- package/dist/client/assets/{file-share-button-BxZcqmJb.js → file-share-button-5DKLtCO8.js} +2 -2
- package/dist/client/assets/{file-type-icon-CIdo5ojc.js → file-type-icon-BlPndn8R.js} +1 -1
- package/dist/client/assets/{folder-icon-EiO3M0UC.js → folder-icon-50i43Zdi.js} +2 -2
- package/dist/client/assets/{form-uqsH1s-y.js → form-CWlPjOiE.js} +1 -1
- package/dist/client/assets/{general-Vd-hJfIm.js → general-DiUoRhmp.js} +1 -1
- package/dist/client/assets/{home-HWe4c99-.js → home-DgNlH8AE.js} +1 -1
- package/dist/client/assets/{icon-button-BUDG7R_U.js → icon-button-BjI92SlL.js} +1 -1
- package/dist/client/assets/{index-C_7vDyVA.js → index-AzZxgAUy.js} +1 -1
- package/dist/client/assets/{index-BtufcGJ5.js → index-BT89s1_n.js} +1 -1
- package/dist/client/assets/{index-v9zzzqiT.js → index-BiGgRVLA.js} +1 -1
- package/dist/client/assets/{index-kjyiSPIZ.js → index-BzTLQsHh.js} +1 -1
- package/dist/client/assets/{index-BphI8pNH.js → index-CImJlq71.js} +38 -38
- package/dist/client/assets/{index-B7PBSrog.js → index-ChO_KP9v.js} +1 -1
- package/dist/client/assets/{index-BP0spIbU.js → index-D5TlKaB4.js} +1 -1
- package/dist/client/assets/index-D8VCkLtE.js +1 -0
- package/dist/client/assets/{index-C5xgscqu.js → index-DQ2PXCBR.js} +1 -1
- package/dist/client/assets/{index-BCGh3XTH.js → index-DYNe4TdA.js} +1 -1
- package/dist/client/assets/{index-7jvcir73.js → index-DfzKVEQZ.js} +1 -1
- package/dist/client/assets/{index-CW0mTKOH.js → index-UjSXE0Iy.js} +1 -1
- package/dist/client/assets/{index-Codsxxmu.js → index-YTcaUBCs.js} +1 -1
- package/dist/client/assets/{index-B4zmwgCj.js → index-YVO_Peic.js} +1 -1
- package/dist/client/assets/{index-unPBFo0y.js → index-YbD_X2Sg.js} +1 -1
- package/dist/client/assets/{index-redirect-TlUNx3Dt.js → index-redirect-DDzvngbU.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-CD6zPv_B.js → infiniteQueryObserver-BPnYbZuQ.js} +1 -1
- package/dist/client/assets/{infra-billing-gJ1Pxkhj.js → infra-billing-BqdikAj2.js} +1 -1
- package/dist/client/assets/{input-otZYQGEr.js → input-BHFkZ3T9.js} +3 -3
- package/dist/client/assets/{input-DeNGl9cT.js → input-Cs9OOIz-.js} +1 -1
- package/dist/client/assets/{integration-icon-C-_9oW7G.js → integration-icon-B9snkXuC.js} +1 -1
- package/dist/client/assets/{jira-icon-7kZdJvHs.js → jira-icon-DIYO8jdA.js} +1 -1
- package/dist/client/assets/{label-BXumUTqC.js → label-CfvfFl3x.js} +1 -1
- package/dist/client/assets/{layout-Ba0KZf90.js → layout-BRYkue1F.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-D4pxgM1l.js → legacy-agents-deep-Sb6HNynM.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-BQ_7LpiD.js → legacy-main-redirect-DxGhnvQi.js} +1 -1
- package/dist/client/assets/library-BWuIS4mc.js +1 -0
- package/dist/client/assets/{login-CtcB6JMd.js → login-BoKhcWPb.js} +1 -1
- package/dist/client/assets/{markdown-Bqq3R66p.js → markdown-BDnIqP7U.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-tCfKhIA1.js → mcp-app-renderer-vmvnP_G4.js} +1 -1
- package/dist/client/assets/{mcp-oauth-ZxlBJ_T6.js → mcp-oauth-Bf1ymd_L.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CaTRnuQU.js → mcp-oauth-De4zWGdY.js} +1 -1
- package/dist/client/assets/{members-Ds3beXMQ.js → members-C_49FqGn.js} +1 -1
- package/dist/client/assets/{memory-CgI9n1je.js → memory-DB-8JkBQ.js} +1 -1
- package/dist/client/assets/{mini-report-page-C4CjzrcA.js → mini-report-page-UFZ1_IfA.js} +1 -1
- package/dist/client/assets/{mock-board-x9OA1kIr.js → mock-board-uI6Kjr1q.js} +3 -3
- package/dist/client/assets/{monaco-editor-DZ2Rp_C7.js → monaco-editor-FMQP-sIq.js} +2 -2
- package/dist/client/assets/{monitoring-BkpBpvIZ.js → monitoring-D8MQ-E4C.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-tdOtylzh.js → monitoring-stats-row-BGPZUteu.js} +1 -1
- package/dist/client/assets/{multi-select-BnYAqN90.js → multi-select-CjpZ72b0.js} +1 -1
- package/dist/client/assets/{mustache-DuPMqXPT.js → mustache-wrPcgRSJ.js} +1 -1
- package/dist/client/assets/{named-rule-uses-BFHY2QY4.js → named-rule-uses-DUhhItNP.js} +1 -1
- package/dist/client/assets/{named-rule-view-DHbEzjpv.js → named-rule-view-DuazhL5D.js} +1 -1
- package/dist/client/assets/{new-project-dialog-Cs8HMQlb.js → new-project-dialog-CEUx8Wuz.js} +1 -1
- package/dist/client/assets/{oauth-callback-DSM8XE33.js → oauth-callback-VCDp4Mdt.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DgCpBfDW.js → oauth-callback-ai-provider-DA8fj9mx.js} +1 -1
- package/dist/client/assets/{onboarding-DeVuIfK9.js → onboarding-CNAboKGM.js} +1 -1
- package/dist/client/assets/{openai-conversation-CXYNFSGC.js → openai-conversation-DzWEkMFW.js} +2 -2
- package/dist/client/assets/{optimistic-project-sidebar-views-VOTXYU3D.js → optimistic-project-sidebar-views-DtUy3pl1.js} +1 -1
- package/dist/client/assets/{order-monitor-day-Bxp4gXEu.js → order-monitor-day-AyxJmcAH.js} +1 -1
- package/dist/client/assets/{organization-choice-BhCIGMjr.js → organization-choice-BQVJgGgg.js} +1 -1
- package/dist/client/assets/{orgs-BPDKksL2.js → orgs-D0MWQorV.js} +1 -1
- package/dist/client/assets/{page-seo-form-WBlhJY38.js → page-seo-form-Dbm_mNqs.js} +1 -1
- package/dist/client/assets/{pair-DRaIXAj-.js → pair-CNR7-_qK.js} +8 -8
- package/dist/client/assets/{parse-sections-ClqXxi6i.js → parse-sections-BYTdQHxf.js} +1 -1
- package/dist/client/assets/{plan-DVQ6L_2j.js → plan-CEyzI8hm.js} +1 -1
- package/dist/client/assets/{plan-ladder-BJOn0tjJ.js → plan-ladder-Chib98li.js} +1 -1
- package/dist/client/assets/{popover-D-MLGIKG.js → popover-BqGcOxqn.js} +1 -1
- package/dist/client/assets/{post-calendar-Ywpfpf68.js → post-calendar-2c7rIKCZ.js} +1 -1
- package/dist/client/assets/{post-editor-tA48ONL1.js → post-editor-CRPwAV6k.js} +2 -2
- package/dist/client/assets/{preview-content-0nJULLLy.js → preview-content-C3GD-BQD.js} +1 -1
- package/dist/client/assets/{preview-dialog-DweVJd_n.js → preview-dialog-vLTpbCc0.js} +1 -1
- package/dist/client/assets/{preview-panel-BJ3KrhDy.js → preview-panel-C6xrnpJj.js} +1 -1
- package/dist/client/assets/{preview-tab-C3IiVwf1.js → preview-tab-CBRKeC1b.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-CCIg354O.js → product-picker-dialog-DHVGLlrb.js} +1 -1
- package/dist/client/assets/{profile-ZCnKsIdj.js → profile-C5h78yhG.js} +1 -1
- package/dist/client/assets/project-app-view-C3iPvweM.js +1 -0
- package/dist/client/assets/{project-apps-FJ0TrEc6.js → project-apps-D7YctFcN.js} +1 -1
- package/dist/client/assets/{project-feed-CZ6ECbBu.js → project-feed-CpfPTWDh.js} +1 -1
- package/dist/client/assets/{project-icon-J_TfV9WN.js → project-icon-B-MVviOF.js} +1 -1
- package/dist/client/assets/project-reports-qKDYuHCF.js +1 -0
- package/dist/client/assets/project-tasks-C08bqxWt.js +1 -0
- package/dist/client/assets/{projects-BGlrrPvQ.js → projects-DrGNXye1.js} +1 -1
- package/dist/client/assets/{projects-empty-state-B699jX9t.js → projects-empty-state-B6Ieq7wG.js} +1 -1
- package/dist/client/assets/{prompts-CL3pb_We.js → prompts-DszjlGng.js} +1 -1
- package/dist/client/assets/record-editor-zoDoy66N.js +1 -0
- package/dist/client/assets/{redirect-editor-DwpwMdsP.js → redirect-editor-D4gU7n0c.js} +1 -1
- package/dist/client/assets/{releases-api-DX2L3yOb.js → releases-api-CK0jSLYO.js} +1 -1
- package/dist/client/assets/reports-CalnjK7E.js +1 -0
- package/dist/client/assets/{reports-fz3ShzPV.js → reports-CjnzDShS.js} +1 -1
- package/dist/client/assets/{reports-onboarding-mTQFH_iA.js → reports-onboarding-C81Upwj7.js} +1 -1
- package/dist/client/assets/{reports-tab-Bon4oiNK.js → reports-tab-DJdkQM-o.js} +2 -2
- package/dist/client/assets/repositories-C7NPKiSj.js +1 -0
- package/dist/client/assets/{repositories-Pjwn0cqi.js → repositories-IyZ5mwlx.js} +1 -1
- package/dist/client/assets/{repository-binding-CqjA7Tko.js → repository-binding-wXpkgUS5.js} +1 -1
- package/dist/client/assets/{repository-import-picker-DRcn5MCM.js → repository-import-picker-DWw4DnKc.js} +1 -1
- package/dist/client/assets/{repository-picker-BL6xlIly.js → repository-picker-fHOvHVjl.js} +1 -1
- package/dist/client/assets/{require-capability-gPmNE28i.js → require-capability-B4IJOpH-.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BA3Gxw_5.js → required-auth-layout-p9wTtbkA.js} +1 -1
- package/dist/client/assets/{reset-password-qyVzV1QI.js → reset-password-CpXnMk-E.js} +1 -1
- package/dist/client/assets/{resizable-Bu3AyxKl.js → resizable-CykEr2xO.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-DXt8FU1X.js → resolve-tab-icon-dNyXGxcc.js} +1 -1
- package/dist/client/assets/{review-settings-O8K_mvh6.js → review-settings-D36VxF8a.js} +1 -1
- package/dist/client/assets/{roles-CCLRm2p0.js → roles-DPB4O14g.js} +1 -1
- package/dist/client/assets/{route-DaeLPCnk.js → route-CH9GHNDj.js} +1 -1
- package/dist/client/assets/route-DsIfFih1.js +1 -0
- package/dist/client/assets/route-rXh3k9jX.js +1 -0
- package/dist/client/assets/{runnable-block-editor-DXVt1mRj.js → runnable-block-editor-CvNZGRDu.js} +6 -6
- package/dist/client/assets/{sandbox-lifecycle-context-CAD11jz7.js → sandbox-lifecycle-context-CsnW_1kh.js} +1 -1
- package/dist/client/assets/{schema-Ddw2ah-q.js → schema-BXcU44Bp.js} +1 -1
- package/dist/client/assets/{schema-BKLQwKnK.js → schema-BjLtWzT5.js} +1 -1
- package/dist/client/assets/{scroll-area-GNWuujdQ.js → scroll-area-BZP0xkZ2.js} +1 -1
- package/dist/client/assets/{search-input-i8DAXvnS.js → search-input-CLbrLBK4.js} +1 -1
- package/dist/client/assets/{search-toggle-C2BWIs4O.js → search-toggle-Bz--u_u6.js} +1 -1
- package/dist/client/assets/{secret-ciphertext-BA15G7qe.js → secret-ciphertext-DZQPZkTr.js} +1 -1
- package/dist/client/assets/{secret-picker-CwZHe4Yx.js → secret-picker-r4BGxMfM.js} +1 -1
- package/dist/client/assets/{secrets-BWNDO0aL.js → secrets-CzuDVgfq.js} +1 -1
- package/dist/client/assets/{sections-DhRieK41.js → sections-DE80daGy.js} +1 -1
- package/dist/client/assets/{sections-editor-TqSLQIU8.js → sections-editor-C5rNMLKQ.js} +1 -1
- package/dist/client/assets/{select-BAxIwkW7.js → select-CO-KeEXe.js} +1 -1
- package/dist/client/assets/{select-model-DKcSOpKv.js → select-model-B9aWAF7v.js} +1 -1
- package/dist/client/assets/{seo-editor-BhgypNCN.js → seo-editor-C5HGby9p.js} +1 -1
- package/dist/client/assets/{separator-gKWGw3ec.js → separator-Dr93-tcp.js} +1 -1
- package/dist/client/assets/settings-tab-OQ9gNE2t.js +1 -0
- package/dist/client/assets/{sheet-Dy9d78N0.js → sheet-DYqe447t.js} +1 -1
- package/dist/client/assets/shell-layout-Bmd6dXD4.js +1 -0
- package/dist/client/assets/{site-draft-actions-BjAr6xi6.js → site-draft-actions-CNazOyJI.js} +1 -1
- package/dist/client/assets/site-draft-view-CaiajxbQ.js +2 -0
- package/dist/client/assets/site-editor-BC9YFkDH.js +1 -0
- package/dist/client/assets/{site-editor-toast-n7tT-SpR.js → site-editor-toast-Ckx512no.js} +1 -1
- package/dist/client/assets/{skills-C-lfUnzb.js → skills-Dq2dQBym.js} +1 -1
- package/dist/client/assets/{slider-DMzP4oef.js → slider-Dm9m4Zom.js} +1 -1
- package/dist/client/assets/{sortable.esm-BEpH5tbt.js → sortable.esm-PpUBUYvN.js} +1 -1
- package/dist/client/assets/{sso-Bdl8tzvn.js → sso-et00F2-M.js} +1 -1
- package/dist/client/assets/{suggestion-BfzPP8A_.js → suggestion-CaGvyBH6.js} +1 -1
- package/dist/client/assets/{switch-B0lPkF5_.js → switch-DGiOaGRn.js} +1 -1
- package/dist/client/assets/{symbol-CcauWbN2.js → symbol-ZVON6uKU.js} +1 -1
- package/dist/client/assets/{synced-repos-cKAzeg2x.js → synced-repos-CKQ3x7oT.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-C2nHjzae.js → tab-icon-glyph-DLj4dmeB.js} +1 -1
- package/dist/client/assets/{table-CeULXNQ2.js → table-DcqK9CO1.js} +1 -1
- package/dist/client/assets/{tabs-fkqYJpP8.js → tabs-CU2NQvm6.js} +1 -1
- package/dist/client/assets/{task-assignee-avatar-BuSQPIHq.js → task-assignee-avatar-Cs9bBLeR.js} +1 -1
- package/dist/client/assets/{task-board-Cv7D_3uN.js → task-board-CRvOV9zQ.js} +1 -1
- package/dist/client/assets/{task-route-dMm35uIv.js → task-route-BPQ9h0t-.js} +1 -1
- package/dist/client/assets/{task-status-D3EaEAgF.js → task-status-k_KZvqi3.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-C2Yib8gP.js → taskboard-analytics-DXKp_Xl8.js} +1 -1
- package/dist/client/assets/{tasks-Cx6Zd4fY.js → tasks-CJWFfvRo.js} +1 -1
- package/dist/client/assets/tasks-DfOAe8MK.js +1 -0
- package/dist/client/assets/{textarea-aGNI5bvN.js → textarea-Bp989dUN.js} +1 -1
- package/dist/client/assets/{thread-analytics-B9HcTgTh.js → thread-analytics-CMG9NspT.js} +1 -1
- package/dist/client/assets/{thread-intent-BQGp3MKl.js → thread-intent-DXY7orZh.js} +1 -1
- package/dist/client/assets/{thread-route-BEIPJEss.js → thread-route-B1rrIJuw.js} +1 -1
- package/dist/client/assets/{thread-route-D147zL8e.js → thread-route-ChN9O-1A.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-i2u8ULqW.js → thread-sheet-body-D-x-TABK.js} +1 -1
- package/dist/client/assets/{time-range-picker-0kVuNsQb.js → time-range-picker-B10kjTj_.js} +1 -1
- package/dist/client/assets/{toggle-group-DaYieoyW.js → toggle-group-K25Bl_Tm.js} +1 -1
- package/dist/client/assets/{tool-namespace-DqsoHKmd.js → tool-namespace-ln4cIuCt.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-3blDPoB6.js → toolbar-icon-button-NAoOtagz.js} +1 -1
- package/dist/client/assets/{tooltip-2YCPx1DM.js → tooltip-BB8x2ajM.js} +1 -1
- package/dist/client/assets/{tooltipContext-CgeI21sB.js → tooltipContext-DG-hvJrr.js} +1 -1
- package/dist/client/assets/{track-DO9rvMbw.js → track-DwVNsvWy.js} +1 -1
- package/dist/client/assets/{types-6BxgL_uJ.js → types-D4eFbg3n.js} +2 -2
- package/dist/client/assets/{url-slug-DxJ8K4M_.js → url-slug-Ck137SN4.js} +1 -1
- package/dist/client/assets/{usage-stats-BHO2m1GZ.js → usage-stats-DpZZQ75-.js} +1 -1
- package/dist/client/assets/{use-ai-providers-D11veeve.js → use-ai-providers-Cng_Zcqq.js} +1 -1
- package/dist/client/assets/{use-apply-named-rule-B4OGys4b.js → use-apply-named-rule-5US13ud-.js} +1 -1
- package/dist/client/assets/{use-automations-tbwaowTj.js → use-automations-BV-J2Ily.js} +1 -1
- package/dist/client/assets/{use-autosave-DfMGkaud.js → use-autosave-By6DVzfK.js} +1 -1
- package/dist/client/assets/{use-chat-layout-state-CIyU-XxO.js → use-chat-layout-state-CNkklJiF.js} +1 -1
- package/dist/client/assets/{use-clock-tick-DRqivY5H.js → use-clock-tick-D95T8222.js} +1 -1
- package/dist/client/assets/{use-connect-companion-pRfQU03M.js → use-connect-companion-BRWaN5AJ.js} +1 -1
- package/dist/client/assets/{use-connection-hBtWetVy.js → use-connection-CAJy9ePc.js} +1 -1
- package/dist/client/assets/{use-content-sync-DTts1O7D.js → use-content-sync-3FE60C_P.js} +1 -1
- package/dist/client/assets/{use-copy-Ctyjo3u8.js → use-copy-CvMH5zdo.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BoVnWYo_.js → use-create-virtual-mcp-DTJ0zfpe.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BL151nA9.js → use-date-fns-locale-D3Iz1MzV.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-XfpamUxh.js → use-debounced-autosave-CGLCHS8I.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DppuiHxU.js → use-debounced-value-DvzjOUVw.js} +1 -1
- package/dist/client/assets/{use-deco-credits-DAnq8bae.js → use-deco-credits-D1dKlqXc.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CmWo-JmL.js → use-decopilot-events-DvJkZDam.js} +1 -1
- package/dist/client/assets/{use-delete-connection-D4L5Nbwc.js → use-delete-connection-D1ttYwJz.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CqRFItVm.js → use-deployment-admin-BpF0owio.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-6n7ATrzr.js → use-fast-preview-draft-url-C_TDHMYN.js} +1 -1
- package/dist/client/assets/{use-file-configs-BukUB2a7.js → use-file-configs-Bf0fhL21.js} +1 -1
- package/dist/client/assets/{use-inbox-feed-DWwwp0yB.js → use-inbox-feed-DFw-YlJH.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CAGEOw6T.js → use-infinite-scroll-CwPqy0HC.js} +1 -1
- package/dist/client/assets/{use-join-requests-C5RVOca9.js → use-join-requests-Z3CFtAeL.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-C_SiePFc.js → use-main-panel-tabs-Cp-duvYv.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CPaTWfZe.js → use-mcp-auth-status-Db86wDh0.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DsrOnW9o.js → use-mcp-client-BT3MLYTJ.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-B5RvuVy4.js → use-mcp-prompts-DvHpjECx.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-oOqD73aG.js → use-mcp-tools-DY3R7rf0.js} +1 -1
- package/dist/client/assets/{use-members-DQZYP7Cb.js → use-members-DrsTuCTp.js} +1 -1
- package/dist/client/assets/{use-mobile-DruvZ2zF.js → use-mobile-Nz4my9ZZ.js} +1 -1
- package/dist/client/assets/{use-move-blocks-C7t8R0hh.js → use-move-blocks-Ck3YCWT9.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CfXi671z.js → use-navigate-to-agent-DqXhqPI9.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-0u6Rqj8b.js → use-open-billing-url-BPZ_x4uz.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CSFZu3Wj.js → use-org-auth-client-BVmUiQl1.js} +1 -1
- package/dist/client/assets/{use-org-fs-Bndw9m25.js → use-org-fs-qBxAqXun.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-DgWzYW9F.js → use-org-repo-syncs-C4sXoqIp.js} +1 -1
- package/dist/client/assets/{use-org-sso-B7o6rhq2.js → use-org-sso-B4zmaZVL.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DPfq-0hG.js → use-organization-roles-CfuwXcGJ.js} +1 -1
- package/dist/client/assets/{use-organization-settings-B2e749tN.js → use-organization-settings-DKJZVR_x.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-C-ip5ing.js → use-panel-navigate-D57HPY2x.js} +1 -1
- package/dist/client/assets/use-project-native-view-presence-C3HlYZwC.js +1 -0
- package/dist/client/assets/{use-project-scope-DN9qkINS.js → use-project-scope-CnnlA-du.js} +1 -1
- package/dist/client/assets/{use-recent-apps-Dieru2LM.js → use-recent-apps-CeorMBvV.js} +1 -1
- package/dist/client/assets/{use-releases-DJrTmfLZ.js → use-releases-fI9YxkQH.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-BdDNwhZy.js → use-reports-diagnostic-J_fRdq7J.js} +1 -1
- package/dist/client/assets/{use-sandbox-events-B-rKhgAE.js → use-sandbox-events-CioMqxnO.js} +1 -1
- package/dist/client/assets/{use-secrets-C3hSYvUx.js → use-secrets-OlxyEwyb.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-NrYdhHI5.js → use-section-preview-base-C3ZuHMr0.js} +1 -1
- package/dist/client/assets/{use-session-runtime-RS_ZeJDS.js → use-session-runtime-DfVwDDov.js} +1 -1
- package/dist/client/assets/{use-sidebar-collapsed-C9KH2wzy.js → use-sidebar-collapsed-D3qR_zRH.js} +1 -1
- package/dist/client/assets/{use-tags-DBJgOg0Z.js → use-tags-CxN5zuRZ.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-Bl-3jKgS.js → use-task-board-analytics-C-0VTjUE.js} +1 -1
- package/dist/client/assets/{use-task-board-events-CemAfTjA.js → use-task-board-events-BH7aE_i8.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-83sFKoAa.js → use-task-board-item-prs-BLDfRR9k.js} +1 -1
- package/dist/client/assets/{use-task-metadata-DYSGuNJN.js → use-task-metadata-xGzNCL2M.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-B-gfPcTz.js → use-thread-analytics-DJdxAjR-.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-9KkInEd1.js → use-thread-outputs-D8VLF1dw.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BwyrFPWF.js +1 -0
- package/dist/client/assets/{useQueries-BRUig2bT.js → useQueries-1QlJ0aQr.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DJXxpWPx.js +1 -0
- package/dist/client/assets/{users-zGj6iqQJ.js → users-C4R4jnJb.js} +1 -1
- package/dist/client/assets/{utils-DnxtSQ0E.js → utils-Dc05pOUY.js} +1 -1
- package/dist/client/assets/{variant-calendar-DzngKeid.js → variant-calendar-B48hMXng.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-BvLc7beb.js → variant-matcher-override-f1vt09fC.js} +1 -1
- package/dist/client/assets/{virtual-mcp-CKcyAjRE.js → virtual-mcp-CP4uoCBU.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-B6MhK1l7.js → watch-sse-pool-HKRMih-U.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-analytics-C_1r2ktq.js +0 -1
- package/dist/client/assets/agent-app-DADhKCUS.js +0 -1
- package/dist/client/assets/agent-automations-BCHMa4q1.js +0 -1
- package/dist/client/assets/agent-calendar-BIC31eZQ.js +0 -1
- package/dist/client/assets/agent-deck-DfcsXmVh.js +0 -1
- package/dist/client/assets/agent-experiments-DacDH6n9.js +0 -1
- package/dist/client/assets/agent-file-DvvjQBtI.js +0 -1
- package/dist/client/assets/agent-library-D07m5-2P.js +0 -1
- package/dist/client/assets/agent-library-file-CKXkh_Ag.js +0 -1
- package/dist/client/assets/agent-monitor-T2Kisepj.js +0 -1
- package/dist/client/assets/agent-settings-CtpQVMq0.js +0 -1
- package/dist/client/assets/agent-site-editor-code-DEyTlk7z.js +0 -2
- package/dist/client/assets/agent-site-editor-content-CO78zdWN.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-C8DxePtH.js +0 -1
- package/dist/client/assets/agent-view-zDoYJpqf.js +0 -1
- package/dist/client/assets/alert-COKmPgNZ.js +0 -1
- package/dist/client/assets/api-keys-rvaVQMbg.js +0 -1
- package/dist/client/assets/badge-CYEiaJVw.js +0 -1
- package/dist/client/assets/cms-settings-editor-CD6Fhdzj.js +0 -1
- package/dist/client/assets/experiments-tab-DmhKoZxz.js +0 -1
- package/dist/client/assets/experiments-tab-choice-Ie5k_O6x.js +0 -1
- package/dist/client/assets/index-DDtLrgkt.js +0 -1
- package/dist/client/assets/library-1V2C8s_K.js +0 -1
- package/dist/client/assets/project-app-view-BLZBQKeL.js +0 -1
- package/dist/client/assets/project-reports-IwgSFkuk.js +0 -1
- package/dist/client/assets/project-tasks-DIh-1w8l.js +0 -1
- package/dist/client/assets/record-editor-v6loIaK5.js +0 -1
- package/dist/client/assets/reports-VklqwHN4.js +0 -1
- package/dist/client/assets/repositories-DVBlDnPs.js +0 -1
- package/dist/client/assets/route-DMrkbv9t.js +0 -1
- package/dist/client/assets/route-jSSJr7H8.js +0 -1
- package/dist/client/assets/settings-tab-Cp66Lx0x.js +0 -1
- package/dist/client/assets/shell-layout-DPflSDI7.js +0 -1
- package/dist/client/assets/site-draft-view-Bpwq-4Im.js +0 -2
- package/dist/client/assets/site-editor-CP2FSMmX.js +0 -1
- package/dist/client/assets/tasks-5wUjot9O.js +0 -1
- package/dist/client/assets/use-project-native-view-presence-iEIqgCZR.js +0 -1
- package/dist/client/assets/useInfiniteQuery-Ctv8zOi3.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DRLUIOlU.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4501,7 +4501,7 @@ ${X}`:`${Y}
|
|
|
4501
4501
|
|
|
4502
4502
|
${X}
|
|
4503
4503
|
${J.slice(Y.length).trimStart()}`}function Nw8($){return $?.match(DH5)?.[1]?.toLowerCase()??null}async function wH5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(uK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=uK(X,$.packagePath),W=new Set(G.map((H)=>H.path)),K=[];for(let H of G){if(J.get(H.path)===H.sha)continue;K.push({path:H.path,copyFromRef:Q})}for(let H of J.keys())if(!W.has(H))K.push({path:H,deleted:!0});return{changes:K,tree:Y,next:G.map((H)=>({stem:H.stem,sha:H.sha}))}}async function Uw8($,Z){try{return await lQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof ks)return null;throw Q}}async function Bw8($,Z,Q){let Y=zP($.packagePath),[X,J]=await Promise.all([$.client.getEntriesAtPaths(Z,[Y]),$.client.getEntriesAtPaths(Q,[Y])]);if(X.get(Y)?.sha===J.get(Y)?.sha)return!1;let[G,W]=await Promise.all([Uw8($,Z),Uw8($,Q)]);return G!==W}async function Dw8($,Z){if(!RD0(Z))throw new ou;if(!await CT1($.store,$.site,Z))throw new ou}async function Lw8($,Z){await Dw8($,Z);let Q=await h5($.client,$.mainBranch);return Bw8($,Q,Z)}async function Ow8($,Z,Q={},Y={}){await Dw8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new ou;let J=await h5($.client,$.mainBranch),G=await wH5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await Bw8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await ST1($,J,G,jH5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await _g0($,K,Y),schemaChanged:W}}var ou,BH5="Reapplied-From",DH5;var gT1=L(()=>{Kn();R5();hF();QB();mQ0();Sg0();Fw8();ou=class ou extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};DH5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function jw8($,Z,Q){let[Y,X,J]=await Promise.all([kT1($.store,$.site),YR$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:PH5,cursor:Q,limit:EH5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>Nw8(H.body));await Promise.all([...new Set(W)].filter((H)=>H!==null&&!G.has(H)).map(async(H)=>{let F=await $.client.readCommit(H).catch(()=>null);if(F)G.set(H,F.date)}));let K=J.items.map((H,F)=>{let U=W[F];return{sha:H.sha,date:H.date,message:H.message,author:H.author.name??H.author.login,hasRelease:X.has(H.sha),reapplyOf:U?{sha:U,date:G.get(U)??null}:null}});return{current:Y,commits:K,nextCursor:J.nextCursor}}async function ww8($){let Z=await h5($.client,$.mainBranch),Q=await _T1($,Z);return vT1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()})}var EH5=50,PH5="1970-01-01T00:00:00Z";var Ew8=L(()=>{R5();QB();mQ0();gT1()});function Pw8($){return`site-tokens:${$}`}function zH5($){let Z=$?.tokens;if(!Array.isArray(Z))return[];return Z.filter((Q)=>typeof Q==="object"&&Q!==null&&typeof Q.kid==="string"&&typeof Q.iat==="number")}function zw8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function AH5($,Z){let Q=(J)=>hT1(new TextEncoder().encode(JSON.stringify(J))),Y=`${Q({alg:"EdDSA",typ:"JWT"})}.${Q({site:Z.site,kid:Z.kid,iat:Z.iat})}`,X=await crypto.subtle.sign({name:"Ed25519"},$,new TextEncoder().encode(Y));return`${Y}.${hT1(X)}`}function Aw8($){let Z=async(Q,Y)=>zH5(await $.kv.get(Q,Pw8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:hT1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await AH5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,Pw8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var hT1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function qH5(){let $=zp();return $?{store:$,purge:Vg0()}:null}async function gg0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site,previewHosts:await kg0({site:Q.site,metadata:Q.metadata,domains:$.var.siteDomains})}}function Tw8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return Aw8({kv:$.var.studioContext.storage.kv,signingKey:()=>zw8(Z)})}function bs($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof ks)return $.json({error:Q},409);if(Z instanceof vg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=v3(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function qw8($={}){let Z=new Z1,Q=$.repoClientFor??f3,Y=$.insightsFor??Pq$,X=$.delivery??qH5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),J.set("siteDomains",$.siteDomains),await G()}),Z.use("/:virtualMcpId/*",TH5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await gg0(J);if(!G)return J.json(yg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await jw8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return bs(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await gg0(J);if(!G)return J.json(yg0,503);let W=await J.req.json().catch(()=>({})),K=await ww8(G),H=J.var.studioContext.auth?.user?.id;if(typeof W.branch==="string"&&W.branch&&typeof W.draftEtag==="string"&&W.draftEtag&&H){let F=J.get("hostedProject");await bT1(G,kD0({kv:J.var.studioContext.storage.kv,store:G.store}),{organizationId:F.organizationId,virtualMcpId:F.virtualMcpId,branch:W.branch,site:F.site,editor:H},W.draftEtag)}return J.json({current:K})}catch(G){return bs(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await gg0(J);if(!G)return J.json(yg0,503);return J.json({schemaChanged:await Lw8(G,J.req.param("sha"))})}catch(G){if(G instanceof ou)return J.json({error:G.message},404);return bs(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await gg0(J);if(!G)return J.json(yg0,503);let W=await Ow8(G,J.req.param("sha"),{coAuthor:JO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof ou)return J.json({error:G.message},404);if(G instanceof Cs)return J.json({error:"main-moved"},409);return bs(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=Tw8(J);if(!W)return J.json({error:"site tokens not configured"},503);return J.json({site:G.site,tokens:await W.list(G.organizationId,G.site)})}),Z.post("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=Tw8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await XR(K,G.packagePath,await K.getDefaultBranch());if(await Rp(J.var.studioContext.storage.virtualMcps,{id:G.virtualMcpId,organizationId:G.organizationId,metadata:G.metadata},H,J.var.studioContext.auth?.user?.id??"system"),!H)return J.json({error:"not a Blocks v8 site"},409);return J.json(await W.issue(G.organizationId,G.site))}catch(K){return bs(J,K)}}),Z}var TH5,yg0;var Rw8=L(()=>{bF();H8();Ug0();k3();xF();R5();QB();VT1();CD0();mQ0();IT1();Sg0();Ew8();gT1();$50();JR();qp();u1();fR();TH5=Ls(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await qQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!VQ(await a7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=JW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await _D0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return bs($,H)}let K=await SD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Tp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:YB(G),repository:W,metadata:G}),Z()}),yg0={error:"hosted delivery not configured"}});var Mw8=($)=>{let Z=new Z1;if(Z.use("*",ho),Z.use("*",iU8),Z.route("/",cU8($.voiceSessions)),Z.route("/",Oy0()),Z.route("/",VN8()),Z.route("/",hN8()),Z.route("/",AN8()),Z.route("/",cL8()),Z.route("/",iL8()),Z.route("/",xL8()),Z.route("/",lL8()),Z.route("/",yL8()),Z.route("/",Kg0()),Z.route("/tools",rL8()),Z.route("/",oL8()),Z.route("/",LL8({kvStorage:$.kvStorage})),Z.route("/",BL8()),Z.route("/fs",ML8({getConnection:$.getNatsConnection})),Z.route("/sandbox",Vj8()),Z.route("/decofile",Jw8()),Z.route("/hosted",qw8()),Z.route("/",_L8()),Z.route("/",IL8()),Z.route("/deco-sites",wy0()),Z.route("/hosting",QN8()),Z.route("/monitor",DN8()),Z.route("/order-monitor",wN8()),Z.route("/sso",Fy0()),Z.route("/",Hg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",aU8()),$.mountDevAssets)Z.route("/dev-assets",My0({orgFromPath:!0}));Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth);for(let Q of bA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",RK8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of bA1)Z.route(Q,CL8());return Z.route("/mcp",Hx0()),Z.route("/mcp/self",Xg0()),Z.route("/mcp",Nx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Vw8=L(()=>{H8();dU8();pU8();ef0();rU8();K21();YN8();LN8();EN8();Vy0();P2();Y21();IN8();B21();DL8();OL8();VL8();kL8();J70();tz1();Bx0();vA1();SL8();vL8();fL8();gL8();yA1();dL8();pL8();sL8();gA1();eL8();hA1();Fx0();Ij8();Gw8();Rw8()});import{z as su}from"zod";class uT1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new Cw8.Kvm(hg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:hg0.StorageType.Memory,ttl:Sw8.nanos(qO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?kw8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await G$(200);continue}let G=Iw8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await G$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,Iw8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new R1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(Y){let X=await this.kv(),J=`agent.${Z.conversationKey}`,G=await X.get(J),W=G?.operation==="PUT"?kw8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var hg0,Cw8,Sw8,Iw8,kw8;var _w8=L(()=>{D3();CB();d$();hg0=_(gH(),1),Cw8=_(xq(),1),Sw8=_(a2(),1),Iw8=new TextEncoder,kw8=su.discriminatedUnion("state",[su.object({state:su.literal("ready"),agentId:su.string()}),su.object({state:su.literal("creating"),expiresAt:su.number()})])});import{z as xs}from"zod";function RH5($){return{model:$.model,instructions:`${rt$}
|
|
4504
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class lT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:RH5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:xs.object({session:xs.object({id:xs.string().min(1)}),transport:xs.object({type:xs.literal("webrtc"),sdp:xs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var vw8=L(()=>{CB()});var bw8;var xw8=L(()=>{bw8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function mT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:st$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:bw8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:qO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var fw8=L(()=>{CB();xw8()});import{z as nJ}from"zod";import{createHash as MH5,createHmac as VH5}from"crypto";class ug0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=MH5("sha256").update(JSON.stringify(mT1($))).digest("hex"),this.conversationKey=VH5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new ug0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=nJ.object({agents:nJ.array(nJ.object({agent_id:nJ.string(),name:nJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return nJ.object({platform_settings:nJ.object({auth:nJ.object({enable_auth:nJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...mT1(this.config)},AbortSignal.timeout(15000));return nJ.object({agent_id:nJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return nJ.object({token:nJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return nJ.object({token:nJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var yw8=L(()=>{fw8()});import{createHmac as IH5,timingSafeEqual as kH5}from"crypto";import{z as fs}from"zod";function hw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return IH5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function uw8($,Z){let Q=Buffer.from(JSON.stringify(gw8.parse($))).toString("base64url");return`${Q}.${hw8(Q,Z)}`}function lw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(hw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!kH5(W,G))return null;try{let K=gw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+qO)return null;return K.data}catch{return null}}var gw8;var mw8=L(()=>{CB();gw8=fs.object({sessionId:fs.string().uuid(),organizationId:fs.string().min(1).max(256),userId:fs.string().min(1).max(256),threadId:fs.string().min(1).max(256),expiresAt:fs.number().int().positive()})});import{z as cT1}from"zod";function cw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return dT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var dT1;var dw8=L(()=>{dT1=cT1.object({provider:cT1.enum(["elevenlabs","openai"]),model:cT1.string().trim().min(1).max(128)})});import{createHash as CH5}from"crypto";import{z as ys}from"zod";function gs($){return`user.${CH5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class pT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new iw8.Kvm(mg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:mg0.StorageType.Memory,ttl:pw8.nanos(qO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=cw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+qO},W=uw8(G,this.deps.secret),K=await this.kv(),H=gs(G),F=await K.get(H),U=F?.operation==="PUT"?lg0.parse(F.json()):null,N=iT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:gs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=lw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=gs(Q),J=await Y.get(X),G=J?.operation==="PUT"?lg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,iT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=gs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?lg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,iT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(gs($));if(Q?.operation==="PUT"&&lg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(gs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var mg0,iw8,pw8,lg0,iT1;var nw8=L(()=>{D3();CB();mw8();dw8();mg0=_(gH(),1),iw8=_(xq(),1),pw8=_(a2(),1),lg0=ys.object({sessionId:ys.string().uuid(),expiresAt:ys.number(),connected:ys.boolean().optional(),conversation:dT1.optional(),characters:ys.number().int().nonnegative(),requests:ys.number().int().nonnegative()}),iT1=new TextEncoder});import{z as c1}from"zod";function XD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function uH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function lH5($,Z,Q){try{return JSON.parse($)}catch{throw new sw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function mH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:lH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function cH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?MN(Q.function.parameters):MN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function dH5($){if(!$)return;return{openai:{response_format:$}}}function iH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function tw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var SH5=256,_H5,vH5,bH5,xH5,fH5,yH5,gH5,hH5,sw8,aw8,rw8;var ew8=L(()=>{l4();H8();Ds();NU();_H5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),vH5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),bH5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(vH5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),xH5=c1.object({type:c1.literal("text")}),fH5=c1.object({type:c1.literal("json_object")}),yH5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),gH5=c1.union([xH5,fH5,yH5]),hH5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(bH5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(_H5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:gH5.optional(),user:c1.string().optional()});sw8=class sw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};aw8=new Z1;aw8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(XD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(XD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(XD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=hH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(XD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=uH5(J.model);if(!G)return $.json(XD("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>iA(E.providerId));if(!w)return $.json(XD("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(XD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=mH5(J.messages),N=J.tools?cH5(J.tools):void 0,B=dH5(J.response_format),D=iH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Oj($,async(j)=>{let w=tw8(F,U,N,J,B,$.req.raw.signal);try{let E=Dt(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=SH5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:ow8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=tw8(F,U,N,J,B,$.req.raw.signal),w=await IO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:ow8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(XD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(XD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(XD(X.message,"server_error"),500)}});rw8=aw8});function pH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function $E8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!v5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(sA(U)!==J)continue;if(!pH5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var ZE8=L(()=>{H8();$X()});var cg0;var nT1=L(()=>{cg0={name:"decocms",version:"4.518.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function oH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??tH5}}var QE8,tH5="https://ph.studio.decocms.com",YE8;var XE8=L(()=>{H8();I10();Xu();H9();u1();Po();_z1();nT1();QE8=new Z1;QE8.get("/",($)=>{let Z={version:cg0.version,theme:OW$(),...LF().logo&&{logo:LF().logo},...hO()&&{internalUrl:x$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&B2(),plansEnabled:B0().plansEnabled,auth:_F8(),posthog:oH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:MU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});YE8=QE8});import{z as M$}from"zod";var sH5,JE8;var GE8=L(()=>{sH5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),JE8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(sH5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function WE8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function dg0($,Z={}){let Q=await fetch(WE8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return JE8.parse(await Q.json())}async function KE8($,Z={}){let Q=await fetch(WE8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var tT1=L(()=>{GE8();gL()});import{join as HE8}from"path";async function rH5($){try{let Z=await dg0($,{signal:AbortSignal.timeout(aH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||OE1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function GG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function eH5($,Z){let Q=Iu($),Y=Z?.brand?.trim()||OE1(Q),X=wG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=EG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${GG(W)}</title>`,`<meta name="description" content="${GG(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="${GG(W)}" />`,`<meta property="og:description" content="${GG(K)}" />`,`<meta property="og:url" content="${GG(G)}" />`,`<meta property="og:image" content="${GG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${GG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${GG(W)}" />`,`<meta name="twitter:description" content="${GG(K)}" />`,`<meta name="twitter:image" content="${GG(H)}" />`,`<meta name="twitter:image:alt" content="${GG(F)}" />`,`<link rel="canonical" href="${GG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${GG(G)}.md" />`,`<link rel="icon" href="${GG(X)}" sizes="any" />`].join(`
|
|
4504
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class lT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:RH5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:xs.object({session:xs.object({id:xs.string().min(1)}),transport:xs.object({type:xs.literal("webrtc"),sdp:xs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var vw8=L(()=>{CB()});var bw8;var xw8=L(()=>{bw8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function mT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:st$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:bw8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:qO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var fw8=L(()=>{CB();xw8()});import{z as nJ}from"zod";import{createHash as MH5,createHmac as VH5}from"crypto";class ug0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=MH5("sha256").update(JSON.stringify(mT1($))).digest("hex"),this.conversationKey=VH5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new ug0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=nJ.object({agents:nJ.array(nJ.object({agent_id:nJ.string(),name:nJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return nJ.object({platform_settings:nJ.object({auth:nJ.object({enable_auth:nJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...mT1(this.config)},AbortSignal.timeout(15000));return nJ.object({agent_id:nJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return nJ.object({token:nJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return nJ.object({token:nJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var yw8=L(()=>{fw8()});import{createHmac as IH5,timingSafeEqual as kH5}from"crypto";import{z as fs}from"zod";function hw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return IH5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function uw8($,Z){let Q=Buffer.from(JSON.stringify(gw8.parse($))).toString("base64url");return`${Q}.${hw8(Q,Z)}`}function lw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(hw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!kH5(W,G))return null;try{let K=gw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+qO)return null;return K.data}catch{return null}}var gw8;var mw8=L(()=>{CB();gw8=fs.object({sessionId:fs.string().uuid(),organizationId:fs.string().min(1).max(256),userId:fs.string().min(1).max(256),threadId:fs.string().min(1).max(256),expiresAt:fs.number().int().positive()})});import{z as cT1}from"zod";function cw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return dT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var dT1;var dw8=L(()=>{dT1=cT1.object({provider:cT1.enum(["elevenlabs","openai"]),model:cT1.string().trim().min(1).max(128)})});import{createHash as CH5}from"crypto";import{z as ys}from"zod";function gs($){return`user.${CH5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class pT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new iw8.Kvm(mg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:mg0.StorageType.Memory,ttl:pw8.nanos(qO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=cw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+qO},W=uw8(G,this.deps.secret),K=await this.kv(),H=gs(G),F=await K.get(H),U=F?.operation==="PUT"?lg0.parse(F.json()):null,N=iT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:gs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=lw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=gs(Q),J=await Y.get(X),G=J?.operation==="PUT"?lg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,iT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=gs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?lg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,iT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(gs($));if(Q?.operation==="PUT"&&lg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(gs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var mg0,iw8,pw8,lg0,iT1;var nw8=L(()=>{D3();CB();mw8();dw8();mg0=_(gH(),1),iw8=_(xq(),1),pw8=_(a2(),1),lg0=ys.object({sessionId:ys.string().uuid(),expiresAt:ys.number(),connected:ys.boolean().optional(),conversation:dT1.optional(),characters:ys.number().int().nonnegative(),requests:ys.number().int().nonnegative()}),iT1=new TextEncoder});import{z as c1}from"zod";function XD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function uH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function lH5($,Z,Q){try{return JSON.parse($)}catch{throw new sw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function mH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:lH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function cH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?MN(Q.function.parameters):MN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function dH5($){if(!$)return;return{openai:{response_format:$}}}function iH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function tw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function ow8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var SH5=256,_H5,vH5,bH5,xH5,fH5,yH5,gH5,hH5,sw8,aw8,rw8;var ew8=L(()=>{l4();H8();Ds();NU();_H5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),vH5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),bH5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(vH5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),xH5=c1.object({type:c1.literal("text")}),fH5=c1.object({type:c1.literal("json_object")}),yH5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),gH5=c1.union([xH5,fH5,yH5]),hH5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(bH5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(_H5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:gH5.optional(),user:c1.string().optional()});sw8=class sw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};aw8=new Z1;aw8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(XD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(XD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(XD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=hH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(XD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=uH5(J.model);if(!G)return $.json(XD("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>iA(E.providerId));if(!w)return $.json(XD("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(XD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=mH5(J.messages),N=J.tools?cH5(J.tools):void 0,B=dH5(J.response_format),D=iH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Oj($,async(j)=>{let w=tw8(F,U,N,J,B,$.req.raw.signal);try{let E=Dt(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=SH5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:ow8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=tw8(F,U,N,J,B,$.req.raw.signal),w=await IO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:ow8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(XD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(XD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(XD(X.message,"server_error"),500)}});rw8=aw8});function pH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function $E8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!v5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(sA(U)!==J)continue;if(!pH5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var ZE8=L(()=>{H8();$X()});var cg0;var nT1=L(()=>{cg0={name:"decocms",version:"4.518.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function oH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??tH5}}var QE8,tH5="https://ph.studio.decocms.com",YE8;var XE8=L(()=>{H8();I10();Xu();H9();u1();Po();_z1();nT1();QE8=new Z1;QE8.get("/",($)=>{let Z={version:cg0.version,theme:OW$(),...LF().logo&&{logo:LF().logo},...hO()&&{internalUrl:x$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&B2(),plansEnabled:B0().plansEnabled,auth:_F8(),posthog:oH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:MU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});YE8=QE8});import{z as M$}from"zod";var sH5,JE8;var GE8=L(()=>{sH5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),JE8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(sH5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function WE8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function dg0($,Z={}){let Q=await fetch(WE8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return JE8.parse(await Q.json())}async function KE8($,Z={}){let Q=await fetch(WE8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var tT1=L(()=>{GE8();gL()});import{join as HE8}from"path";async function rH5($){try{let Z=await dg0($,{signal:AbortSignal.timeout(aH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||OE1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function GG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function eH5($,Z){let Q=Iu($),Y=Z?.brand?.trim()||OE1(Q),X=wG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=EG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${GG(W)}</title>`,`<meta name="description" content="${GG(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="${GG(W)}" />`,`<meta property="og:description" content="${GG(K)}" />`,`<meta property="og:url" content="${GG(G)}" />`,`<meta property="og:image" content="${GG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${GG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${GG(W)}" />`,`<meta name="twitter:description" content="${GG(K)}" />`,`<meta name="twitter:image" content="${GG(H)}" />`,`<meta name="twitter:image:alt" content="${GG(F)}" />`,`<link rel="canonical" href="${GG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${GG(G)}.md" />`,`<link rel="icon" href="${GG(X)}" sizes="any" />`].join(`
|
|
4505
4505
|
`)}function $F5($,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}
|
|
4506
4506
|
</head>`)}function FE8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Iu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(HE8($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(ZF5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=Iu(Q.req.param("file").replace(/\.md$/,""));try{let X=await KE8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(QF5)});if(X===null)return Q.text("Deco Score not found",404);return Q.body(X,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?HE8($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await rH5(Iu(Y)),K=eH5(Y,W);return Q.html($F5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var aH5=2500,ZF5=1e4,QF5=1e4;var UE8=L(()=>{H8();gL();tT1();u1()});function ig0($,Z){return fetch(`${SK({})}${$}`,Z)}async function YF5($,Z){let Q=await dg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function GF5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:Y}}var XF5,JF5=8192,wj,NE8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},BE8;var DE8=L(()=>{H8();YG();sK();gL();tT1();XF5=new Set(["complete","errored","terminated","unknown"]);wj=new Z1;wj.use("*",async($,Z)=>{let Q=await B4.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});wj.use("/link-token/*",NE8);wj.use("/suggest",NE8);wj.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await YF5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});wj.post("/run",C6({maxSize:JF5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=GF5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await ig0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${FP({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});wj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ig0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${FP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:XF5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});wj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ig0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});wj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ig0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});BE8=wj});var WF5=1048576,oT1;var LE8=L(()=>{H8();YG();u1();jz1();oT1=new Z1;oT1.post("/webhook",C6({maxSize:WF5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=B0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!iH8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=pH8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await nH8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as KF5}from"crypto";function UF5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return KF5(Buffer.from(X),Buffer.from(Y))}function NF5($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function OE8($){let Z=new Z1;return Z.post("/webhook",C6({maxSize:HF5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!UF5(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!FF5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});return a50().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=NF5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await BF5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function BF5($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await P48(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var HF5=5242880,FF5;var jE8=L(()=>{H8();YG();_X();hQ();FF5=new Set(["check_suite","issue_comment"])});import{DBOS as aT1,SchedulerMode as DF5}from"@dbos-inc/dbos-sdk";async function OF5(){try{return await jF5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function jF5(){if(!s50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (DF1(),BF1)),Promise.resolve().then(() => (NF1(),UF1))]),Q=await a50(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=Ip$({sandboxes:J,pools:G,records:await kp$(X,J,G),legacyPools:QS0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Cp$(K,qj0(X,new WJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:JS0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function wF5($,Z){let Q=await aT1.runStep(OF5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function wE8(){if(sT1)return;if(!B0().agentSandboxEnabled||!s50())return;sT1=aT1.registerWorkflow(wF5,{name:"sandboxCredentialPushWorkflow"}),aT1.registerScheduled(sT1,{name:"sandboxCredentialPushWorkflow",crontab:LF5,mode:DF5.ExactlyOncePerIntervalWhenActive})}var LF5="1,11,21,31,41,51 * * * *",sT1=null;var EE8=L(()=>{_G();Lw();ZW1();GS0();YS0();_X();u1()});function PE8($){let Z=new Yj($.db,new WJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=q$8(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new ZQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var zE8=L(()=>{H8();Lw();uN1();kO()});function pg0(){try{return B0().jiraSettleSeconds*1000}catch{return Z2}}function AE8($,Z){let Q=Z.windowMs??Z2,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=EF5($,Q);if((X.id&&Y.toId?X.id===Y.toId:!1)||!X.id&&X.name===Y.to)return{kind:"returned",change:Y};return{kind:"moved",change:Y,from:X}}function EF5($,Z){for(let Y=$.length-2;Y>=0;Y--){let X=$[Y],J=$[Y+1];if(X&&J&&J.at-X.at>=Z)return{id:X.toId,name:X.to}}let Q=$[0];return{id:Q?.fromId??null,name:Q?.from??null}}var rT1=L(()=>{lO();u1()});function TE8($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,Y=Z.issue?.key,X=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof Y!=="string"||typeof X!=="string"&&typeof X!=="number")return null;let J=Z.changelog?.items?.find((G)=>G.field==="status");if(!J||typeof J.toString!=="string")return null;return{issueId:String(Q),issueKey:Y,toStatus:J.toString,changelogId:String(X)}}async function eT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=AE8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:pg0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:$2(N)})),H=NZ8(K)&&Z.boardId?UZ8(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=FZ8(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await WH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var $q1=L(()=>{FU();kO();at();rT1()});import{DBOS as C2,SchedulerMode as PF5}from"@dbos-inc/dbos-sdk";function qE8($){Qq1=$}function Xq1(){if(!Qq1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return Qq1}function Jq1(){let $=Xq1();return new Yj($.db,new WJ($.encryptionKey))}async function RF5($){try{let Z=await Jq1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await uJ(Xq1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${AF5}m"`,W=0,K;for(let H=0;H<TF5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await eT1(Q,Z,{issueId:U.id,now:Date.now()})==="fired")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,fired:W}}catch(Z){return{integrationId:$,fired:0,error:Z instanceof Error?Z.message:String(Z)}}}async function MF5($,Z){let Q=await C2.runStep(()=>Jq1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>C2.runStep(()=>RF5(X),{name:`sweepJira:${X}`})));for(let X of Y)if(X.error)console.warn(`[jira-trigger] integration ${X.integrationId} failed: ${X.error}`);else if(X.fired>0)console.log(`[jira-trigger] integration ${X.integrationId} fired ${X.fired} automation(s) the webhook missed`)}async function VF5($,Z){try{let Q=await Jq1().getById($);if(!Q?.enabled)return"disabled";let Y=await uJ(Xq1().db,Q.organizationId);if(!Y)return"disabled";let X=await eT1(Y,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(X==="fired")console.log(`[jira-trigger] fired an automation for ${Z.issueKey} after it settled`);else if(X==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no fire`);return X}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function IF5($,Z){await C2.sleep(pg0()+qF5),await C2.runStep(()=>VF5($,Z),{name:"settleJiraMove"})}async function RE8($,Z){if(!Yq1)throw Error("[jira-trigger] settle workflow is not registered");await C2.startWorkflow(Yq1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function ME8(){if(Zq1)return;Yq1=C2.registerWorkflow(IF5,{name:"jiraSettleWorkflow"}),Zq1=C2.registerWorkflow(MF5,{name:"jiraTriggerSweepWorkflow"}),C2.registerScheduled(Zq1,{name:"jiraTriggerSweepWorkflow",crontab:zF5,mode:PF5.ExactlyOncePerIntervalWhenActive})}var zF5="*/5 * * * *",AF5=20,TF5=5,qF5=5000,Qq1=null,Yq1=null,Zq1=null;var Gq1=L(()=>{Lw();tz();kO();rT1();$q1()});function VE8($){let Z=new Yj($.db,new WJ($.encryptionKey)),Q=XE($.db);async function Y(J,G){let W=TE8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await RE8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",C6({maxSize:kF5}),async(J)=>{let G=J.req.param("secret");if(!await Z.getByWebhookSecret(G))return J.json({error:"Unknown webhook"},404);let K;try{K=await J.req.json()}catch{return J.json({error:"Body must be JSON"},400)}return Y(G,K).catch((H)=>{console.error("[jira-webhook] trigger failed",H)}),J.body(null,202)}),X}var kF5=1048576;var IE8=L(()=>{H8();YG();Lw();Gq1();$q1();C00()});function kE8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var CE8,CF5,SF5,SE8;var _E8=L(()=>{H8();D3();gt();ti();CE8=new Z1,CF5=["range","if-none-match","if-modified-since"],SF5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];CE8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(go($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new R1(401,{message:"Authentication required"})}if(!Q)throw new R1(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new R1(400,{message:"Missing file key"});let X=await _Z0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&bK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return kE8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of CF5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new R1(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new R1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of SF5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),kE8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});SE8=CE8});var cQ0=y((au)=>{var _F5=au&&au.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),vF5=au&&au.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))_F5(Z,$,Q)};Object.defineProperty(au,"__esModule",{value:!0});vF5(DG(),au)});var xE8=y((vE8)=>{Object.defineProperty(vE8,"__esModule",{value:!0});vE8.version=void 0;vE8.version="3.4.0"});var gE8=y((JD)=>{var bF5=JD&&JD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(JD,"__esModule",{value:!0});JD.NodeTransport=JD.VERSION=void 0;JD.nodeResolveHost=uF5;var J9=cQ0(),xF5=V0("net"),Wq1=V0("tls"),fF5=V0("path"),fE8=V0("fs"),yF5=bF5(V0("dns")),gF5=xE8();JD.VERSION=gF5.version;var hF5="nats.js";class yE8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=hF5,this.version=JD.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,J9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw J9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new J9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new J9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,J9.deferred)(),Q,Y=(0,xF5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,J9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=J9.DataBuffer.concat(...this.yields),X=(0,J9.extractProtocolMessage)(Y);if(X!=="")try{let J=J9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,J9.deferred)();try{if($=(0,fF5.resolve)($),!(0,fE8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,fE8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,J9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,J9.deferred)();try{let X=(0,Wq1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,J9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J9.deferred)();try{let Y=(0,Wq1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,J9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J9.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof Wq1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J9.render)($)}`);let Z=(0,J9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}JD.NodeTransport=yE8;function uF5($){let Z=(0,J9.deferred)();return yF5.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var cE8=y((mE8)=>{Object.defineProperty(mE8,"__esModule",{value:!0});mE8.connect=lF5;var hE8=gE8(),uE8=cQ0(),lE8=cQ0();function lF5($={}){if((0,lE8.hasWsProtocol)($))return Promise.reject(lE8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,uE8.setTransportFactory)({factory:()=>{return new hE8.NodeTransport},dnsResolveFn:hE8.nodeResolveHost}),uE8.NatsConnectionImpl.connect($)}});var dE8=y((Ej)=>{var cF5=Ej&&Ej.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),dF5=Ej&&Ej.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))cF5(Z,$,Q)};Object.defineProperty(Ej,"__esModule",{value:!0});Ej.connect=void 0;var iF5=cE8();Object.defineProperty(Ej,"connect",{enumerable:!0,get:function(){return iF5.connect}});dF5(cQ0(),Ej)});function nE8($){let Z=$?.connectFn??oF5,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:tF5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=k7(nF5,pF5,D-1,2,0.5);await G$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?ng0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?ng0.usernamePasswordAuthenticator(B.user,B.password):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=pE8.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function oF5($){return iE8.connect($)}var ng0,iE8,pE8,pF5=100,nF5=3000,tF5=3000;var tE8=L(()=>{d$();ng0=_(a2(),1),iE8=_(dE8(),1),pE8=_(gH(),1)});function tg0($,Z){return`${$}.${Z}`}class Kq1{cache;constructor($){this.cache=ZB({ttlMs:$?.ttlMs??sF5,maxSize:$?.maxSize??aF5})}async get($,Z){return this.cache.get(tg0($,Z))??null}async set($,Z,Q){this.cache.set(tg0($,Z),Q)}async invalidate($,Z){this.cache.delete(tg0($,Z)),this.cache.delete(tg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var sF5=600000,aF5=5000;var oE8=()=>{};function og0($,Z){return`${$}:${Z}`}function Hq1($){let Z=ZB({ttlMs:$?.ttlMs??rF5,maxSize:$?.maxSize??eF5}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(sE8,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(og0(K,H))},set(K,H,F){Z.set(og0(K,H),F)},invalidate(K,H){Z.delete(og0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(sE8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(og0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var sE8="studio.ai-provider-keys.invalidate",rF5=30000,eF5=5000;var aE8=()=>{};class Fq1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var rE8=($)=>{let Z;return()=>Z??=$()},Uq1,Nq1;var eE8=L(()=>{b6();Uq1=rE8(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),Nq1=rE8(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function GU5($=QP8){return{name:uB,subjects:[`${SL1}.>`],storage:TU.StorageType.File,max_age:QU5,max_bytes:XU5,max_msgs_per_subject:JU5,discard:TU.DiscardPolicy.Old,retention:TU.RetentionPolicy.Limits,duplicate_window:YU5,num_replicas:$}}class YP8{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 $P8($){let Z=ZP8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function FU5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,ZU5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function UU5($,Z){return $.info?.cluster?Z:1}function NU5($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class Bq1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=GU5(X);try{await Y.streams.info(uB),await Y.streams.update(uB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(uB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(uB),await Y.streams.add(J);else throw G}},Q=await $8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await TU.jetstreamManager($),X=UU5($,QP8);try{await Z(Y,X)}catch(J){if(X<=1||!NU5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:st});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=FU5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=h98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=vL1(H,{runId:Z}),N=performance.now()-F;Uq1().record(N),Nq1().add(1,{"org.id":Y??"unknown"}),HU5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?$P8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),KU5)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await $8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:$P8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:st}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=vL1(Z,{runId:$,dedup:Q});Uq1().record(performance.now()-X),Nq1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=g98({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?TU.DeliverPolicy.New:TU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=ez($),W;try{W=await $8(async()=>{return(await Y.consumers.get(uB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:st})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Vb0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Tb0()).pipeThrough(qb0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(uB,{filter:ez($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var TU,ZP8,$U5=($)=>{let Z;return()=>Z??=$()},ZU5,QU5=86400000000000,YU5=120000000000,XU5=4294967296,QP8,JU5=500000,WU5,KU5,HU5;var XP8=L(()=>{d$();bL1();Ib0();Rb0();b6();eE8();TU=_(gH(),1),ZP8=_(a2(),1),ZU5=$U5(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),QP8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);WU5=process.env.STREAM_ENCODE_TRACE==="1",KU5=process.env.DECOPILOT_STREAM_TRACE==="1";HU5=WU5?new YP8:null});function sg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,iU(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var JP8=L(()=>{R8()});class Dq1{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 BU5($,Z,Q={}){let Y=$.startsWith("thread:")?ZU($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function Lq1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await IB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await kB($,{threadId:X,runBranch:G?.branch}),K=await o40($,Q,ND0(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=BU5(W,await kS0($,X),{flat:kh(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await wW(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var GP8=L(()=>{R5();gQ();hQ()});async function WP8($,Z,Q){let Y=Z.organizationId;if(!lJ(Z))return!1;if(!Zu(Q))return!1;if(!await ld($,Y,o10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=K1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),J8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var KP8=L(()=>{w3();v8();yX();Ct();KU();c5()});function PU5($){return $ instanceof MX}function HP8($,Z){return Z-$>=wU5}class Oq1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??DU5;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??OU5,Q=this.options.itemIntervalMs??LU5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapAbandonedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapAbandonedThreads($){try{let Z=await this.taskBoard.failAbandonedLinkedThreads($,new Date(Date.now()-vN1),{neverStarted:XD1,stalled:tD1});for(let Q of Z)console.warn(`[task-board-review-sweeper] failed abandoned thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-EU5));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await QD1(this.taskBoard,X,Y),await YD1(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==K1.progress||lJ(W)||W.assigneeId!==t$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await Lq1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!HP8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceFromProgress(X,J,K1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.review,reason:H}}).catch(()=>{}),J8(J,F),await HU(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==K1.progress||G.assigneeId!==t$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await xO(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),PU5(G)){await this.returnToBacklog(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+jU5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToBacklog($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==K1.progress)return;let X=await this.taskBoard.returnToBacklogAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),J8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to backlog failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!HP8(OL(Q,Z.reviewCycleStartedAt),Date.now()))return;await HU($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!lJ(Y))return!1;let X=Y.assigneeId===t$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await Lq1(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await vt(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await WP8(G,Y,W))return!0;if(!X)return!1;if(await f48(G,Y))return!0;if(!rB1(W))return!1;return await _t(G,Y,{previewMatchesHead:eB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var DU5=60000,LU5=300000,OU5=50,jU5=60000,wU5=900000,EU5=120000;var FP8=L(()=>{v8();Tv0();GP8();fO();yt();KU();KP8();c5();WW();JD1();oD1();hQ();YZ0()});async function UP8($,Z,Q=Z2){return await BP8($,Z,Q,{})}async function NP8($,Z,Q,Y=Z2){return await BP8($,Q,Y,{activityId:Z})}async function BP8($,Z,Q,Y){let X=await $.automations.findActiveBoardColumnTriggers();if(X.length===0)return 0;let J=new Map;for(let K of X){let H=K.automation.organization_id;J.set(H,[...J.get(H)??[],K])}let G=await $.taskBoard.listSettledTransitions({organizationIds:[...J.keys()],since:new Date(Z-zU5),settledBefore:new Date(Z-Q),limit:AU5,...Y}),W=0;for(let K of G)try{let H=(J.get(K.organizationId)??[]).filter((U)=>U.column_key===K.to&&Date.parse(U.created_at)<Date.parse(K.occurredAt));if(H.length===0)continue;let F=await TU5($.taskBoard,K,Q);for(let U of H){if(!DZ8(U,{from:F,to:K.to}))continue;if(!await $.automations.claimTriggerFire(U.id,K.activityId))continue;await $.fire({automationId:U.automation_id,organizationId:K.organizationId,triggerId:U.id,target:{kind:"card",itemId:K.itemId,columnKey:K.to,eventKey:K.activityId,movedBy:K.actorId}},{idempotencyKey:`board:${U.id}:${K.activityId}`}),W++}}catch(H){console.error(`[automations] board transition ${K.activityId} failed`,H)}return W}async function TU5($,Z,Q){let X=(await $.listActivity(Z.itemId,Z.organizationId)).flatMap((J)=>{let G=J.data;if(J.action!=="status_changed"||typeof G?.to!=="string")return[];let W=typeof G.from==="string"?G.from:null;return W===G.to?[]:[{from:W,to:G.to,occurredAt:J.occurredAt}]});return X.length>0?LZ8(X,Q):Z.from}var zU5=1800000,AU5=200;var DP8=L(()=>{lO()});import{DBOS as S2,DBOSClient as qU5,SchedulerMode as RU5}from"@dbos-inc/dbos-sdk";function LP8($){Pj=$}async function IU5($){if(!Pj)return 0;try{return await NP8(Pj,$,Date.now(),Pj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function kU5(){if(!Pj)return 0;try{return await UP8(Pj,Date.now(),Pj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function CU5($){await S2.sleep((Pj?.settleMs??Z2)+VU5),await S2.runStep(()=>IU5($),{name:"settleBoardMove"})}async function SU5($,Z){let Q=await S2.runStep(()=>kU5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function jP8($){let Z=Pj;if(!Z||!wq1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!S2.isWithinWorkflow()){await S2.startWorkflow(wq1,{workflowID:Q,queueName:g2})($.activityId);return}let Y=await qU5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:OP8,queueName:g2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function wP8(){if(jq1)return;wq1=S2.registerWorkflow(CU5,{name:OP8}),jq1=S2.registerWorkflow(SU5,{name:"boardTransitionSweepWorkflow"}),S2.registerScheduled(jq1,{name:"boardTransitionSweepWorkflow",crontab:MU5,mode:RU5.ExactlyOncePerIntervalWhenActive})}var MU5="*/5 * * * *",VU5=2000,Pj=null,OP8="boardTransitionSettleWorkflow",wq1=null,jq1=null;var EP8=L(()=>{lO();DP8()});import{readdir as _U5,rm as ag0}from"fs/promises";import{join as rg0}from"path";async function eg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-vU5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await ru($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await PP8($,X,Z);else if(!X.startsWith(".")){let J=rg0($,X),G=await ru(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await PP8(J,K,Z)}if((await ru(J)).length===0)await ag0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function PP8($,Z,Q){let Y=0,X=rg0($,Z),J=await ru(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=rg0(X,W),H=await ru(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=rg0(K,U);await ag0(B,{recursive:!0,force:!0}),Y++}}if((await ru(K)).length===0)await ag0(K,{recursive:!0,force:!0})}if((await ru(X)).length===0)await ag0(X,{recursive:!0,force:!0});return Y}async function ru($){try{return(await _U5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var vU5=30;var Eq1=()=>{};import{DBOS as Pq1,SchedulerMode as bU5}from"@dbos-inc/dbos-sdk";async function fU5(){let $=[CH(),Wl(),BD()],Z=0;for(let Q of $)try{Z+=await eg0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function yU5($,Z){await Pq1.runStep(()=>fU5(),{name:"monitoringRetention"})}function AP8(){if(zP8)return;zP8=!0;let $=Pq1.registerWorkflow(yU5,{name:"monitoringRetentionWorkflow"});Pq1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:xU5,mode:bU5.ExactlyOncePerIntervalWhenActive})}var xU5="23 4 * * *",zP8=!1;var TP8=L(()=>{mW();Eq1()});function qP8($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await xY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await PP($.db,Z,Y.role);return X.boundAuth=$z1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new IT(Q,void 0,X.boundAuth,Y.role,"self"),oz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var RP8=L(()=>{JX();fF()});function MP8(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=dQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>dQ0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${L9.tool}${B}${L9.dim}(${j})${L9.reset}`}else if(N.method)J=`${L9.dim}${dQ0(N.method)}${L9.reset}`}}catch{}}let W=dQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${dQ0(F.slice(0,12))}\u2026${L9.reset}`}else if(X==="/mcp")W=`${L9.mcp}/mcp${L9.reset}`;else if(X==="/mcp/registry")W=`${L9.mcp}/mcp/registry${L9.reset}`;let K=hU5(Y),H=G?"\u25C0":"\u2190";console.log(`${L9.dim}${H}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=gU5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${L9.dim}${D}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""} ${N}${U}${L9.reset} ${L9.duration}${B}${L9.reset}`)}}}var L9,gU5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},hU5=($)=>{return L9[$]||L9.reset},dQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var VP8=L(()=>{L9={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as SP8}from"crypto";import{mkdir as uU5,readdir as lU5,rm as IP8,stat as _P8}from"fs/promises";import{join as Aq1,relative as mU5}from"path";import{z as G8}from"zod";function bP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Aq1(cU5,Z)}function xP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function zq1($,Z){let Q=bP8($),Y=xP8(Z);return Aq1(Q,Y)}function dU5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return SP8("sha256",X).update(J).digest("hex")}function CP8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=dU5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${xP8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function fP8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${SP8("md5","etag").update(Y).digest("hex")}"`}async function yP8($,Z,Q,Y,X){try{let J=await lU5($,{withFileTypes:!0});for(let G of J){let W=Aq1($,G.name),H=mU5(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await yP8(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await _P8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:fP8(W,F.mtime,F.size)})}catch{}}}}catch{}}function gP8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:G8.object({prefix:G8.string().optional(),maxKeys:G8.number().optional().default(1000),continuationToken:G8.string().optional(),delimiter:G8.string().optional()}),outputSchema:G8.object({objects:G8.array(G8.object({key:G8.string(),size:G8.number(),lastModified:G8.string(),etag:G8.string()})),nextContinuationToken:G8.string().optional(),isTruncated:G8.boolean(),commonPrefixes:G8.array(G8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=bP8(Y);await uU5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await yP8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:G8.object({key:G8.string()}),outputSchema:G8.object({contentType:G8.string().optional(),contentLength:G8.number(),lastModified:G8.string(),etag:G8.string(),metadata:G8.record(G8.string(),G8.string()).optional()}),handler:async(X)=>{let J=X,G=zq1(Y,J.key),W=await _P8(G);return{contentType:U21(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:fP8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:G8.object({key:G8.string(),expiresIn:G8.number().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=tO(J.expiresIn,kP8);return{url:CP8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:G8.object({key:G8.string(),expiresIn:G8.number().optional(),contentType:G8.string().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=tO(J.expiresIn,kP8);return{url:CP8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:G8.object({key:G8.string()}),outputSchema:G8.object({success:G8.boolean(),key:G8.string()}),handler:async(X)=>{let J=X,G=zq1(Y,J.key);try{return await IP8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:G8.object({keys:G8.array(G8.string()).max(1000)}),outputSchema:G8.object({deleted:G8.array(G8.string()),errors:G8.array(G8.object({key:G8.string(),message:G8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=zq1(Y,K);try{await IP8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function Tq1($,Z,Q){let Y=gP8(Z,Q),X=new jE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:SZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:G8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:G8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new qW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),OH(X,J,$,"mcp:dev-assets")}async function hP8($,Z,Q,Y){let J=gP8(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var cU5="./data/assets",kP8=3600,vP8,uP8;var lP8=L(()=>{u1();Wo();H8();SH0();Go();BJ();oO();Vy0();vP8=new Z1;vP8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return Tq1($.req.raw,Z,Y)});uP8=vP8});var mP8={};O6(mP8,{mountDevRoutes:()=>iU5});function iU5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return Tq1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await hP8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",uP8);let Q=new Z1;Q.use("*",EU({mountPath:"/api/dev-assets"})),Q.route("/",My0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var cP8=L(()=>{H8();X21();Vy0();lP8()});var eP8={};O6(eP8,{watchHandler:()=>rP8,resolveVoiceSigningSecret:()=>oP8,resolveCorsOrigin:()=>sP8,isSsoExemptPath:()=>tP8,isAllowedOAuthRedirectUri:()=>aP8,createApp:()=>QN5});import{readFileSync as pU5}from"fs";import{randomBytes as nU5}from"crypto";import{PrometheusSerializer as tU5}from"@opentelemetry/exporter-prometheus";import{DBOS as GD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as aU5,oAuthProtectedResourceMetadata as rU5}from"better-auth/plugins";async function oU5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,iP8(dP8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),iP8(dP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function iP8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function tP8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Wy0}/`)||$.startsWith(`${Zy0}/`)}function oP8($){let Z=$.studioJwtSecret||$.betterAuthSecret;if(Z)return Z;return console.warn("STUDIO_JWT_SECRET/BETTER_AUTH_SECRET not set - generating a random secret for voice sessions (not persistent across restarts)"),nU5(32).toString("base64")}function sP8($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function aP8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function QN5($={}){let Z=$.database??E8(),Q=!1;I6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new Kq1,K,H,F,U=null;if($.disableNats)K=Hq1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new X70,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(F0)=>{return(async()=>{let G0=F0.getReader();try{while(!0){let{done:P0}=await G0.read();if(P0)break}}catch{}finally{G0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=nE8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=pU5(F0,"utf8")}catch(B8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,B8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=J71()?new cZ1({getJetStream:()=>U.getJetStream(),selfListVersion:cg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new k71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new Qu(pB1,{getJetStream:()=>U.getJetStream()}),b$=new Qu(XZ0,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new jj1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=Hq1({getConnection:()=>U.getConnection()}),H=new Fq1({getConnection:()=>U.getConnection()}),F=new Bq1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),BF8(U),U.onReady(()=>{P0?.init().catch((B8)=>{console.error("[McpListCache] Deferred init failed:",B8)}),z0.init().catch((B8)=>{console.error("[SkillCatalogCache] Deferred init failed:",B8)}),j1.init().catch((B8)=>{console.error("[PrReadCache] Deferred init failed:",B8)}),b$.init().catch((B8)=>{console.error("[PrCardCache] Deferred init failed:",B8)}),r$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),GA$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(_2)await _2();dZ1(Y),S71(X),v71(()=>U?.getConnection()??null),nB1(J),wj1(G);let B={storage:new sm(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>xt(new jW(Z.db),F0,G0,new SG(Z.db))},D=new rD1(B),O=new g70(Z.db),j=new Dq1(O);j.start(),AZ8(H),H.start((F0)=>{Bb0(F0),D.execute({type:"CANCEL",taskId:F0}).catch((G0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",G0)})}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast start failed:",F0)}),U?.onReady(()=>{H.start().catch((F0)=>{console.error("[CancelBroadcast] Deferred start failed:",F0)})});let w=()=>U?.getConnection()??null;rz1(w),U?.onReady(()=>rz1(w)),rj1(w),U?.onReady(()=>rj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),_2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),vU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),WA$(),G.teardown(),dZ1(null),S71(null),v71(null),nB1(null),wj1(null)};let E=new Z1;if(E.use("*",Dj1({enabled:(F0)=>yo(F0,"debug")==="1"})),E.use("*",zh0),E.use("/*",KF8({origin:(F0,G0)=>sP8(F0,{baseUrl:B0().baseUrl,requestOrigin:new URL(G0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(F0,G0)=>{if(await G0(),F0.req.path.includes("/files/"))return;if(F0.req.path.includes("/fs/")&&F0.req.path.endsWith("/read"))return;F0.header("X-Frame-Options","DENY"),F0.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",MP8());E.use("*",async(F0,G0)=>{if(await G0(),ts(F0.req.path))return;if(F0.res.status>=500){let z0=await F0.res.clone().text();console.error(`[5xx Response] ${F0.req.method} ${F0.req.path} - ${F0.res.status}:`,z0)}}),E.get(oX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(oX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(oX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await oU5(Z.pool)?"up":"down"},U)G0.nats=U.isConnected()?{status:"up"}:{status:"down"};else G0.nats={status:"down"};let P0=G0.postgres.status==="up",z0=P0?200:503;return F0.json({status:P0?"ready":"not_ready",services:G0},z0)}),E.get(oX.METRICS,async(F0)=>{try{let G0=await Rh0.collect(),P0=sU5.serialize(G0.resourceMetrics);return F0.text(P0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(G0){return console.error("Failed to collect metrics:",G0),F0.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${oX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!eU5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([GD.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),GD.listQueuedWorkflows({queueName:G0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return F0.json({queue_length:P0.length,in_flight:z0.length})}),E.route("/api/config",YE8),E.route("/api/_reports",BE8),E.route("/api/_stripe",oT1),E.route("/api/_github",OE8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",ao);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",VE8(T)),E.route("/api/_jira",PE8(T)),E.route("/report",FE8($.clientDir)),E.route("/api/auth/custom",vF8),E.all("/api/auth/admin/*",PU8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=qK8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",o70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",o70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",b70),E.route("/",kK8()),E.use("/oauth-proxy/:connectionId/*",o70),E.all("/oauth-proxy/:connectionId/*",pP8);let A=async(F0)=>{let P0=await $N5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",o70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await ZN5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=FF8({ttlMs:120000}),S=await TH8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Ij,meter:W$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});xY.set(S),A$$({db:Z.db,baseUrl:O5()}),qH8({db:Z.db}),IH8({db:Z.db}),uH8({db:Z.db}),tH8({db:Z.db}),qE8({db:Z.db,encryptionKey:B0().encryptionKey}),I88({db:Z.db}),$F8({db:Z.db}),G48({db:Z.db});let V=XE(Z.db),v=new S00(Z.db),b=qP8({db:Z.db});HO1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>uJ(Z.db,F0),systemDatabaseUrl:l10(B0().databaseUrl,B0().databasePgSsl)}),pL1({systemDatabaseUrl:l10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),uL1({dispatchRunFn:S98,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new sm(Z.db),l=new jW(Z.db),d=new SG(Z.db),W0=new Oq1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=_2;_2=async()=>{await F0?.(),W0.dispose()}}LP8({automations:V,taskBoard:l,fire:WH,systemDatabaseUrl:l10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),y88(jP8),r98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await nP8.jetstreamManager(F0):null},messageParts:h.messageParts(),resolveRun:async(F0)=>{let G0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",F0).executeTakeFirst();return G0?{orgId:G0.organization_id,createdBy:G0.created_by,version:G0.message_storage_version??1,status:G0.status,runFenceToken:G0.run_fence_token,title:G0.title??null}:null},completeRunIfNotCompleted:async(F0,G0)=>{let P0=await h.completeRunIfNotCompleted(F0,G0);if(sg0(I6,G0,F0,P0),P0)await xt(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return sg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(sg0(I6,G0,F0,j1),j1)await xt(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,rz(F0,G0),[])},persistTitle:(F0,G0,P0)=>h.update(F0,G0,{title:P0}),onTitleUpdated:async({runId:F0,orgId:G0,title:P0})=>{let z0=await h.get(F0,G0).catch(()=>null);I6.emit(G0,iU(F0,z0?.status??"in_progress",{title:P0,virtualMcpId:z0?.virtual_mcp_id??void 0,createdBy:z0?.created_by,triggerId:z0?.trigger_id,branch:z0?.branch??null,harnessId:z0?.harness_id??void 0,createdAt:z0?.created_at,updatedAt:z0?.updated_at}))},bumpProgress:async({runId:F0,orgId:G0})=>{await h.bumpProgress(F0,G0)},recordCompleted:async({runId:F0,orgId:G0,distinctId:P0,usage:z0})=>{m1.capture({distinctId:P0,event:"chat_message_completed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",input_tokens:z0.inputTokens,output_tokens:z0.outputTokens,total_tokens:z0.totalTokens}})},recordFailed:async({runId:F0,orgId:G0,distinctId:P0,reason:z0,kind:j1})=>{m1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:j1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),$98({studioContextFactory:b,systemDatabaseUrl:l10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),AP8(),T$$(),MH8(),CH8(),mH8(),sH8(),ME8(),wP8(),v88(),QF8(),W48(),wE8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return DO1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new io(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>WH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[CH(),Wl(),BD()];for(let F0 of U0)eg0(F0).then(()=>{}).catch((G0)=>console.error("[monitoring] Retention cleanup failed:",G0));let o=()=>B4.api.deleteAllExpiredApiKeys().catch((F0)=>console.error("[auth] Expired API key cleanup failed:",F0));o(),setInterval(o,86400000).unref(),E.use("*",async(F0,G0)=>{if(Eh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{LH(F0,j1);try{return await b$()}finally{RW(F0,j1)}}},z0=await xY.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),G$(30000)]).catch((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",ho),E.use("/api/:org/v1/*",ho),E.use("/api/:org/files/*",ho),E.use("*",async(F0,G0)=>{if(tP8(F0.req.path))return G0();let P0=F0.get("studioContext");if(!P0?.organization?.id||!P0?.auth?.user?.id)return G0();if(!(await P0.storage.orgSsoConfig.getByOrgId(P0.organization.id))?.enforced)return G0();if(!await P0.storage.orgSsoSessions.isValid(P0.auth.user.id,P0.organization.id))return F0.json({error:"SSO authentication required for this organization"},403);return G0()});let t=new Z1;t.use("*",EU({mountPath:"/api/org-sso"})),t.route("/",Fy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:f00,grouped:MT()})}),E.use("/mcp/*",async(F0,G0)=>{LH(F0,"mcp");try{return await G0()}finally{RW(F0,"mcp")}});let a=async(F0,G0)=>{let P0=F0.var.studioContext;if(!P0.auth.user?.id&&!P0.auth.apiKey?.id){let z0=new URL(F0.req.url),j1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=j1?`${j1}://${z0.host}`:z0.origin;return F0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b$}${z0.pathname}/.well-known/oauth-protected-resource"`}})}return await G0()};if(E.use("/mcp/:connectionId?",a),E.use("/mcp/gateway/:virtualMcpId?",a),E.use("/mcp/virtual-mcp/:virtualMcpId?",a),E.use("/mcp/self",a),bK()){let{mountDevRoutes:F0}=(cP8(),Wh0(mP8));F0(E,a)}let $0=new Z1;$0.use("*",EU({mountPath:"/mcp"})),$0.route("/",Hx0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",EU({mountPath:"/mcp/self"})),X0.route("/",Xg0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",EU({mountPath:"/mcp"})),h0.route("/",Nx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{LH(F0,"llm_models");try{return await G0()}finally{RW(F0,"llm_models")}});let C0=hU8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",SE8);let H1=new Z1;H1.use("*",EU({mountPath:"/api"})),H1.route("/",Kg0()),E.route("/api",H1),E.route("/api",rw8);let m0=new Z1;m0.use("*",EU({mountPath:"/api"})),m0.route("/",Hg0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",m0);let j0=new _00(Z.db),E0=new Z1;E0.use("*",EU({mountPath:"/api"})),E0.route("/",Oy0()),E.route("/api",E0),E.route("/api/deco-sites",$N8());let n0=new Z1;n0.use("*",EU({mountPath:"/api/deco-sites"})),n0.route("/",wy0()),E.route("/api/deco-sites",n0),E.route(Wy0,zU8()),E.route(hL8,mL8()),E.route("/api/_editor-resolve",$E8()),E.route(hF8,uF8()),E.route(Zy0,ZU8());let O1=B0(),o0=O1.elevenlabsApiKey?new ug0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,x0={openai:O1.openaiLiveApiKey?new lT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new uT1(o0,()=>U?.getConnection()??null):null},d0=new pT1({adapter:o0,conversationAdapters:x0,defaults:O1,secret:oP8(O1),getConnection:()=>U?.getConnection()??null}),i0=Mw8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:bK(),mcpAuth:a,oauthProxyHandler:pP8,watchHandler:rP8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",i0),E.notFound((F0)=>{return F0.json({error:"Not Found",path:F0.req.path},404)}),E.onError(lU8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),_2?Promise.resolve(_2()).finally(()=>{_2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await oJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await _H$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await GD.registerQueue(FG,{partitionQueue:!0,concurrency:GO1,minPollingIntervalMs:WO1}),await GD.registerQueue(uW,{partitionQueue:!0,concurrency:dL1,priorityEnabled:!0}),await GD.registerQueue(UD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await GD.registerQueue(ND,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await GD.registerQueue(Vj,{partitionQueue:!0,concurrency:e58}),await GD.registerQueue(y2,J48),await GD.registerQueue(g2),await J21(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>GD.deleteQueue(F0))),await KO1(Z.pool),LB$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),ud(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),q$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var nP8,dP8=5000,_2=null,pP8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),Y=Q[Q.length-1],X=$.get("studioContext");if(!X)X=await xY.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let v=await $.req.json().catch(()=>({}));return $.json({...typeof v==="object"&&v!==null?v:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await vo(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=zP1(await W.json());if(!K)K=H.origin;let N=await x70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=IK8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!aP8(new URL(v),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(XF8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,R=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let d=atob(T.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let I0=decodeURIComponent(d.slice(0,W0)),J0=decodeURIComponent(d.slice(W0+1));A=I0||null,R=J0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),h=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof h==="string"&&h)R=h;let l=new URLSearchParams;for(let[d,W0]of v.entries())l.append(d,W0.toString());z=l.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),h={};try{h=b?JSON.parse(b):{}}catch{z=b}let l=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!l)z=b;if(z===void 0){let d=h,W0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(d),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await j2(G.connection_url)??D}catch{l=D}let d={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new $9(X.db,X.vault).upsert(d)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},rP8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!fB(Y)||!await yB(Z)))return $.json({error:"forbidden"},403);let W=G?Hv0:Y;if(G)bO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Oj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!I6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{I6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),I6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),I6.remove(W,K),N()})})})},sU5,eU5,$N5=()=>rU5(B4),ZN5=()=>aU5(B4);var $z8=L(()=>{d$();u1();R$$();VH8();SH8();cH8();aH8();U70();MB1();YF8();YZ0();H9();ti();R8();H8();af0();HF8();Lj1();sK();fF();Rz1();_G();b6();Q6();_z1();lF8();QU8();hz1();AU8();tz1();Q21();Y21();xK();f70();X21();mU8();ef0();Vw8();_w8();vw8();yw8();nw8();K21();Fx0();J70();ew8();Bx0();hA1();ZE8();yA1();XE8();UE8();DE8();LE8();jE8();EE8();zE8();IE8();Gq1();B21();_E8();gA1();vA1();JY0();tE8();nT1();qJ();yB0();O40();oB1();F40();N40();Pj1();oE8();aE8();ez1();XP8();Qb0();JP8();Ne();x00();vO();c5();yP1();FP8();EP8();w3();tz();TP8();YU0();Eq1();mW();G21();SO();gL1();YU0();hZ0();C00();M01();RP8();JE();VP8();Ds();Rz1();It();nt();Db0();nP8=_(gH(),1);sU5=new tU5,eU5=new Set([FG,uW,UD,ND,Vj,y2])});var Xz8={};O6(Xz8,{resolveClientDir:()=>HN5,resolveAssetPathWithTraversalCheck:()=>Yz8,isPathWithinDirectory:()=>Qz8,createAssetHandler:()=>FN5});import{resolve as iQ0,dirname as YN5,join as XN5,extname as JN5,basename as GN5,sep as Zz8}from"path";function WN5($,Z){if($===Z||GN5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${Zz8}assets${Zz8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function Qz8($,Z){let Q=iQ0(Z),Y=iQ0($);return Y===Q||Y.startsWith(Q+"/")}function Yz8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=iQ0(Z,Q);if(!Qz8(Y,Z))return null;return Y}function HN5($,Z="../client"){let Q=new URL($),Y=YN5(Q.pathname);return iQ0(Y,Z)}function FN5($={}){let{env:Z="production",clientDir:Q=KN5,isServerPath:Y=()=>!1}=$;if(Z==="development")return async function(J){return null};return async function(J){if(J.method!=="GET")return null;let G=new URL(J.url),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(Y(W))return null;let K=Yz8({requestPath:W,clientDir:Q});if(!K)return null;let H=XN5(K,"index.html"),F=iQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(JN5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:WN5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var KN5="./dist/client";var Jz8=()=>{};var Gz8={};O6(Gz8,{tryUpgradePreviewWs:()=>jN5,tryHandlePreviewHttp:()=>ON5,previewWebSocketHandler:()=>wN5,parsePreviewBaseDomain:()=>LN5,isPreviewWsData:()=>$h0,extractHandleFromHost:()=>qq1});function BN5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function DN5(){return new Response(NN5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function LN5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let Y=Q.hostname;if($.includes("{handle}")){let X=Y.indexOf(".");if(X<=0||X===Y.length-1)return null;return Y.slice(X+1)}return Y}function qq1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),Y=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Y.endsWith(J))return null;let G=Y.slice(0,Y.length-J.length);if(!G||G.includes("."))return null;return G}async function ON5($,Z){let Q=qq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return nQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(bn)&&BN5($))return DN5();return X.headers.delete(bn),X}function nQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function $h0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function jN5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=qq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return nQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return nQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return nQ0(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return nQ0(426,"upgrade failed");return}function pQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var UN5=256,NN5='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',wN5;var Wz8=L(()=>{c50();wN5={open($){let Z=$.data;if(!$h0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),pQ0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let Y=Z.pending.shift();if(Y!==void 0)Q.send(Y)}}),Q.addEventListener("message",(Y)=>{if(Z.closed)return;$.send(Y.data)}),Q.addEventListener("close",(Y)=>{pQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{pQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!$h0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=UN5){pQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!$h0(Z))return;pQ0($,Z,1000,"")}}});d$();var yq1="14";function gq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:yq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}d$();import Rz8 from"pg";var hq1=8314027461559302n,Mz8=600000,Vz8=500;async function uq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=Mz8}=$,X=$.log??((K)=>console.log(K)),J=new Rz8.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[hq1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await G$(Vz8)}let K=Date.now()-G;if(K>1000)X(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[hq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();Uh0();b6();function R28(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ih0($,Z){for(let Q=0;Q<$.length;Q++){let Y=$[Q];if(Y===void 0)continue;if(Y===Z)return $[Q+1];if(Y.startsWith(`${Z}=`))return Y.slice(Z.length+1)}return}function AR1(){let $=R28();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ih0($,"--cpu-prof-dir")??process.cwd(),name:Ih0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ih0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}Sh0();var KY0;function SR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=l2();if(!Q)return;let Y={};try{let{heapStats:X}=await import("bun:jsc"),J=X(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);Y={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...Y}))};return Z().catch(()=>{}),KY0=setInterval(()=>void Z().catch(()=>{}),$),KY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),Y=typeof Q==="string"?Q:JSON.stringify(Q),X=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(X,Y),console.log(JSON.stringify({msg:"heap-snapshot-written",path:X}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(KY0)clearInterval(KY0)}}import*as I28 from"bun:jsc";var{startSamplingProfiler:k28,samplingProfilerStackTraces:C28}=I28;function _R1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{k28()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=C28()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function vR1(){AR1();let $=[SR1(),CR1(),_R1()];return()=>{for(let Z of $)Z()}}import{existsSync as MN5}from"fs";var gW=B0();ER1();var{DBOS:tQ0,DBOSClient:EN5}=await import("@dbos-inc/dbos-sdk");function Cq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var PN5=[FG,uW,UD,ND,Vj,y2,g2],zN5=gW.dispatchRole==="worker"?PN5:gW.dispatchRole==="api"?[]:void 0;tQ0.setConfig(gq1({systemDatabaseUrl:Cq1(gW.databaseUrl,gW.databasePgSsl),poolSize:gW.dbosPoolSize,executorID:gW.podName,listenQueues:zN5}));var{createApp:AN5}=await Promise.resolve().then(() => ($z8(),eP8)),{isServerPath:TN5}=await Promise.resolve().then(() => (JY0(),QR1)),{createAssetHandler:qN5,resolveClientDir:Nz8}=await Promise.resolve().then(() => (Jz8(),Xz8)),RN5=gW.port,Kz8=Nz8(import.meta.url,"../client"),Bz8=MN5(Kz8)?Kz8:Nz8(import.meta.url,"../dist/client"),VN5=qN5({clientDir:Bz8,isServerPath:TN5}),IN5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function kN5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(IN5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:CN5,tryHandlePreviewHttp:SN5,tryUpgradePreviewWs:_N5,previewWebSocketHandler:Rq1,isPreviewWsData:Mq1}=await Promise.resolve().then(() => (Wz8(),Gz8)),{getOrInitSharedRunner:Dz8}=await Promise.resolve().then(() => (_X(),in$)),Lz8=CN5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),Hz8={baseDomain:Lz8??"",getRunner:Dz8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())Dz8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Zh0=await AN5({clientDir:Bz8}),Vq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),Fz8=process.env.DBOS_CONDUCTOR_URL?.trim();await uq1({databaseUrl:Cq1(gW.databaseUrl,gW.databasePgSsl)},()=>tQ0.launch({...Vq1?{conductorKey:Vq1}:{},...Vq1&&Fz8?{conductorURL:Fz8}:{}}));console.log(`[dbos] application version: ${tQ0.applicationVersion}`);var Iq1=5,kq1=0;await $8(async()=>{kq1++;try{return await Zh0.initDbos()}catch($){let Z=kq1>=Iq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${kq1}/${Iq1} failed, ${Z}`,$),$}},{maxAttempts:Iq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var vN5=Bun.serve({idleTimeout:0,port:RN5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(Lz8){let Y=await _N5($,Z,Hz8);if(Y===void 0)return;if(Y)return Y;let X=await SN5($,Hz8);if(X)return X}let Q=await VN5($);if(Q)return kN5(Q);return Zh0.fetch($,{server:Z})},websocket:{open($){if(Mq1($.data))Rq1.open($)},message($,Z){if(Mq1($.data))Rq1.message($,Z)},close($){if(Mq1($.data))Rq1.close($)}},development:!1}),bN5=vR1();if(gW.localMode)Promise.resolve().then(() => (Xu(),ov0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Xu(),ov0));Z()}catch{}});var Uz8=!1;async function xN5($){let Z;try{Z=await EN5.create({systemDatabaseUrl:Cq1(gW.databaseUrl,gW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:uW,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Y=Q.map((X)=>X.workflowID);await Z.resumeWorkflows(Y,{queueName:uW}),console.log(`[shutdown] re-enqueued ${Y.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Y)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function Qh0($){if(Uz8)return;Uz8=!0,console.log(`
|
|
4507
4507
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),Y=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);Y.unref?.();let X=0;try{bN5(),Zh0.markShuttingDown();let J=lq1(gW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await G$(J),await vN5.stop(!0);let G=tQ0.executorID;await tQ0.shutdown(),await xN5(G),await Zh0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>Qh0("SIGTERM"));process.on("SIGINT",()=>Qh0("SIGINT"));process.on("SIGHUP",()=>Qh0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Qh0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as p,j as r}from"./index-BphI8pNH.js";import{C as s}from"./index-BCGh3XTH.js";import{A as e}from"./analytics-tab-CNbGVSyT.js";import{S as n}from"./settings-tab-Cp66Lx0x.js";import{e as a}from"./use-organization-settings-B2e749tN.js";import{b as c}from"./thread-route-BEIPJEss.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./use-panel-navigate-C-ip5ing.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./thread-intent-BQGp3MKl.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BVqmbz-P.js";import"./AlertCircle-CzTXJ0ax.js";import"./Tool01-_CVpzZpk.js";import"./ArrowUp-DUhCibLH.js";import"./ArrowLeft-BQThfb60.js";import"./LinkBroken01-Dz2vlPBe.js";import"./ShoppingBag01-DvN3FHxE.js";import"./ZoomOut-DzrH576O.js";import"./Building02-BOLEL9nK.js";import"./CheckCircle-OCgBlAwW.js";import"./ChevronUp-DtSKb4be.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./UserSquare-B7fe7FYj.js";import"./Copy01-DVWv3lef.js";import"./CreditCard01-Bw5uGiku.js";import"./DotsVertical-CEoX1VVK.js";import"./Image01-D_y3XkIW.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Key01-p2EsnMlr.js";import"./Link01-D28gAr0F.js";import"./Minus-DNpWuD14.js";import"./Monitor01-CYm-wjzD.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Plus-C4rGoU1F.js";import"./SearchMd-BYCOzBqa.js";import"./Trash01-CgNTH-jr.js";import"./Upload01-CiTZ5ZQQ.js";import"./User01-vLr2BfmM.js";import"./Users01-BgSWeeD_.js";import"./XClose-B_rQyiiY.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./use-clock-tick-DRqivY5H.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./integration-icon-C-_9oW7G.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./use-debounced-value-DppuiHxU.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./badge-CYEiaJVw.js";import"./checkbox-JO6XiJJq.js";import"./table-CeULXNQ2.js";import"./chart-D7lvPdFx.js";import"./index-kjyiSPIZ.js";import"./symbol-CcauWbN2.js";import"./CategoricalChart-BtQQT8Ex.js";import"./alert-dialog-Bbqu21pF.js";import"./empty-state-BCgDvmX-.js";import"./site-slug-DebpOoQq.js";import"./AreaChart-8lCOmLfE.js";import"./CartesianChart-CmRg3x8T.js";import"./index-B7PBSrog.js";import"./extract-connection-data-DrQExIK1.js";import"./metadata-D72DunRR.js";import"./connection-y8T_LUE4.js";import"./url-slug-DxJ8K4M_.js";import"./chat-context-DqNUlJMY.js";import"./use-decopilot-events-CmWo-JmL.js";import"./use-ai-providers-D11veeve.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-BByi4O7Q.js";import"./empty-state-bJzQYitF.js";import"./use-date-fns-locale-BL151nA9.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-ZxlBJ_T6.js";import"./mcp-oauth-CaTRnuQU.js";import"./textarea-aGNI5bvN.js";import"./use-connection-hBtWetVy.js";import"./use-debounced-autosave-XfpamUxh.js";import"./add-connection-dialog-DyCA7E5B.js";import"./connection-card-C_97TUuR.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-txFUQcqx.js";import"./form-uqsH1s-y.js";import"./select-BAxIwkW7.js";import"./index-BdQq_4o_.js";import"./schema-BKLQwKnK.js";import"./connection-form-helpers-B61Y3llL.js";import"./authenticate-and-persist-oauth-ClTAD7nN.js";import"./collection-tabs-8dvqqnDR.js";import"./use-infinite-scroll-CAGEOw6T.js";import"./useSuspenseInfiniteQuery-DRLUIOlU.js";import"./file-type-icon-CIdo5ojc.js";import"./use-org-fs-Bndw9m25.js";import"./search-input-i8DAXvnS.js";import"./use-mcp-auth-status-CPaTWfZe.js";import"./types-6BxgL_uJ.js";import"./use-mcp-tools-oOqD73aG.js";import"./use-mcp-prompts-B5RvuVy4.js";import"./utils-CVEq3hMx.js";import"./switch-B0lPkF5_.js";import"./popover-D-MLGIKG.js";import"./scroll-area-GNWuujdQ.js";import"./experiments-tab-choice-Ie5k_O6x.js";import"./use-project-native-view-presence-iEIqgCZR.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BukUB2a7.js";import"./optimistic-project-sidebar-views-VOTXYU3D.js";import"./sections-DhRieK41.js";import"./format-time-Cq80KKvY.js";import"./use-copy-Ctyjo3u8.js";import"./virtual-mcp-CKcyAjRE.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-CwZHe4Yx.js";import"./use-secrets-C3hSYvUx.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function l(){const t=p.c(3),o=c(),m=a();let i;return t[0]!==m.analytics||t[1]!==o?(i=m.analytics?r.jsx(e,{virtualMcpId:o}):r.jsx(n,{virtualMcpId:o}),t[0]=m.analytics,t[1]=o,t[2]=i):i=t[2],i}function Wo(){const t=p.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=r.jsx(s.Content,{children:r.jsx(l,{})}),t[0]=o):o=t[0],o}export{Wo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,a0 as u}from"./index-BphI8pNH.js";import{C as f}from"./index-BCGh3XTH.js";import{a as x}from"./thread-route-BEIPJEss.js";import{u as g}from"./use-task-metadata-DYSGuNJN.js";import{AppViewContent as h}from"./project-app-view-BLZBQKeL.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./use-panel-navigate-C-ip5ing.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./thread-intent-BQGp3MKl.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BVqmbz-P.js";import"./AlertCircle-CzTXJ0ax.js";import"./Tool01-_CVpzZpk.js";import"./ArrowUp-DUhCibLH.js";import"./ArrowLeft-BQThfb60.js";import"./LinkBroken01-Dz2vlPBe.js";import"./ShoppingBag01-DvN3FHxE.js";import"./ZoomOut-DzrH576O.js";import"./Building02-BOLEL9nK.js";import"./CheckCircle-OCgBlAwW.js";import"./ChevronUp-DtSKb4be.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./UserSquare-B7fe7FYj.js";import"./Copy01-DVWv3lef.js";import"./CreditCard01-Bw5uGiku.js";import"./DotsVertical-CEoX1VVK.js";import"./Image01-D_y3XkIW.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Key01-p2EsnMlr.js";import"./Link01-D28gAr0F.js";import"./Minus-DNpWuD14.js";import"./Monitor01-CYm-wjzD.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Plus-C4rGoU1F.js";import"./SearchMd-BYCOzBqa.js";import"./Trash01-CgNTH-jr.js";import"./Upload01-CiTZ5ZQQ.js";import"./User01-vLr2BfmM.js";import"./Users01-BgSWeeD_.js";import"./XClose-B_rQyiiY.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./use-clock-tick-DRqivY5H.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./integration-icon-C-_9oW7G.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./use-debounced-value-DppuiHxU.js";import"./use-organization-settings-B2e749tN.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./tool-namespace-DqsoHKmd.js";import"./use-mcp-tools-oOqD73aG.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-tCfKhIA1.js";import"./types-6BxgL_uJ.js";import"./chat-context-DqNUlJMY.js";import"./use-decopilot-events-CmWo-JmL.js";import"./use-ai-providers-D11veeve.js";import"./location-V0VwTJTt.js";import"./task-route-dMm35uIv.js";import"./task-key-BCHdFiOO.js";import"./core.esm-Bnj1keGH.js";import"./connect-source-dialog-Cugh2Kwq.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-pRfQU03M.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-uqsH1s-y.js";import"./icon-button-BUDG7R_U.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-BRUig2bT.js";import"./authenticate-and-persist-oauth-ClTAD7nN.js";import"./mcp-oauth-ZxlBJ_T6.js";import"./mcp-oauth-CaTRnuQU.js";import"./track-DO9rvMbw.js";import"./extract-connection-data-DrQExIK1.js";import"./connection-y8T_LUE4.js";import"./url-slug-DxJ8K4M_.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function jo(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{jo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as S,b as K,r as Y,j as e,n as m,y as O,B as F,aY as Q}from"./index-BphI8pNH.js";import{C as U}from"./index-BCGh3XTH.js";import{s as W}from"./Plus-C4rGoU1F.js";import{F as X}from"./agent-icon-BVqmbz-P.js";import{i as V}from"./ZoomOut-DzrH576O.js";import{S as Z}from"./search-input-i8DAXvnS.js";import{E as $}from"./empty-state-bJzQYitF.js";import{u as tt,a as et,b as it}from"./use-automations-tbwaowTj.js";import{a as ot}from"./use-panel-navigate-C-ip5ing.js";import{A as st}from"./automation-list-row-CvwYuhxk.js";import{b as rt}from"./thread-route-BEIPJEss.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./thread-intent-BQGp3MKl.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./User01-vLr2BfmM.js";import"./Building02-BOLEL9nK.js";import"./UserSquare-B7fe7FYj.js";import"./XClose-B_rQyiiY.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./CheckCircle-OCgBlAwW.js";import"./Monitor01-CYm-wjzD.js";import"./use-clock-tick-DRqivY5H.js";import"./Tool01-_CVpzZpk.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./SearchMd-BYCOzBqa.js";import"./integration-icon-C-_9oW7G.js";import"./LinkBroken01-Dz2vlPBe.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./ArrowLeft-BQThfb60.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./ShoppingBag01-DvN3FHxE.js";import"./use-debounced-value-DppuiHxU.js";import"./use-organization-settings-B2e749tN.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./AlertCircle-CzTXJ0ax.js";import"./ArrowUp-DUhCibLH.js";import"./ChevronUp-DtSKb4be.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./Copy01-DVWv3lef.js";import"./CreditCard01-Bw5uGiku.js";import"./DotsVertical-CEoX1VVK.js";import"./Image01-D_y3XkIW.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Key01-p2EsnMlr.js";import"./Link01-D28gAr0F.js";import"./Minus-DNpWuD14.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Trash01-CgNTH-jr.js";import"./Upload01-CiTZ5ZQQ.js";import"./Users01-BgSWeeD_.js";import"./badge-CYEiaJVw.js";import"./alert-dialog-Bbqu21pF.js";function nt(o){if(!(o instanceof Error))return!1;const t=o.message.toLowerCase();return t.includes("relation")&&t.includes("does not exist")}function mt(o){const t=S.c(45),{virtualMcpId:r}=o,i=K(),{openPanel:n}=ot(),{data:D,error:M}=tt(r),v=D===void 0?[]:D,{create:y}=et(),[_,G]=Y.useState("");if(M&&nt(M)){let s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s=e.jsx(X,{size:48,className:"text-muted-foreground"}),t[0]=s):s=t[0];let x;t[1]!==i?(x=i("automations.setupRequired.title"),t[1]=i,t[2]=x):x=t[2];let h;t[3]!==i?(h=i("automations.setupRequired.description"),t[3]=i,t[4]=h):h=t[4];let j;t[5]!==n?(j=()=>n("settings"),t[5]=n,t[6]=j):j=t[6];let g;t[7]!==i?(g=i("automations.setupRequired.goToSetup"),t[7]=i,t[8]=g):g=t[8];let C;t[9]!==j||t[10]!==g?(C=e.jsx(F,{size:"sm",onClick:j,children:g}),t[9]=j,t[10]=g,t[11]=C):C=t[11];let N;return t[12]!==x||t[13]!==h||t[14]!==C?(N=e.jsx(m,{children:e.jsx(m.Content,{children:e.jsx(m.Container,{children:e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx($,{image:s,title:x,description:h,actions:C})})})})}),t[12]=x,t[13]=h,t[14]=C,t[15]=N):N=t[15],N}const H=_.toLowerCase(),q=v.filter(s=>s.name.toLowerCase().includes(H));let w;t[16]!==n?(w=s=>n(`automation:${s}`),t[16]=n,t[17]=w):w=t[17];const B=w,R=async()=>{if(y.isPending)return;O("automation_new_clicked",{virtual_mcp_id:r,existing_count:v.length});const s=await y.mutateAsync(it(r));B(s.id)},J=y.isPending;let A;t[18]===Symbol.for("react.memo_cache_sentinel")?(A=e.jsx(W,{size:14}),t[18]=A):A=t[18];let a;t[19]!==i?(a=i("automations.automationsList.newAutomation"),t[19]=i,t[20]=a):a=t[20];let L;t[21]!==y.isPending||t[22]!==R||t[23]!==a?(L=e.jsxs(F,{size:"sm",onClick:R,disabled:J,children:[A,a]}),t[21]=y.isPending,t[22]=R,t[23]=a,t[24]=L):L=t[24];const P=L,T=m,E=m,k=m;let l;t[25]!==i?(l=i("automations.automationsList.title"),t[25]=i,t[26]=l):l=t[26];let c;t[27]!==P||t[28]!==l?(c=e.jsx(m.Title,{actions:P,children:l}),t[27]=P,t[28]=l,t[29]=c):c=t[29];const z=v.length>0&&e.jsx(Z,{value:_,onChange:G,placeholder:i("automations.automationsList.searchPlaceholder"),className:"w-full md:w-[375px]"});let p;t[30]!==z?(p=e.jsx("div",{className:"flex flex-wrap items-center justify-between gap-3",children:z}),t[30]=z,t[31]=p):p=t[31];let u;t[32]!==c||t[33]!==p?(u=e.jsxs("div",{className:"flex flex-col gap-6",children:[c,p]}),t[32]=c,t[33]=p,t[34]=u):u=t[34];const I=v.length===0?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx($,{image:e.jsx(V,{size:48,className:"text-muted-foreground"}),title:i("automations.automationsList.emptyTitle"),description:i("automations.automationsList.emptyDescription"),actions:!1})}):q.length===0?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx($,{image:e.jsx(V,{size:48,className:"text-muted-foreground"}),title:i("automations.automationsList.noResultsTitle"),description:i("automations.automationsList.noResultsDescription",{search:_})})}):e.jsx("div",{className:"mt-6 flex flex-col divide-y divide-border overflow-hidden rounded-xl bg-card shadow-edge",children:q.map(s=>e.jsx(st,{automation:s,onClick:()=>B(s.id)},s.id))});let d;t[35]!==u||t[36]!==I||t[37]!==k.Container?(d=e.jsxs(k.Container,{children:[u,I]}),t[35]=u,t[36]=I,t[37]=k.Container,t[38]=d):d=t[38];let f;t[39]!==d||t[40]!==E.Content?(f=e.jsx(E.Content,{children:d}),t[39]=d,t[40]=E.Content,t[41]=f):f=t[41];let b;return t[42]!==T||t[43]!==f?(b=e.jsx(T,{children:f}),t[42]=T,t[43]=f,t[44]=b):b=t[44],b}function at(o){const t=S.c(3),{virtualMcpId:r}=o;let i;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=e.jsx(Q,{}),t[0]=i):i=t[0];let n;return t[1]!==r?(n=e.jsx(Y.Suspense,{fallback:i,children:e.jsx(mt,{virtualMcpId:r})}),t[1]=r,t[2]=n):n=t[2],n}function lt(){const o=S.c(2),t=rt();let r;return o[0]!==t?(r=e.jsx(at,{virtualMcpId:t}),o[0]=t,o[1]=r):r=o[1],r}function De(){const o=S.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(U.Content,{children:e.jsx(lt,{})}),o[0]=t):t=o[0],t}export{De as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as x,b as V,j as r,b1 as b}from"./index-BphI8pNH.js";import{C as D}from"./index-BCGh3XTH.js";import{S as k}from"./site-draft-actions-BjAr6xi6.js";import{r as v}from"./agent-icon-BVqmbz-P.js";import{CampaignsView as N}from"./campaigns-view-DTbZCmg6.js";import{c as F,S as M}from"./site-draft-view-Bpwq-4Im.js";import{a as T}from"./use-panel-navigate-C-ip5ing.js";import{u as R,e as $}from"./experiments-tab-choice-Ie5k_O6x.js";import{S as A}from"./settings-tab-Cp66Lx0x.js";import{b as I}from"./thread-route-BEIPJEss.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./thread-intent-BQGp3MKl.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./User01-vLr2BfmM.js";import"./Building02-BOLEL9nK.js";import"./UserSquare-B7fe7FYj.js";import"./XClose-B_rQyiiY.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./CheckCircle-OCgBlAwW.js";import"./Monitor01-CYm-wjzD.js";import"./ZoomOut-DzrH576O.js";import"./use-clock-tick-DRqivY5H.js";import"./Plus-C4rGoU1F.js";import"./Tool01-_CVpzZpk.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./SearchMd-BYCOzBqa.js";import"./integration-icon-C-_9oW7G.js";import"./LinkBroken01-Dz2vlPBe.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./ArrowLeft-BQThfb60.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./ShoppingBag01-DvN3FHxE.js";import"./use-debounced-value-DppuiHxU.js";import"./use-organization-settings-B2e749tN.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./separator-gKWGw3ec.js";import"./chat-context-DqNUlJMY.js";import"./use-decopilot-events-CmWo-JmL.js";import"./use-ai-providers-D11veeve.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-n7tT-SpR.js";import"./use-session-runtime-RS_ZeJDS.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-DnxtSQ0E.js";import"./Image01-D_y3XkIW.js";import"./use-sandbox-events-B-rKhgAE.js";import"./sandbox-git-api-CH_-QFpD.js";import"./popover-D-MLGIKG.js";import"./alert-dialog-Bbqu21pF.js";import"./tabs-fkqYJpP8.js";import"./active-indicator-CCMhAsc_.js";import"./ChevronUp-DtSKb4be.js";import"./DotsVertical-CEoX1VVK.js";import"./Trash01-CgNTH-jr.js";import"./use-releases-DJrTmfLZ.js";import"./serial-task-queue-CGOeQgpr.js";import"./use-members-DQZYP7Cb.js";import"./use-org-auth-client-CSFZu3Wj.js";import"./virtual-mcp-CKcyAjRE.js";import"./url-slug-DxJ8K4M_.js";import"./use-fast-preview-draft-url-6n7ATrzr.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./parse-sections-ClqXxi6i.js";import"./index-Codsxxmu.js";import"./ArrowUp-DUhCibLH.js";import"./tool-namespace-DqsoHKmd.js";import"./drawer-txFUQcqx.js";import"./use-mcp-prompts-B5RvuVy4.js";import"./usage-stats-BHO2m1GZ.js";import"./form-uqsH1s-y.js";import"./utils-CVEq3hMx.js";import"./markdown-Bqq3R66p.js";import"./use-copy-Ctyjo3u8.js";import"./Copy01-DVWv3lef.js";import"./format-time-Cq80KKvY.js";import"./differenceInSeconds-C3x8sHUj.js";import"./input-otZYQGEr.js";import"./icon-button-BUDG7R_U.js";import"./file-type-icon-CIdo5ojc.js";import"./chat-draft-DeylAkNb.js";import"./Upload01-CiTZ5ZQQ.js";import"./AlertCircle-CzTXJ0ax.js";import"./select-BAxIwkW7.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-DAnq8bae.js";import"./toggle-group-DaYieoyW.js";import"./use-open-billing-url-0u6Rqj8b.js";import"./index-BtufcGJ5.js";import"./checkbox-JO6XiJJq.js";import"./Minus-DNpWuD14.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./Key01-p2EsnMlr.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-DeNGl9cT.js";import"./suggestion-BfzPP8A_.js";import"./use-org-fs-Bndw9m25.js";import"./Link01-D28gAr0F.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-XpETcjbv.js";import"./plan-ladder-BJOn0tjJ.js";import"./add-connection-dialog-DyCA7E5B.js";import"./extract-connection-data-DrQExIK1.js";import"./metadata-D72DunRR.js";import"./connection-y8T_LUE4.js";import"./connection-card-C_97TUuR.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-aGNI5bvN.js";import"./use-connection-hBtWetVy.js";import"./schema-BKLQwKnK.js";import"./connection-form-helpers-B61Y3llL.js";import"./authenticate-and-persist-oauth-ClTAD7nN.js";import"./mcp-oauth-ZxlBJ_T6.js";import"./mcp-oauth-CaTRnuQU.js";import"./collection-tabs-8dvqqnDR.js";import"./badge-CYEiaJVw.js";import"./use-infinite-scroll-CAGEOw6T.js";import"./useSuspenseInfiniteQuery-DRLUIOlU.js";import"./use-task-board-events-CemAfTjA.js";import"./pair-DRaIXAj-.js";import"./collapsible-CXUiqrZ3.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-tCfKhIA1.js";import"./types-6BxgL_uJ.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-9KkInEd1.js";import"./named-rule-uses-BFHY2QY4.js";import"./secret-ciphertext-BA15G7qe.js";import"./alert-COKmPgNZ.js";import"./device-hint-SeLRi17j.js";import"./editor-DxbkHv3R.js";import"./use-content-sync-DTts1O7D.js";import"./releases-api-DX2L3yOb.js";import"./save-changes-debug-nBi-n9eV.js";import"./sandbox-lifecycle-context-CAD11jz7.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./CreditCard01-Bw5uGiku.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Users01-BgSWeeD_.js";import"./scroll-area-GNWuujdQ.js";import"./named-rule-view-DHbEzjpv.js";import"./blocks-tab-states-CwfYFgj9.js";import"./slider-DMzP4oef.js";import"./index-unPBFo0y.js";import"./tooltipContext-CgeI21sB.js";import"./CategoricalChart-BtQQT8Ex.js";import"./index-kjyiSPIZ.js";import"./ActiveShapeUtils-EYkJV7tD.js";import"./Sector-23KRNcXn.js";import"./symbol-CcauWbN2.js";import"./empty-state-bJzQYitF.js";import"./use-apply-named-rule-B4OGys4b.js";import"./use-move-blocks-C7t8R0hh.js";import"./date-utils-CrvIKg-s.js";import"./empty-state-BCgDvmX-.js";import"./index-B7PBSrog.js";import"./build-improve-prompt-doc-BByi4O7Q.js";import"./use-date-fns-locale-BL151nA9.js";import"./use-debounced-autosave-XfpamUxh.js";import"./search-input-i8DAXvnS.js";import"./use-mcp-auth-status-CPaTWfZe.js";import"./use-mcp-tools-oOqD73aG.js";import"./switch-B0lPkF5_.js";import"./use-project-native-view-presence-iEIqgCZR.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BukUB2a7.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-VOTXYU3D.js";import"./sections-DhRieK41.js";import"./secret-picker-CwZHe4Yx.js";import"./use-secrets-C3hSYvUx.js";function h(){const o=x.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsxs("div",{className:"flex flex-col gap-3 p-4","data-testid":"calendar-skeleton","aria-busy":"true",children:[r.jsx(b,{className:"h-6 w-40"}),r.jsx(b,{className:"h-40 w-full"})]}),o[0]=t):t=o[0],t}function E(o){const t=x.c(22),{virtualMcpId:p}=o,i=V(),{openPanel:m}=T();let f;t[0]===Symbol.for("react.memo_cache_sentinel")?(f=r.jsx(v,{size:28,className:"text-muted-foreground"}),t[0]=f):f=t[0];let e;t[1]!==i?(e=i("sandbox.calendarView.noDraft.title"),t[1]=i,t[2]=e):e=t[2];let a;t[3]!==i?(a=i("sandbox.calendarView.noDraft.desc"),t[3]=i,t[4]=a):a=t[4];let s;t[5]!==i?(s=i("sandbox.calendarView.loadFailed"),t[5]=i,t[6]=s):s=t[6];let l;t[7]!==i?(l=i("sandbox.calendarView.loadFailedHint"),t[7]=i,t[8]=l):l=t[8];let n;t[9]!==e||t[10]!==a||t[11]!==s||t[12]!==l?(n={noDraftTitle:e,noDraftDesc:a,loadFailed:s,loadFailedHint:l},t[9]=e,t[10]=a,t[11]=s,t[12]=l,t[13]=n):n=t[13];let d;t[14]===Symbol.for("react.memo_cache_sentinel")?(d=r.jsx(h,{}),t[14]=d):d=t[14];let c;t[15]!==m||t[16]!==p?(c=j=>{const{orgSlug:S,branch:w,decofile:g,meta:_}=j;return r.jsx("div",{className:"h-full w-full","data-testid":"calendar-view",children:r.jsx(N,{orgSlug:S,virtualMcpId:p,branch:w,decofile:g,meta:_,initialView:"timeline",onOpenUse:y=>m("content",{search:C=>({...C,...F(y)})})})})},t[15]=m,t[16]=p,t[17]=c):c=t[17];let u;return t[18]!==n||t[19]!==c||t[20]!==p?(u=r.jsx(M,{virtualMcpId:p,icon:f,copy:n,skeleton:d,children:c}),t[18]=n,t[19]=c,t[20]=p,t[21]=u):u=t[21],u}function H(){const o=x.c(5),t=I(),p=R(t);if($(p)){let m;return o[0]!==t?(m=r.jsx(E,{virtualMcpId:t}),o[0]=t,o[1]=m):m=o[1],m}if(p==="loading"){let m;return o[2]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(h,{}),o[2]=m):m=o[2],m}let i;return o[3]!==t?(i=r.jsx(A,{virtualMcpId:t}),o[3]=t,o[4]=i):i=o[4],i}function Dr(){const o=x.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=r.jsx(D.Content,{actions:r.jsx(k,{blocksOnly:!0}),children:r.jsx(H,{})}),o[0]=t):t=o[0],t}export{Dr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,b1 as b,u as g}from"./index-BphI8pNH.js";import{C as j}from"./index-BCGh3XTH.js";import{F as v,H as S}from"./file-share-button-BxZcqmJb.js";import{u as k,b as y,e as _}from"./use-org-fs-Bndw9m25.js";import{S as w}from"./settings-tab-Cp66Lx0x.js";import{b as M}from"./thread-route-BEIPJEss.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./use-panel-navigate-C-ip5ing.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./thread-intent-BQGp3MKl.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BVqmbz-P.js";import"./AlertCircle-CzTXJ0ax.js";import"./Tool01-_CVpzZpk.js";import"./ArrowUp-DUhCibLH.js";import"./ArrowLeft-BQThfb60.js";import"./LinkBroken01-Dz2vlPBe.js";import"./ShoppingBag01-DvN3FHxE.js";import"./ZoomOut-DzrH576O.js";import"./Building02-BOLEL9nK.js";import"./CheckCircle-OCgBlAwW.js";import"./ChevronUp-DtSKb4be.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./UserSquare-B7fe7FYj.js";import"./Copy01-DVWv3lef.js";import"./CreditCard01-Bw5uGiku.js";import"./DotsVertical-CEoX1VVK.js";import"./Image01-D_y3XkIW.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Key01-p2EsnMlr.js";import"./Link01-D28gAr0F.js";import"./Minus-DNpWuD14.js";import"./Monitor01-CYm-wjzD.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Plus-C4rGoU1F.js";import"./SearchMd-BYCOzBqa.js";import"./Trash01-CgNTH-jr.js";import"./Upload01-CiTZ5ZQQ.js";import"./User01-vLr2BfmM.js";import"./Users01-BgSWeeD_.js";import"./XClose-B_rQyiiY.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./use-clock-tick-DRqivY5H.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./integration-icon-C-_9oW7G.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./use-debounced-value-DppuiHxU.js";import"./use-organization-settings-B2e749tN.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./popover-D-MLGIKG.js";import"./index-B7PBSrog.js";import"./extract-connection-data-DrQExIK1.js";import"./metadata-D72DunRR.js";import"./connection-y8T_LUE4.js";import"./url-slug-DxJ8K4M_.js";import"./chat-context-DqNUlJMY.js";import"./use-decopilot-events-CmWo-JmL.js";import"./use-ai-providers-D11veeve.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-BByi4O7Q.js";import"./empty-state-bJzQYitF.js";import"./use-date-fns-locale-BL151nA9.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-ZxlBJ_T6.js";import"./mcp-oauth-CaTRnuQU.js";import"./alert-dialog-Bbqu21pF.js";import"./textarea-aGNI5bvN.js";import"./use-connection-hBtWetVy.js";import"./use-debounced-autosave-XfpamUxh.js";import"./add-connection-dialog-DyCA7E5B.js";import"./connection-card-C_97TUuR.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-txFUQcqx.js";import"./form-uqsH1s-y.js";import"./select-BAxIwkW7.js";import"./index-BdQq_4o_.js";import"./schema-BKLQwKnK.js";import"./connection-form-helpers-B61Y3llL.js";import"./authenticate-and-persist-oauth-ClTAD7nN.js";import"./collection-tabs-8dvqqnDR.js";import"./badge-CYEiaJVw.js";import"./use-infinite-scroll-CAGEOw6T.js";import"./useSuspenseInfiniteQuery-DRLUIOlU.js";import"./file-type-icon-CIdo5ojc.js";import"./checkbox-JO6XiJJq.js";import"./search-input-i8DAXvnS.js";import"./use-mcp-auth-status-CPaTWfZe.js";import"./types-6BxgL_uJ.js";import"./use-mcp-tools-oOqD73aG.js";import"./use-mcp-prompts-B5RvuVy4.js";import"./utils-CVEq3hMx.js";import"./switch-B0lPkF5_.js";import"./scroll-area-GNWuujdQ.js";import"./experiments-tab-choice-Ie5k_O6x.js";import"./use-project-native-view-presence-iEIqgCZR.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BukUB2a7.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-VOTXYU3D.js";import"./sections-DhRieK41.js";import"./format-time-Cq80KKvY.js";import"./use-copy-Ctyjo3u8.js";import"./virtual-mcp-CKcyAjRE.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-CwZHe4Yx.js";import"./use-secrets-C3hSYvUx.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function C(){const i=c.c(4);let t;i[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},i[0]=t):t=i[0];const r=g(t),p=M(),o="path"in r&&typeof r.path=="string"?r.path:void 0;let m;return i[1]!==o||i[2]!==p?(m=o?e.jsx(D,{path:o},o):e.jsx(w,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function er(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(C,{})}),i[0]=t):t=i[0],t}export{er as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-BphI8pNH.js";import{C as n}from"./index-BCGh3XTH.js";import{S as a}from"./site-draft-actions-BjAr6xi6.js";import{E as c,a as l}from"./experiments-tab-DmhKoZxz.js";import{S as u}from"./settings-tab-Cp66Lx0x.js";import{e as f}from"./use-organization-settings-B2e749tN.js";import{b as x}from"./thread-route-BEIPJEss.js";import{u as b,b as j,g as d}from"./experiments-tab-choice-Ie5k_O6x.js";import"./use-mobile-DruvZ2zF.js";import"./use-sidebar-collapsed-C9KH2wzy.js";import"./use-chat-layout-state-CIyU-XxO.js";import"./use-panel-navigate-C-ip5ing.js";import"./use-project-scope-DN9qkINS.js";import"./repository-binding-CqjA7Tko.js";import"./use-mcp-client-DsrOnW9o.js";import"./auth-BypL5L1O.js";import"./thread-intent-BQGp3MKl.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-B6MhK1l7.js";import"./task-board-Cv7D_3uN.js";import"./schema-Ddw2ah-q.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-BVqmbz-P.js";import"./AlertCircle-CzTXJ0ax.js";import"./Tool01-_CVpzZpk.js";import"./ArrowUp-DUhCibLH.js";import"./ArrowLeft-BQThfb60.js";import"./LinkBroken01-Dz2vlPBe.js";import"./ShoppingBag01-DvN3FHxE.js";import"./ZoomOut-DzrH576O.js";import"./Building02-BOLEL9nK.js";import"./CheckCircle-OCgBlAwW.js";import"./ChevronUp-DtSKb4be.js";import"./ChevronSelectorVertical-DaDJpoIU.js";import"./UserSquare-B7fe7FYj.js";import"./Copy01-DVWv3lef.js";import"./CreditCard01-Bw5uGiku.js";import"./DotsVertical-CEoX1VVK.js";import"./Image01-D_y3XkIW.js";import"./Globe04-CMBPkECo.js";import"./SwitchHorizontal01-D6mwjnXs.js";import"./Key01-p2EsnMlr.js";import"./Link01-D28gAr0F.js";import"./Minus-DNpWuD14.js";import"./Monitor01-CYm-wjzD.js";import"./Sun-DFIh8Vd-.js";import"./Play-cNq95jJS.js";import"./Plus-C4rGoU1F.js";import"./SearchMd-BYCOzBqa.js";import"./Trash01-CgNTH-jr.js";import"./Upload01-CiTZ5ZQQ.js";import"./User01-vLr2BfmM.js";import"./Users01-BgSWeeD_.js";import"./XClose-B_rQyiiY.js";import"./tooltip-2YCPx1DM.js";import"./index-C5xgscqu.js";import"./toolbar-icon-button-3blDPoB6.js";import"./shell-layout-DPflSDI7.js";import"./avatar-CFO-sRGJ.js";import"./use-clock-tick-DRqivY5H.js";import"./command-C9iGFbUT.js";import"./index-CW0mTKOH.js";import"./integration-icon-C-_9oW7G.js";import"./project-icon-J_TfV9WN.js";import"./new-project-dialog-Cs8HMQlb.js";import"./label-BXumUTqC.js";import"./repository-import-picker-DRcn5MCM.js";import"./use-navigate-to-agent-CfXi671z.js";import"./repository-picker-BL6xlIly.js";import"./useInfiniteQuery-Ctv8zOi3.js";import"./infiniteQueryObserver-CD6zPv_B.js";import"./collection-search-CVvFJ5Bb.js";import"./use-debounced-value-DppuiHxU.js";import"./required-auth-layout-BA3Gxw_5.js";import"./autosend-B4f5gabb.js";import"./use-org-sso-B7o6rhq2.js";import"./sheet-Dy9d78N0.js";import"./resizable-Bu3AyxKl.js";import"./separator-gKWGw3ec.js";import"./chat-context-DqNUlJMY.js";import"./use-decopilot-events-CmWo-JmL.js";import"./use-ai-providers-D11veeve.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-n7tT-SpR.js";import"./use-session-runtime-RS_ZeJDS.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-DnxtSQ0E.js";import"./use-sandbox-events-B-rKhgAE.js";import"./sandbox-git-api-CH_-QFpD.js";import"./popover-D-MLGIKG.js";import"./alert-dialog-Bbqu21pF.js";import"./tabs-fkqYJpP8.js";import"./active-indicator-CCMhAsc_.js";import"./use-releases-DJrTmfLZ.js";import"./serial-task-queue-CGOeQgpr.js";import"./use-members-DQZYP7Cb.js";import"./use-org-auth-client-CSFZu3Wj.js";import"./virtual-mcp-CKcyAjRE.js";import"./url-slug-DxJ8K4M_.js";import"./use-fast-preview-draft-url-6n7ATrzr.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./parse-sections-ClqXxi6i.js";import"./index-Codsxxmu.js";import"./tool-namespace-DqsoHKmd.js";import"./drawer-txFUQcqx.js";import"./use-mcp-prompts-B5RvuVy4.js";import"./usage-stats-BHO2m1GZ.js";import"./form-uqsH1s-y.js";import"./utils-CVEq3hMx.js";import"./markdown-Bqq3R66p.js";import"./use-copy-Ctyjo3u8.js";import"./format-time-Cq80KKvY.js";import"./differenceInSeconds-C3x8sHUj.js";import"./input-otZYQGEr.js";import"./icon-button-BUDG7R_U.js";import"./file-type-icon-CIdo5ojc.js";import"./chat-draft-DeylAkNb.js";import"./select-BAxIwkW7.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-DAnq8bae.js";import"./toggle-group-DaYieoyW.js";import"./use-open-billing-url-0u6Rqj8b.js";import"./index-BtufcGJ5.js";import"./checkbox-JO6XiJJq.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-DeNGl9cT.js";import"./suggestion-BfzPP8A_.js";import"./use-org-fs-Bndw9m25.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-XpETcjbv.js";import"./plan-ladder-BJOn0tjJ.js";import"./add-connection-dialog-DyCA7E5B.js";import"./extract-connection-data-DrQExIK1.js";import"./metadata-D72DunRR.js";import"./connection-y8T_LUE4.js";import"./connection-card-C_97TUuR.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-aGNI5bvN.js";import"./use-connection-hBtWetVy.js";import"./schema-BKLQwKnK.js";import"./connection-form-helpers-B61Y3llL.js";import"./authenticate-and-persist-oauth-ClTAD7nN.js";import"./mcp-oauth-ZxlBJ_T6.js";import"./mcp-oauth-CaTRnuQU.js";import"./collection-tabs-8dvqqnDR.js";import"./badge-CYEiaJVw.js";import"./use-infinite-scroll-CAGEOw6T.js";import"./useSuspenseInfiniteQuery-DRLUIOlU.js";import"./use-task-board-events-CemAfTjA.js";import"./pair-DRaIXAj-.js";import"./collapsible-CXUiqrZ3.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-tCfKhIA1.js";import"./types-6BxgL_uJ.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-9KkInEd1.js";import"./named-rule-uses-BFHY2QY4.js";import"./secret-ciphertext-BA15G7qe.js";import"./alert-COKmPgNZ.js";import"./device-hint-SeLRi17j.js";import"./editor-DxbkHv3R.js";import"./use-content-sync-DTts1O7D.js";import"./releases-api-DX2L3yOb.js";import"./save-changes-debug-nBi-n9eV.js";import"./sandbox-lifecycle-context-CAD11jz7.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./table-CeULXNQ2.js";import"./empty-state-BCgDvmX-.js";import"./site-slug-DebpOoQq.js";import"./blocks-tab-states-CwfYFgj9.js";import"./slider-DMzP4oef.js";import"./index-unPBFo0y.js";import"./tooltipContext-CgeI21sB.js";import"./CategoricalChart-BtQQT8Ex.js";import"./index-kjyiSPIZ.js";import"./ActiveShapeUtils-EYkJV7tD.js";import"./Sector-23KRNcXn.js";import"./symbol-CcauWbN2.js";import"./empty-state-bJzQYitF.js";import"./named-rule-view-DHbEzjpv.js";import"./use-apply-named-rule-B4OGys4b.js";import"./use-move-blocks-C7t8R0hh.js";import"./site-draft-view-Bpwq-4Im.js";import"./search-toggle-C2BWIs4O.js";import"./use-task-board-item-prs-83sFKoAa.js";import"./index-B7PBSrog.js";import"./build-improve-prompt-doc-BByi4O7Q.js";import"./use-date-fns-locale-BL151nA9.js";import"./use-debounced-autosave-XfpamUxh.js";import"./search-input-i8DAXvnS.js";import"./use-mcp-auth-status-CPaTWfZe.js";import"./use-mcp-tools-oOqD73aG.js";import"./switch-B0lPkF5_.js";import"./scroll-area-GNWuujdQ.js";import"./use-project-native-view-presence-iEIqgCZR.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BukUB2a7.js";import"./optimistic-project-sidebar-views-VOTXYU3D.js";import"./sections-DhRieK41.js";import"./secret-picker-CwZHe4Yx.js";import"./use-secrets-C3hSYvUx.js";function E(){const t=m.c(5),r=x(),p=f(),e=b(r),s=j(r);switch(d({orgEnabled:p.experiments,siteMajor:e,lastFoundV8:s})){case"tab":{let o;return t[0]!==r?(o=i.jsx(l,{virtualMcpId:r}),t[0]=r,t[1]=o):o=t[1],o}case"loading":{let o;return t[2]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(c,{}),t[2]=o):o=t[2],o}case"settings":{let o;return t[3]!==r?(o=i.jsx(u,{virtualMcpId:r}),t[3]=r,t[4]=o):o=t[4],o}}}function ni(){const t=m.c(1);let r;return t[0]===Symbol.for("react.memo_cache_sentinel")?(r=i.jsx(n.Content,{actions:i.jsx(a,{blocksOnly:!0}),children:i.jsx(E,{})}),t[0]=r):r=t[0],r}export{ni as default};
|