decocms 4.504.0 → 4.504.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{ActiveShapeUtils-B0u9jV2c.js → ActiveShapeUtils-DKIDO_1S.js} +1 -1
- package/dist/client/assets/{AlertCircle-C1f-lxgM.js → AlertCircle-CvzgYhA1.js} +1 -1
- package/dist/client/assets/{AreaChart-Clm2J7Jy.js → AreaChart-CZJcv2b0.js} +1 -1
- package/dist/client/assets/{ArrowLeft-I3l36ZjU.js → ArrowLeft-C-daIM3d.js} +1 -1
- package/dist/client/assets/{ArrowUp-CN7A9Moq.js → ArrowUp-CRtTMsxu.js} +1 -1
- package/dist/client/assets/{BarChart--mNl1LYx.js → BarChart-CuZq1wnC.js} +1 -1
- package/dist/client/assets/{Building02-CmYuhs9q.js → Building02-t5Er3ElU.js} +1 -1
- package/dist/client/assets/{CategoricalChart-DNjlW_Tb.js → CategoricalChart-CgkVxNVa.js} +1 -1
- package/dist/client/assets/{CheckCircle-Bbdmy3-4.js → CheckCircle-DQ5hZ6kk.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-DnykG0uP.js → ChevronSelectorVertical-DZ5AedUS.js} +1 -1
- package/dist/client/assets/{ChevronUp-BSosmJSL.js → ChevronUp-na5-dcSl.js} +1 -1
- package/dist/client/assets/{Copy01-ClJqHrSL.js → Copy01-BjIIW8_O.js} +1 -1
- package/dist/client/assets/{CreditCard01-DMXUjEhW.js → CreditCard01-W8zWWiwG.js} +1 -1
- package/dist/client/assets/{DotsVertical-Bq-FhyDz.js → DotsVertical-BKsLfSzO.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-CPCe9K_K.js → ErrorBarContext-D09le-qy.js} +1 -1
- package/dist/client/assets/{Globe04-tkCkwAZ7.js → Globe04-Dxbljobj.js} +1 -1
- package/dist/client/assets/{Image01-BdJJuBkl.js → Image01-CCiR6WvN.js} +1 -1
- package/dist/client/assets/{Key01-pWArwON-.js → Key01-dzk3bFgK.js} +1 -1
- package/dist/client/assets/{Link01-B9ootJcD.js → Link01-BFlDqCAx.js} +1 -1
- package/dist/client/assets/{LinkBroken01-DdphioXH.js → LinkBroken01-CFgDU1iT.js} +1 -1
- package/dist/client/assets/{Monitor01-z4WYVE55.js → Monitor01-CzTNg0FK.js} +1 -1
- package/dist/client/assets/{Play-BI5wPgvY.js → Play-CUKQvmyQ.js} +1 -1
- package/dist/client/assets/{Plus-COolVLwU.js → Plus-DvEkF-GX.js} +1 -1
- package/dist/client/assets/{SearchMd-y-lLgqEG.js → SearchMd-CzLQtHnj.js} +1 -1
- package/dist/client/assets/{Sector-D5VTGjOA.js → Sector-D8ZClZAx.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-C6o3UxmP.js → ShoppingBag01-BZ5UnNa9.js} +1 -1
- package/dist/client/assets/{Sun-odOLuJdq.js → Sun-CBKPtiTD.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-f0pF3KQj.js → SwitchHorizontal01-BwmwCJK4.js} +1 -1
- package/dist/client/assets/{Tool01-D1AhyVfW.js → Tool01-DF1WM7_l.js} +1 -1
- package/dist/client/assets/{Trash01-DfoQYxMm.js → Trash01-CII15-Ol.js} +1 -1
- package/dist/client/assets/{Upload01-BBOzClAk.js → Upload01-ByzV5AJT.js} +1 -1
- package/dist/client/assets/{User01-BErnjQ_p.js → User01-B8TkSgdJ.js} +1 -1
- package/dist/client/assets/{UserSquare-C_0tdrPK.js → UserSquare-Dnb6rDbL.js} +1 -1
- package/dist/client/assets/{Users01-C3dqLukD.js → Users01-fw2oWxtk.js} +1 -1
- package/dist/client/assets/{XAxis-BmFzpX5P.js → XAxis-BEDeUNTN.js} +1 -1
- package/dist/client/assets/{XClose-DVNhmkHc.js → XClose-BMQQXvYN.js} +1 -1
- package/dist/client/assets/{ZoomOut-BBC9JXN3.js → ZoomOut-CxqBzqGo.js} +1 -1
- package/dist/client/assets/{access-gate-CqFl_kWf.js → access-gate-BKauxani.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-C9PNcfRX.js → add-connection-dialog-DFd1x4Bd.js} +1 -1
- package/dist/client/assets/{agent-analytics-C1SI5Vkt.js → agent-analytics-DvUiGWKQ.js} +1 -1
- package/dist/client/assets/agent-app-C8rkhI1n.js +1 -0
- package/dist/client/assets/{agent-assets-D8cFncEj.js → agent-assets-D9HIanaz.js} +1 -1
- package/dist/client/assets/{agent-automation-CEBlRtkL.js → agent-automation-SuAOkZ0W.js} +1 -1
- package/dist/client/assets/{agent-automations-CvApYTzK.js → agent-automations--2s_xoSd.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-BuJe6Thd.js → agent-connect-sources-Ab4OGFWT.js} +1 -1
- package/dist/client/assets/agent-deck-jFK_BMeA.js +1 -0
- package/dist/client/assets/{agent-e2e-YWuEAYUF.js → agent-e2e-BJO9WZ0g.js} +1 -1
- package/dist/client/assets/{agent-experiments-DZv1N0aU.js → agent-experiments-DpcntrGf.js} +1 -1
- package/dist/client/assets/{agent-file-Da2frUD5.js → agent-file-Kz57M_0X.js} +1 -1
- package/dist/client/assets/{agent-hosting-DHsvA3BB.js → agent-hosting-DFjiwJGp.js} +1 -1
- package/dist/client/assets/{agent-icon-mVoV_Rm6.js → agent-icon-PZ3EoFVc.js} +1 -1
- package/dist/client/assets/agent-library-CvMXn6vC.js +1 -0
- package/dist/client/assets/agent-library-file-DioLse7Q.js +1 -0
- package/dist/client/assets/{agent-monitor-CwTiyjyb.js → agent-monitor-Bnl_Jkjf.js} +1 -1
- package/dist/client/assets/{agent-overview-DwFQxgFj.js → agent-overview-B-GNLaFP.js} +1 -1
- package/dist/client/assets/{agent-releases-DYFb1Byr.js → agent-releases-CsHyw8Yr.js} +1 -1
- package/dist/client/assets/agent-settings-BEcAiXgN.js +1 -0
- package/dist/client/assets/{agent-site-editor-BfLlWboZ.js → agent-site-editor-VaZyWZ-b.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-BKzMW3Ix.js +2 -0
- package/dist/client/assets/agent-site-editor-content-DxmvmnJk.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-CoClD4U6.js +1 -0
- package/dist/client/assets/agent-view-CGODJDGW.js +1 -0
- package/dist/client/assets/{agent-view-guard-cXaf8JJF.js → agent-view-guard-DDYbbCKy.js} +1 -1
- package/dist/client/assets/{agents-list-CV3vNbLb.js → agents-list-BJjSvJMg.js} +1 -1
- package/dist/client/assets/{ai-providers-sqc2LUIA.js → ai-providers-CNgemRMr.js} +1 -1
- package/dist/client/assets/{alert-dialog-fu6AQXnF.js → alert-dialog-B1EDRj0p.js} +1 -1
- package/dist/client/assets/{alert-BLv8wvgQ.js → alert-kHuSZ8_L.js} +1 -1
- package/dist/client/assets/{analytics-sections-DNHEhXPF.js → analytics-sections-Cij7PLRF.js} +1 -1
- package/dist/client/assets/api-keys-dE63hu91.js +1 -0
- package/dist/client/assets/{api-keys-DOY3ThBS.js → api-keys-pps7mD16.js} +1 -1
- package/dist/client/assets/{app-editor-BgwkvJx7.js → app-editor-DMKr5x1E.js} +1 -1
- package/dist/client/assets/{asset-utils-Cgltntmg.js → asset-utils-BZBLTKk0.js} +1 -1
- package/dist/client/assets/{auth-catchall-BZbSd08K.js → auth-catchall-DtYrxrGK.js} +1 -1
- package/dist/client/assets/{auth-entry-CdPsiMxs.js → auth-entry-DaoCbh_d.js} +1 -1
- package/dist/client/assets/{auth-D9R4x8R2.js → auth-iZaUk4lA.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DhsS4SKE.js → auth-split-layout-DpD9Ibv7.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BXYWE9_-.js → authenticate-and-persist-oauth-DGInULju.js} +1 -1
- package/dist/client/assets/{automation-list-row-WMoP_2fn.js → automation-list-row-DCAjLdxW.js} +1 -1
- package/dist/client/assets/{automation-runs-DdI2CowH.js → automation-runs-xOqIIw5G.js} +1 -1
- package/dist/client/assets/{automations-DVZMUJGA.js → automations-D6HUF3GO.js} +1 -1
- package/dist/client/assets/{autosend-BPQxe36t.js → autosend-CrU-Y5DP.js} +1 -1
- package/dist/client/assets/{avatar-CU0Kskf0.js → avatar-CtV9rl95.js} +1 -1
- package/dist/client/assets/{badge-BDdWebYk.js → badge-Y0if5SMJ.js} +1 -1
- package/dist/client/assets/{block-document-y1eID6_9.js → block-document-DshECWGT.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-DhQHnT9o.js → blocks-preview-workspace-context-CsByydrT.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-B2kc7rv0.js → blocks-tab-states-yhnGN5pI.js} +7 -7
- package/dist/client/assets/{blog-schema-DlleEDCu.js → blog-schema-DZZQDM1D.js} +1 -1
- package/dist/client/assets/{board-analytics-CipNMpf1.js → board-analytics-DVn7VK2u.js} +1 -1
- package/dist/client/assets/{buckets-DqxBroBh.js → buckets-BBxtiJby.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-D5tL_bT5.js → build-improve-prompt-doc-efoZbLvg.js} +1 -1
- package/dist/client/assets/{calendar-sXxwWaqb.js → calendar-CUzH-7r5.js} +1 -1
- package/dist/client/assets/{capability-load-error-BxoOfmPv.js → capability-load-error-Cgo8wOj5.js} +1 -1
- package/dist/client/assets/{category-editor-CAmx2N2u.js → category-editor-B0irL9Ad.js} +1 -1
- package/dist/client/assets/{chart-e-O0GJkY.js → chart-wqN6tYPd.js} +1 -1
- package/dist/client/assets/{chat-context-Beu1j-5J.js → chat-context-Dwt6xVcK.js} +1 -1
- package/dist/client/assets/{chat-draft-G2JgvBd_.js → chat-draft-DDxJhKr4.js} +1 -1
- package/dist/client/assets/{checkbox-stYexPFQ.js → checkbox-BVUlj3ZD.js} +1 -1
- package/dist/client/assets/{choose-editor-BN1qqOSE.js → choose-editor-pOVpPXoG.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DdYKZu6Q.js → cli-auth-success-DUVTXgrd.js} +1 -1
- package/dist/client/assets/{client-icons-D6-xxRtK.js → client-icons-B3qe7lv1.js} +1 -1
- package/dist/client/assets/cms-settings-editor-C1PpXmdm.js +1 -0
- package/dist/client/assets/{collapsible-kni6e36V.js → collapsible-BDAy_i6a.js} +1 -1
- package/dist/client/assets/{collection-detail-CYbAeUcP.js → collection-detail-BZRihTyQ.js} +1 -1
- package/dist/client/assets/{collection-display-button-BJ2zvxlJ.js → collection-display-button-DZcqJwRS.js} +1 -1
- package/dist/client/assets/{collection-search-FUqdxX3H.js → collection-search-C7Od6ZW3.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-aQAtPqRL.js → collection-table-wrapper-vVWghxWZ.js} +1 -1
- package/dist/client/assets/{collection-tabs-C65YIOoy.js → collection-tabs-CLG37dik.js} +1 -1
- package/dist/client/assets/{column-rules-B9Tzvv4V.js → column-rules-BmIsAIdM.js} +1 -1
- package/dist/client/assets/{combobox-BkmwK3A-.js → combobox-bbE0FM5A.js} +1 -1
- package/dist/client/assets/{command-DxMlrlhO.js → command-DYY7CwtK.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-COrWYMIu.js → companion-mcps-section-DzMOdKg5.js} +1 -1
- package/dist/client/assets/{config-DRb_vE2e.js → config-CgWF1y0X.js} +1 -1
- package/dist/client/assets/{connect-BZehkwIx.js → connect-B_NEPbEv.js} +1 -1
- package/dist/client/assets/{connect-layout-CLkmVS0Y.js → connect-layout-C89s_nPW.js} +1 -1
- package/dist/client/assets/{connection-BP1usXEe.js → connection-ChKx89Cn.js} +1 -1
- package/dist/client/assets/{connection-card-Dj9jvO4L.js → connection-card-CuCpIoKu.js} +1 -1
- package/dist/client/assets/{connection-detail-CohzGwW_.js → connection-detail-DEu6Iden.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DKKu5de3.js → connection-form-helpers-BfxUpC7G.js} +1 -1
- package/dist/client/assets/{connections-BsSmEWSO.js → connections-yGgetL2H.js} +1 -1
- package/dist/client/assets/{content-tab-BUwSLZJz.js → content-tab-CNw-a9ih.js} +3 -3
- package/dist/client/assets/{context-xpJ5nJyK.js → context-D8hootAb.js} +1 -1
- package/dist/client/assets/{context-menu-ByavF3-l.js → context-menu-aVJ5IYgK.js} +1 -1
- package/dist/client/assets/{core.esm-mOT7IIiz.js → core.esm-ej6Yw_3n.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BOo3mBs5.js → create-organization-dialog-Cg7adWjx.js} +1 -1
- package/dist/client/assets/{daily-pulse-CQXP9z0w.js → daily-pulse-DMfZzilC.js} +1 -1
- package/dist/client/assets/{discover-Mns8PIjM.js → discover-D-S72NSo.js} +1 -1
- package/dist/client/assets/{domain-settings-0XV0ZoxS.js → domain-settings-C-aXeP8x.js} +1 -1
- package/dist/client/assets/{drawer-B7KRQQab.js → drawer-C-mx0Q5C.js} +1 -1
- package/dist/client/assets/{editor-DxGSQWBn.js → editor-C5Mqv3eK.js} +1 -1
- package/dist/client/assets/{editor-classes-Bm-ecdGw.js → editor-classes-CKiHkbyD.js} +1 -1
- package/dist/client/assets/{empty-state-Br6GEUGF.js → empty-state-BkSoov1D.js} +1 -1
- package/dist/client/assets/{empty-state-Bfikw9C9.js → empty-state-M8_YtI09.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Bb0jwaQt.js → extract-connection-data-DeWL281s.js} +1 -1
- package/dist/client/assets/{feature-gate-B1vh3qv2.js → feature-gate-CDYqEkKT.js} +1 -1
- package/dist/client/assets/{feature-paywall-DJ1kFhSu.js → feature-paywall-B5fMCzYD.js} +1 -1
- package/dist/client/assets/{file-explorer-C5b7Tkm1.js → file-explorer-BuQhRyGN.js} +1 -1
- package/dist/client/assets/{file-preview-CUKTqYDW.js → file-preview-CGi0QgzY.js} +1 -1
- package/dist/client/assets/{file-share-button-Vl0ZcNvz.js → file-share-button-DiBvQaEd.js} +1 -1
- package/dist/client/assets/{file-type-icon-BWqwNVgv.js → file-type-icon-BH3QTINQ.js} +1 -1
- package/dist/client/assets/flat-project-Dh9Y-ntV.js +1 -0
- package/dist/client/assets/{folder-icon-Bfrgku9r.js → folder-icon-MMndfOhA.js} +1 -1
- package/dist/client/assets/{form-DwJJGoHU.js → form-B-LDWrZt.js} +1 -1
- package/dist/client/assets/{general-XBJNq5G1.js → general-DgZflaOE.js} +1 -1
- package/dist/client/assets/{home-D2fIlBWy.js → home-BIHXQ_3p.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-kDSDa6Az.js → hosted-publish-feedback-DA0KVDjg.js} +1 -1
- package/dist/client/assets/{icon-button-DZGm8Il3.js → icon-button-be8FhUBp.js} +1 -1
- package/dist/client/assets/{index-DawT02V4.js → index--yFHcCBh.js} +1 -1
- package/dist/client/assets/{index-DyI_ThcP.js → index-2lcOeW6Q.js} +1 -1
- package/dist/client/assets/{index-DxNvYUCM.js → index-B20AJSPE.js} +1 -1
- package/dist/client/assets/{index-D9jZYEo5.js → index-CFlp521u.js} +1 -1
- package/dist/client/assets/{index-DL6kkjqE.js → index-CMb-S6tM.js} +1 -1
- package/dist/client/assets/{index-B-s777t7.js → index-CO7QWl-r.js} +1 -1
- package/dist/client/assets/{index-BYGMglaI.js → index-CmEGySAK.js} +1 -1
- package/dist/client/assets/{index-C7oYZY8J.js → index-CzOMzyqm.js} +1 -1
- package/dist/client/assets/{index-Dhzv1EaX.js → index-D2-p7Vom.js} +1 -1
- package/dist/client/assets/{index-9utrdjuC.js → index-DGyekzy5.js} +4 -4
- package/dist/client/assets/{index-BpojREws.js → index-DapBXVvl.js} +1 -1
- package/dist/client/assets/{index-i1tVWfKf.js → index-DtKFrmfc.js} +1 -1
- package/dist/client/assets/{index-x_2oF3jU.js → index-PgMnykBU.js} +1 -1
- package/dist/client/assets/{index-B6j23Txc.js → index-Qs4u4b5a.js} +1 -1
- package/dist/client/assets/{index-redirect-CULfv6Fj.js → index-redirect-BBd7I1Ih.js} +1 -1
- package/dist/client/assets/{index-D-E1gNW5.js → index-vU53-U7w.js} +3 -3
- package/dist/client/assets/{infiniteQueryObserver-h_ZnRx7A.js → infiniteQueryObserver-DoZ_66a-.js} +1 -1
- package/dist/client/assets/{infra-billing-tY8-FqGS.js → infra-billing-CO_gvJWz.js} +1 -1
- package/dist/client/assets/{input-CoM10iw9.js → input-BG6DJMTM.js} +1 -1
- package/dist/client/assets/{input-D8LiOOPc.js → input-KX_1AhtN.js} +3 -3
- package/dist/client/assets/{integration-icon-DrkScr6s.js → integration-icon-iKUGL9bh.js} +1 -1
- package/dist/client/assets/{jira-icon-DMdRVVRh.js → jira-icon-C-sXlJ8h.js} +1 -1
- package/dist/client/assets/{label-jgD_YhxC.js → label-Io2GvMAM.js} +1 -1
- package/dist/client/assets/{layout-D7mYBZuY.js → layout-DmW2N4jz.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-CrPzD3d0.js → legacy-agents-deep-BWLdEotN.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-CzjxEO-Z.js → legacy-main-redirect-B3zZxeu-.js} +1 -1
- package/dist/client/assets/library-D9huao99.js +1 -0
- package/dist/client/assets/{library-tab-BNmqv1A-.js → library-tab-jDFgTa00.js} +1 -1
- package/dist/client/assets/{login-CX9MC3yR.js → login-nzcrik_a.js} +1 -1
- package/dist/client/assets/{markdown-CRrGNQ7w.js → markdown-DdEZvIvt.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-CKOO4BIM.js → mcp-app-renderer-CMlTEfE_.js} +1 -1
- package/dist/client/assets/{mcp-oauth-B4GQK3-6.js → mcp-oauth-C_fZWbY0.js} +1 -1
- package/dist/client/assets/{mcp-oauth-dXdRlURk.js → mcp-oauth-Cg_bZ7nn.js} +1 -1
- package/dist/client/assets/{members-Bgkks4fJ.js → members-BunMPpQL.js} +1 -1
- package/dist/client/assets/{memory-luW8UULR.js → memory-DGBIoMpc.js} +1 -1
- package/dist/client/assets/{mini-report-page-CZGuZyMk.js → mini-report-page-IuZ6k8Sf.js} +1 -1
- package/dist/client/assets/{mock-board-DPhntenP.js → mock-board-B7eslfKO.js} +1 -1
- package/dist/client/assets/{monaco-editor-DTd4Ml1s.js → monaco-editor-DcvKUCx8.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CmwPaZzs.js → monitoring-stats-row-Cb7ku_Yw.js} +1 -1
- package/dist/client/assets/{multi-select-RmuNYdER.js → multi-select-DZBKza2i.js} +1 -1
- package/dist/client/assets/{mustache-CB_JcmYM.js → mustache-Cdl1brzV.js} +1 -1
- package/dist/client/assets/{new-project-dialog-CBpaJ8k6.js → new-project-dialog-DEJ8dSag.js} +1 -1
- package/dist/client/assets/{oauth-callback-Db6kY3Ny.js → oauth-callback-DymlvZXr.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BYjLxIUx.js → oauth-callback-ai-provider-DHMljqbs.js} +1 -1
- package/dist/client/assets/{onboarding-Bb3EEJ4K.js → onboarding-CkVxaxmB.js} +1 -1
- package/dist/client/assets/{openai-conversation-DxDXLfOM.js → openai-conversation-DXhNgGHs.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-CeKaHQes.js → optimistic-project-sidebar-views-kmQl3NVA.js} +1 -1
- package/dist/client/assets/{order-monitor-day-DzRzOSRM.js → order-monitor-day-ByIAeeHt.js} +1 -1
- package/dist/client/assets/{organization-choice-Bxl6iQK7.js → organization-choice-BLO5jRWj.js} +1 -1
- package/dist/client/assets/{orgs-Bqj7_U_a.js → orgs-kRg91yjZ.js} +1 -1
- package/dist/client/assets/{page-seo-form-DXuib-HU.js → page-seo-form-DY0ceB4S.js} +1 -1
- package/dist/client/assets/{pair-BQUvnIb5.js → pair-Dw_gmyAg.js} +1 -1
- package/dist/client/assets/{plan-ladder-BhRiIQHY.js → plan-ladder-DxCRXmuu.js} +1 -1
- package/dist/client/assets/{popover-2IxOscUb.js → popover-0IO-wFhn.js} +1 -1
- package/dist/client/assets/{post-calendar-Cg1CYZFY.js → post-calendar-CoVAwddE.js} +1 -1
- package/dist/client/assets/{post-editor-DLhk35T_.js → post-editor-CNvfYQct.js} +1 -1
- package/dist/client/assets/{preview-content-DGb8rCNt.js → preview-content-q0ZNZQ6m.js} +1 -1
- package/dist/client/assets/{preview-dialog-Dnk_-SyH.js → preview-dialog-n5pQL-MV.js} +1 -1
- package/dist/client/assets/{preview-panel-B626d_hv.js → preview-panel-fdDBzege.js} +1 -1
- package/dist/client/assets/{preview-tab-5NIcFdNQ.js → preview-tab-BqxEDKKt.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-B8VpGtvo.js → product-picker-dialog-DECnrLrf.js} +1 -1
- package/dist/client/assets/{profile-i4IB_ZqA.js → profile-BqY86Tk1.js} +1 -1
- package/dist/client/assets/{project-app-view-Chi_XpbU.js → project-app-view-A0cP3GPk.js} +1 -1
- package/dist/client/assets/{project-feed-qbzKWba3.js → project-feed-Cf9CztnV.js} +1 -1
- package/dist/client/assets/{project-icon-Dxu4JaaE.js → project-icon-Nsy5mWrc.js} +1 -1
- package/dist/client/assets/project-reports-BW2LN2JY.js +1 -0
- package/dist/client/assets/project-tasks-epa3QbIl.js +1 -0
- package/dist/client/assets/{projects-CrW8i-da.js → projects-CcBQaJXz.js} +1 -1
- package/dist/client/assets/{projects-empty-state-sBpkEd8M.js → projects-empty-state-n4uZar-w.js} +1 -1
- package/dist/client/assets/{prompts-CFQNoJU7.js → prompts-D2V0ICuR.js} +1 -1
- package/dist/client/assets/record-editor-BC81Gci-.js +1 -0
- package/dist/client/assets/{redirect-editor-DniIzbjX.js → redirect-editor-D-F5VuoW.js} +1 -1
- package/dist/client/assets/reports-Dtf-vkRw.js +1 -0
- package/dist/client/assets/{reports-BvVAAvq1.js → reports-N07_21Cb.js} +1 -1
- package/dist/client/assets/{reports-onboarding-6BZEXDSr.js → reports-onboarding-_bTeizfZ.js} +1 -1
- package/dist/client/assets/{reports-tab-BPQagRR7.js → reports-tab-BDeLmdFG.js} +2 -2
- package/dist/client/assets/{repositories-DtMJxHQY.js → repositories-CMQdvlJJ.js} +1 -1
- package/dist/client/assets/{repository-binding-CQrhlIgt.js → repository-binding-BtCXPMhH.js} +1 -1
- package/dist/client/assets/{repository-import-picker-BakXAFwC.js → repository-import-picker-1iTMFI8-.js} +1 -1
- package/dist/client/assets/{repository-picker-D87Y1ek1.js → repository-picker-Dhxk4HUZ.js} +1 -1
- package/dist/client/assets/{require-capability-DqkzPn3t.js → require-capability-BI6YlJsX.js} +1 -1
- package/dist/client/assets/{required-auth-layout-Bu384CZN.js → required-auth-layout-BlMNe67E.js} +1 -1
- package/dist/client/assets/{reset-password-DLApkooi.js → reset-password-DwfeQRWc.js} +1 -1
- package/dist/client/assets/{resizable-nPzQU7Gj.js → resizable-ni9B5sMs.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-B1kXJBt1.js → resolve-tab-icon-DFynpeXC.js} +1 -1
- package/dist/client/assets/{review-settings-DIhDZ3QW.js → review-settings-Cr464r3W.js} +1 -1
- package/dist/client/assets/{roles-43B24aQj.js → roles-qWkuXPnX.js} +1 -1
- package/dist/client/assets/route-DODGGSwU.js +1 -0
- package/dist/client/assets/{route-CzP0oOIr.js → route-DcooE945.js} +1 -1
- package/dist/client/assets/{route-DsqdjZgh.js → route-DhZSlRk0.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-CWStTPRQ.js → sandbox-lifecycle-context-DSGDcZ7n.js} +1 -1
- package/dist/client/assets/{schema-DMZs6sOV.js → schema-C_rSmW1-.js} +1 -1
- package/dist/client/assets/{schema-QYPrIfYk.js → schema-DtHGJLoV.js} +1 -1
- package/dist/client/assets/{scroll-area-Nr9Xl-Uo.js → scroll-area--Yb63dXK.js} +1 -1
- package/dist/client/assets/{search-input-BW_s9pS-.js → search-input-CYo5BZ-I.js} +1 -1
- package/dist/client/assets/{search-toggle-BZtSC8QC.js → search-toggle-CiMTjj8L.js} +1 -1
- package/dist/client/assets/secret-ciphertext-DX80ECzp.js +1 -0
- package/dist/client/assets/{secret-picker-DEIrJAjz.js → secret-picker-95gNNjj9.js} +1 -1
- package/dist/client/assets/{secrets-CCTibVJ6.js → secrets-BUuwWmPj.js} +1 -1
- package/dist/client/assets/{sections-editor-SDeVJ13p.js → sections-editor-CFI42g6E.js} +1 -1
- package/dist/client/assets/{select-CTeWg4zR.js → select-Do54yxw3.js} +1 -1
- package/dist/client/assets/{select-model-BRhQutV3.js → select-model-C2DPJJn7.js} +1 -1
- package/dist/client/assets/{seo-editor-Dd5hjU06.js → seo-editor-WXhxhScj.js} +1 -1
- package/dist/client/assets/{separator-DIQQHVsX.js → separator-CHL8JFgu.js} +1 -1
- package/dist/client/assets/{settings-tab-Dwxz35-w.js → settings-tab-DB_QYIi-.js} +1 -1
- package/dist/client/assets/{sheet-CxN2-ZnF.js → sheet-BhYl2Eyf.js} +1 -1
- package/dist/client/assets/{shell-layout-CZlXU8th.js → shell-layout-ruvKdG_y.js} +1 -1
- package/dist/client/assets/site-editor-CKnzsieF.js +1 -0
- package/dist/client/assets/{site-editor-toast-ChmKWuIo.js → site-editor-toast-SeSIO_0o.js} +1 -1
- package/dist/client/assets/{skills-B0GaxxVf.js → skills-BoSGnEBl.js} +1 -1
- package/dist/client/assets/{slider-B56vNbN3.js → slider-Cm6-3AvH.js} +1 -1
- package/dist/client/assets/{sortable.esm-CLyBckMe.js → sortable.esm-DODDnfZt.js} +1 -1
- package/dist/client/assets/{sso-DY0yxTqY.js → sso-CcaplrUl.js} +1 -1
- package/dist/client/assets/{suggestion-BoCjWU35.js → suggestion-DSvtlXF8.js} +1 -1
- package/dist/client/assets/{switch-DU47sqvK.js → switch-wKDjpWC1.js} +1 -1
- package/dist/client/assets/{symbol-CIakABEA.js → symbol-4viBZA0L.js} +1 -1
- package/dist/client/assets/{synced-repos-CxHQhVsp.js → synced-repos-I71WYUAr.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-CKpjmt2U.js → tab-icon-glyph-KOdRlLDO.js} +1 -1
- package/dist/client/assets/{table-B-nmL0_-.js → table-B4JBI83E.js} +1 -1
- package/dist/client/assets/{tabs-DUrf1MvN.js → tabs-Dz_70Kjx.js} +1 -1
- package/dist/client/assets/{task-board-Bf2FSU7b.js → task-board-A8wv2bEd.js} +1 -1
- package/dist/client/assets/{task-route-BeWr2PUl.js → task-route-BXsEjL8t.js} +1 -1
- package/dist/client/assets/{task-status-BYBShlgT.js → task-status-6M-hOa5U.js} +1 -1
- package/dist/client/assets/taskboard-analytics-DNk_eY3v.js +1 -0
- package/dist/client/assets/{tasks-CcDtjTiB.js → tasks-3jCkO5RU.js} +1 -1
- package/dist/client/assets/tasks-BYlXSj8z.js +1 -0
- package/dist/client/assets/{textarea-Cuvx1CdP.js → textarea-_Y5Uh9Yo.js} +1 -1
- package/dist/client/assets/{thread-analytics-DLibYnON.js → thread-analytics-BExf5Jbu.js} +1 -1
- package/dist/client/assets/{thread-intent-BNqGpPmv.js → thread-intent-DmUTSl3j.js} +1 -1
- package/dist/client/assets/{thread-route-DMUWje40.js → thread-route-D5-5pxvX.js} +1 -1
- package/dist/client/assets/{thread-route-Dus8j51h.js → thread-route-DjYL4wNd.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-D_pd7pwg.js → thread-sheet-body-BqFFai4l.js} +1 -1
- package/dist/client/assets/{time-range-picker-X_Mbeps7.js → time-range-picker-Cuoge1wb.js} +1 -1
- package/dist/client/assets/{toggle-group-CE4nFV3j.js → toggle-group-Xkcycrfa.js} +1 -1
- package/dist/client/assets/{tool-namespace-Bn3NH_CO.js → tool-namespace-DSv_8jox.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-yph4TT_t.js → toolbar-icon-button-CA7eKHX9.js} +1 -1
- package/dist/client/assets/{tooltip-Csaklmt2.js → tooltip-DWlEFThU.js} +1 -1
- package/dist/client/assets/{tooltipContext-CMqVcQGs.js → tooltipContext-BBECx5cY.js} +1 -1
- package/dist/client/assets/{track-CXUUAYti.js → track-DrSynEZb.js} +1 -1
- package/dist/client/assets/{types-E7V9DsSf.js → types-BitEtrsU.js} +1 -1
- package/dist/client/assets/{url-slug-D2I7DZDe.js → url-slug-DfgB4u05.js} +1 -1
- package/dist/client/assets/{usage-stats-v3RVb3y_.js → usage-stats-CY58H_lZ.js} +1 -1
- package/dist/client/assets/{use-ai-providers-z0VfKQkA.js → use-ai-providers-DqJlfyM5.js} +1 -1
- package/dist/client/assets/{use-app-takeover-BPHco5S8.js → use-app-takeover-voXcwpcS.js} +1 -1
- package/dist/client/assets/{use-automations-D3__ecGN.js → use-automations-Nl23mRaU.js} +1 -1
- package/dist/client/assets/{use-autosave-rp1D1hy-.js → use-autosave-D4sc7Liq.js} +1 -1
- package/dist/client/assets/{use-chat-navigation-Bvu49eld.js → use-chat-navigation-CUVSQtu5.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CTGpjemP.js → use-clock-tick-oIk2rCJS.js} +1 -1
- package/dist/client/assets/{use-connect-companion-Cf_p5pBS.js → use-connect-companion-C6SMuUv-.js} +1 -1
- package/dist/client/assets/{use-connection-BSkRPmzW.js → use-connection-hVM9SY1G.js} +1 -1
- package/dist/client/assets/{use-copy-C2gLm1MS.js → use-copy-ClNwK93t.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BJspE5E5.js → use-create-virtual-mcp-BdfCAq6z.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BpcWUHYq.js → use-date-fns-locale-DtiKYJNw.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DQjwS2nW.js → use-debounced-autosave-DmeMXkv9.js} +1 -1
- package/dist/client/assets/{use-debounced-value-aN3O60O8.js → use-debounced-value-CbyZDCfs.js} +1 -1
- package/dist/client/assets/{use-deco-credits-FcmcEJSN.js → use-deco-credits-C5dHmveP.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CJACnvkW.js → use-decopilot-events-XKy0NLDV.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BwhO1TUh.js → use-delete-connection-C3w3ZJgT.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CWuPuIyB.js → use-deployment-admin-DcWtAD4h.js} +1 -1
- package/dist/client/assets/{use-ensure-project-folder-m1Ct0HuE.js → use-ensure-project-folder-wPFCANZA.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-Dv4NwiLW.js → use-fast-preview-draft-url-mAg7d5Sd.js} +1 -1
- package/dist/client/assets/{use-file-configs-RvPbtnWJ.js → use-file-configs-DfmDGBP0.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-B_Pt9LIF.js → use-infinite-scroll-Cmbt8Zks.js} +1 -1
- package/dist/client/assets/{use-join-requests-CuDM9NPn.js → use-join-requests-C8YNeyS2.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-Cu_VIDGa.js → use-main-panel-tabs-R1EH7sRu.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-Dy2gzk_k.js → use-mcp-auth-status-BsGDwPCc.js} +1 -1
- package/dist/client/assets/{use-mcp-client-9df5aDnm.js → use-mcp-client-CjHWTDWy.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-DXCZ6ETO.js → use-mcp-prompts-CXg9dLad.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DYCe1kmW.js → use-mcp-tools-4Qo2phuz.js} +1 -1
- package/dist/client/assets/{use-members-CkAWHXUS.js → use-members-C7KaSL4v.js} +1 -1
- package/dist/client/assets/{use-mobile-iljyEqdw.js → use-mobile-B48mBB7Q.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-5vkTFy3L.js → use-navigate-to-agent-DJgvkYS-.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-DMVEBNGQ.js → use-open-billing-url-BuJEqFIq.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-nmfdksya.js → use-org-auth-client-DfPQYCz8.js} +1 -1
- package/dist/client/assets/{use-org-fs-D_boDaBx.js → use-org-fs-B3EmYdyk.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-wNbXiKM9.js → use-org-repo-syncs-BEyb-3pm.js} +1 -1
- package/dist/client/assets/{use-org-sso-DHEqWneE.js → use-org-sso-64nj2EY-.js} +1 -1
- package/dist/client/assets/{use-organization-roles-zxl4Jt7J.js → use-organization-roles-Cp3vJ20g.js} +1 -1
- package/dist/client/assets/{use-organization-settings-NJoOWX7O.js → use-organization-settings-D6neiiZf.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-CUtjjENr.js → use-panel-navigate-sWjMIBJB.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-D5_yzHhC.js → use-project-native-view-presence-BNQPQZj6.js} +1 -1
- package/dist/client/assets/{use-project-scope-BNx_AZUx.js → use-project-scope-DE_vyPXj.js} +1 -1
- package/dist/client/assets/{use-recent-apps-B1It8623.js → use-recent-apps-CCVF2o4B.js} +1 -1
- package/dist/client/assets/{use-releases-CupGy3Tl.js → use-releases-DdgjfPW_.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-CKMmh23y.js → use-reports-diagnostic-B6kYHp2F.js} +1 -1
- package/dist/client/assets/{use-secrets-staEZx8d.js → use-secrets-5VfYSUhM.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-BiMz81Fh.js → use-section-preview-base-ZPHP1iJ2.js} +1 -1
- package/dist/client/assets/{use-tags-B6AdI8pR.js → use-tags-vCHxeOt6.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-ZIKzvLzl.js → use-task-board-analytics-C_sPoH8B.js} +1 -1
- package/dist/client/assets/{use-task-board-events-Dg4L1ieC.js → use-task-board-events-BVJSOI8y.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-CH8WxPPp.js → use-task-board-item-prs-BNtKw8hR.js} +1 -1
- package/dist/client/assets/{use-task-board-items-D9lWoOvP.js → use-task-board-items-nw39kY2U.js} +1 -1
- package/dist/client/assets/{use-task-metadata-CVVlEbjb.js → use-task-metadata-C00Aiks6.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-BRfcGq-3.js → use-thread-analytics-Yb6I8aOu.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-DdmQKcR8.js → use-thread-outputs-DGQ49gjm.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CuZddcCp.js +1 -0
- package/dist/client/assets/{useQueries-B8PhDBvp.js → useQueries-Cn-Ge-vA.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BwtcVKmV.js +1 -0
- package/dist/client/assets/{users-BZ8ENwTn.js → users-CuYJFUPu.js} +1 -1
- package/dist/client/assets/{utils-Do9ZGmDL.js → utils-BQZmemfh.js} +1 -1
- package/dist/client/assets/{variant-calendar-w_ec5z_l.js → variant-calendar-CtPebwJ3.js} +1 -1
- package/dist/client/assets/{variant-draft-pointer-BR8wu_RN.js → variant-draft-pointer-DWld-SWQ.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CBuTqb7n.js → view-mode-toggle-CmWuF3kG.js} +1 -1
- package/dist/client/assets/{virtual-mcp-C4e_L0IJ.js → virtual-mcp-BSxxd74d.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-fI8J8UBb.js → watch-sse-pool-CU8jsc0X.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-app-HWGVbOJ7.js +0 -1
- package/dist/client/assets/agent-deck-CoQD2PVX.js +0 -1
- package/dist/client/assets/agent-library-DR5yBaBG.js +0 -1
- package/dist/client/assets/agent-library-file-EMpTesYN.js +0 -1
- package/dist/client/assets/agent-settings-0qe-PPXP.js +0 -1
- package/dist/client/assets/agent-site-editor-code-BurdFTIc.js +0 -2
- package/dist/client/assets/agent-site-editor-content-CFqI7nhX.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-DGAKgZoJ.js +0 -1
- package/dist/client/assets/agent-view-DZcQ6Dei.js +0 -1
- package/dist/client/assets/api-keys-BVyBsvzB.js +0 -1
- package/dist/client/assets/cms-settings-editor-C1FGv_Uu.js +0 -1
- package/dist/client/assets/flat-project-DyiXD5GS.js +0 -1
- package/dist/client/assets/library-6Nzoxihu.js +0 -1
- package/dist/client/assets/project-reports-Cui6JfE5.js +0 -1
- package/dist/client/assets/project-tasks-w5Q_JaaD.js +0 -1
- package/dist/client/assets/record-editor-BwwhJYb1.js +0 -1
- package/dist/client/assets/reports-q6TL2P6e.js +0 -1
- package/dist/client/assets/route-Bcyjd3x1.js +0 -1
- package/dist/client/assets/secret-ciphertext-DJ2PgtXB.js +0 -1
- package/dist/client/assets/site-editor-B8QECspx.js +0 -1
- package/dist/client/assets/taskboard-analytics-Bn9Uw-wM.js +0 -1
- package/dist/client/assets/tasks-BfKoPHRY.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DS2Ac8OP.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-0gOUIT7Y.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4483,7 +4483,7 @@ ${X}`:`${Y}
|
|
|
4483
4483
|
|
|
4484
4484
|
${X}
|
|
4485
4485
|
${J.slice(Y.length).trimStart()}`}function Jj8($){return $?.match(tW5)?.[1]?.toLowerCase()??null}async function aW5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(fK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=fK(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 Xj8($,Z){try{return await MQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof js)return null;throw Q}}async function Gj8($,Z,Q){let Y=UP($.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([Xj8($,Z),Xj8($,Q)]);return G!==W}async function Wj8($,Z){if(!DD0(Z))throw new cu;if(!await rA1($.store,$.site,Z))throw new cu}async function Kj8($,Z){await Wj8($,Z);let Q=await e5($.client,$.mainBranch);return Gj8($,Q,Z)}async function Hj8($,Z,Q={},Y={}){await Wj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new cu;let J=await e5($.client,$.mainBranch),G=await aW5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await Gj8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await aA1($,J,G,rW5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await ZT1($,K,Y),schemaChanged:W}}var cu,IQ0="Reapply: ",pW5,nW5="Reapplied-From",tW5;var JT1=L(()=>{$n();A5();vF();sN();VQ0();Hg0();cu=class cu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};pW5=/^chore\(decofile\):/,tW5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function Fj8($,Z,Q){let[Y,X,J]=await Promise.all([dO8($.store,$.site),Pq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:$K5,cursor:Q,limit:eW5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>Jj8(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 Uj8($){let Z=await e5($.client,$.mainBranch),Q=await eA1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await $T1($,Y),Y}var eW5=50,$K5="1970-01-01T00:00:00Z";var Nj8=L(()=>{A5();sN();VQ0();JT1()});function Bj8($){return`site-tokens:${$}`}function ZK5($){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 Dj8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function QK5($,Z){let Q=(J)=>GT1(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}.${GT1(X)}`}function Lj8($){let Z=async(Q,Y)=>ZK5(await $.kv.get(Q,Bj8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:GT1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await QK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,Bj8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var GT1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function XK5(){let $=Dp();return $?{store:$,purge:Gg0()}:null}async function Dg0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site}}function Oj8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return Lj8({kv:$.var.studioContext.storage.kv,signingKey:()=>Dj8(Z)})}function zs($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof js)return $.json({error:Q},409);if(Z instanceof Fg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=SG(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 jj8($={}){let Z=new Z1,Q=$.repoClientFor??vG,Y=$.insightsFor??xT$,X=$.delivery??XK5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",YK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Dg0(J);if(!G)return J.json(Bg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await Fj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return zs(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Dg0(J);if(!G)return J.json(Bg0,503);return J.json({current:await Uj8(G)})}catch(G){return zs(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Dg0(J);if(!G)return J.json(Bg0,503);return J.json({schemaChanged:await Kj8(G,J.req.param("sha"))})}catch(G){if(G instanceof cu)return J.json({error:G.message},404);return zs(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Dg0(J);if(!G)return J.json(Bg0,503);let W=await Hj8(G,J.req.param("sha"),{coAuthor:oL(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof cu)return J.json({error:G.message},404);if(G instanceof ws)return J.json({error:"main-moved"},409);return zs(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=Oj8(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=Oj8(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 sq(K,G.packagePath,await K.getDefaultBranch());if(await jp(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 zs(J,K)}}),Z}var YK5,Bg0;var wj8=L(()=>{IF();Y8();dy0();VG();kF();A5();sN();sA1();VQ0();Hg0();Nj8();JT1();h60();rq();Op();u1();IR();YK5=Ys(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await TQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!MQ(await s7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=QW(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 wD0({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 zs($,H)}let K=await jD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Lp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:rN(G),repository:W,metadata:G}),Z()}),Bg0={error:"hosted delivery not configured"}});var Ej8=($)=>{let Z=new Z1;if(Z.use("*",Io),Z.use("*",cF8),Z.route("/",uF8($.voiceSessions)),Z.route("/",sf0()),Z.route("/",qU8()),Z.route("/",fU8()),Z.route("/",EU8()),Z.route("/",uD8()),Z.route("/",cD8()),Z.route("/",_D8()),Z.route("/",gD8()),Z.route("/",bD8()),Z.route("/",ly0()),Z.route("/tools",oD8()),Z.route("/",pD8()),Z.route("/",ND8({kvStorage:$.kvStorage})),Z.route("/",FD8()),Z.route("/fs",TD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",qO8()),Z.route("/decofile",Qj8()),Z.route("/hosted",jj8()),Z.route("/",kD8()),Z.route("/",RD8()),Z.route("/deco-sites",af0()),Z.route("/hosting",eF8()),Z.route("/monitor",UU8()),Z.route("/order-monitor",LU8()),Z.route("/sso",df0()),Z.route("/",cy0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",tF8()),$.mountDevAssets)Z.route("/dev-assets",Jy0({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 YA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",NW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of YA1)Z.route(Q,VD8());return Z.route("/mcp",pb0()),Z.route("/mcp/self",yy0()),Z.route("/mcp",ob0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Pj8=L(()=>{Y8();lF8();mF8();vf0();oF8();Cz1();$U8();NU8();OU8();Gy0();U2();Rz1();RU8();fz1();UD8();BD8();qD8();MD8();pZ0();Oz1();sb0();QA1();ID8();CD8();vD8();xD8();GA1();lD8();mD8();nD8();WA1();sD8();KA1();nb0();RO8();Yj8();wj8()});import{z as mu}from"zod";class WT1{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 Tj8.Kvm(Lg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Lg0.StorageType.Memory,ttl:qj8.nanos(DO),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"?Aj8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await J$(200);continue}let G=zj8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await J$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,zj8.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"?Aj8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Lg0,Tj8,qj8,zj8,Aj8;var Rj8=L(()=>{NG();qB();n$();Lg0=_(_H(),1),Tj8=_(Mq(),1),qj8=_(c2(),1),zj8=new TextEncoder,Aj8=mu.discriminatedUnion("state",[mu.object({state:mu.literal("ready"),agentId:mu.string()}),mu.object({state:mu.literal("creating"),expiresAt:mu.number()})])});import{z as As}from"zod";function JK5($){return{model:$.model,instructions:`${wt$}
|
|
4486
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class KT1{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:JK5({...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:As.object({session:As.object({id:As.string().min(1)}),transport:As.object({type:As.literal("webrtc"),sdp:As.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Mj8=L(()=>{qB()});var Vj8;var Ij8=L(()=>{Vj8=[{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 HT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ot$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Vj8.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:DO/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 kj8=L(()=>{qB();Ij8()});import{z as iJ}from"zod";import{createHash as GK5,createHmac as WK5}from"crypto";class Og0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=GK5("sha256").update(JSON.stringify(HT1($))).digest("hex"),this.conversationKey=WK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Og0({...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}=iJ.object({agents:iJ.array(iJ.object({agent_id:iJ.string(),name:iJ.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 iJ.object({platform_settings:iJ.object({auth:iJ.object({enable_auth:iJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...HT1(this.config)},AbortSignal.timeout(15000));return iJ.object({agent_id:iJ.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 iJ.object({token:iJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return iJ.object({token:iJ.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 Cj8=L(()=>{kj8()});import{createHmac as KK5,timingSafeEqual as HK5}from"crypto";import{z as Ts}from"zod";function _j8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return KK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function vj8($,Z){let Q=Buffer.from(JSON.stringify(Sj8.parse($))).toString("base64url");return`${Q}.${_j8(Q,Z)}`}function bj8($,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(_j8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!HK5(W,G))return null;try{let K=Sj8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+DO)return null;return K.data}catch{return null}}var Sj8;var xj8=L(()=>{qB();Sj8=Ts.object({sessionId:Ts.string().uuid(),organizationId:Ts.string().min(1).max(256),userId:Ts.string().min(1).max(256),threadId:Ts.string().min(1).max(256),expiresAt:Ts.number().int().positive()})});import{z as FT1}from"zod";function fj8($,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 UT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var UT1;var yj8=L(()=>{UT1=FT1.object({provider:FT1.enum(["elevenlabs","openai"]),model:FT1.string().trim().min(1).max(128)})});import{createHash as FK5}from"crypto";import{z as qs}from"zod";function Rs($){return`user.${FK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class BT1{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 gj8.Kvm(wg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:wg0.StorageType.Memory,ttl:hj8.nanos(DO),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=fj8(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()+DO},W=vj8(G,this.deps.secret),K=await this.kv(),H=Rs(G),F=await K.get(H),U=F?.operation==="PUT"?jg0.parse(F.json()):null,N=NT1.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:Rs($)});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=bj8(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=Rs(Q),J=await Y.get(X),G=J?.operation==="PUT"?jg0.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,NT1.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=Rs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?jg0.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,NT1.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(Rs($));if(Q?.operation==="PUT"&&jg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Rs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var wg0,gj8,hj8,jg0,NT1;var uj8=L(()=>{NG();qB();xj8();yj8();wg0=_(_H(),1),gj8=_(Mq(),1),hj8=_(c2(),1),jg0=qs.object({sessionId:qs.string().uuid(),expiresAt:qs.number(),connected:qs.boolean().optional(),conversation:UT1.optional(),characters:qs.number().int().nonnegative(),requests:qs.number().int().nonnegative()}),NT1=new TextEncoder});function UK5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var NK5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},lj8=()=>{let $=new Z1;return $.use("*",NK5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await wX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:UK5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var cj8=L(()=>{Y8();u1();m60()});import{z as m1}from"zod";function sB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function AK5($){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 TK5($,Z,Q){try{return JSON.parse($)}catch{throw new ij8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function qK5($){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:TK5(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 RK5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?zN(Q.function.parameters):zN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function MK5($){if(!$)return;return{openai:{response_format:$}}}function VK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function mj8($,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 dj8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var BK5=256,DK5,LK5,OK5,jK5,wK5,EK5,PK5,zK5,ij8,pj8,nj8;var tj8=L(()=>{l4();Y8();Qs();GU();DK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),LK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),OK5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(LK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),jK5=m1.object({type:m1.literal("text")}),wK5=m1.object({type:m1.literal("json_object")}),EK5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),PK5=m1.union([jK5,wK5,EK5]),zK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(OK5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(DK5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:PK5.optional(),user:m1.string().optional()});ij8=class ij8 extends Error{constructor($){super($);this.name="MessageConversionError"}};pj8=new Z1;pj8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sB("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(sB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=zK5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sB(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=AK5(J.model);if(!G)return $.json(sB("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)=>xA(E.providerId));if(!w)return $.json(sB("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(sB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=qK5(J.messages),N=J.tools?RK5(J.tools):void 0,B=MK5(J.response_format),D=VK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Jj($,async(j)=>{let w=mj8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(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>=BK5)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:dj8(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=mj8(F,U,N,J,B,$.req.raw.signal),w=await wO(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:dj8(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(sB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sB(X.message,"server_error"),500)}});nj8=pj8});function IK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function oj8(){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=_0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!S5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uA(U)!==J)continue;if(!IK5(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 sj8=L(()=>{Y8();rY()});var Eg0;var DT1=L(()=>{Eg0={name:"decocms",version:"4.504.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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 SK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??CK5}}var rj8,CK5="https://ph.studio.decocms.com",aj8;var ej8=L(()=>{Y8();D10();sh();K9();u1();Ho();Qz1();DT1();rj8=new Z1;rj8.get("/",($)=>{let Z={version:Eg0.version,theme:x3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:Q$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&X2(),plansEnabled:B0().plansEnabled,auth:_H8(),posthog:SK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:zU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});aj8=rj8});import{z as R$}from"zod";var _K5,$w8;var Zw8=L(()=>{_K5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),$w8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(_K5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Qw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Pg0($,Z={}){let Q=await fetch(Qw8($,"",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 $w8.parse(await Q.json())}async function Yw8($,Z={}){let Q=await fetch(Qw8($,".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 LT1=L(()=>{Zw8();kL()});import{join as Xw8}from"path";async function bK5($){try{let Z=await Pg0($,{signal:AbortSignal.timeout(vK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Cw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function xK5($,Z){let Q=Eu($),Y=Z?.brand?.trim()||Cw1(Q),X=GG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=WG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${Q3(W)}</title>`,`<meta name="description" content="${Q3(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="${Q3(W)}" />`,`<meta property="og:description" content="${Q3(K)}" />`,`<meta property="og:url" content="${Q3(G)}" />`,`<meta property="og:image" content="${Q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${Q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${Q3(W)}" />`,`<meta name="twitter:description" content="${Q3(K)}" />`,`<meta name="twitter:image" content="${Q3(H)}" />`,`<meta name="twitter:image:alt" content="${Q3(F)}" />`,`<link rel="canonical" href="${Q3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${Q3(G)}.md" />`,`<link rel="icon" href="${Q3(X)}" sizes="any" />`].join(`
|
|
4486
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class KT1{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:JK5({...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:As.object({session:As.object({id:As.string().min(1)}),transport:As.object({type:As.literal("webrtc"),sdp:As.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Mj8=L(()=>{qB()});var Vj8;var Ij8=L(()=>{Vj8=[{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 HT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Ot$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Vj8.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:DO/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 kj8=L(()=>{qB();Ij8()});import{z as iJ}from"zod";import{createHash as GK5,createHmac as WK5}from"crypto";class Og0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=GK5("sha256").update(JSON.stringify(HT1($))).digest("hex"),this.conversationKey=WK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Og0({...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}=iJ.object({agents:iJ.array(iJ.object({agent_id:iJ.string(),name:iJ.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 iJ.object({platform_settings:iJ.object({auth:iJ.object({enable_auth:iJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...HT1(this.config)},AbortSignal.timeout(15000));return iJ.object({agent_id:iJ.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 iJ.object({token:iJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return iJ.object({token:iJ.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 Cj8=L(()=>{kj8()});import{createHmac as KK5,timingSafeEqual as HK5}from"crypto";import{z as Ts}from"zod";function _j8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return KK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function vj8($,Z){let Q=Buffer.from(JSON.stringify(Sj8.parse($))).toString("base64url");return`${Q}.${_j8(Q,Z)}`}function bj8($,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(_j8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!HK5(W,G))return null;try{let K=Sj8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+DO)return null;return K.data}catch{return null}}var Sj8;var xj8=L(()=>{qB();Sj8=Ts.object({sessionId:Ts.string().uuid(),organizationId:Ts.string().min(1).max(256),userId:Ts.string().min(1).max(256),threadId:Ts.string().min(1).max(256),expiresAt:Ts.number().int().positive()})});import{z as FT1}from"zod";function fj8($,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 UT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var UT1;var yj8=L(()=>{UT1=FT1.object({provider:FT1.enum(["elevenlabs","openai"]),model:FT1.string().trim().min(1).max(128)})});import{createHash as FK5}from"crypto";import{z as qs}from"zod";function Rs($){return`user.${FK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class BT1{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 gj8.Kvm(wg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:wg0.StorageType.Memory,ttl:hj8.nanos(DO),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=fj8(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()+DO},W=vj8(G,this.deps.secret),K=await this.kv(),H=Rs(G),F=await K.get(H),U=F?.operation==="PUT"?jg0.parse(F.json()):null,N=NT1.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:Rs($)});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=bj8(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=Rs(Q),J=await Y.get(X),G=J?.operation==="PUT"?jg0.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,NT1.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=Rs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?jg0.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,NT1.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(Rs($));if(Q?.operation==="PUT"&&jg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Rs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var wg0,gj8,hj8,jg0,NT1;var uj8=L(()=>{NG();qB();xj8();yj8();wg0=_(_H(),1),gj8=_(Mq(),1),hj8=_(c2(),1),jg0=qs.object({sessionId:qs.string().uuid(),expiresAt:qs.number(),connected:qs.boolean().optional(),conversation:UT1.optional(),characters:qs.number().int().nonnegative(),requests:qs.number().int().nonnegative()}),NT1=new TextEncoder});function UK5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var NK5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},lj8=()=>{let $=new Z1;return $.use("*",NK5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await wX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:UK5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var cj8=L(()=>{Y8();u1();m60()});import{z as m1}from"zod";function sB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function AK5($){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 TK5($,Z,Q){try{return JSON.parse($)}catch{throw new ij8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function qK5($){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:TK5(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 RK5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?zN(Q.function.parameters):zN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function MK5($){if(!$)return;return{openai:{response_format:$}}}function VK5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function mj8($,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 dj8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var BK5=256,DK5,LK5,OK5,jK5,wK5,EK5,PK5,zK5,ij8,pj8,nj8;var tj8=L(()=>{l4();Y8();Qs();GU();DK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),LK5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),OK5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array(LK5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),jK5=m1.object({type:m1.literal("text")}),wK5=m1.object({type:m1.literal("json_object")}),EK5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),PK5=m1.union([jK5,wK5,EK5]),zK5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(OK5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(DK5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:PK5.optional(),user:m1.string().optional()});ij8=class ij8 extends Error{constructor($){super($);this.name="MessageConversionError"}};pj8=new Z1;pj8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(sB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(sB("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(sB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=zK5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(sB(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=AK5(J.model);if(!G)return $.json(sB("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)=>xA(E.providerId));if(!w)return $.json(sB("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(sB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=qK5(J.messages),N=J.tools?RK5(J.tools):void 0,B=MK5(J.response_format),D=VK5(),O=Math.floor(Date.now()/1000);if(J.stream)return Jj($,async(j)=>{let w=mj8(F,U,N,J,B,$.req.raw.signal);try{let E=Yt(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>=BK5)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:dj8(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=mj8(F,U,N,J,B,$.req.raw.signal),w=await wO(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:dj8(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(sB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(sB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(sB(X.message,"server_error"),500)}});nj8=pj8});function IK5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function oj8(){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=_0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!S5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uA(U)!==J)continue;if(!IK5(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 sj8=L(()=>{Y8();rY()});var Eg0;var DT1=L(()=>{Eg0={name:"decocms",version:"4.504.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 SK5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??CK5}}var rj8,CK5="https://ph.studio.decocms.com",aj8;var ej8=L(()=>{Y8();D10();sh();K9();u1();Ho();Qz1();DT1();rj8=new Z1;rj8.get("/",($)=>{let Z={version:Eg0.version,theme:x3$(),...HF().logo&&{logo:HF().logo},...kO()&&{internalUrl:Q$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&X2(),plansEnabled:B0().plansEnabled,auth:_H8(),posthog:SK5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:zU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});aj8=rj8});import{z as R$}from"zod";var _K5,$w8;var Zw8=L(()=>{_K5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),$w8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(_K5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Qw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Pg0($,Z={}){let Q=await fetch(Qw8($,"",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 $w8.parse(await Q.json())}async function Yw8($,Z={}){let Q=await fetch(Qw8($,".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 LT1=L(()=>{Zw8();kL()});import{join as Xw8}from"path";async function bK5($){try{let Z=await Pg0($,{signal:AbortSignal.timeout(vK5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||Cw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function Q3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function xK5($,Z){let Q=Eu($),Y=Z?.brand?.trim()||Cw1(Q),X=GG8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=WG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${Q3(W)}</title>`,`<meta name="description" content="${Q3(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="${Q3(W)}" />`,`<meta property="og:description" content="${Q3(K)}" />`,`<meta property="og:url" content="${Q3(G)}" />`,`<meta property="og:image" content="${Q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${Q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${Q3(W)}" />`,`<meta name="twitter:description" content="${Q3(K)}" />`,`<meta name="twitter:image" content="${Q3(H)}" />`,`<meta name="twitter:image:alt" content="${Q3(F)}" />`,`<link rel="canonical" href="${Q3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${Q3(G)}.md" />`,`<link rel="icon" href="${Q3(X)}" sizes="any" />`].join(`
|
|
4487
4487
|
`)}function fK5($,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}
|
|
4488
4488
|
</head>`)}function Jw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Eu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Xw8($,"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(`${kK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(yK5)}),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=Eu(Q.req.param("file").replace(/\.md$/,""));try{let X=await Yw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(gK5)});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=$?Xw8($,"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 bK5(Eu(Y)),K=xK5(Y,W);return Q.html(fK5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var vK5=2500,yK5=1e4,gK5=1e4;var Gw8=L(()=>{Y8();kL();LT1();u1()});function zg0($,Z){return fetch(`${kK({})}${$}`,Z)}async function hK5($,Z){let Q=await Pg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function lK5($){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 uK5,Wj,Ww8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Kw8;var Hw8=L(()=>{Y8();dK();kL();LT1();uK5=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/*",Ww8);Wj.use("/suggest",Ww8);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 hK5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Wj.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=lK5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await zg0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${$P({})}`},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 zg0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${$P({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:uK5.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 zg0(`/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 zg0(`/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:[]})}});Kw8=Wj});var cK5=1048576,OT1;var Fw8=L(()=>{Y8();_W();u1();lP1();OT1=new Z1;OT1.post("/webhook",h6({maxSize:cK5,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(!iK8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=pK8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await nK8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as mK5}from"crypto";function pK5($,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 mK5(Buffer.from(X),Buffer.from(Y))}function nK5($,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 Uw8($){let Z=new Z1;return Z.post("/webhook",h6({maxSize:dK5,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(!pK5(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"&&!iK5.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 g50().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=nK5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await tK5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function tK5($,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 h88(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var dK5=5242880,iK5;var Nw8=L(()=>{Y8();_W();IX();fQ();iK5=new Set(["check_suite","issue_comment"])});import{DBOS as wT1,SchedulerMode as oK5}from"@dbos-inc/dbos-sdk";async function rK5(){try{return await aK5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function aK5(){if(!y50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (mH1(),cH1)),Promise.resolve().then(() => (lH1(),uH1))]),Q=await g50(),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=oi$({sandboxes:J,pools:G,records:await si$(X,J,G),legacyPools:uC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await ri$(K,Hj0(X,new XJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:mC0}),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 eK5($,Z){let Q=await wT1.runStep(rK5,{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 Bw8(){if(jT1)return;if(!B0().agentSandboxEnabled||!y50())return;jT1=wT1.registerWorkflow(eK5,{name:"sandboxCredentialPushWorkflow"}),wT1.registerScheduled(jT1,{name:"sandboxCredentialPushWorkflow",crontab:sK5,mode:oK5.ExactlyOncePerIntervalWhenActive})}var sK5="1,11,21,31,41,51 * * * *",jT1=null;var Dw8=L(()=>{I3();Xw();k31();dC0();lC0();IX();u1()});function Lw8($){let Z=new iO($.db,new XJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=d18(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 Ow8=L(()=>{Y8();Xw();ON1();EO()});function Ag0(){try{return B0().jiraSettleSeconds*1000}catch{return pz}}function jw8($,Z){let Q=Z.windowMs??pz,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=$H5($,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 $H5($,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 ET1=L(()=>{SO();u1()});function ww8($){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 PT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=jw8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:Ag0()});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:iz(N)})),H=_98(K)&&Z.boardId?S98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=C98(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await ZH({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 zT1=L(()=>{XU();EO();ut();ET1()});import{DBOS as z2,SchedulerMode as ZH5}from"@dbos-inc/dbos-sdk";function Ew8($){TT1=$}function RT1(){if(!TT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return TT1}function MT1(){let $=RT1();return new iO($.db,new XJ($.encryptionKey))}async function GH5($){try{let Z=await MT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(RT1().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 "-${YH5}m"`,W=0,K;for(let H=0;H<XH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await PT1(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 WH5($,Z){let Q=await z2.runStep(()=>MT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>z2.runStep(()=>GH5(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 KH5($,Z){try{let Q=await MT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(RT1().db,Q.organizationId);if(!Y)return"disabled";let X=await PT1(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 HH5($,Z){await z2.sleep(Ag0()+JH5),await z2.runStep(()=>KH5($,Z),{name:"settleJiraMove"})}async function Pw8($,Z){if(!qT1)throw Error("[jira-trigger] settle workflow is not registered");await z2.startWorkflow(qT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function zw8(){if(AT1)return;qT1=z2.registerWorkflow(HH5,{name:"jiraSettleWorkflow"}),AT1=z2.registerWorkflow(WH5,{name:"jiraTriggerSweepWorkflow"}),z2.registerScheduled(AT1,{name:"jiraTriggerSweepWorkflow",crontab:QH5,mode:ZH5.ExactlyOncePerIntervalWhenActive})}var QH5="*/5 * * * *",YH5=20,XH5=5,JH5=5000,TT1=null,qT1=null,AT1=null;var VT1=L(()=>{Xw();hz();EO();ET1();zT1()});function Aw8($){let Z=new iO($.db,new XJ($.encryptionKey)),Q=pw($.db);async function Y(J,G){let W=ww8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await Pw8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",h6({maxSize:FH5}),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 FH5=1048576;var Tw8=L(()=>{Y8();_W();Xw();VT1();zT1();O00()});function qw8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Rw8,UH5,NH5,Mw8;var Vw8=L(()=>{Y8();NG();Vt();ui();Rw8=new Z1,UH5=["range","if-none-match","if-modified-since"],NH5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Rw8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Vo($))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 EZ0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&_K()){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 qw8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of UH5){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 NH5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),qw8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});Mw8=Rw8});var kQ0=y((du)=>{var BH5=du&&du.__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]}),DH5=du&&du.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))BH5(Z,$,Q)};Object.defineProperty(du,"__esModule",{value:!0});DH5(F3(),du)});var Cw8=y((Iw8)=>{Object.defineProperty(Iw8,"__esModule",{value:!0});Iw8.version=void 0;Iw8.version="3.4.0"});var vw8=y((rB)=>{var LH5=rB&&rB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(rB,"__esModule",{value:!0});rB.NodeTransport=rB.VERSION=void 0;rB.nodeResolveHost=zH5;var X9=kQ0(),OH5=V0("net"),IT1=V0("tls"),jH5=V0("path"),Sw8=V0("fs"),wH5=LH5(V0("dns")),EH5=Cw8();rB.VERSION=EH5.version;var PH5="nats.js";class _w8{socket;version;lang;yields=[];signal=(0,X9.deferred)();closedNotification=(0,X9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=PH5,this.version=rB.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,X9.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 X9.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 X9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new X9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,X9.deferred)(),Q,Y=(0,OH5.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,X9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=X9.DataBuffer.concat(...this.yields),X=(0,X9.extractProtocolMessage)(Y);if(X!=="")try{let J=X9.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,X9.deferred)();try{if($=(0,jH5.resolve)($),!(0,Sw8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Sw8.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,X9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new X9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,X9.deferred)();try{let X=(0,IT1.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 X9.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,X9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new X9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,X9.deferred)();try{let Y=(0,IT1.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 X9.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,X9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,X9.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 IT1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,X9.render)($)}`);let Z=(0,X9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,X9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,X9.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}}rB.NodeTransport=_w8;function zH5($){let Z=(0,X9.deferred)();return wH5.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 gw8=y((yw8)=>{Object.defineProperty(yw8,"__esModule",{value:!0});yw8.connect=AH5;var bw8=vw8(),xw8=kQ0(),fw8=kQ0();function AH5($={}){if((0,fw8.hasWsProtocol)($))return Promise.reject(fw8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,xw8.setTransportFactory)({factory:()=>{return new bw8.NodeTransport},dnsResolveFn:bw8.nodeResolveHost}),xw8.NatsConnectionImpl.connect($)}});var hw8=y((Kj)=>{var qH5=Kj&&Kj.__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]}),RH5=Kj&&Kj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))qH5(Z,$,Q)};Object.defineProperty(Kj,"__esModule",{value:!0});Kj.connect=void 0;var MH5=gw8();Object.defineProperty(Kj,"connect",{enumerable:!0,get:function(){return MH5.connect}});RH5(kQ0(),Kj)});function cw8($){let Z=$?.connectFn??CH5,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:kH5,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(IH5,VH5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Tg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Tg0.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=lw8.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 CH5($){return uw8.connect($)}var Tg0,uw8,lw8,VH5=100,IH5=3000,kH5=3000;var mw8=L(()=>{n$();Tg0=_(c2(),1),uw8=_(hw8(),1),lw8=_(_H(),1)});function qg0($,Z){return`${$}.${Z}`}class kT1{cache;constructor($){this.cache=_P({ttlMs:$?.ttlMs??SH5,maxSize:$?.maxSize??_H5})}async get($,Z){return this.cache.get(qg0($,Z))??null}async set($,Z,Q){this.cache.set(qg0($,Z),Q)}async invalidate($,Z){this.cache.delete(qg0($,Z)),this.cache.delete(qg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var SH5=600000,_H5=5000;var dw8=()=>{};function Rg0($,Z){return`${$}:${Z}`}function CT1($){let Z=_P({ttlMs:$?.ttlMs??vH5,maxSize:$?.maxSize??bH5}),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(iw8,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(Rg0(K,H))},set(K,H,F){Z.set(Rg0(K,H),F)},invalidate(K,H){Z.delete(Rg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(iw8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Rg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var iw8="studio.ai-provider-keys.invalidate",vH5=30000,bH5=5000;var pw8=()=>{};class ST1{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 nw8=($)=>{let Z;return()=>Z??=$()},_T1,vT1;var tw8=L(()=>{v6();_T1=nw8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),vT1=nw8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function lH5($=rw8){return{name:bB,subjects:[`${JL1}.>`],storage:wU.StorageType.File,max_age:yH5,max_bytes:hH5,max_msgs_per_subject:uH5,discard:wU.DiscardPolicy.Old,retention:wU.RetentionPolicy.Limits,duplicate_window:gH5,num_replicas:$}}class aw8{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 ow8($){let Z=sw8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function iH5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,fH5().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 pH5($,Z){return $.info?.cluster?Z:1}function nH5($){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 bT1{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=lH5(X);try{await Y.streams.info(bB),await Y.streams.update(bB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(bB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(bB),await Y.streams.add(J);else throw G}},Q=await L8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await wU.jetstreamManager($),X=pH5($,rw8);try{await Z(Y,X)}catch(J){if(X<=1||!nH5(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:ht});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=iH5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=J98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=WL1(H,{runId:Z}),N=performance.now()-F;_T1().record(N),vT1().add(1,{"org.id":Y??"unknown"}),dH5?.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?ow8(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(),mH5)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 L8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:ow8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ht}),!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=WL1(Z,{runId:$,dedup:Q});_T1().record(performance.now()-X),vT1().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=X98({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"?wU.DeliverPolicy.New:wU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=dz($),W;try{W=await L8(async()=>{return(await Y.consumers.get(bB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ht})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Fb0({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(Gb0()).pipeThrough(Wb0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(bB,{filter:dz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var wU,sw8,xH5=($)=>{let Z;return()=>Z??=$()},fH5,yH5=86400000000000,gH5=120000000000,hH5=4294967296,rw8,uH5=500000,cH5,mH5,dH5;var ew8=L(()=>{n$();KL1();Ub0();Kb0();v6();tw8();wU=_(_H(),1),sw8=_(c2(),1),fH5=xH5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),rw8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);cH5=process.env.STREAM_ENCODE_TRACE==="1",mH5=process.env.DECOPILOT_STREAM_TRACE==="1";dH5=cH5?new aw8:null});function Mg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,uU(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 $E8=L(()=>{q8()});class xT1{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 tH5($,Z,Q={}){let Y=$.startsWith("thread:")?oF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function fT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await AB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await TB($,{threadId:X,runBranch:G?.branch}),K=await v40($,Q,ZD0(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=tH5(W,await BS0($,X),{flat:zh(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 LW(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 ZE8=L(()=>{A5();xQ();fQ()});async function QE8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!nh(Q))return!1;if(!await vd($,Y,x10))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 Z9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),K8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var YE8=L(()=>{OG();u8();vX();Et();QU();l5()});function ZF5($){return $ instanceof AX}function XE8($,Z){return Z-$>=eH5}class yT1{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??oH5;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??rH5,Q=this.options.itemIntervalMs??sH5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-HN1),bB1);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-$F5));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 _B1(this.taskBoard,X,Y),await vB1(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==K1.progress||uJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await fT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!XE8(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(()=>{}),K8(J,F),await YU(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==K1.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await RO(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),ZF5(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()+aH5)).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(()=>{}),K8(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(!XE8(WL(Q,Z.reviewCycleStartedAt),Date.now()))return;await YU($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!uJ(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await fT1(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 At(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 QE8(G,Y,W))return!0;if(!X)return!1;if(await Z48(G,Y))return!0;if(!IB1(W))return!1;return await zt(G,Y,{previewMatchesHead:kB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var oH5=60000,sH5=300000,rH5=50,aH5=60000,eH5=900000,$F5=120000;var JE8=L(()=>{u8();Gv0();ZE8();MO();Mt();QU();YE8();l5();XW();xB1();fQ();d90()});async function GE8($,Z,Q=pz){return await KE8($,Z,Q,{})}async function WE8($,Z,Q,Y=pz){return await KE8($,Q,Y,{activityId:Z})}async function KE8($,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-QF5),settledBefore:new Date(Z-Q),limit:YF5,...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 XF5($.taskBoard,K,Q);for(let U of H){if(!b98(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 XF5($,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?x98(X,Q):Z.from}var QF5=1800000,YF5=200;var HE8=L(()=>{SO()});import{DBOS as A2,DBOSClient as JF5,SchedulerMode as GF5}from"@dbos-inc/dbos-sdk";function FE8($){Hj=$}async function HF5($){if(!Hj)return 0;try{return await WE8(Hj,$,Date.now(),Hj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function FF5(){if(!Hj)return 0;try{return await GE8(Hj,Date.now(),Hj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function UF5($){await A2.sleep((Hj?.settleMs??pz)+KF5),await A2.runStep(()=>HF5($),{name:"settleBoardMove"})}async function NF5($,Z){let Q=await A2.runStep(()=>FF5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function NE8($){let Z=Hj;if(!Z||!hT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!A2.isWithinWorkflow()){await A2.startWorkflow(hT1,{workflowID:Q,queueName:k2})($.activityId);return}let Y=await JF5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:UE8,queueName:k2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function BE8(){if(gT1)return;hT1=A2.registerWorkflow(UF5,{name:UE8}),gT1=A2.registerWorkflow(NF5,{name:"boardTransitionSweepWorkflow"}),A2.registerScheduled(gT1,{name:"boardTransitionSweepWorkflow",crontab:WF5,mode:GF5.ExactlyOncePerIntervalWhenActive})}var WF5="*/5 * * * *",KF5=2000,Hj=null,UE8="boardTransitionSettleWorkflow",hT1=null,gT1=null;var DE8=L(()=>{SO();HE8()});import{readdir as BF5,rm as Vg0}from"fs/promises";import{join as Ig0}from"path";async function kg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-DF5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await iu($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await LE8($,X,Z);else if(!X.startsWith(".")){let J=Ig0($,X),G=await iu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await LE8(J,K,Z)}if((await iu(J)).length===0)await Vg0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function LE8($,Z,Q){let Y=0,X=Ig0($,Z),J=await iu(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Ig0(X,W),H=await iu(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=Ig0(K,U);await Vg0(B,{recursive:!0,force:!0}),Y++}}if((await iu(K)).length===0)await Vg0(K,{recursive:!0,force:!0})}if((await iu(X)).length===0)await Vg0(X,{recursive:!0,force:!0});return Y}async function iu($){try{return(await BF5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var DF5=30;var uT1=()=>{};import{DBOS as lT1,SchedulerMode as LF5}from"@dbos-inc/dbos-sdk";async function jF5(){let $=[qH(),$l(),JD()],Z=0;for(let Q of $)try{Z+=await kg0(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 wF5($,Z){await lT1.runStep(()=>jF5(),{name:"monitoringRetention"})}function jE8(){if(OE8)return;OE8=!0;let $=lT1.registerWorkflow(wF5,{name:"monitoringRetentionWorkflow"});lT1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:OF5,mode:LF5.ExactlyOncePerIntervalWhenActive})}var OF5="23 4 * * *",OE8=!1;var wE8=L(()=>{uW();uT1()});function EE8($){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 SY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await FP($.db,Z,Y.role);return X.boundAuth=NP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new wT(Q,void 0,X.boundAuth,Y.role,"self"),uz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var PE8=L(()=>{GJ();dN()});function zE8(){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=CQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>CQ0(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}${CQ0(N.method)}${L9.reset}`}}catch{}}let W=CQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${CQ0(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=PF5(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=EF5(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,EF5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},PF5=($)=>{return L9[$]||L9.reset},CQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var AE8=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 ME8}from"crypto";import{mkdir as zF5,readdir as AF5,rm as TE8,stat as VE8}from"fs/promises";import{join as mT1,relative as TF5}from"path";import{z as J8}from"zod";function kE8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return mT1(qF5,Z)}function CE8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function cT1($,Z){let Q=kE8($),Y=CE8(Z);return mT1(Q,Y)}function RF5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return ME8("sha256",X).update(J).digest("hex")}function RE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=RF5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${CE8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function SE8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${ME8("md5","etag").update(Y).digest("hex")}"`}async function _E8($,Z,Q,Y,X){try{let J=await AF5($,{withFileTypes:!0});for(let G of J){let W=mT1($,G.name),H=TF5(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 _E8(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 VE8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:SE8(W,F.mtime,F.size)})}catch{}}}}catch{}}function vE8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:J8.object({prefix:J8.string().optional(),maxKeys:J8.number().optional().default(1000),continuationToken:J8.string().optional(),delimiter:J8.string().optional()}),outputSchema:J8.object({objects:J8.array(J8.object({key:J8.string(),size:J8.number(),lastModified:J8.string(),etag:J8.string()})),nextContinuationToken:J8.string().optional(),isTruncated:J8.boolean(),commonPrefixes:J8.array(J8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=kE8(Y);await zF5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await _E8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({contentType:J8.string().optional(),contentLength:J8.number(),lastModified:J8.string(),etag:J8.string(),metadata:J8.record(J8.string(),J8.string()).optional()}),handler:async(X)=>{let J=X,G=cT1(Y,J.key),W=await VE8(G);return{contentType:bz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:SE8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=gO(J.expiresIn,qE8);return{url:RE8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional(),contentType:J8.string().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=gO(J.expiresIn,qE8);return{url:RE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({success:J8.boolean(),key:J8.string()}),handler:async(X)=>{let J=X,G=cT1(Y,J.key);try{return await TE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:J8.object({keys:J8.array(J8.string()).max(1000)}),outputSchema:J8.object({deleted:J8.array(J8.string()),errors:J8.array(J8.object({key:J8.string(),message:J8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=cT1(Y,K);try{await TE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function dT1($,Z,Q){let Y=vE8(Z,Q),X=new WE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:ZZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:J8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:J8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new zW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),FH(X,J,$,"mcp:dev-assets")}async function bE8($,Z,Q,Y){let J=vE8(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 qF5="./data/assets",qE8=3600,IE8,xE8;var fE8=L(()=>{u1();st();Y8();wH0();ot();UJ();hO();Gy0();IE8=new Z1;IE8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return dT1($.req.raw,Z,Y)});xE8=IE8});var yE8={};O6(yE8,{mountDevRoutes:()=>MF5});function MF5($,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 dT1(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 bE8(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",xE8);let Q=new Z1;Q.use("*",DU({mountPath:"/api/dev-assets"})),Q.route("/",Jy0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var gE8=L(()=>{Y8();Mz1();Gy0();fE8()});var tE8={};O6(tE8,{watchHandler:()=>nE8,resolveVoiceSigningSecret:()=>dE8,resolveCorsOrigin:()=>iE8,isSsoExemptPath:()=>mE8,isAllowedOAuthRedirectUri:()=>pE8,createApp:()=>yF5});import{readFileSync as VF5}from"fs";import{randomBytes as IF5}from"crypto";import{PrometheusSerializer as kF5}from"@opentelemetry/exporter-prometheus";import{DBOS as aB}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as _F5,oAuthProtectedResourceMetadata as vF5}from"better-auth/plugins";async function CF5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,uE8(hE8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),uE8(hE8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function uE8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function mE8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${lf0}/`)||$.startsWith(`${xf0}/`)}function dE8($){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)"),IF5(32).toString("base64")}function iE8($,{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 pE8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function yF5($={}){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 kT1,K,H,F,U=null;if($.disableNats)K=CT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new iZ0,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=cw8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=VF5(F0,"utf8")}catch(N8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,N8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=xZ1()?new EZ1({getJetStream:()=>U.getJetStream(),selfListVersion:Eg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new J71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new th(AB1,{getJetStream:()=>U.getJetStream()}),b$=new th(i90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new iO1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=CT1({getConnection:()=>U.getConnection()}),H=new ST1({getConnection:()=>U.getConnection()}),F=new bT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),BH8(U),U.onReady(()=>{P0?.init().catch((N8)=>{console.error("[McpListCache] Deferred init failed:",N8)}),z0.init().catch((N8)=>{console.error("[SkillCatalogCache] Deferred init failed:",N8)}),j1.init().catch((N8)=>{console.error("[PrReadCache] Deferred init failed:",N8)}),b$.init().catch((N8)=>{console.error("[PrCardCache] Deferred init failed:",N8)}),r$.init().catch((N8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",N8)}),K.start(),A2$(()=>U.getConnection()),F.init().catch((N8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",N8)})})}if(T2)await T2();PZ1(Y),W71(X),H71(()=>U?.getConnection()??null),TB1(J),pO1(G);let B={storage:new mc(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>qt(new DW(Z.db),F0,G0,new V3(Z.db))},D=new MD1(B),O=new P70(Z.db),j=new xT1(O);j.start(),c98(H),H.start((F0)=>{sv0(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;Pz1(w),U?.onReady(()=>Pz1(w)),Mj1(w),U?.onReady(()=>Mj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),T2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),CF8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),T2$(),G.teardown(),PZ1(null),W71(null),H71(null),TB1(null),pO1(null)};let E=new Z1;if(E.use("*",cO1({enabled:(F0)=>Mo(F0,"debug")==="1"})),E.use("*",rg0),E.use("/*",KH8({origin:(F0,G0)=>iE8(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("*",zE8());E.use("*",async(F0,G0)=>{if(await G0(),xs(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(pX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(pX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(pX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await CF5(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(pX.METRICS,async(F0)=>{try{let G0=await Zh0.collect(),P0=SF5.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(`${pX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!bF5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([aB.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),aB.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",aj8),E.route("/api/_reports",Kw8),E.route("/api/_stripe",OT1),E.route("/api/_github",Uw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",go);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",Aw8(T)),E.route("/api/_jira",Lw8(T)),E.route("/report",Jw8($.clientDir)),E.route("/api/auth/custom",vH8),E.all("/api/auth/admin/*",jF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=UW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",b70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",b70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",j70),E.route("/",OW8()),E.use("/oauth-proxy/:connectionId/*",b70),E.all("/oauth-proxy/:connectionId/*",lE8);let A=async(F0)=>{let P0=await xF5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",b70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await fF5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=FH8({ttlMs:120000}),S=await FK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:jj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});SY.set(S),m1$({db:Z.db,baseUrl:N5()}),UK8({db:Z.db}),LK8({db:Z.db}),uK8({db:Z.db}),tK8({db:Z.db}),Ew8({db:Z.db,encryptionKey:B0().encryptionKey}),t$8({db:Z.db}),$H8({db:Z.db}),R88({db:Z.db});let V=pw(Z.db),v=new j00(Z.db),b=EE8({db:Z.db});yL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl)}),PL1({systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),DL1({dispatchRunFn:r58,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new mc(Z.db),l=new DW(Z.db),d=new V3(Z.db),W0=new yT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=T2;T2=async()=>{await F0?.(),W0.dispose()}}FE8({automations:V,taskBoard:l,fire:ZH,systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),Y88(NE8),w98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await cE8.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(Mg0(I6,G0,F0,P0),P0)await qt(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return Mg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(Mg0(I6,G0,F0,j1),j1)await qt(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,mz(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,uU(F0,z0?.status??"in_progress",{title:P0,virtualMcpId:z0?.virtual_mcp_id??void 0,createdBy:z0?.created_by,triggerId:z0?.trigger_id,branch:z0?.branch??null,harnessId:z0?.harness_id??void 0,createdAt:z0?.created_at,updatedAt:z0?.updated_at}))},bumpProgress:async({runId:F0,orgId:G0})=>{await h.bumpProgress(F0,G0)},recordCompleted:async({runId:F0,orgId:G0,distinctId:P0,usage:z0})=>{c1.capture({distinctId:P0,event:"chat_message_completed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",input_tokens:z0.inputTokens,output_tokens:z0.outputTokens,total_tokens:z0.totalTokens}})},recordFailed:async({runId:F0,orgId:G0,distinctId:P0,reason:z0,kind:j1})=>{c1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:j1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),P58({studioContextFactory:b,systemDatabaseUrl:V10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),jE8(),d1$(),BK8(),jK8(),cK8(),sK8(),zw8(),BE8(),e$8(),QH8(),M88(),Bw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return cL1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new _o(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>ZH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[qH(),$l(),JD()];for(let F0 of U0)kg0(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(og0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{HH(F0,j1);try{return await b$()}finally{AW(F0,j1)}}},z0=await SY.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),J$(30000)]).catch((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",Io),E.use("/api/:org/v1/*",Io),E.use("/api/:org/files/*",Io),E.use("*",async(F0,G0)=>{if(mE8(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("*",DU({mountPath:"/api/org-sso"})),t.route("/",df0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:A00,grouped:OT()})}),E.use("/mcp/*",async(F0,G0)=>{HH(F0,"mcp");try{return await G0()}finally{AW(F0,"mcp")}});let r=async(F0,G0)=>{let P0=F0.var.studioContext;if(!P0.auth.user?.id&&!P0.auth.apiKey?.id){let z0=new URL(F0.req.url),j1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=j1?`${j1}://${z0.host}`:z0.origin;return F0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b$}${z0.pathname}/.well-known/oauth-protected-resource"`}})}return await G0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),_K()){let{mountDevRoutes:F0}=(gE8(),yg0(yE8));F0(E,r)}let $0=new Z1;$0.use("*",DU({mountPath:"/mcp"})),$0.route("/",pb0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",DU({mountPath:"/mcp/self"})),X0.route("/",yy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",DU({mountPath:"/mcp"})),h0.route("/",ob0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{HH(F0,"llm_models");try{return await G0()}finally{AW(F0,"llm_models")}});let C0=fF8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",Mw8);let H1=new Z1;H1.use("*",DU({mountPath:"/api"})),H1.route("/",ly0()),E.route("/api",H1),E.route("/api",nj8);let c0=new Z1;c0.use("*",DU({mountPath:"/api"})),c0.route("/",cy0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let j0=new w00(Z.db),E0=new Z1;E0.use("*",DU({mountPath:"/api"})),E0.route("/",sf0()),E.route("/api",E0),E.route("/api/deco-sites",rF8()),E.route("/api/deco-apps",lj8());let n0=new Z1;n0.use("*",DU({mountPath:"/api/deco-sites"})),n0.route("/",af0()),E.route("/api/deco-sites",n0),E.route(lf0,wF8()),E.route(fD8,hD8()),E.route("/api/_editor-resolve",oj8()),E.route(fH8,yH8()),E.route(xf0,aH8());let O1=B0(),o0=O1.elevenlabsApiKey?new Og0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new KT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new WT1(o0,()=>U?.getConnection()??null):null},d0=new BT1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:dE8(O1),getConnection:()=>U?.getConnection()??null}),i0=Ej8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:_K(),mcpAuth:r,oauthProxyHandler:lE8,watchHandler:nE8,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(gF8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),T2?Promise.resolve(T2()).finally(()=>{T2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await nJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await rK$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await aB.registerQueue(G3,{partitionQueue:!0,concurrency:bL1,minPollingIntervalMs:xL1}),await aB.registerQueue(gW,{partitionQueue:!0,concurrency:wL1,priorityEnabled:!0}),await aB.registerQueue(YD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await aB.registerQueue(XD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await aB.registerQueue(Oj,{partitionQueue:!0,concurrency:E58}),await aB.registerQueue(I2,q88),await aB.registerQueue(k2),await Vz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>aB.deleteQueue(F0))),await fL1(Z.pool),SN$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),_d(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),i1$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var cE8,hE8=5000,T2=null,lE8=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 SY.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 Po(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=xE1(await W.json());if(!K)K=H.origin;let N=await w70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=LW8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!pE8(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(XH8(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 K2(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 a5(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})},nE8=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&&(!CB(Y)||!await SB(Z)))return $.json({error:"forbidden"},403);let W=G?p_0:Y;if(G)qO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Jj($,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()})})})},SF5,bF5,xF5=()=>vF5(B4),fF5=()=>_F5(B4);var oE8=L(()=>{n$();u1();p1$();DK8();wK8();mK8();rK8();aZ0();QB1();YH8();d90();K9();ui();q8();Y8();Sf0();HH8();mO1();dK();dN();oP1();I3();v6();Q6();Qz1();gH8();eH8();Wz1();EF8();Oz1();qz1();Rz1();vK();E70();Mz1();hF8();vf0();Pj8();Rj8();Mj8();Cj8();uj8();Cz1();cj8();nb0();pZ0();tj8();sb0();KA1();sj8();GA1();ej8();Gw8();Hw8();Fw8();Nw8();Dw8();Ow8();Tw8();VT1();fz1();Vw8();WA1();QA1();iQ0();mw8();DT1();AJ();RB0();Z40();RB1();o80();r80();tO1();dw8();pw8();zz1();ew8();hv0();$E8();ea();z00();TO();l5();sE1();JE8();DE8();OG();hz();wE8();iF0();uT1();uW();Iz1();zO();NL1();iF0();MZ0();O00();Q01();PE8();nw();AE8();Qs();oP1();jt();ft();rv0();cE8=_(_H(),1);SF5=new kF5,bF5=new Set([G3,gW,YD,XD,Oj,I2])});var eE8={};O6(eE8,{resolveClientDir:()=>dF5,resolveAssetPathWithTraversalCheck:()=>aE8,isPathWithinDirectory:()=>rE8,createAssetHandler:()=>iF5});import{resolve as SQ0,dirname as gF5,join as hF5,extname as uF5,basename as lF5,sep as sE8}from"path";function cF5($,Z){if($===Z||lF5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${sE8}assets${sE8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function rE8($,Z){let Q=SQ0(Z),Y=SQ0($);return Y===Q||Y.startsWith(Q+"/")}function aE8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=SQ0(Z,Q);if(!rE8(Y,Z))return null;return Y}function dF5($,Z="../client"){let Q=new URL($),Y=gF5(Q.pathname);return SQ0(Y,Z)}function iF5($={}){let{env:Z="production",clientDir:Q=mF5,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=aE8({requestPath:W,clientDir:Q});if(!K)return null;let H=hF5(K,"index.html"),F=SQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(uF5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:cF5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var mF5="./dist/client";var $P8=()=>{};var ZP8={};O6(ZP8,{tryUpgradePreviewWs:()=>aF5,tryHandlePreviewHttp:()=>rF5,previewWebSocketHandler:()=>eF5,parsePreviewBaseDomain:()=>sF5,isPreviewWsData:()=>Cg0,extractHandleFromHost:()=>iT1});function tF5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function oF5(){return new Response(nF5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function sF5($){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 iT1($,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 rF5($,Z){let Q=iT1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return vQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Rn)&&tF5($))return oF5();return X.headers.delete(Rn),X}function vQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Cg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function aF5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=iT1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return vQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return vQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return vQ0(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 vQ0(426,"upgrade failed");return}function _Q0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var pF5=256,nF5='<!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>',eF5;var QP8=L(()=>{C50();eF5={open($){let Z=$.data;if(!Cg0(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)}`),_Q0($,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)=>{_Q0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{_Q0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!Cg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=pF5){_Q0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!Cg0(Z))return;_Q0($,Z,1000,"")}}});n$();var Xq1="14";function Jq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Xq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}n$();import PP8 from"pg";var Gq1=8314027461559302n,zP8=600000,AP8=500;async function Wq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=zP8}=$,X=$.log??((K)=>console.log(K)),J=new PP8.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[Gq1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await J$(AP8)}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)",[Gq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();lg0();v6();function Pz8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xh0($,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 mq1(){let $=Pz8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xh0($,"--cpu-prof-dir")??process.cwd(),name:Xh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xh0($,"--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.'}))}Wh0();var tQ0;function aq1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=_2();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(()=>{}),tQ0=setInterval(()=>void Z().catch(()=>{}),$),tQ0.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(tQ0)clearInterval(tQ0)}}import*as Tz8 from"bun:jsc";var{startSamplingProfiler:qz8,samplingProfilerStackTraces:Rz8}=Tz8;function eq1(){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{qz8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=Rz8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function $R1(){mq1();let $=[aq1(),rq1(),eq1()];return()=>{for(let Z of $)Z()}}import{existsSync as WU5}from"fs";var fW=B0();uq1();var{DBOS:bQ0,DBOSClient:$U5}=await import("@dbos-inc/dbos-sdk");function rT1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var ZU5=[G3,gW,YD,XD,Oj,I2,k2],QU5=fW.dispatchRole==="worker"?ZU5:fW.dispatchRole==="api"?[]:void 0;bQ0.setConfig(Jq1({systemDatabaseUrl:rT1(fW.databaseUrl,fW.databasePgSsl),poolSize:fW.dbosPoolSize,executorID:fW.podName,listenQueues:QU5}));var{createApp:YU5}=await Promise.resolve().then(() => (oE8(),tE8)),{isServerPath:XU5}=await Promise.resolve().then(() => (iQ0(),Tq1)),{createAssetHandler:JU5,resolveClientDir:WP8}=await Promise.resolve().then(() => ($P8(),eE8)),GU5=fW.port,YP8=WP8(import.meta.url,"../client"),KP8=WU5(YP8)?YP8:WP8(import.meta.url,"../dist/client"),KU5=JU5({clientDir:KP8,isServerPath:XU5}),HU5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function FU5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(HU5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:UU5,tryHandlePreviewHttp:NU5,tryUpgradePreviewWs:BU5,previewWebSocketHandler:pT1,isPreviewWsData:nT1}=await Promise.resolve().then(() => (QP8(),ZP8)),{getOrInitSharedRunner:HP8}=await Promise.resolve().then(() => (IX(),Un$)),FP8=UU5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),XP8={baseDomain:FP8??"",getRunner:HP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())HP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Sg0=await YU5({clientDir:KP8}),tT1=process.env.DBOS_CONDUCTOR_KEY?.trim(),JP8=process.env.DBOS_CONDUCTOR_URL?.trim();await Wq1({databaseUrl:rT1(fW.databaseUrl,fW.databasePgSsl)},()=>bQ0.launch({...tT1?{conductorKey:tT1}:{},...tT1&&JP8?{conductorURL:JP8}:{}}));console.log(`[dbos] application version: ${bQ0.applicationVersion}`);var oT1=5,sT1=0;await L8(async()=>{sT1++;try{return await Sg0.initDbos()}catch($){let Z=sT1>=oT1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${sT1}/${oT1} failed, ${Z}`,$),$}},{maxAttempts:oT1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var DU5=Bun.serve({idleTimeout:0,port:GU5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(FP8){let Y=await BU5($,Z,XP8);if(Y===void 0)return;if(Y)return Y;let X=await NU5($,XP8);if(X)return X}let Q=await KU5($);if(Q)return FU5(Q);return Sg0.fetch($,{server:Z})},websocket:{open($){if(nT1($.data))pT1.open($)},message($,Z){if(nT1($.data))pT1.message($,Z)},close($){if(nT1($.data))pT1.close($)}},development:!1}),LU5=$R1();if(fW.localMode)Promise.resolve().then(() => (sh(),_v0)).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(() => (sh(),_v0));Z()}catch{}});var GP8=!1;async function OU5($){let Z;try{Z=await $U5.create({systemDatabaseUrl:rT1(fW.databaseUrl,fW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:gW,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:gW}),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 _g0($){if(GP8)return;GP8=!0,console.log(`
|
|
4489
4489
|
[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{LU5(),Sg0.markShuttingDown();let J=Kq1(fW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await DU5.stop(!0);let G=bQ0.executorID;await bQ0.shutdown(),await OU5(G),await Sg0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>_g0("SIGTERM"));process.on("SIGINT",()=>_g0("SIGINT"));process.on("SIGHUP",()=>_g0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),_g0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,a0 as u}from"./index-9utrdjuC.js";import{C as f}from"./index-BYGMglaI.js";import{a as x}from"./thread-route-DMUWje40.js";import{u as g}from"./use-task-metadata-CVVlEbjb.js";import{AppViewContent as h}from"./project-app-view-Chi_XpbU.js";import"./use-mobile-iljyEqdw.js";import"./use-app-takeover-BPHco5S8.js";import"./sheet-CxN2-ZnF.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./use-panel-navigate-CUtjjENr.js";import"./use-project-scope-BNx_AZUx.js";import"./repository-binding-CQrhlIgt.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./thread-intent-BNqGpPmv.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./toolbar-icon-button-yph4TT_t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./label-jgD_YhxC.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./collection-search-FUqdxX3H.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./autosend-BPQxe36t.js";import"./use-org-sso-DHEqWneE.js";import"./resizable-nPzQU7Gj.js";import"./icon-button-DZGm8Il3.js";import"./tool-namespace-Bn3NH_CO.js";import"./use-mcp-tools-DYCe1kmW.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-CKOO4BIM.js";import"./types-E7V9DsSf.js";import"./chat-context-Beu1j-5J.js";import"./use-decopilot-events-CJACnvkW.js";import"./use-ai-providers-z0VfKQkA.js";import"./use-chat-navigation-Bvu49eld.js";import"./location-BjlyegC2.js";import"./task-route-BeWr2PUl.js";import"./task-key-BCHdFiOO.js";import"./core.esm-mOT7IIiz.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-Cf_p5pBS.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-DwJJGoHU.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-B8PhDBvp.js";import"./authenticate-and-persist-oauth-BXYWE9_-.js";import"./mcp-oauth-B4GQK3-6.js";import"./mcp-oauth-dXdRlURk.js";import"./track-CXUUAYti.js";import"./extract-connection-data-Bb0jwaQt.js";import"./connection-BP1usXEe.js";import"./url-slug-D2I7DZDe.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 Ao(){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{Ao as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,b1 as b,u as g}from"./index-9utrdjuC.js";import{C as j}from"./index-BYGMglaI.js";import{F as v,H as S}from"./file-share-button-Vl0ZcNvz.js";import{u as k,b as y,e as _}from"./use-org-fs-D_boDaBx.js";import{S as w}from"./settings-tab-Dwxz35-w.js";import{b as M}from"./thread-route-DMUWje40.js";import"./use-mobile-iljyEqdw.js";import"./use-app-takeover-BPHco5S8.js";import"./sheet-CxN2-ZnF.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./use-panel-navigate-CUtjjENr.js";import"./use-project-scope-BNx_AZUx.js";import"./repository-binding-CQrhlIgt.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./thread-intent-BNqGpPmv.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./toolbar-icon-button-yph4TT_t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./label-jgD_YhxC.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./collection-search-FUqdxX3H.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./autosend-BPQxe36t.js";import"./use-org-sso-DHEqWneE.js";import"./resizable-nPzQU7Gj.js";import"./icon-button-DZGm8Il3.js";import"./popover-2IxOscUb.js";import"./extract-connection-data-Bb0jwaQt.js";import"./metadata-D72DunRR.js";import"./connection-BP1usXEe.js";import"./url-slug-D2I7DZDe.js";import"./chat-context-Beu1j-5J.js";import"./use-decopilot-events-CJACnvkW.js";import"./use-ai-providers-z0VfKQkA.js";import"./use-chat-navigation-Bvu49eld.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-D5tL_bT5.js";import"./empty-state-Br6GEUGF.js";import"./use-date-fns-locale-BpcWUHYq.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-B4GQK3-6.js";import"./mcp-oauth-dXdRlURk.js";import"./alert-dialog-fu6AQXnF.js";import"./textarea-Cuvx1CdP.js";import"./use-connection-BSkRPmzW.js";import"./use-debounced-autosave-DQjwS2nW.js";import"./add-connection-dialog-C9PNcfRX.js";import"./connection-card-Dj9jvO4L.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-B7KRQQab.js";import"./form-DwJJGoHU.js";import"./select-CTeWg4zR.js";import"./index-BdQq_4o_.js";import"./schema-QYPrIfYk.js";import"./connection-form-helpers-DKKu5de3.js";import"./authenticate-and-persist-oauth-BXYWE9_-.js";import"./collection-tabs-C65YIOoy.js";import"./badge-BDdWebYk.js";import"./use-infinite-scroll-B_Pt9LIF.js";import"./useSuspenseInfiniteQuery-0gOUIT7Y.js";import"./file-type-icon-BWqwNVgv.js";import"./checkbox-stYexPFQ.js";import"./search-input-BW_s9pS-.js";import"./use-mcp-auth-status-Dy2gzk_k.js";import"./types-E7V9DsSf.js";import"./use-mcp-tools-DYCe1kmW.js";import"./use-mcp-prompts-DXCZ6ETO.js";import"./utils-CVEq3hMx.js";import"./switch-DU47sqvK.js";import"./scroll-area-Nr9Xl-Uo.js";import"./optimistic-project-sidebar-views-CeKaHQes.js";import"./format-time-CAj8AQXM.js";import"./use-copy-C2gLm1MS.js";import"./virtual-mcp-C4e_L0IJ.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-DEIrJAjz.js";import"./use-secrets-staEZx8d.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 rr(){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{rr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as s,j as e}from"./index-9utrdjuC.js";import{C as a}from"./index-BYGMglaI.js";import{L as n}from"./library-tab-BNmqv1A-.js";import{u as c}from"./use-ensure-project-folder-m1Ct0HuE.js";import{u}from"./use-project-scope-BNx_AZUx.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-iljyEqdw.js";import"./use-app-takeover-BPHco5S8.js";import"./sheet-CxN2-ZnF.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./thread-route-DMUWje40.js";import"./use-panel-navigate-CUtjjENr.js";import"./thread-intent-BNqGpPmv.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./repository-binding-CQrhlIgt.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./toolbar-icon-button-yph4TT_t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./label-jgD_YhxC.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./collection-search-FUqdxX3H.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./autosend-BPQxe36t.js";import"./use-org-sso-DHEqWneE.js";import"./resizable-nPzQU7Gj.js";import"./icon-button-DZGm8Il3.js";import"./search-toggle-BZtSC8QC.js";import"./alert-dialog-fu6AQXnF.js";import"./use-chat-navigation-Bvu49eld.js";import"./use-org-fs-D_boDaBx.js";import"./use-org-repo-syncs-wNbXiKM9.js";import"./textarea-Cuvx1CdP.js";import"./markdown-CRrGNQ7w.js";import"./use-copy-C2gLm1MS.js";import"./file-share-button-Vl0ZcNvz.js";import"./popover-2IxOscUb.js";import"./preview-dialog-Dnk_-SyH.js";import"./preview-content-DGb8rCNt.js";import"./file-preview-CUKTqYDW.js";import"./utils-Do9ZGmDL.js";import"./editor-DxGSQWBn.js";import"./file-type-icon-BWqwNVgv.js";import"./folder-icon-Bfrgku9r.js";import"./empty-state-Bfikw9C9.js";import"./view-mode-toggle-CBuTqb7n.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-B-nmL0_-.js";import"./use-members-CkAWHXUS.js";import"./use-org-auth-client-nmfdksya.js";function no(){const t=s.c(6),{project:o}=u();c(o);const m=o?.id??"pending";let r;t[0]!==o?(r=o?l(o):void 0,t[0]=o,t[1]=r):r=t[1];const p=o?.title??void 0;let i;return t[2]!==m||t[3]!==r||t[4]!==p?(i=e.jsx(a.Content,{children:e.jsx(n,{root:r,rootLabel:p},m)}),t[2]=m,t[3]=r,t[4]=p,t[5]=i):i=t[5],i}export{no as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as e,u as n}from"./index-9utrdjuC.js";import{C as c}from"./index-BYGMglaI.js";import{L as l}from"./preview-panel-B626d_hv.js";import{a as u}from"./use-panel-navigate-CUtjjENr.js";import{S as f}from"./settings-tab-Dwxz35-w.js";import{b as h}from"./thread-route-DMUWje40.js";import"./use-mobile-iljyEqdw.js";import"./use-app-takeover-BPHco5S8.js";import"./sheet-CxN2-ZnF.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./thread-intent-BNqGpPmv.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./repository-binding-CQrhlIgt.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./toolbar-icon-button-yph4TT_t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-project-scope-BNx_AZUx.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./label-jgD_YhxC.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./collection-search-FUqdxX3H.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./autosend-BPQxe36t.js";import"./use-org-sso-DHEqWneE.js";import"./resizable-nPzQU7Gj.js";import"./icon-button-DZGm8Il3.js";import"./preview-content-DGb8rCNt.js";import"./file-share-button-Vl0ZcNvz.js";import"./use-org-fs-D_boDaBx.js";import"./popover-2IxOscUb.js";import"./file-preview-CUKTqYDW.js";import"./utils-Do9ZGmDL.js";import"./editor-DxGSQWBn.js";import"./file-type-icon-BWqwNVgv.js";import"./markdown-CRrGNQ7w.js";import"./use-copy-C2gLm1MS.js";import"./location-BjlyegC2.js";import"./extract-connection-data-Bb0jwaQt.js";import"./metadata-D72DunRR.js";import"./connection-BP1usXEe.js";import"./url-slug-D2I7DZDe.js";import"./chat-context-Beu1j-5J.js";import"./use-decopilot-events-CJACnvkW.js";import"./use-ai-providers-z0VfKQkA.js";import"./use-chat-navigation-Bvu49eld.js";import"./build-improve-prompt-doc-D5tL_bT5.js";import"./empty-state-Br6GEUGF.js";import"./use-date-fns-locale-BpcWUHYq.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-B4GQK3-6.js";import"./mcp-oauth-dXdRlURk.js";import"./alert-dialog-fu6AQXnF.js";import"./textarea-Cuvx1CdP.js";import"./use-connection-BSkRPmzW.js";import"./use-debounced-autosave-DQjwS2nW.js";import"./add-connection-dialog-C9PNcfRX.js";import"./connection-card-Dj9jvO4L.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-B7KRQQab.js";import"./form-DwJJGoHU.js";import"./select-CTeWg4zR.js";import"./index-BdQq_4o_.js";import"./schema-QYPrIfYk.js";import"./connection-form-helpers-DKKu5de3.js";import"./authenticate-and-persist-oauth-BXYWE9_-.js";import"./collection-tabs-C65YIOoy.js";import"./badge-BDdWebYk.js";import"./use-infinite-scroll-B_Pt9LIF.js";import"./useSuspenseInfiniteQuery-0gOUIT7Y.js";import"./checkbox-stYexPFQ.js";import"./search-input-BW_s9pS-.js";import"./use-mcp-auth-status-Dy2gzk_k.js";import"./types-E7V9DsSf.js";import"./use-mcp-tools-DYCe1kmW.js";import"./use-mcp-prompts-DXCZ6ETO.js";import"./utils-CVEq3hMx.js";import"./switch-DU47sqvK.js";import"./scroll-area-Nr9Xl-Uo.js";import"./optimistic-project-sidebar-views-CeKaHQes.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-C4e_L0IJ.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-DEIrJAjz.js";import"./use-secrets-staEZx8d.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.c(5),{path:m}=r,{closePanel:p}=u();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let s;return t[2]!==i||t[3]!==m?(s=e.jsx(l,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=s):s=t[4],s}function x(){const r=a.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=n(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?e.jsx(b,{path:o},o):e.jsx(f,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Qr(){const r=a.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c.Content,{children:e.jsx(x,{})}),r[0]=t):t=r[0],t}export{Qr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-9utrdjuC.js";import{C as p}from"./index-BYGMglaI.js";import{S as e}from"./settings-tab-Dwxz35-w.js";import{b as n}from"./thread-route-DMUWje40.js";import"./use-mobile-iljyEqdw.js";import"./use-app-takeover-BPHco5S8.js";import"./sheet-CxN2-ZnF.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./use-panel-navigate-CUtjjENr.js";import"./use-project-scope-BNx_AZUx.js";import"./repository-binding-CQrhlIgt.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./thread-intent-BNqGpPmv.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./toolbar-icon-button-yph4TT_t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./label-jgD_YhxC.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./collection-search-FUqdxX3H.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./autosend-BPQxe36t.js";import"./use-org-sso-DHEqWneE.js";import"./resizable-nPzQU7Gj.js";import"./icon-button-DZGm8Il3.js";import"./extract-connection-data-Bb0jwaQt.js";import"./metadata-D72DunRR.js";import"./connection-BP1usXEe.js";import"./url-slug-D2I7DZDe.js";import"./chat-context-Beu1j-5J.js";import"./use-decopilot-events-CJACnvkW.js";import"./use-ai-providers-z0VfKQkA.js";import"./use-chat-navigation-Bvu49eld.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-D5tL_bT5.js";import"./empty-state-Br6GEUGF.js";import"./use-date-fns-locale-BpcWUHYq.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-B4GQK3-6.js";import"./mcp-oauth-dXdRlURk.js";import"./alert-dialog-fu6AQXnF.js";import"./textarea-Cuvx1CdP.js";import"./use-connection-BSkRPmzW.js";import"./use-debounced-autosave-DQjwS2nW.js";import"./add-connection-dialog-C9PNcfRX.js";import"./connection-card-Dj9jvO4L.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-B7KRQQab.js";import"./form-DwJJGoHU.js";import"./select-CTeWg4zR.js";import"./index-BdQq_4o_.js";import"./schema-QYPrIfYk.js";import"./connection-form-helpers-DKKu5de3.js";import"./authenticate-and-persist-oauth-BXYWE9_-.js";import"./collection-tabs-C65YIOoy.js";import"./badge-BDdWebYk.js";import"./use-infinite-scroll-B_Pt9LIF.js";import"./useSuspenseInfiniteQuery-0gOUIT7Y.js";import"./file-type-icon-BWqwNVgv.js";import"./use-org-fs-D_boDaBx.js";import"./checkbox-stYexPFQ.js";import"./search-input-BW_s9pS-.js";import"./use-mcp-auth-status-Dy2gzk_k.js";import"./types-E7V9DsSf.js";import"./use-mcp-tools-DYCe1kmW.js";import"./use-mcp-prompts-DXCZ6ETO.js";import"./utils-CVEq3hMx.js";import"./switch-DU47sqvK.js";import"./popover-2IxOscUb.js";import"./scroll-area-Nr9Xl-Uo.js";import"./optimistic-project-sidebar-views-CeKaHQes.js";import"./format-time-CAj8AQXM.js";import"./use-copy-C2gLm1MS.js";import"./virtual-mcp-C4e_L0IJ.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-DEIrJAjz.js";import"./use-secrets-staEZx8d.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function ko(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{ko as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-C5b7Tkm1.js","assets/index-9utrdjuC.js","assets/index-s7bCSMKE.css","assets/agent-icon-mVoV_Rm6.js","assets/AlertCircle-C1f-lxgM.js","assets/Tool01-D1AhyVfW.js","assets/ArrowUp-CN7A9Moq.js","assets/ArrowLeft-I3l36ZjU.js","assets/LinkBroken01-DdphioXH.js","assets/ShoppingBag01-C6o3UxmP.js","assets/ZoomOut-BBC9JXN3.js","assets/Building02-CmYuhs9q.js","assets/CheckCircle-Bbdmy3-4.js","assets/ChevronUp-BSosmJSL.js","assets/ChevronSelectorVertical-DnykG0uP.js","assets/UserSquare-C_0tdrPK.js","assets/Copy01-ClJqHrSL.js","assets/CreditCard01-DMXUjEhW.js","assets/DotsVertical-Bq-FhyDz.js","assets/Image01-BdJJuBkl.js","assets/Globe04-tkCkwAZ7.js","assets/SwitchHorizontal01-f0pF3KQj.js","assets/Key01-pWArwON-.js","assets/Link01-B9ootJcD.js","assets/Monitor01-z4WYVE55.js","assets/Sun-odOLuJdq.js","assets/Play-BI5wPgvY.js","assets/Plus-COolVLwU.js","assets/SearchMd-y-lLgqEG.js","assets/Trash01-DfoQYxMm.js","assets/Upload01-BBOzClAk.js","assets/User01-BErnjQ_p.js","assets/Users01-C3dqLukD.js","assets/XClose-DVNhmkHc.js","assets/scroll-area-Nr9Xl-Uo.js","assets/index-BdQq_4o_.js","assets/tooltip-Csaklmt2.js","assets/index-i1tVWfKf.js","assets/chat-context-Beu1j-5J.js","assets/use-panel-navigate-CUtjjENr.js","assets/thread-route-DMUWje40.js","assets/use-project-scope-BNx_AZUx.js","assets/repository-binding-CQrhlIgt.js","assets/use-mcp-client-9df5aDnm.js","assets/auth-D9R4x8R2.js","assets/autosend-BPQxe36t.js","assets/thread-intent-BNqGpPmv.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-fI8J8UBb.js","assets/task-board-Bf2FSU7b.js","assets/schema-DMZs6sOV.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-CJACnvkW.js","assets/use-ai-providers-z0VfKQkA.js","assets/use-chat-navigation-Bvu49eld.js","assets/location-BjlyegC2.js","assets/use-organization-settings-NJoOWX7O.js","assets/editor-DxGSQWBn.js","assets/shell-layout-CZlXU8th.js","assets/avatar-CU0Kskf0.js","assets/use-clock-tick-CTGpjemP.js","assets/command-DxMlrlhO.js","assets/index-C7oYZY8J.js","assets/integration-icon-DrkScr6s.js","assets/project-icon-Dxu4JaaE.js","assets/new-project-dialog-CBpaJ8k6.js","assets/label-jgD_YhxC.js","assets/repository-import-picker-BakXAFwC.js","assets/use-navigate-to-agent-5vkTFy3L.js","assets/repository-picker-D87Y1ek1.js","assets/useInfiniteQuery-DS2Ac8OP.js","assets/infiniteQueryObserver-h_ZnRx7A.js","assets/collection-search-FUqdxX3H.js","assets/use-debounced-value-aN3O60O8.js","assets/required-auth-layout-Bu384CZN.js","assets/use-org-sso-DHEqWneE.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-CRxdlhrN.js","assets/sandbox-url-D3mC8qhT.js","assets/alert-dialog-fu6AQXnF.js","assets/context-menu-ByavF3-l.js","assets/utils-Do9ZGmDL.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as d,b,a2 as j,j as r,r as x,aZ as g,h as _,u as T}from"./index-9utrdjuC.js";import{A as v}from"./agent-view-guard-cXaf8JJF.js";import{F as E}from"./feature-gate-B1vh3qv2.js";import{c as S}from"./chat-context-Beu1j-5J.js";import{E as P}from"./empty-state-Br6GEUGF.js";import"./use-main-panel-tabs-Cu_VIDGa.js";import"./use-project-native-view-presence-D5_yzHhC.js";import"./thread-route-DMUWje40.js";import"./use-panel-navigate-CUtjjENr.js";import"./use-project-scope-BNx_AZUx.js";import"./repository-binding-CQrhlIgt.js";import"./use-mcp-client-9df5aDnm.js";import"./auth-D9R4x8R2.js";import"./thread-intent-BNqGpPmv.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-fI8J8UBb.js";import"./task-board-Bf2FSU7b.js";import"./schema-DMZs6sOV.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-RvPbtnWJ.js";import"./use-organization-settings-NJoOWX7O.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-mVoV_Rm6.js";import"./AlertCircle-C1f-lxgM.js";import"./Tool01-D1AhyVfW.js";import"./ArrowUp-CN7A9Moq.js";import"./ArrowLeft-I3l36ZjU.js";import"./LinkBroken01-DdphioXH.js";import"./ShoppingBag01-C6o3UxmP.js";import"./ZoomOut-BBC9JXN3.js";import"./Building02-CmYuhs9q.js";import"./CheckCircle-Bbdmy3-4.js";import"./ChevronUp-BSosmJSL.js";import"./ChevronSelectorVertical-DnykG0uP.js";import"./UserSquare-C_0tdrPK.js";import"./Copy01-ClJqHrSL.js";import"./CreditCard01-DMXUjEhW.js";import"./DotsVertical-Bq-FhyDz.js";import"./Image01-BdJJuBkl.js";import"./Globe04-tkCkwAZ7.js";import"./SwitchHorizontal01-f0pF3KQj.js";import"./Key01-pWArwON-.js";import"./Link01-B9ootJcD.js";import"./Monitor01-z4WYVE55.js";import"./Sun-odOLuJdq.js";import"./Play-BI5wPgvY.js";import"./Plus-COolVLwU.js";import"./SearchMd-y-lLgqEG.js";import"./Trash01-DfoQYxMm.js";import"./Upload01-BBOzClAk.js";import"./User01-BErnjQ_p.js";import"./Users01-C3dqLukD.js";import"./XClose-DVNhmkHc.js";import"./use-connection-BSkRPmzW.js";import"./use-mcp-tools-DYCe1kmW.js";import"./types-E7V9DsSf.js";import"./utils-CVEq3hMx.js";import"./index-DxNvYUCM.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-Bn3NH_CO.js";import"./tooltip-Csaklmt2.js";import"./index-i1tVWfKf.js";import"./drawer-B7KRQQab.js";import"./collection-search-FUqdxX3H.js";import"./use-mobile-iljyEqdw.js";import"./use-mcp-prompts-DXCZ6ETO.js";import"./usage-stats-v3RVb3y_.js";import"./form-DwJJGoHU.js";import"./label-jgD_YhxC.js";import"./markdown-CRrGNQ7w.js";import"./use-copy-C2gLm1MS.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-CJACnvkW.js";import"./input-D8LiOOPc.js";import"./icon-button-DZGm8Il3.js";import"./file-type-icon-BWqwNVgv.js";import"./use-chat-navigation-Bvu49eld.js";import"./autosend-BPQxe36t.js";import"./shell-layout-CZlXU8th.js";import"./avatar-CU0Kskf0.js";import"./use-clock-tick-CTGpjemP.js";import"./command-DxMlrlhO.js";import"./index-C7oYZY8J.js";import"./integration-icon-DrkScr6s.js";import"./project-icon-Dxu4JaaE.js";import"./new-project-dialog-CBpaJ8k6.js";import"./repository-import-picker-BakXAFwC.js";import"./use-navigate-to-agent-5vkTFy3L.js";import"./repository-picker-D87Y1ek1.js";import"./useInfiniteQuery-DS2Ac8OP.js";import"./infiniteQueryObserver-h_ZnRx7A.js";import"./use-debounced-value-aN3O60O8.js";import"./required-auth-layout-Bu384CZN.js";import"./use-org-sso-DHEqWneE.js";import"./chat-draft-G2JgvBd_.js";import"./select-CTeWg4zR.js";import"./index-BdQq_4o_.js";import"./tabs-DUrf1MvN.js";import"./use-deco-credits-FcmcEJSN.js";import"./use-ai-providers-z0VfKQkA.js";import"./toggle-group-CE4nFV3j.js";import"./use-open-billing-url-DMVEBNGQ.js";import"./index-B6j23Txc.js";import"./checkbox-stYexPFQ.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-2IxOscUb.js";import"./input-CoM10iw9.js";import"./suggestion-BoCjWU35.js";import"./use-org-fs-D_boDaBx.js";import"./question-004-sINsf4GQ.js";import"./use-members-CkAWHXUS.js";import"./use-org-auth-client-nmfdksya.js";import"./feature-paywall-DJ1kFhSu.js";import"./plan-ladder-BhRiIQHY.js";import"./add-connection-dialog-C9PNcfRX.js";import"./extract-connection-data-Bb0jwaQt.js";import"./metadata-D72DunRR.js";import"./connection-BP1usXEe.js";import"./url-slug-D2I7DZDe.js";import"./connection-card-Dj9jvO4L.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-Cuvx1CdP.js";import"./schema-QYPrIfYk.js";import"./connection-form-helpers-DKKu5de3.js";import"./authenticate-and-persist-oauth-BXYWE9_-.js";import"./mcp-oauth-B4GQK3-6.js";import"./mcp-oauth-dXdRlURk.js";import"./collection-tabs-C65YIOoy.js";import"./badge-BDdWebYk.js";import"./use-infinite-scroll-B_Pt9LIF.js";import"./useSuspenseInfiniteQuery-0gOUIT7Y.js";import"./use-task-board-events-Dg4L1ieC.js";import"./pair-BQUvnIb5.js";import"./collapsible-kni6e36V.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-CKOO4BIM.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-CxN2-ZnF.js";import"./use-thread-outputs-DdmQKcR8.js";import"./resolve-tab-icon-B1kXJBt1.js";import"./use-task-metadata-CVVlEbjb.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-C4e_L0IJ.js";const y=x.lazy(()=>g(()=>import("./file-explorer-C5b7Tkm1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])).then(o=>({default:o.FileExplorer})));function w(o){const t=d.c(14),{openPath:m}=o,p=b(),{org:e}=j(),{currentBranch:i,taskId:h,virtualMcpId:a}=S();if(!a||!i){let s;t[0]!==p?(s=p("mainPanelTabs.codeTab.noSandboxToBrowse"),t[0]=p,t[1]=s):s=t[1];let l;t[2]!==p?(l=p("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[2]=p,t[3]=l):l=t[3];let f;return t[4]!==s||t[5]!==l?(f=r.jsx(P,{className:"h-full",title:s,description:l}),t[4]=s,t[5]=l,t[6]=f):f=t[6],f}let n;t[7]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(_,{className:"size-5 text-muted-foreground"})}),t[7]=n):n=t[7];const u=h??null;let c;return t[8]!==i||t[9]!==m||t[10]!==e.slug||t[11]!==u||t[12]!==a?(c=r.jsx("div",{className:"flex flex-col w-full h-full",children:r.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:r.jsx(x.Suspense,{fallback:n,children:r.jsx(y,{orgSlug:e.slug,virtualMcpId:a,branch:i,threadId:u,openPath:m})})})}),t[8]=i,t[9]=m,t[10]=e.slug,t[11]=u,t[12]=a,t[13]=c):c=t[13],c}function ur(){const o=d.c(3);let t;o[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},o[0]=t):t=o[0];const m=T(t),e=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let i;return o[1]!==e?(i=r.jsx(v,{tabId:"code",children:r.jsx(E,{feature:"cms",children:r.jsx(w,{openPath:e})})}),o[1]=e,o[2]=i):i=o[2],i}export{ur as default};
|