decocms 4.158.4 → 4.158.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DHgcYhmj.js → AlertCircle-CfFdwnXZ.js} +1 -1
- package/dist/client/assets/{AreaChart-BEVQvTdB.js → AreaChart-TKSdblbF.js} +1 -1
- package/dist/client/assets/{ArrowUp-BjGiCrXd.js → ArrowUp-BDKnJxn7.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-BrtQQBZo.js → ArrowUpRight-cdBAWo9P.js} +1 -1
- package/dist/client/assets/{Check-BUiHazRB.js → Check-B-7e7lLx.js} +1 -1
- package/dist/client/assets/{CheckCircle-deIb8vfW.js → CheckCircle-zg6aztXj.js} +1 -1
- package/dist/client/assets/{ChevronDown-DVHT62Jv.js → ChevronDown-DWUPZq62.js} +1 -1
- package/dist/client/assets/{ChevronRight-CXtW2QGA.js → ChevronRight-eYkHNBAE.js} +1 -1
- package/dist/client/assets/{ChevronUp-DSV9XoLO.js → ChevronUp-P7vKa0hT.js} +1 -1
- package/dist/client/assets/{Copy01-BiScKkTl.js → Copy01-ry_5nsA4.js} +1 -1
- package/dist/client/assets/{CpuChip01-ymhd_CXE.js → CpuChip01-BPZWf0q6.js} +1 -1
- package/dist/client/assets/{DotsVertical-BTRfdTt8.js → DotsVertical-B7XI2kxE.js} +1 -1
- package/dist/client/assets/{Eye-2NdB9a3I.js → Eye-DuiE_nsQ.js} +1 -1
- package/dist/client/assets/{FilterLines-D5dkLZLM.js → FilterLines-CxH3oBRp.js} +1 -1
- package/dist/client/assets/{HardDrive-B0OtmSeU.js → HardDrive-COC_n5FJ.js} +1 -1
- package/dist/client/assets/{Key01-YqgoRdYS.js → Key01-BvZzbDkx.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BgM6Eamn.js → LayoutLeft-CjasfC3V.js} +1 -1
- package/dist/client/assets/{LinkExternal01-4RYKD6aG.js → LinkExternal01-DB9kGnU7.js} +1 -1
- package/dist/client/assets/{LogOut01-kyU9jk8Z.js → LogOut01-DYAY-iRG.js} +1 -1
- package/dist/client/assets/{Monitor01-CkCi418U.js → Monitor01-BNBEC888.js} +1 -1
- package/dist/client/assets/{Palette-DL8ibZIP.js → Palette-C_Rd52JC.js} +1 -1
- package/dist/client/assets/{Play-DXP2nawR.js → Play-yv27Legy.js} +1 -1
- package/dist/client/assets/{Plus-s9TXkCXf.js → Plus-BWFEqMXX.js} +1 -1
- package/dist/client/assets/{SearchLg-BJZ6HADY.js → SearchLg-I1lWM1c8.js} +1 -1
- package/dist/client/assets/{SearchMd-B0b0JvjU.js → SearchMd-Cl3qd-YT.js} +1 -1
- package/dist/client/assets/{Settings02-Cik_-8YD.js → Settings02-Cfys6eXb.js} +1 -1
- package/dist/client/assets/{Shield01-DktY1ymp.js → Shield01-D5Fj49dr.js} +1 -1
- package/dist/client/assets/{Star01-B7B_Bp4u.js → Star01-CcjPU5DP.js} +1 -1
- package/dist/client/assets/{Stars01-BuDHdfVJ.js → Stars01-BKe-sVIt.js} +1 -1
- package/dist/client/assets/{Stars02-D3gkU1sm.js → Stars02-BcXkVvMs.js} +1 -1
- package/dist/client/assets/{Sun-oATNnXub.js → Sun-BtgyC0c2.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BKhUbXg3.js → SwitchHorizontal01-C3V_SwOu.js} +1 -1
- package/dist/client/assets/{Tool01-bycCw6Yq.js → Tool01-BNFooVzW.js} +1 -1
- package/dist/client/assets/{Tool02-DkWgM-Xb.js → Tool02-CTEhd1Jx.js} +1 -1
- package/dist/client/assets/{Trash01-OeJHEgLq.js → Trash01-CxTS6BEq.js} +1 -1
- package/dist/client/assets/{TrendUp01-BNOj1CR7.js → TrendUp01-CHl4nTAZ.js} +1 -1
- package/dist/client/assets/{Upload01-CagMm8l-.js → Upload01-BsxI6Efo.js} +1 -1
- package/dist/client/assets/{User01-Cl-WHRUM.js → User01-DG9uHz3K.js} +1 -1
- package/dist/client/assets/{Users01-CdXPM6jQ.js → Users01-MNd4Bwfh.js} +1 -1
- package/dist/client/assets/{Users03-D81pR5Nu.js → Users03-BUh34Q1t.js} +1 -1
- package/dist/client/assets/{X-Dlcnc76o.js → X-Dg8tPMfU.js} +1 -1
- package/dist/client/assets/{XCircle-B2ilB9Cf.js → XCircle-CAU4GJO1.js} +1 -1
- package/dist/client/assets/{XClose-ClDBdatJ.js → XClose-7N_-vp-v.js} +1 -1
- package/dist/client/assets/{Zap-DNeYc2oa.js → Zap-DThgRyGW.js} +1 -1
- package/dist/client/assets/{ZapSquare-C9GDAGB2.js → ZapSquare-DkW8eZus.js} +1 -1
- package/dist/client/assets/{access-gate-DFNR9Fa9.js → access-gate-BO46jkUV.js} +1 -1
- package/dist/client/assets/{add-section-modal-CfAd9-k7.js → add-section-modal-CXToxqNC.js} +1 -1
- package/dist/client/assets/{agent-icon-Bi_etpab.js → agent-icon-qunpMZy6.js} +1 -1
- package/dist/client/assets/{agents-list-w_msxNoQ.js → agents-list-C852VWp0.js} +1 -1
- package/dist/client/assets/{ai-providers-U35HOpCu.js → ai-providers-y5ExV0RP.js} +1 -1
- package/dist/client/assets/{alert-CaX780Df.js → alert-Do2X-2P_.js} +1 -1
- package/dist/client/assets/{alert-dialog-8D4mUPqK.js → alert-dialog-JnQIgrXT.js} +1 -1
- package/dist/client/assets/{app-editor-c-LmG2YO.js → app-editor-Ceq4O9RF.js} +1 -1
- package/dist/client/assets/{auth-DvTfhvfV.js → auth-BwZ-QsOo.js} +1 -1
- package/dist/client/assets/{auth-catchall-CqRte1cL.js → auth-catchall-Be2xT-sn.js} +1 -1
- package/dist/client/assets/{auth-entry-ZakaoK2m.js → auth-entry-C1NoJMT2.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CelxYjP8.js → auth-split-layout-Bwny3077.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-ntAb-cm4.js → authenticate-and-persist-oauth-D2vE_f2a.js} +1 -1
- package/dist/client/assets/{automation-list-row-BEzgaGjj.js → automation-list-row-Cq00-2nD.js} +1 -1
- package/dist/client/assets/{automation-runs-DxJP2dcs.js → automation-runs-DxLE61e4.js} +1 -1
- package/dist/client/assets/{automations-DfEHpXj-.js → automations-C62Z5_Hd.js} +1 -1
- package/dist/client/assets/{avatar-ClzxBV9e.js → avatar-CbW1dwVE.js} +1 -1
- package/dist/client/assets/{badge-WA1F-Xjd.js → badge--dvhIOY0.js} +1 -1
- package/dist/client/assets/{block-document-D8mWb8_K.js → block-document-B7hDe-pO.js} +1 -1
- package/dist/client/assets/{brand-context-C_N6-kYm.js → brand-context-Cr3RwL-5.js} +1 -1
- package/dist/client/assets/{buckets-4LmeJZ5M.js → buckets-CcOLbRN-.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-prDaiGMj.js → bulk-category-panel-DVuMrwK7.js} +1 -1
- package/dist/client/assets/{calendar-B5abXP2V.js → calendar-D6CVl1pM.js} +1 -1
- package/dist/client/assets/{capability-load-error-ChNrkvvm.js → capability-load-error-LpVoD-y8.js} +1 -1
- package/dist/client/assets/{card-LO6dZXil.js → card-DiQb3hwi.js} +1 -1
- package/dist/client/assets/{category-editor-DTAvnXRa.js → category-editor-B8Z4XUTN.js} +1 -1
- package/dist/client/assets/{chat-context-zeqQcMti.js → chat-context-CpTaAsRF.js} +1 -1
- package/dist/client/assets/{checkbox-Cw8HKHHi.js → checkbox-CZhNYG0l.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CuDoYzaJ.js → cli-auth-success-BkXz_Vsg.js} +1 -1
- package/dist/client/assets/{collection-detail-DbfR6ex-.js → collection-detail-Dg2DRNqn.js} +1 -1
- package/dist/client/assets/{collection-display-button-CiMqtlsV.js → collection-display-button-D4q8Kj8c.js} +1 -1
- package/dist/client/assets/{collection-search-D1_K1UqQ.js → collection-search-Bk_P-ylh.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-ClCoVIlJ.js → collection-table-wrapper-DzI7eQHZ.js} +1 -1
- package/dist/client/assets/{collection-tabs-1SHlsghV.js → collection-tabs-D9N4BGfI.js} +1 -1
- package/dist/client/assets/{command-DShS1UxO.js → command-D3M8hpZU.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-mGrOJZ2Q.js → commerce-onboarding-BswynNKD.js} +1 -1
- package/dist/client/assets/{companions-core-_Z_-cLK0.js → companions-core-B8fAyK4i.js} +1 -1
- package/dist/client/assets/{connect-8eg4814h.js → connect-BabuKnoG.js} +1 -1
- package/dist/client/assets/{connection-C5dpxEWY.js → connection-BdSElZY1.js} +1 -1
- package/dist/client/assets/{connection-card-Dy3kZgzh.js → connection-card-DOThzLib.js} +1 -1
- package/dist/client/assets/{connection-detail-C-T65p3D.js → connection-detail-DoCYLywt.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DzIjKYNM.js → connection-form-helpers-C815BAxv.js} +1 -1
- package/dist/client/assets/{connections-qb_n_b8X.js → connections-DfFsyYzo.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-UyDKxVe5.js → decopilot-sse-pool-BLFJcikZ.js} +1 -1
- package/dist/client/assets/{dialog-DPP64Vmy.js → dialog-DgBltAR3.js} +1 -1
- package/dist/client/assets/{domain-settings-qgk3KUji.js → domain-settings-DvZ_Xgl6.js} +1 -1
- package/dist/client/assets/{drawer-DQBNgMoI.js → drawer-TlHbyDHk.js} +1 -1
- package/dist/client/assets/{dropdown-menu-_CNw_Rd2.js → dropdown-menu-BhQWaN4e.js} +1 -1
- package/dist/client/assets/{empty-state-Bo8R97U8.js → empty-state-GrYonjKR.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DJ_27HNh.js → extract-connection-data-o90QcJgg.js} +1 -1
- package/dist/client/assets/{file-explorer-DYs3gXnq.js → file-explorer-ChpWl5-y.js} +1 -1
- package/dist/client/assets/{form-DN-xptG7.js → form-C-nnmq8y.js} +1 -1
- package/dist/client/assets/{general-Gj6efsET.js → general-jxE5N7C-.js} +1 -1
- package/dist/client/assets/{github-repo-picker-BZvtdGKM.js → github-repo-picker-BW75PxyQ.js} +1 -1
- package/dist/client/assets/{hooks-CIkoIPmU.js → hooks-Dt-IsyhN.js} +1 -1
- package/dist/client/assets/{index-BO5x5Pru.js → index-0ioYiKc7.js} +3 -3
- package/dist/client/assets/{index-UlYfRVpK.js → index-BGz7Oj1y.js} +1 -1
- package/dist/client/assets/{index-DH-TcJCw.js → index-BT9VfrkL.js} +5 -5
- package/dist/client/assets/{index-kMUJRxxt.js → index-BXR60nGS.js} +1 -1
- package/dist/client/assets/{index-C1sOBexM.js → index-CgC6_BqM.js} +3 -3
- package/dist/client/assets/{index-DrFramxc.js → index-CrtZvmZX.js} +1 -1
- package/dist/client/assets/{index-C7as0S1_.js → index-Czlev_FG.js} +1 -1
- package/dist/client/assets/{index-CUEfZQxJ.js → index-D6D5nh72.js} +1 -1
- package/dist/client/assets/{index-DXarGZ3N.js → index-DUsg6L-H.js} +1 -1
- package/dist/client/assets/{index-BJRntjkm.js → index-DhbhJ-_P.js} +1 -1
- package/dist/client/assets/{index-Cywu6UQw.js → index-c8Y6KHdy.js} +1 -1
- package/dist/client/assets/{index-redirect-Du6MyR-M.js → index-redirect-Bh-MpAUJ.js} +1 -1
- package/dist/client/assets/{input-BTM0qsuN.js → input-LzB-yjCJ.js} +1 -1
- package/dist/client/assets/{integration-icon-CdhO4lXW.js → integration-icon-BD4XVUsh.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-C8tcZa6j.js → invite-member-dialog-BZXNSwGL.js} +1 -1
- package/dist/client/assets/{label-BsRu6KPb.js → label-CvCjhhvP.js} +1 -1
- package/dist/client/assets/{layout-C-4QBfaW.js → layout-CAVK2-Pn.js} +1 -1
- package/dist/client/assets/{login-CFy9FwMZ.js → login-LuOAN0JP.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CjkIrNFU.js → mcp-oauth-Ci2B8d71.js} +1 -1
- package/dist/client/assets/{members-DfwpiipA.js → members-BoZm_3Hd.js} +1 -1
- package/dist/client/assets/{monaco-editor-Duf20mG5.js → monaco-editor-0PPzWwYL.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-6icDURsL.js → monitoring-stats-row-B3MNtz0D.js} +1 -1
- package/dist/client/assets/{multi-select-DZpOU5j9.js → multi-select-BnL_WqC3.js} +1 -1
- package/dist/client/assets/{oauth-callback-DizBfpG2.js → oauth-callback-KWblFzPN.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BnxkGN6L.js → oauth-callback-ai-provider-Csqgs6iJ.js} +1 -1
- package/dist/client/assets/{onboarding-DEaTHfx_.js → onboarding-BQD3-PB7.js} +1 -1
- package/dist/client/assets/{org-layout-Clg5-oLk.js → org-layout-DtQGRF1q.js} +1 -1
- package/dist/client/assets/{organization-choice-DYWtdMnp.js → organization-choice-BMgBZl2I.js} +1 -1
- package/dist/client/assets/{orgs-IbJZUnEG.js → orgs-Bh3KgNmJ.js} +1 -1
- package/dist/client/assets/{page-seo-form-B2tQRj6Q.js → page-seo-form-UpbXj9rF.js} +1 -1
- package/dist/client/assets/{popover-Zr_OONk-.js → popover-D2_mdypX.js} +1 -1
- package/dist/client/assets/{post-editor-CkLtxn92.js → post-editor-DUCuFUmX.js} +1 -1
- package/dist/client/assets/{primitives-BBu_-gLI.js → primitives-BJ7SpPX2.js} +1 -1
- package/dist/client/assets/{profile-DnOcgyRH.js → profile-UlV5L4wi.js} +1 -1
- package/dist/client/assets/project-app-view-DSKHk2od.js +1 -0
- package/dist/client/assets/record-editor-Bc5ock-i.js +1 -0
- package/dist/client/assets/{redirect-editor-B4QHjtRH.js → redirect-editor-BlahU3Y8.js} +1 -1
- package/dist/client/assets/registry-CfiV1wjo.js +2 -0
- package/dist/client/assets/{registry-layout-Bh-Lx1xs.js → registry-layout-K0HZWg39.js} +1 -1
- package/dist/client/assets/{reports-I8qnlpjm.js → reports-CvICh6YV.js} +1 -1
- package/dist/client/assets/{require-capability-V9XEXyHx.js → require-capability-Bl1y8R6W.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BkLuz0xG.js → required-auth-layout-B2dUelHb.js} +1 -1
- package/dist/client/assets/{reset-password-BaJJa7Yt.js → reset-password-CoWnr42Y.js} +1 -1
- package/dist/client/assets/{roles-jPb9_FaL.js → roles-Cz4ZU5wG.js} +1 -1
- package/dist/client/assets/{search-input-DQKtw49i.js → search-input-DhRjyBMv.js} +1 -1
- package/dist/client/assets/{secrets-k3uayOP4.js → secrets-BPJ4A36l.js} +1 -1
- package/dist/client/assets/{sections-editor-DoF6t-fy.js → sections-editor-Daq6hZI2.js} +1 -1
- package/dist/client/assets/{select-CxnnShqp.js → select-BbJzS6Qk.js} +1 -1
- package/dist/client/assets/{select-model-CFSMQJVJ.js → select-model-DiX6HHDR.js} +1 -1
- package/dist/client/assets/{self-tool-result-0ZelGITE.js → self-tool-result-CiNCj_xu.js} +1 -1
- package/dist/client/assets/{seo-editor-zQDTGem3.js → seo-editor-BzE_VyC_.js} +1 -1
- package/dist/client/assets/{settings-layout-BunbY8cn.js → settings-layout-BPhPWGQT.js} +1 -1
- package/dist/client/assets/{settings-section-BitTAsAK.js → settings-section-CMl708Co.js} +1 -1
- package/dist/client/assets/{shell-controls-D7oR6bHX.js → shell-controls-BkPYHOZf.js} +1 -1
- package/dist/client/assets/{shell-layout-wdm9O3k_.js → shell-layout-CfjylIkP.js} +1 -1
- package/dist/client/assets/{sidebar-Dqgf5Z8w.js → sidebar-CvSqTfJw.js} +1 -1
- package/dist/client/assets/{skeleton-DtkAAnkz.js → skeleton-BwJjdFy1.js} +1 -1
- package/dist/client/assets/{spinner-DduBhWu4.js → spinner-KdOCFgz2.js} +1 -1
- package/dist/client/assets/{sso-BerwOrrj.js → sso-CcdMfDfk.js} +1 -1
- package/dist/client/assets/{store-Dr_ZyF1h.js → store-CvqeMQg-.js} +1 -1
- package/dist/client/assets/store-registry-DKltjerd.js +2 -0
- package/dist/client/assets/{studio-tools-DVHzOfNB.js → studio-tools-BxWPzFyo.js} +1 -1
- package/dist/client/assets/{switch-DBwbz3Xi.js → switch-BI3RvS7C.js} +1 -1
- package/dist/client/assets/{tab-id-DIwNOdlI.js → tab-id-Bcv4R829.js} +1 -1
- package/dist/client/assets/{table-UWKt5pp7.js → table-LC7gSMmV.js} +1 -1
- package/dist/client/assets/{tabs-Cz18-C_m.js → tabs-QZRHmcYV.js} +1 -1
- package/dist/client/assets/{textarea-FkpTRIPl.js → textarea-W9yu4w53.js} +1 -1
- package/dist/client/assets/{toggle-group-B1h1YnnN.js → toggle-group-1UOFTX4u.js} +1 -1
- package/dist/client/assets/{toolbar-Dx-gYRwr.js → toolbar-DuVg2XbQ.js} +1 -1
- package/dist/client/assets/{tooltip-ofGcZCQ9.js → tooltip-4N3l37eX.js} +1 -1
- package/dist/client/assets/{use-ai-providers-fv4N3cN0.js → use-ai-providers-pGQrA-mO.js} +1 -1
- package/dist/client/assets/{use-automations-7DllPAoQ.js → use-automations-Q-5vVCnS.js} +1 -1
- package/dist/client/assets/{use-autosave-DWwd6YYs.js → use-autosave-Ccd7Vo8K.js} +1 -1
- package/dist/client/assets/{use-capability-D0kE_ZCg.js → use-capability-Dr2OHEfY.js} +1 -1
- package/dist/client/assets/{use-clock-tick-qhYBud6o.js → use-clock-tick-Cfk7Id7y.js} +1 -1
- package/dist/client/assets/{use-connection-B3bJbKLC.js → use-connection-386I3nT4.js} +1 -1
- package/dist/client/assets/{use-copy-B5c1UABg.js → use-copy-CLCO-tcE.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Cv8fn_R5.js → use-create-virtual-mcp-AYhj79vY.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-MkDvOBH_.js → use-debounced-autosave-DrwJurKG.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B2YQoJvH.js → use-debounced-value-CQ7rLv8a.js} +1 -1
- package/dist/client/assets/{use-deco-credits-BJ-zfpWl.js → use-deco-credits-B-TQ8G7Q.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Dqe0FXIp.js → use-decopilot-events-ClAfF5mB.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BuM_Iq0b.js → use-delete-connection-7fNAqtoy.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DVBkVgEx.js → use-deployment-admin-DzGUiEHP.js} +1 -1
- package/dist/client/assets/{use-file-configs-VF0CPN8y.js → use-file-configs-D8ALh14t.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-BGYehp8R.js → use-infinite-scroll-DzJebsep.js} +1 -1
- package/dist/client/assets/{use-join-requests-Cn1ZYd0X.js → use-join-requests-B4gaqpSD.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-Bu0EtkQC.js → use-mcp-auth-status-CTOjUXqA.js} +1 -1
- package/dist/client/assets/{use-mcp-client-Bx5rEOWN.js → use-mcp-client-r9bNS3V_.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DFFHiaSm.js → use-mcp-tools-DoMI74tN.js} +1 -1
- package/dist/client/assets/{use-members-B_BHE6F0.js → use-members-Yv0_QDjC.js} +1 -1
- package/dist/client/assets/{use-mobile-DsXjrI_q.js → use-mobile-DdcCobXA.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CBxVi6Fh.js → use-navigate-to-agent-pQaKjPr4.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CpjH_OGj.js → use-org-auth-client-D4W9h6ep.js} +1 -1
- package/dist/client/assets/{use-org-sso-CktOBlhC.js → use-org-sso-BivFk41s.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BVLRjjmy.js → use-organization-roles-B89ENAPu.js} +1 -1
- package/dist/client/assets/{use-organization-settings-ClbIG6OQ.js → use-organization-settings-CL71cbVC.js} +1 -1
- package/dist/client/assets/{use-registry-connections-C4l2MQas.js → use-registry-connections-BjWNr70B.js} +1 -1
- package/dist/client/assets/{use-secrets-DbZZ7Rsf.js → use-secrets-CxyLaHdM.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CdflbWVf.js → use-status-sounds-B_P34wWJ.js} +1 -1
- package/dist/client/assets/{use-tags-DnBvmtgf.js → use-tags-D6Aeg4sX.js} +1 -1
- package/dist/client/assets/{use-view-mode-eqBMFxfR.js → use-view-mode-BcoR6xWp.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DYU8JBzA.js → use-virtual-mcp-D4zwGTS1.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CyGmmApk.js +1 -0
- package/dist/client/assets/{useQueries-CCRzsil3.js → useQueries-CGkA9F1u.js} +1 -1
- package/dist/client/assets/{useRouterState-w7yN5O6p.js → useRouterState-D2bG2iRy.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CNWeGJDS.js +1 -0
- package/dist/client/assets/{users-Dxn47AOx.js → users-B9k71dBe.js} +1 -1
- package/dist/client/assets/{variant-calendar-Bm6nnLeu.js → variant-calendar-DoxQAb9d.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-B8Adb4AB.js → view-mode-toggle-31t9Hqxa.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/project-app-view-DjdVPXJ-.js +0 -1
- package/dist/client/assets/record-editor-2656X6eZ.js +0 -1
- package/dist/client/assets/registry-CyFT1ImX.js +0 -2
- package/dist/client/assets/store-registry-CJbcJ96u.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DBAY8E_5.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-OxKNQfNq.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-BO5x5Pru.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-Bi_etpab.js";import{i as Tt}from"./ChevronRight-CXtW2QGA.js";import{L as jt}from"./label-BsRu6KPb.js";import{l as ft}from"./automation-runs-DxJP2dcs.js";import{S as Nt}from"./switch-DBwbz3Xi.js";import{T as wt,c as kt,a as Mt}from"./tooltip-ofGcZCQ9.js";import{V as _t}from"./view-mode-toggle-B8Adb4AB.js";import"./AlertCircle-DHgcYhmj.js";import"./Tool01-bycCw6Yq.js";import"./ArrowUp-BjGiCrXd.js";import"./Settings02-Cik_-8YD.js";import"./Tool02-DkWgM-Xb.js";import"./XCircle-B2ilB9Cf.js";import"./ArrowUpRight-BrtQQBZo.js";import"./TrendUp01-BNOj1CR7.js";import"./ZapSquare-C9GDAGB2.js";import"./Users03-D81pR5Nu.js";import"./CheckCircle-deIb8vfW.js";import"./Check-BUiHazRB.js";import"./ChevronDown-DVHT62Jv.js";import"./ChevronUp-DSV9XoLO.js";import"./DotsVertical-BTRfdTt8.js";import"./Stars02-D3gkU1sm.js";import"./Copy01-BiScKkTl.js";import"./CpuChip01-ymhd_CXE.js";import"./Eye-2NdB9a3I.js";import"./FilterLines-D5dkLZLM.js";import"./Star01-B7B_Bp4u.js";import"./Palette-DL8ibZIP.js";import"./SwitchHorizontal01-BKhUbXg3.js";import"./HardDrive-B0OtmSeU.js";import"./Key01-YqgoRdYS.js";import"./LayoutLeft-BgM6Eamn.js";import"./LinkExternal01-4RYKD6aG.js";import"./LogOut01-kyU9jk8Z.js";import"./Monitor01-CkCi418U.js";import"./Sun-oATNnXub.js";import"./Play-DXP2nawR.js";import"./Plus-s9TXkCXf.js";import"./SearchLg-BJZ6HADY.js";import"./SearchMd-B0b0JvjU.js";import"./Shield01-DktY1ymp.js";import"./Stars01-BuDHdfVJ.js";import"./Trash01-OeJHEgLq.js";import"./Upload01-CagMm8l-.js";import"./User01-Cl-WHRUM.js";import"./Users01-CdXPM6jQ.js";import"./XClose-ClDBdatJ.js";import"./X-Dlcnc76o.js";import"./Zap-DNeYc2oa.js";import"./select-CxnnShqp.js";import"./useInfiniteQuery-DBAY8E_5.js";import"./use-infinite-scroll-BGYehp8R.js";import"./use-connection-B3bJbKLC.js";import"./use-mcp-client-Bx5rEOWN.js";import"./auth-DvTfhvfV.js";import"./use-virtual-mcp-DYU8JBzA.js";import"./card-LO6dZXil.js";import"./sidebar-Dqgf5Z8w.js";import"./use-mobile-DsXjrI_q.js";import"./table-UWKt5pp7.js";import"./empty-state-Bo8R97U8.js";import"./use-members-B_BHE6F0.js";import"./use-org-auth-client-CpjH_OGj.js";import"./use-clock-tick-qhYBud6o.js";import"./use-automations-7DllPAoQ.js";import"./studio-tools-DVHzOfNB.js";import"./useSuspenseInfiniteQuery-OxKNQfNq.js";import"./avatar-ClzxBV9e.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-B5c1UABg.js";import"./calendar-B5abXP2V.js";import"./dialog-DPP64Vmy.js";import"./tab-id-DIwNOdlI.js";import"./hooks-CIkoIPmU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-UyDKxVe5.js";import"./chat-context-zeqQcMti.js";import"./use-ai-providers-fv4N3cN0.js";import"./use-decopilot-events-Dqe0FXIp.js";import"./use-organization-settings-ClbIG6OQ.js";import"./monaco-editor-Duf20mG5.js";import"./spinner-DduBhWu4.js";import"./index-DrFramxc.js";import"./shell-layout-wdm9O3k_.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-BkLuz0xG.js";import"./use-org-sso-CktOBlhC.js";import"./integration-icon-CdhO4lXW.js";import"./use-navigate-to-agent-CBxVi6Fh.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-BEVQvTdB.js";import"./form-DN-xptG7.js";import"./input-BTM0qsuN.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
|
|
1
|
+
import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-0ioYiKc7.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-qunpMZy6.js";import{i as Tt}from"./ChevronRight-eYkHNBAE.js";import{L as jt}from"./label-CvCjhhvP.js";import{l as ft}from"./automation-runs-DxLE61e4.js";import{S as Nt}from"./switch-BI3RvS7C.js";import{T as wt,c as kt,a as Mt}from"./tooltip-4N3l37eX.js";import{V as _t}from"./view-mode-toggle-31t9Hqxa.js";import"./AlertCircle-CfFdwnXZ.js";import"./Tool01-BNFooVzW.js";import"./ArrowUp-BDKnJxn7.js";import"./Settings02-Cfys6eXb.js";import"./Tool02-CTEhd1Jx.js";import"./XCircle-CAU4GJO1.js";import"./ArrowUpRight-cdBAWo9P.js";import"./TrendUp01-CHl4nTAZ.js";import"./ZapSquare-DkW8eZus.js";import"./Users03-BUh34Q1t.js";import"./CheckCircle-zg6aztXj.js";import"./Check-B-7e7lLx.js";import"./ChevronDown-DWUPZq62.js";import"./ChevronUp-P7vKa0hT.js";import"./DotsVertical-B7XI2kxE.js";import"./Stars02-BcXkVvMs.js";import"./Copy01-ry_5nsA4.js";import"./CpuChip01-BPZWf0q6.js";import"./Eye-DuiE_nsQ.js";import"./FilterLines-CxH3oBRp.js";import"./Star01-CcjPU5DP.js";import"./Palette-C_Rd52JC.js";import"./SwitchHorizontal01-C3V_SwOu.js";import"./HardDrive-COC_n5FJ.js";import"./Key01-BvZzbDkx.js";import"./LayoutLeft-CjasfC3V.js";import"./LinkExternal01-DB9kGnU7.js";import"./LogOut01-DYAY-iRG.js";import"./Monitor01-BNBEC888.js";import"./Sun-BtgyC0c2.js";import"./Play-yv27Legy.js";import"./Plus-BWFEqMXX.js";import"./SearchLg-I1lWM1c8.js";import"./SearchMd-Cl3qd-YT.js";import"./Shield01-D5Fj49dr.js";import"./Stars01-BKe-sVIt.js";import"./Trash01-CxTS6BEq.js";import"./Upload01-BsxI6Efo.js";import"./User01-DG9uHz3K.js";import"./Users01-MNd4Bwfh.js";import"./XClose-7N_-vp-v.js";import"./X-Dg8tPMfU.js";import"./Zap-DThgRyGW.js";import"./select-BbJzS6Qk.js";import"./useInfiniteQuery-CyGmmApk.js";import"./use-infinite-scroll-DzJebsep.js";import"./use-connection-386I3nT4.js";import"./use-mcp-client-r9bNS3V_.js";import"./auth-BwZ-QsOo.js";import"./use-virtual-mcp-D4zwGTS1.js";import"./card-DiQb3hwi.js";import"./sidebar-CvSqTfJw.js";import"./use-mobile-DdcCobXA.js";import"./table-LC7gSMmV.js";import"./empty-state-GrYonjKR.js";import"./use-members-Yv0_QDjC.js";import"./use-org-auth-client-D4W9h6ep.js";import"./use-clock-tick-Cfk7Id7y.js";import"./use-automations-Q-5vVCnS.js";import"./studio-tools-BxWPzFyo.js";import"./useSuspenseInfiniteQuery-CNWeGJDS.js";import"./avatar-CbW1dwVE.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-CLCO-tcE.js";import"./calendar-D6CVl1pM.js";import"./dialog-DgBltAR3.js";import"./tab-id-Bcv4R829.js";import"./hooks-Dt-IsyhN.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BLFJcikZ.js";import"./chat-context-CpTaAsRF.js";import"./use-ai-providers-pGQrA-mO.js";import"./use-decopilot-events-ClAfF5mB.js";import"./use-organization-settings-CL71cbVC.js";import"./monaco-editor-0PPzWwYL.js";import"./spinner-KdOCFgz2.js";import"./index-CrtZvmZX.js";import"./shell-layout-CfjylIkP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-B2dUelHb.js";import"./use-org-sso-BivFk41s.js";import"./integration-icon-BD4XVUsh.js";import"./use-navigate-to-agent-pQaKjPr4.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-TKSdblbF.js";import"./form-C-nnmq8y.js";import"./input-LzB-yjCJ.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as $,r as T,m as f,j as i}from"./index-
|
|
1
|
+
import{c as $,r as T,m as f,j as i}from"./index-0ioYiKc7.js";import{c as k,T as I,a as P}from"./tooltip-4N3l37eX.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
|
package/dist/client/index.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
|
|
51
51
|
<meta name="twitter:image" content="/og-image.png" />
|
|
52
52
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-0ioYiKc7.js"></script>
|
|
54
54
|
<link rel="stylesheet" crossorigin href="/assets/index-CYhSS9zf.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -83546,7 +83546,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
|
|
|
83546
83546
|
`);function v(d){if(t===void 0)return!0;let D=Jq(d),_=D&&Jq(t)?Uou(t):t,N=D?Uou(d):Tou(d),Z=ort(_,N);return Z===""||!Z.startsWith("..")&&!ert(Z)}return{upsert(d){f.run({$handle:d.handle,$status:d.status,$sandboxPath:d.sandboxPath,$port:d.port??null,$previewUrl:d.previewUrl??null,$repoCloneUrl:d.repoCloneUrl??null,$branch:d.branch??null,$projectName:d.projectName??null,$error:d.error??null,$now:Date.now()})},list(){return l.all().map(_6i)},reconcile(){let d=Date.now();for(let D of l.all().map(_6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!Jq(D.sandboxPath)){c.run({$handle:D.handle,$now:d});continue}if(D.status==="spawning"||D.status==="ready"||D.status==="failed"||D.status==="missing")w.run({$handle:D.handle,$now:d})}return l.all().map(_6i)},prune(d){let D=[],_=[],N=this.reconcile();for(let Z of N){if(!v(Z.sandboxPath)){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(d.missing&&Z.status==="missing"){$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!d.merged||!Jq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!n_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=n_(Z.sandboxPath,["status","--porcelain"]);if(!B.ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(B.stdout.trim()!==""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let F=Pou(Z.sandboxPath,Z.branch);if(F===null){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!F){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}rrt(Z.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:D,skipped:_}},delete(d){$.run({$handle:d})},inspect(d){let D=h.get({$handle:d});if(D===null)return null;let _=_6i(D),N=0,Z=null;if(Jq(_.sandboxPath)&&n_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=n_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
|
|
83547
83547
|
`).length}if(_.branch!==null&&_.branch.trim()!=="")Z=Pou(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var iCi=()=>{};function umt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function Gou(i,u){if(process.platform==="win32")return;for(let t of umt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Iou=()=>{};import{existsSync as tmt,readdirSync as fmt}from"fs";import{rm as lmt}from"fs/promises";import{join as xou}from"path";async function kou(i,u={}){let t=u.detach??Emt,f=u.exists??tmt,l=u.readdir??((w)=>fmt(w)),E=u.rm??((w)=>lmt(w,{recursive:!0,force:!0})),c=xou(i,"org");if(f(c))for(let w of l(c))t(xou(c,w));await E(i)}var Emt=(i)=>Gou(i,process.platform==="darwin");var jou=O(()=>{Iou()});import{join as cmt}from"path";function Xou(i){let u=i.purge??kou;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??cmt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof z6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var Jou=O(()=>{Z4();jou()});import{randomBytes as wmt}from"crypto";import{mkdir as $mt}from"fs/promises";import{createServer as hmt}from"net";import{join as vmt}from"path";function Kou(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function You(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function Wou(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function dmt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function Dmt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:dmt(i.repo?.cloneUrl)}}function Lou(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??_mt,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>vmt(i.dataDir,"sandboxes",N),w=(N)=>{try{i.registry?.upsert(N)}catch(Z){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${N.handle} status=${N.status}:`,Z)}},$=(N)=>{try{i.onEvent?.(N)}catch{}},h=async(N)=>{let Z=new AbortController,B=setTimeout(()=>Z.abort(),1500);try{let F=await l(`${N}/health`,{signal:Z.signal});if(!F.ok)console.warn(`[user-desktop] probe ${N}/health \u2192 ${F.status} (treating as dead)`);return F.ok}catch(F){return console.warn(`[user-desktop] probe ${N}/health failed: ${F instanceof Error?F.message:String(F)} (treating as dead)`),!1}finally{clearTimeout(B)}},v=(N)=>{console.warn(`[user-desktop] evicting dead daemon handle=${N.handle} port=${N.port}`);try{N.process.kill("SIGTERM")}catch{}if(t.get(N.handle)===N)t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:c(N.handle),port:null,previewUrl:null,...N.registryMetadata,error:null}),$({handle:N.handle,phase:"evicted"})},d=new Map;function D(){if(t.size<u)return;let N=[...t.values()].filter((B)=>B.activeDispatchCount===0).sort((B,F)=>B.lastUsedAt-F.lastUsedAt);if(N.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let Z=N[0];console.log(`[user-desktop] evicting LRU victim handle=${Z.handle} port=${Z.port} (cap ${u} reached, size=${t.size})`);try{Z.process.kill("SIGTERM")}catch{}t.delete(Z.handle),w({handle:Z.handle,status:"stopped",sandboxPath:c(Z.handle),port:null,previewUrl:null,...Z.registryMetadata,error:null}),$({handle:Z.handle,phase:"evicted"})}let _=async(N)=>{let Z=Dmt(N),B=c(N.handle);w({handle:N.handle,status:"spawning",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"spawning",sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),D();let F,g=null,U;try{await $mt(B,{recursive:!0}),console.log(`[user-desktop] ensure handle=${N.handle} repo=${N.repo?.cloneUrl??"(none)"} branch=${N.repo?.branch??"(none)"} runtime=${N.workload?.runtime??"(autodetect)"} pm=${N.workload?.packageManager??"(autodetect)"}`),U=wmt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);F=k,console.log(`[user-desktop] spawn handle=${N.handle} port=${F} devPort=${I} workdir=${B}`),g=await Promise.resolve(i.spawnDaemon({workdir:B,handle:N.handle,port:F,daemonToken:U,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(j){throw Kou("the sandbox didn't come online in time",j)}console.log(`[user-desktop] healthy handle=${N.handle} port=${F} \u2014 posting config`);try{await i.postConfig(F,I,{repo:N.repo,workload:N.workload,operator:N.operator},U)}catch(j){throw Kou(You(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((You(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${N.handle} port=${F??"(none)"}${g?" (killing daemon)":""}:`,k),g)try{g.kill("SIGKILL")}catch{}throw $({handle:N.handle,phase:"failed",error:Wou(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:Wou(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${T} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:T,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:U,registryMetadata:Z};if(t.set(N.handle,G),w({handle:N.handle,status:"ready",sandboxPath:B,port:F,previewUrl:A,...Z,error:null}),$({handle:N.handle,phase:"ready",port:F,previewUrl:A,sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),g.exited)g.exited.then(()=>{if(t.get(N.handle)===G)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${N.handle} port=${F} \u2014 removing from cache`),t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${N.handle} port=${F} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:A,port:F}};return{async ensureSandbox(N){let Z=t.get(N.handle);if(Z){if(await h(Z.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${N.handle} port=${Z.port} (alive)`),Z.lastUsedAt=Date.now(),{sandboxApiUrl:Z.sandboxApiUrl,previewUrl:Z.previewUrl,port:Z.port};console.warn(`[user-desktop] cache stale handle=${N.handle} port=${Z.port} \u2014 respawning`),v(Z)}let B=d.get(N.handle);if(B)return console.log(`[user-desktop] joining in-flight ensure handle=${N.handle}`),B;let F=_(N).finally(()=>{d.delete(N.handle)});return d.set(N.handle,F),F},proxyPort(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now();return Z?.port??null},getDaemonToken(N){return t.get(N)?.daemonToken??null},hasHandle(N){return t.has(N)||d.has(N)},recordHit(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now()},acquireDispatch(N){let Z=t.get(N);if(!Z)return()=>{};Z.activeDispatchCount+=1;let B=!1;return()=>{if(B)return;B=!0;let F=t.get(N);if(F)F.activeDispatchCount=Math.max(0,F.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(N){let Z=t.get(N);if(!Z){console.log(`[user-desktop] delete handle=${N} (not found, no-op)`);return}if(Z.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${N} port=${Z.port} REFUSED \u2014 ${Z.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${N} port=${Z.port}`);try{Z.process.kill("SIGTERM")}catch{}t.delete(N),w({handle:N,status:"stopped",sandboxPath:c(N),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:N,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let N of t.values())try{N.process.kill("SIGTERM")}catch{}t.clear()}}}function _mt(){return new Promise((i,u)=>{let t=hmt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var Sou=()=>{};import{randomUUID as Nmt}from"crypto";import{hostname as Omt}from"os";async function Qou(i){let u=Omt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=Zqu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=O6i({path:N6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=Lou({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>c>0?`http://${j}.localhost:${c}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:Nmt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let S=await Uqu(i.dataDir);if(S)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=S}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(S)=>K.kill(S),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,S)=>{let V={port:C};if(K.workload)V.runtime=K.workload.runtime,V.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:V},fi=Uh(K.operator??null);if(fi)Q.operator=fi;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch,...K.repo.submoduleCredentials&&K.repo.submoduleCredentials.length>0?{submoduleCredentials:K.repo.submoduleCredentials}:{}},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await X_(`http://127.0.0.1:${j}`,S,Q)},waitForHealth:async(j)=>{await _li(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await $ou({port:i.port,lookupSandboxPort:(j)=>w.proxyPort(j)});c=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let h=Aqu({provider:w}),v=async()=>{let j=await j_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return j.accessToken},d=await Fou(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await pbi(),N=Zou(_,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${_.join(",")})`)}}),Z=bRi({path:`${i.dataDir}/link/outbox.sqlite`});Z.clear();let B=()=>{},F=new AbortController,g={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:v,provider:w,outbox:Z,controlHandler:h,capabilities:_,machineId:d,cliVersion:D,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>B(),runLifetimeSignal:F.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let U=await aau(g);console.log("[link-daemon] active transport=tunnel");let T,A=new Promise((j)=>{T=j}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
|
|
83548
83548
|
Shutting down\u2026`),N();try{await U.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),T(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),B=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},U.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=Xou({provider:w,registry:f,dataDir:i.dataDir});return{stopped:A,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(c){throw E(),c}}var Hou=O(()=>{LRi();uq();Bqu();Tqu();Pqu();CRi();oau();hou();Bou();gou();iq();iCi();Jou();Sou()});function uCi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as Zmt}from"net";async function Fmt(i){for(let u of Bmt)if(await tCi(i,u))return u;return null}async function zou(i,{intervalMs:u=1000,sleepFn:t=I0}={}){for(;;){let f=await Fmt(i);if(f)return f;await t(u)}}function tCi(i,u){return new Promise((t)=>{let f=Zmt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var Bmt;var fCi=O(()=>{Z4();Bmt=["localhost","127.0.0.1","0.0.0.0"]});function Rou(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function gmt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function nou(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${gmt(i,u)}`].join(`
|
|
83549
|
-
`)}var lCi;var bou=O(()=>{lCi=class lCi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var JS;var Z6i=O(()=>{JS={name:"decocms",version:"4.158.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",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"}}});var Kq={};Ti(Kq,{printBanner:()=>Amt,bannerLines:()=>Cou,BANNER_LINES:()=>B6i,BANNER_GRADIENT:()=>F6i});function Tmt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Cou(i){let u=B6i.map((t,f)=>{let[l,E,c]=Tmt(F6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function Amt(i){console.log("");for(let u of Cou(i))console.log(u);console.log("")}var B6i,F6i;var KS=O(()=>{B6i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Pmt,Text as Mou}from"ink";import{jsx as ymt,jsxs as qou}from"react/jsx-runtime";function g6i({version:i}){return qou(Pmt,{flexDirection:"column",marginTop:1,children:[B6i.map((u,t)=>ymt(Mou,{color:F6i[t],children:u},t)),qou(Mou,{dimColor:!0,children:[" v",i]})]})}var ECi=O(()=>{KS()});function Vou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function YS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function rou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function mou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var hCi={};Ti(hCi,{subscribeLinkState:()=>cCi,setSelectedHandle:()=>wCi,setRemoving:()=>A6i,setPersistedSandboxes:()=>Wmt,setPendingConfirm:()=>Wq,setMachine:()=>Xmt,setLogPath:()=>Kmt,setLinkActions:()=>Ymt,setIngress:()=>jmt,setDaemonError:()=>Jmt,setClusterUrl:()=>kmt,setCluster:()=>xmt,setActionError:()=>T6i,resetLinkStateForTests:()=>Smt,removeSandboxRow:()=>$Ci,pushSandboxEvent:()=>Lmt,getLinkState:()=>Yq,applySandboxEvent:()=>eou});function Imt(i){return i==="spawning"||i==="ready"||i==="failed"}function eou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function aou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Gmt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function r3(){for(let i of U6i)i()}function Yq(){return Ef}function cCi(i){return U6i.add(i),()=>U6i.delete(i)}function xmt(i){Ef={...Ef,cluster:i},r3()}function kmt(i){Ef={...Ef,clusterUrl:i},r3()}function jmt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},r3()}function Xmt(i){Ef={...Ef,machine:i},r3()}function Jmt(i){Ef={...Ef,daemonError:i},r3()}function Kmt(i){Ef={...Ef,logPath:i},r3()}function wCi(i){Ef={...Ef,selectedHandle:i},r3()}function Wq(i){Ef={...Ef,pendingConfirm:i},r3()}function T6i(i){Ef={...Ef,actionError:i},r3()}function A6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},r3()}function Ymt(i){Ef={...Ef,actions:i},r3()}function $Ci(i){let u=YS(Ef.sandboxes),t=mou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},r3()}function Wmt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(Imt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},r3()}function Lmt(i){Ef={...Ef,sandboxes:eou(Ef.sandboxes,i)},r3()}function Smt(){Ef=aou(),U6i.clear()}var Gmt=20,Ef,U6i;var Lq=O(()=>{Ef=aou(),U6i=new Set});import{spawn as Qmt}from"child_process";function Hmt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function oou(i,u=process.platform){let t=Hmt(u);try{Qmt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var sou=()=>{};function pou(i,u={}){let t=u.openUrl??oou,f=Yq(),l=YS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":wCi(rou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);T6i(null),Wq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Wq(null),w===null||!c)return;A6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)$Ci(w.handle);else A6i(w.handle,!1),T6i($.error)});return}case"confirmNo":Wq(null);return;case"quit":if(c)c.quit();return}}var isu=O(()=>{Lq();sou()});function usu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var tsu={};Ti(tsu,{LinkApp:()=>bmt});import{Box as C1,Text as vl,useInput as zmt}from"ink";import{useSyncExternalStore as Rmt}from"react";import{jsx as Xf,jsxs as Jh}from"react/jsx-runtime";function nmt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function bmt(){let i=Rmt(cCi,Yq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=YS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return zmt((l,E)=>{let c=usu(l,E,i.pendingConfirm!==null);if(c!==null)pou(c)}),Jh(C1,{flexDirection:"column",children:[Xf(g6i,{version:JS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Jh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Jh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Jh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Jh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Jh(C1,{flexDirection:"column",children:[Jh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:WS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:WS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:WS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=nmt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Jh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:WS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:WS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:WS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Jh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Vou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var WS;var fsu=O(()=>{Z6i();ECi();isu();Lq();WS={project:18,branch:22,status:14}});var lsu={};Ti(lsu,{runLinkCommand:()=>amt});import{closeSync as Cmt,mkdirSync as Mmt,openSync as qmt,writeSync as Vmt}from"fs";import{homedir as rmt}from"os";import{join as vCi}from"path";function mmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Vmt(u,`${uCi(l)}
|
|
83549
|
+
`)}var lCi;var bou=O(()=>{lCi=class lCi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var JS;var Z6i=O(()=>{JS={name:"decocms",version:"4.158.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",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"}}});var Kq={};Ti(Kq,{printBanner:()=>Amt,bannerLines:()=>Cou,BANNER_LINES:()=>B6i,BANNER_GRADIENT:()=>F6i});function Tmt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Cou(i){let u=B6i.map((t,f)=>{let[l,E,c]=Tmt(F6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function Amt(i){console.log("");for(let u of Cou(i))console.log(u);console.log("")}var B6i,F6i;var KS=O(()=>{B6i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Pmt,Text as Mou}from"ink";import{jsx as ymt,jsxs as qou}from"react/jsx-runtime";function g6i({version:i}){return qou(Pmt,{flexDirection:"column",marginTop:1,children:[B6i.map((u,t)=>ymt(Mou,{color:F6i[t],children:u},t)),qou(Mou,{dimColor:!0,children:[" v",i]})]})}var ECi=O(()=>{KS()});function Vou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function YS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function rou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function mou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var hCi={};Ti(hCi,{subscribeLinkState:()=>cCi,setSelectedHandle:()=>wCi,setRemoving:()=>A6i,setPersistedSandboxes:()=>Wmt,setPendingConfirm:()=>Wq,setMachine:()=>Xmt,setLogPath:()=>Kmt,setLinkActions:()=>Ymt,setIngress:()=>jmt,setDaemonError:()=>Jmt,setClusterUrl:()=>kmt,setCluster:()=>xmt,setActionError:()=>T6i,resetLinkStateForTests:()=>Smt,removeSandboxRow:()=>$Ci,pushSandboxEvent:()=>Lmt,getLinkState:()=>Yq,applySandboxEvent:()=>eou});function Imt(i){return i==="spawning"||i==="ready"||i==="failed"}function eou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function aou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Gmt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function r3(){for(let i of U6i)i()}function Yq(){return Ef}function cCi(i){return U6i.add(i),()=>U6i.delete(i)}function xmt(i){Ef={...Ef,cluster:i},r3()}function kmt(i){Ef={...Ef,clusterUrl:i},r3()}function jmt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},r3()}function Xmt(i){Ef={...Ef,machine:i},r3()}function Jmt(i){Ef={...Ef,daemonError:i},r3()}function Kmt(i){Ef={...Ef,logPath:i},r3()}function wCi(i){Ef={...Ef,selectedHandle:i},r3()}function Wq(i){Ef={...Ef,pendingConfirm:i},r3()}function T6i(i){Ef={...Ef,actionError:i},r3()}function A6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},r3()}function Ymt(i){Ef={...Ef,actions:i},r3()}function $Ci(i){let u=YS(Ef.sandboxes),t=mou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},r3()}function Wmt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(Imt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},r3()}function Lmt(i){Ef={...Ef,sandboxes:eou(Ef.sandboxes,i)},r3()}function Smt(){Ef=aou(),U6i.clear()}var Gmt=20,Ef,U6i;var Lq=O(()=>{Ef=aou(),U6i=new Set});import{spawn as Qmt}from"child_process";function Hmt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function oou(i,u=process.platform){let t=Hmt(u);try{Qmt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var sou=()=>{};function pou(i,u={}){let t=u.openUrl??oou,f=Yq(),l=YS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":wCi(rou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);T6i(null),Wq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Wq(null),w===null||!c)return;A6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)$Ci(w.handle);else A6i(w.handle,!1),T6i($.error)});return}case"confirmNo":Wq(null);return;case"quit":if(c)c.quit();return}}var isu=O(()=>{Lq();sou()});function usu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var tsu={};Ti(tsu,{LinkApp:()=>bmt});import{Box as C1,Text as vl,useInput as zmt}from"ink";import{useSyncExternalStore as Rmt}from"react";import{jsx as Xf,jsxs as Jh}from"react/jsx-runtime";function nmt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function bmt(){let i=Rmt(cCi,Yq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=YS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return zmt((l,E)=>{let c=usu(l,E,i.pendingConfirm!==null);if(c!==null)pou(c)}),Jh(C1,{flexDirection:"column",children:[Xf(g6i,{version:JS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Jh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Jh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Jh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Jh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Jh(C1,{flexDirection:"column",children:[Jh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:WS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:WS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:WS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=nmt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Jh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:WS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:WS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:WS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Jh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Vou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var WS;var fsu=O(()=>{Z6i();ECi();isu();Lq();WS={project:18,branch:22,status:14}});var lsu={};Ti(lsu,{runLinkCommand:()=>amt});import{closeSync as Cmt,mkdirSync as Mmt,openSync as qmt,writeSync as Vmt}from"fs";import{homedir as rmt}from"os";import{join as vCi}from"path";function mmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Vmt(u,`${uCi(l)}
|
|
83550
83550
|
`)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(uCi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function emt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function amt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??vCi(rmt(),"deco"),f=i.clusterBaseUrl??process.env.STUDIO_CLUSTER_URL??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,E,c,w=()=>{if(c===void 0)return;try{c.close()}catch{}finally{c=void 0}};try{if(await tCi(u,"127.0.0.1"))throw new lCi(u);let $=vCi(t,"sandboxes");c=O6i({path:N6i(t),managedSandboxRoot:$});let h=await hli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await emt(f,h.accessToken);let v=c.reconcile();if(i.prune){let N=c.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${N.removed.length}, skipped ${N.skipped.length}.`);v=c.reconcile()}let d;if(i.tui){let{render:N}=await import("ink"),{createElement:Z}=await import("react"),{LinkApp:B}=await Promise.resolve().then(() => (fsu(),tsu)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:U,setDaemonError:T,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (Lq(),hCi));Mmt(t,{recursive:!0});let j=vCi(t,"link.log");E=qmt(j,"w"),G(j),I(v),U(f),g("connecting"),d={onEvent:(C)=>F(C),onIngress:(C)=>A(C,`http://127.0.0.1:${C}`),onCluster:(C)=>g(C),onMachine:(C)=>k(C)},l=mmt(T,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (KS(),Kq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await Qou({port:u,clusterBaseUrl:f,dataDir:t,session:h,monitor:d,logFd:E,perSandboxLogs:D,hotReload:i.hotReload});if(i.tui){let{setLinkActions:N}=await Promise.resolve().then(() => (Lq(),hCi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error(Rou($)?nou(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{Cmt(E)}catch{}w()}}var Esu=O(()=>{WRi();Hou();fCi();bou();iCi()});var ZCi={};Ti(ZCi,{resolveDevLinkClusterUrl:()=>iet,populateDevLinkToxiProxy:()=>dsu,isDevLinkToxiProxyEnabled:()=>pmt,ensureDevLinkToxiProxy:()=>cet,buildDevLinkToxiProxyConfig:()=>hsu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>wsu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>$su});function pmt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function dCi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function hsu(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=dCi(i.apiPort,"apiPort"),f=dCi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=dCi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:wsu,proxyName:$su,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:E,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${E}`}}function iet(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function DCi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function OCi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function vsu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return vsu(i.cause)}async function _Ci(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${OCi(l)}`,{cause:l})}}async function dsu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await _Ci(u,"reset",t,{method:"POST"});await DCi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await _Ci(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await DCi(E,"populate",l)}async function uet(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await _Ci(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(smt)});await DCi(f,"readiness check",t)},{maxAttempts:omt,minTimeout:csu,maxTimeout:csu,multiplier:1,jitter:0,isRetriable:(f)=>!vsu(f)})}catch(f){let l=f instanceof z6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${OCi(l)}`,{cause:l})}}async function tet(i){if(i===null)return"";return await new Response(i).text()}async function NCi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(w){throw Error(`Docker command failed to start (${t}): ${OCi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,tet(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let c=E.trim().length>0?`: ${E.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${c}`)}async function fet(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await NCi(["rm","-f",t],{ignoreFailure:!0}),await NCi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function Eet(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await NCi(["rm","-f",t],{ignoreFailure:!0})}async function cet(i){let u=hsu(i),t=i.startDaemon??fet,f=i.stopDaemon??(i.startDaemon===void 0?Eet:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await uet(u,l),await dsu(u,l)}catch(E){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw E}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var wsu="ToxiProxy",$su="dev_link_studio",omt=20,csu=100,smt=100;var BCi=O(()=>{Z4()});var Dsu={};Ti(Dsu,{migrateBetterAuth:()=>FCi});import{getMigrations as wet}from"better-auth/db";import{sso as $et}from"@better-auth/sso";import{organization as het}from"@decocms/better-auth/plugins";import{admin as vet,apiKey as det,jwt as Det,magicLink as _et,mcp as Net,openAPI as Oet}from"better-auth/plugins";import{emailOTP as Zet}from"better-auth/plugins/email-otp";async function FCi(i){let t={database:mM(i||G_()),plugins:[het({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),vet(),det(),Det(),Oet(),Net({loginPage:"/login"}),$et(),_et({sendMagicLink:async()=>{}}),Zet({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await wet(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var gCi=O(()=>{C6()});var UCi={};Ti(UCi,{up:()=>Bet,down:()=>Fet});import{sql as g8}from"kysely";async function Bet(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(g8`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function Fet(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var _su=()=>{};var TCi={};Ti(TCi,{up:()=>get,down:()=>Uet});import{sql as Nsu}from"kysely";async function get(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Nsu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Nsu`CURRENT_TIMESTAMP`)).execute()}async function Uet(i){await i.schema.dropTable("organization_settings").execute()}var Osu=()=>{};var ACi={};Ti(ACi,{up:()=>Tet,down:()=>Aet});async function Tet(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function Aet(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var PCi={};Ti(PCi,{up:()=>Pet,down:()=>yet});async function Pet(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function yet(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var yCi={};Ti(yCi,{up:()=>Get,down:()=>Iet});async function Get(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Iet(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var GCi={};Ti(GCi,{up:()=>ket,down:()=>jet});import{sql as xet}from"kysely";async function ket(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",xet`text`).execute()}async function jet(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Zsu=()=>{};var ICi={};Ti(ICi,{up:()=>Xet,down:()=>Jet});async function Xet(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function Jet(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var xCi={};Ti(xCi,{up:()=>Ket,down:()=>Yet});import{sql as Sq}from"kysely";async function Ket(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(Sq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Sq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(Sq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Sq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(Sq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function Yet(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var Bsu=()=>{};var kCi={};Ti(kCi,{up:()=>Let,down:()=>Qet});import{sql as Wet}from"kysely";async function Let(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Qet(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(Wet`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var Fsu=()=>{};var jCi={};Ti(jCi,{up:()=>Het,down:()=>zet});import{sql as P6i}from"kysely";async function Het(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(P6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(P6i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(P6i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await P6i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function zet(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var gsu=()=>{};var XCi={};Ti(XCi,{up:()=>Ret,down:()=>net});async function Ret(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function net(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var JCi={};Ti(JCi,{up:()=>bet,down:()=>Cet});import{sql as y6i}from"kysely";async function bet(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await y6i`
|
|
83551
83551
|
UPDATE gateways
|
|
83552
83552
|
SET tool_selection_mode = CASE
|
|
@@ -85741,7 +85741,7 @@ ${u.description}
|
|
|
85741
85741
|
`:"",t?.feedback?[t.pr?`A reviewer requested changes on the existing pull request #${t.pr.number} (${t.pr.url}):`:"A reviewer requested changes on your previous work:",t.feedback,t.pr?`Load the repo, then CHECK OUT that PR's branch (e.g. \`gh pr checkout ${t.pr.number}\`) before editing, address the feedback, commit, and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch.`:"Address this feedback.",""].join(`
|
|
85742
85742
|
`):"","How to work:","- First decide whether this task requires changing code in a repository. Some tasks (research, answering a question, planning) don't. If it doesn't, just do the work directly \u2014 don't load a repo or open a PR.","- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, then make the change, commit on a new branch, push, and open a pull request. Only then does a PR apply.","- Prefer the GitHub tool to open the PR. If it errors or targets the wrong repo, fall back to `git push` + the GitHub REST API (the auth token is embedded in the `origin` URL).","- If a dev server is running it hot-reloads your changes \u2014 don't restart it, hunt for its port, or run a full typecheck/build just to verify a small edit.","- Change only what the task needs. Don't trace the definition of a pre-existing symbol that's incidental to your change \u2014 note it in one line and move on. Prefer one or two broad searches over many narrow retries.","- Only if you hit a genuine blocker a human must clear (see above) may you call `user_ask` \u2014 otherwise keep going and finish the task.","",`(task id: ${u.id})`].join(`
|
|
85743
85743
|
`);await jvi(i,u,{title:`Super Agent: ${u.title}`,prompt:f,temperature:0.5})}var Yo=O(()=>{m2();llu()});import{z as Xvi}from"zod";async function Gd(i,u){try{await i.storage.taskBoard.recordActivity(u)}catch(t){console.error("[task-board] activity log write failed",t)}}async function ZI0(i,u){if(u.length===0)return;try{await i.storage.taskBoard.recordActivities(u)}catch(t){console.error("[task-board] activity log write failed",t)}}var clu;var Wg=O(()=>{uu();Fd();clu=p({name:"TASK_BOARD_ACTIVITY_LIST",description:"List a task board item's change history (timeline, oldest first).",annotations:{title:"List Task Activity",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Xvi.object({taskBoardItemId:Xvi.string()}),outputSchema:Xvi.object({activity:Xvi.array(uT0)}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return{activity:await u.storage.taskBoard.listActivity(i.taskBoardItemId,t)}}})});import{z as qN}from"zod";var wlu;var BI0=O(()=>{uu();Fd();X4u();Yo();Wg();yw();wlu=p({name:"TASK_BOARD_ITEM_CREATE",description:"Create a new task board item for the organization.",annotations:{title:"Create Task Board Item",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:qN.object({title:qN.string().min(1),description:qN.string().nullable().optional(),status:e2.optional(),priority:Ug.optional(),assigneeId:qN.string().nullable().optional(),dueDate:qN.string().datetime().nullable().optional(),tagIds:qN.array(qN.string()).optional()}),outputSchema:qN.object({item:tR}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(i.assigneeId)await Chi(u,t,i.assigneeId);let f=i.assigneeId===LE;if(i.tagIds?.length){let E=await u.storage.tags.listOrgTags(t),c=new Set(E.map((w)=>w.id));for(let w of i.tagIds)if(!c.has(w))throw Error(`Tag not found: ${w}`)}let l=await u.storage.taskBoard.create({organizationId:t,title:i.title,description:i.description??null,status:f?"todo":i.status,priority:i.priority,assigneeId:i.assigneeId??null,assignedBy:i.assigneeId?Yu(u):null,dueDate:i.dueDate??null,by:Yu(u)});if(i.tagIds?.length)await u.storage.taskBoard.setItemTags(l.id,i.tagIds,Yu(u)),l=await u.storage.taskBoard.getById(l.id,t);return await Gd(u,{taskBoardItemId:l.id,action:"created",actorId:Yu(u)}),u6(t,l),await OR(u,l),{item:l}}})});function Uzf(i){if(i.status==="completed")return"advance";if(i.status==="failed"&&i.messageStorageVersion===2)return"nudge";return"none"}async function Azf(i,u,t){let f=u.organizationId,l=await g3(i,"smart"),E=t.virtualMcpId??JB(f),c={id:`stall-nudge-${u.id}-${t.threadId}`,role:"user",parts:[{type:"text",text:Tzf}]};await new SE({storage:i.storage.threads.messageParts(),orgId:f,threadId:t.threadId,runId:t.threadId}).emitRequestMessage(c),await yd({threadId:t.threadId,source:"background-tool",request:{messages:[c],models:{credentialId:l.credentialId,thinking:{id:l.modelId,title:l.modelMeta.title}},agent:{id:E},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:f,userId:u.assignedBy??u.createdBy,taskId:t.threadId,runMetadata:{taskBoardItemId:u.id}}},{workflowID:`stall-nudge:${u.id}:${t.threadId}`})}async function Pzf(i,u){let t=await i.storage.threads.get(u);if(!t)return"none";return Uzf({status:t.status,messageStorageVersion:t.message_storage_version})}async function FI0(i,u){let t=i.organization?.id;if(!t)return;for(let f of u){if(!iuu(f))continue;let l=f.threads.find((E)=>E.hasMessages);if(!l)continue;try{let E=await Pzf(i,l.threadId);if(E==="none")continue;if(E==="advance")await Ko(i.storage.taskBoard,l.threadId,t);else await Azf(i,f,l)}catch(E){console.error(`[task-board] stall recovery failed for ${f.id}`,E)}}}var Tzf;var gI0=O(()=>{bN();LN();Yg();ve();nt();yw();Tzf=["This task is still In Progress on the board and your last run ended without finishing it.","","Look at what you already did, then either:","- finish the remaining work (and open the PR, if it needed code changes),","- or, if it's actually done, say so in one line \u2014 the board moves the card for you,","- or, if you're blocked on something only a human knows, call the `user_ask` tool.","","Don't start over and don't redo work you already committed or pushed."].join(`
|
|
85744
|
-
`)});import{z as $lu}from"zod";var hlu;var UI0=O(()=>{uu();Fd();gI0();hlu=p({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization.",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:$lu.object({}),outputSchema:$lu.object({items:$lu.array(tR)}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.taskBoard.list(t);return FI0(u,f),{items:f}}})});import{z as Xv}from"zod";function Gzf(i,u){let t=[];for(let{field:E,action:c}of yzf){if(u[E]===i[E])continue;t.push({action:c,data:{from:i[E],to:u[E]}})}if(u.description!==i.description)t.push({action:"description_changed"});let f=new Set(i.tags.map((E)=>E.id));if(u.tags.length!==i.tags.length||u.tags.some((E)=>!f.has(E.id)))t.push({action:"tags_changed",data:{from:i.tags,to:u.tags}});return t}var yzf,vlu;var TI0=O(()=>{uu();Fd();X4u();Yo();Wg();yw();yzf=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];vlu=p({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Xv.object({id:Xv.string(),title:Xv.string().min(1).optional(),description:Xv.string().nullable().optional(),status:e2.optional(),priority:Ug.optional(),assigneeId:Xv.string().nullable().optional(),dueDate:Xv.string().datetime().nullable().optional(),sortOrder:Xv.number().optional(),tagIds:Xv.array(Xv.string()).optional(),linkThreadId:Xv.string().optional()}),outputSchema:Xv.object({item:tR}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(i.assigneeId)await Chi(u,t,i.assigneeId);if(i.linkThreadId){if(!await u.storage.taskBoard.getById(i.id,t))throw Error(`Task board item not found: ${i.id}`);if(!await u.storage.threads.get(i.linkThreadId))throw Error(`Thread not found: ${i.linkThreadId}`);await u.storage.taskBoard.linkThread(i.id,i.linkThreadId,t)}let f=i.title!==void 0||i.description!==void 0||i.status!==void 0||i.priority!==void 0||i.assigneeId!==void 0||i.dueDate!==void 0||i.sortOrder!==void 0||i.tagIds!==void 0,l=f?await u.storage.taskBoard.getById(i.id,t):null;if(f&&!l)throw Error(`Task board item not found: ${i.id}`);let E=i.assigneeId!==void 0&&i.assigneeId!==(l?.assigneeId??null),c=E&&i.assigneeId===LE;if(i.tagIds!==void 0){let $=await u.storage.tags.listOrgTags(t),h=new Set($.map((v)=>v.id));for(let v of i.tagIds)if(!h.has(v))throw Error(`Tag not found: ${v}`);await u.storage.taskBoard.setItemTags(i.id,i.tagIds,Yu(u))}let w;if(f)w=await u.storage.taskBoard.update(i.id,t,{title:i.title,description:i.description,status:c?"todo":i.status,priority:i.priority,assigneeId:i.assigneeId,assignedBy:E?i.assigneeId?Yu(u):null:void 0,dueDate:i.dueDate,sortOrder:i.sortOrder},Yu(u));else{let $=await u.storage.taskBoard.getById(i.id,t);if(!$)throw Error(`Task board item not found: ${i.id}`);w=$}if(l){let $=Yu(u),h=Gzf(l,w);if(h.length>0)await ZI0(u,h.map((v)=>({taskBoardItemId:w.id,actorId:$,...v})))}if(c)u6(t,w),await OR(u,w);else if(i.linkThreadId)u6(t,w);return{item:w}}})});import{z as Jvi}from"zod";var dlu;var AI0=O(()=>{uu();yw();dlu=p({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Jvi.object({id:Jvi.string()}),outputSchema:Jvi.object({success:Jvi.boolean()}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return await u.storage.taskBoard.delete(i.id,t),wI0(t,i.id),{success:!0}}})});async function Dlu(i){let{contextFactory:u,taskBoard:t,threadId:f,orgId:l}=i;try{for(let E of await t.linkedTaskIds(f,l)){let c=await t.getById(E,l);if(!c||c.status!=="in_review"||c.assigneeId!==LE)continue;if(!c.threads.find((v)=>v.threadId===f)?.title?.startsWith("Super Agent:"))continue;if((await t.listPrs(E,l)).length===0)continue;let h=await u(l,c.assignedBy??c.createdBy);if(!h)continue;await _lu(h,c)}}catch(E){console.error("[task-board] reviewer trigger on run finish failed",E)}}async function _lu(i,u){let f=(await i.storage.organizationSettings.get(u.organizationId))?.flags??{},l=iR.filter((w)=>f[uR[w]]===!0);if(l.length===0)return;let E=await jzf(i,u),c=new Date(E);
|
|
85744
|
+
`)});import{z as $lu}from"zod";var hlu;var UI0=O(()=>{uu();Fd();gI0();hlu=p({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization.",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:$lu.object({}),outputSchema:$lu.object({items:$lu.array(tR)}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.taskBoard.list(t);return FI0(u,f),{items:f}}})});import{z as Xv}from"zod";function Gzf(i,u){let t=[];for(let{field:E,action:c}of yzf){if(u[E]===i[E])continue;t.push({action:c,data:{from:i[E],to:u[E]}})}if(u.description!==i.description)t.push({action:"description_changed"});let f=new Set(i.tags.map((E)=>E.id));if(u.tags.length!==i.tags.length||u.tags.some((E)=>!f.has(E.id)))t.push({action:"tags_changed",data:{from:i.tags,to:u.tags}});return t}var yzf,vlu;var TI0=O(()=>{uu();Fd();X4u();Yo();Wg();yw();yzf=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];vlu=p({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Xv.object({id:Xv.string(),title:Xv.string().min(1).optional(),description:Xv.string().nullable().optional(),status:e2.optional(),priority:Ug.optional(),assigneeId:Xv.string().nullable().optional(),dueDate:Xv.string().datetime().nullable().optional(),sortOrder:Xv.number().optional(),tagIds:Xv.array(Xv.string()).optional(),linkThreadId:Xv.string().optional()}),outputSchema:Xv.object({item:tR}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(i.assigneeId)await Chi(u,t,i.assigneeId);if(i.linkThreadId){if(!await u.storage.taskBoard.getById(i.id,t))throw Error(`Task board item not found: ${i.id}`);if(!await u.storage.threads.get(i.linkThreadId))throw Error(`Thread not found: ${i.linkThreadId}`);await u.storage.taskBoard.linkThread(i.id,i.linkThreadId,t)}let f=i.title!==void 0||i.description!==void 0||i.status!==void 0||i.priority!==void 0||i.assigneeId!==void 0||i.dueDate!==void 0||i.sortOrder!==void 0||i.tagIds!==void 0,l=f?await u.storage.taskBoard.getById(i.id,t):null;if(f&&!l)throw Error(`Task board item not found: ${i.id}`);let E=i.assigneeId!==void 0&&i.assigneeId!==(l?.assigneeId??null),c=E&&i.assigneeId===LE;if(i.tagIds!==void 0){let $=await u.storage.tags.listOrgTags(t),h=new Set($.map((v)=>v.id));for(let v of i.tagIds)if(!h.has(v))throw Error(`Tag not found: ${v}`);await u.storage.taskBoard.setItemTags(i.id,i.tagIds,Yu(u))}let w;if(f)w=await u.storage.taskBoard.update(i.id,t,{title:i.title,description:i.description,status:c?"todo":i.status,priority:i.priority,assigneeId:i.assigneeId,assignedBy:E?i.assigneeId?Yu(u):null:void 0,dueDate:i.dueDate,sortOrder:i.sortOrder},Yu(u));else{let $=await u.storage.taskBoard.getById(i.id,t);if(!$)throw Error(`Task board item not found: ${i.id}`);w=$}if(l){let $=Yu(u),h=Gzf(l,w);if(h.length>0)await ZI0(u,h.map((v)=>({taskBoardItemId:w.id,actorId:$,...v})))}if(c)u6(t,w),await OR(u,w);else if(i.linkThreadId)u6(t,w);return{item:w}}})});import{z as Jvi}from"zod";var dlu;var AI0=O(()=>{uu();yw();dlu=p({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Jvi.object({id:Jvi.string()}),outputSchema:Jvi.object({success:Jvi.boolean()}),handler:async(i,u)=>{gi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return await u.storage.taskBoard.delete(i.id,t),wI0(t,i.id),{success:!0}}})});async function Dlu(i){let{contextFactory:u,taskBoard:t,threadId:f,orgId:l}=i;try{for(let E of await t.linkedTaskIds(f,l)){let c=await t.getById(E,l);if(!c||c.status!=="in_review"||c.assigneeId!==LE)continue;if(!c.threads.find((v)=>v.threadId===f)?.title?.startsWith("Super Agent:"))continue;if((await t.listPrs(E,l)).length===0)continue;let h=await u(l,c.assignedBy??c.createdBy);if(!h)continue;await _lu(h,c)}}catch(E){console.error("[task-board] reviewer trigger on run finish failed",E)}}async function _lu(i,u){let f=(await i.storage.organizationSettings.get(u.organizationId))?.flags??{},l=iR.filter((w)=>f[uR[w]]===!0);if(l.length===0)return;let E=await jzf(i,u),c=new Date(E);await Promise.all(l.map(async(w)=>{if(kzf(u,w,E))return;let $,h;try{({claimed:$,token:h}=await i.storage.taskBoard.claimReviewer(u.id,w,c))}catch(v){console.error(`[task-board] ${w} reviewer claim failed`,v);return}if(!$)return;await Xzf(i,u,w,h).catch((v)=>{console.error(`[task-board] ${w} reviewer enqueue failed`,v)})}))}function kzf(i,u,t){return i.threads.some((f)=>{if(!oU0(f.title,u))return!1;if(f.status!==null&&!Izf.has(f.status))return!0;return new Date(f.createdAt).getTime()>=t})}async function jzf(i,u){let t=await i.storage.taskBoard.listActivity(u.id,u.organizationId);return j4u(t)}async function Xzf(i,u,t,f){let l=u.organizationId,E=[xzf[t],"","You are running AUTONOMOUSLY \u2014 no human is watching this run. Making the "+'approve / request-changes call IS your job; you are the decision-maker, not an assistant asking a human to decide. NEVER use `user_ask` to ask whether to approve, or to confirm an obvious call ("Approve the PR?"). Reserve `user_ask` for a genuine, unresolvable blocker only a human can clear (e.g. a missing credential, or a requirement so ambiguous you '+"truly cannot judge the outcome) \u2014 that should be rare. When in doubt "+"between asking and deciding, DECIDE.","",`Task title: ${u.title}`,u.description?`
|
|
85745
85745
|
Task description:
|
|
85746
85746
|
${u.description}
|
|
85747
85747
|
`:"","How to work:","- Call `TASK_BOARD_ITEM_PRS_GET` with the task id below to find the pull request under review, then load its repository to inspect / exercise the change.","- Do NOT push commits or change the code yourself. You are reviewing, not implementing.",`- End the run by calling \`TASK_BOARD_REVIEW_DECISION\` exactly once with the task id, reviewer "${t}", the reviewToken below, and your decision:`," - `approve` when it's good to ship. Include a short summary of what you verified."," - `request_changes` when something is wrong or missing. Include specific, actionable notes \u2014 the task goes back to the Super Agent with your notes.","- The reviewToken proves you are this reviewer \u2014 pass it through EXACTLY as given. Without it your approval won't count toward an automatic merge.","",`(task id: ${u.id})`,`(reviewToken: ${f})`].join(`
|