decocms 4.372.3 → 4.373.1
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-CMjsP_Tk.js → AlertCircle-2L7lI8NL.js} +1 -1
- package/dist/client/assets/{AreaChart-Bh_grNQZ.js → AreaChart-BSJ08P7a.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CjYy5Nhj.js → ArrowLeft-8rouBEwC.js} +1 -1
- package/dist/client/assets/{ArrowRight-CLncCNat.js → ArrowRight-DCA5zjxW.js} +1 -1
- package/dist/client/assets/{ArrowUp-Cii1LHW7.js → ArrowUp-BtksDHBQ.js} +1 -1
- package/dist/client/assets/{CartesianChart-CD-5y_pX.js → CartesianChart-BbOaLmfq.js} +1 -1
- package/dist/client/assets/{CheckCircle-DHXQFnpK.js → CheckCircle-BmVuh1xp.js} +1 -1
- package/dist/client/assets/{ChevronUp-DiYhGG4T.js → ChevronUp-fg9sod-H.js} +1 -1
- package/dist/client/assets/{Copy01-nMxlBfeT.js → Copy01-BgwuTJFm.js} +1 -1
- package/dist/client/assets/{CreditCard01-CWXVH3ZM.js → CreditCard01-CIt471eG.js} +1 -1
- package/dist/client/assets/DotsVertical-CE2o6L6N.js +1 -0
- package/dist/client/assets/{Download01-BRrSA3Yx.js → Download01-DNhEQzg0.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-fXvhmekg.js → ErrorBarContext-DxNax47N.js} +1 -1
- package/dist/client/assets/{Eye-Dyg2WPG4.js → Eye-Dq6Vw6FI.js} +1 -1
- package/dist/client/assets/{Globe01-D6FaaFR2.js → Globe01-g_y8gAs1.js} +1 -1
- package/dist/client/assets/{Users03-Y0Jco4zL.js → Globe04-GFiRExL0.js} +1 -1
- package/dist/client/assets/{Image01-CxnjAzbb.js → Image01-QB6twEDu.js} +1 -1
- package/dist/client/assets/{Key01-CIXwHMRo.js → Key01-CO_i2QPb.js} +1 -1
- package/dist/client/assets/LayoutLeft-BfySK4h8.js +1 -0
- package/dist/client/assets/{Line-YO4Ozgbt.js → Line-Cr57fOtp.js} +1 -1
- package/dist/client/assets/{Link01-C0FvgZZB.js → Link01-BIFMl_M0.js} +1 -1
- package/dist/client/assets/{LinkExternal01-AWlhN5o7.js → LinkExternal01-DQD59o7F.js} +1 -1
- package/dist/client/assets/{Monitor01-Ccs1gh2Z.js → Monitor01-Ddm2yOG6.js} +1 -1
- package/dist/client/assets/{Package-nTbucmaQ.js → Package-CvzEol5_.js} +1 -1
- package/dist/client/assets/{Palette-DSdn1Xis.js → Palette-DT856bn6.js} +1 -1
- package/dist/client/assets/{Play-lMuWOObF.js → Play-wYDcJhBq.js} +1 -1
- package/dist/client/assets/{Plus-CVauOqLT.js → Plus-BSp00qOC.js} +1 -1
- package/dist/client/assets/{SearchLg-BrrPVuXr.js → SearchLg-DFD1t2UL.js} +1 -1
- package/dist/client/assets/{SearchMd-C45D2PMI.js → SearchMd-Bb5gjLcX.js} +1 -1
- package/dist/client/assets/{Sector-9mXbxJ9i.js → Sector-wViCnB96.js} +5 -5
- package/dist/client/assets/{Settings02-Cyf85ea0.js → Settings02-D9Qv7BDm.js} +1 -1
- package/dist/client/assets/{Share07-wC47qn2E.js → Share07-CZ7JzYs9.js} +1 -1
- package/dist/client/assets/{Stars01-oAh9h5b5.js → Stars01-D-wYuyik.js} +1 -1
- package/dist/client/assets/{Sun-0Ied-kyZ.js → Sun-DLRcOzSd.js} +1 -1
- package/dist/client/assets/Tool01-Dwy1nlT9.js +1 -0
- package/dist/client/assets/{Tool02-CATStXCy.js → Tool02-CvlAGFBM.js} +1 -1
- package/dist/client/assets/{Trash01-nl-t4IoV.js → Trash01-DtE0n00a.js} +1 -1
- package/dist/client/assets/{TrendUp01-BFAEMx9E.js → TrendUp01-BCriuXJd.js} +1 -1
- package/dist/client/assets/{Upload01-B4Fqdkae.js → Upload01-Ba-RLxE1.js} +1 -1
- package/dist/client/assets/{User01-ClMaVCaJ.js → User01-DHd46PZp.js} +1 -1
- package/dist/client/assets/{UserSquare-B2lKdt4w.js → UserSquare-CcF49LHs.js} +1 -1
- package/dist/client/assets/{Users01-BFhxJVhO.js → Users01-B8gdz27Y.js} +1 -1
- package/dist/client/assets/{X-CFCE4a-Q.js → X-BtMi8Qau.js} +1 -1
- package/dist/client/assets/{XCircle-CleKT0Id.js → XCircle-BLCHBIhx.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DpXsFGyJ.js → XClose-CvcHLHe2.js} +1 -1
- package/dist/client/assets/{Zap-B6zkqKWB.js → Zap-DZAIluO6.js} +1 -1
- package/dist/client/assets/ZoomOut-DUFJq3-K.js +1 -0
- package/dist/client/assets/{access-gate-Ds4n25mC.js → access-gate-C9Dl5e5c.js} +1 -1
- package/dist/client/assets/add-connection-dialog-DA05asFs.js +1 -0
- package/dist/client/assets/agent-analytics-CDo5Hugr.js +2 -0
- package/dist/client/assets/agent-app-lfl4wDqj.js +1 -0
- package/dist/client/assets/agent-assets-6UK-ev9d.js +1 -0
- package/dist/client/assets/agent-automation-BC-cMvrG.js +20 -0
- package/dist/client/assets/agent-automations-CnHTcvU7.js +1 -0
- package/dist/client/assets/agent-connect-sources-CJ8artss.js +1 -0
- package/dist/client/assets/agent-deck-BCZ0G4O2.js +1 -0
- package/dist/client/assets/agent-e2e-Cj1Q_JS0.js +1 -0
- package/dist/client/assets/agent-experiments-DJ13yAp9.js +1 -0
- package/dist/client/assets/agent-file-DbKP1r-4.js +1 -0
- package/dist/client/assets/{agent-git-D4IYczGa.js → agent-git-B8LMQ2zl.js} +2 -2
- package/dist/client/assets/agent-hosting-Bm-WxahY.js +1 -0
- package/dist/client/assets/agent-icon-CTsmTxHg.js +1 -0
- package/dist/client/assets/agent-library-file-DvybgEEZ.js +1 -0
- package/dist/client/assets/agent-monitor-DgVt0zbx.js +1 -0
- package/dist/client/assets/agent-overview-pOglhwpN.js +1 -0
- package/dist/client/assets/agent-settings-Bx-Ya3hQ.js +1 -0
- package/dist/client/assets/{agent-site-editor-DJSdtoNU.js → agent-site-editor-DVT-M9T0.js} +13 -13
- package/dist/client/assets/agent-site-editor-code-DpPWdLwT.js +2 -0
- package/dist/client/assets/agent-site-editor-content-eM0WchN0.js +2 -0
- package/dist/client/assets/agent-site-editor-preview-3VO_kTqr.js +518 -0
- package/dist/client/assets/{agent-view-guard-DHJpzCVR.js → agent-view-guard-BNYKK-x9.js} +1 -1
- package/dist/client/assets/agent-view-v-h5B6vN.js +1 -0
- package/dist/client/assets/agents-list-BXPjUzIN.js +1 -0
- package/dist/client/assets/{ai-providers-jxGd6MbV.js → ai-providers-BAmCFPvS.js} +2 -2
- package/dist/client/assets/{alert-U2IStW1f.js → alert-C8o4-kn8.js} +1 -1
- package/dist/client/assets/{alert-dialog-BI-B_8hq.js → alert-dialog-9n2p5SCQ.js} +2 -2
- package/dist/client/assets/api-keys-Cu1KdEtK.js +1 -0
- package/dist/client/assets/api-keys-DCurVLgh.js +1 -0
- package/dist/client/assets/app-editor-C3QSidsO.js +1 -0
- package/dist/client/assets/asset-utils-CK3Em4fb.js +1 -0
- package/dist/client/assets/{auth-DhzAq_9m.js → auth-BBW3DF0r.js} +1 -1
- package/dist/client/assets/{auth-catchall-Dar7OygY.js → auth-catchall-Bva2z4Gj.js} +1 -1
- package/dist/client/assets/auth-entry-BuHqwUIr.js +1 -0
- package/dist/client/assets/{auth-split-layout-DLFqjvPt.js → auth-split-layout-DMgxvbll.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DkJ4g-X5.js → authenticate-and-persist-oauth-Pk9b2m8R.js} +1 -1
- package/dist/client/assets/automation-list-row-D-zBLXA-.js +1 -0
- package/dist/client/assets/automation-runs-C8Wbje-n.js +1 -0
- package/dist/client/assets/automations-D69ikqKh.js +1 -0
- package/dist/client/assets/{autosend-BberXmli.js → autosend-CVNOmzPu.js} +1 -1
- package/dist/client/assets/{avatar-C9HiP4eS.js → avatar-BzRNaDEk.js} +1 -1
- package/dist/client/assets/badge-C5M6nZd4.js +1 -0
- package/dist/client/assets/block-document-UPtnFOJG.js +3 -0
- package/dist/client/assets/{blocks-preview-workspace-context-Bwmvvd4S.js → blocks-preview-workspace-context-DAFMxzU6.js} +1 -1
- package/dist/client/assets/breadcrumb-0yy48vm9.js +1 -0
- package/dist/client/assets/{buckets-BndbOAGO.js → buckets-CktpbsrB.js} +1 -1
- package/dist/client/assets/build-improve-prompt-doc-C-SX02eL.js +2 -0
- package/dist/client/assets/bulk-category-panel-MrIv4eD2.js +1 -0
- package/dist/client/assets/calendar-QcX36iLy.js +1 -0
- package/dist/client/assets/capability-load-error-BVb3VEU2.js +1 -0
- package/dist/client/assets/category-editor-DZThBJlF.js +1 -0
- package/dist/client/assets/{chart-8nXuVw9P.js → chart-BVjaATZw.js} +5 -5
- package/dist/client/assets/{chat-context-tZCX_cqt.js → chat-context-ELO8A2Ar.js} +6 -6
- package/dist/client/assets/{chat-draft-BCeqPSxA.js → chat-draft-tDfZTlxU.js} +1 -1
- package/dist/client/assets/checkbox-iGlb02v9.js +1 -0
- package/dist/client/assets/choose-editor-CWLAiGtz.js +1 -0
- package/dist/client/assets/{cli-auth-success-D39z_FO3.js → cli-auth-success-DyNW_Pmq.js} +1 -1
- package/dist/client/assets/{client-icons-DpcP1bht.js → client-icons-BuRYGGKe.js} +1 -1
- package/dist/client/assets/collapsible-PyJ2NOzW.js +1 -0
- package/dist/client/assets/collection-detail-DXmBNKMr.js +1 -0
- package/dist/client/assets/collection-display-button-Cz5AkuIg.js +1 -0
- package/dist/client/assets/{collection-search-J9Bt25gS.js → collection-search-DM8MkJfo.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DBeauaNS.js → collection-table-wrapper-cBr_X4Jo.js} +1 -1
- package/dist/client/assets/collection-tabs-aKKPIP9M.js +1 -0
- package/dist/client/assets/combobox-CQBdlQef.js +1 -0
- package/dist/client/assets/command-CZcxzTcw.js +1 -0
- package/dist/client/assets/{companion-mcps-section-xmRpNJBK.js → companion-mcps-section-B7qgbnOZ.js} +1 -1
- package/dist/client/assets/connect-D6Wz7x6C.js +8 -0
- package/dist/client/assets/connect-layout-DzSDvFP2.js +1 -0
- package/dist/client/assets/{connection-DD0omVHZ.js → connection-DStV2sLP.js} +1 -1
- package/dist/client/assets/connection-card-CpIJKLp3.js +1 -0
- package/dist/client/assets/connection-detail-junbbrHX.js +1 -0
- package/dist/client/assets/{connection-form-helpers-CHlcdgAK.js → connection-form-helpers-DM_wSOEJ.js} +1 -1
- package/dist/client/assets/connections-DvjnCZJT.js +1 -0
- package/dist/client/assets/{create-organization-dialog-1mI4Ad1B.js → create-organization-dialog-CvXOAbwA.js} +1 -1
- package/dist/client/assets/{decofile-api-BNWbEMR6.js → decofile-api-zRlIvvNL.js} +1 -1
- package/dist/client/assets/{decopilot-BvepxP_-.js → decopilot-BI8eOOPY.js} +2 -2
- package/dist/client/assets/dialog-AoC07APJ.js +1 -0
- package/dist/client/assets/discover-zo2iAYFW.js +1 -0
- package/dist/client/assets/domain-settings-C6kSznIr.js +1 -0
- package/dist/client/assets/download-app-dialog-CsiIuf7j.js +1 -0
- package/dist/client/assets/{drawer-BIjkXMV3.js → drawer-DGzquxJ8.js} +1 -1
- package/dist/client/assets/{editor-D4Ls62vg.js → editor-oL1B7LVJ.js} +1 -1
- package/dist/client/assets/{empty-state-BdiOfgle.js → empty-state-DxJQDjCw.js} +1 -1
- package/dist/client/assets/{empty-state-CyICQznD.js → empty-state-Y08kvU5o.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Dbm_cKaX.js → extract-connection-data-C7Wh9xkI.js} +1 -1
- package/dist/client/assets/{feature-gate-Bp7Cydio.js → feature-gate-C1d068b1.js} +1 -1
- package/dist/client/assets/feature-paywall-BoABVlUQ.js +1 -0
- package/dist/client/assets/file-explorer-DG5Gvb-w.js +2 -0
- package/dist/client/assets/{file-preview-CARebwHJ.js → file-preview-iaqpqUYi.js} +1 -1
- package/dist/client/assets/file-share-button-D0lT5ixf.js +3 -0
- package/dist/client/assets/{file-type-icon-C9Qn36v4.js → file-type-icon-lZW2ows7.js} +1 -1
- package/dist/client/assets/{folder-icon-BLBZBD_a.js → folder-icon-DVG7PK8X.js} +1 -1
- package/dist/client/assets/{form-CSXgIHLz.js → form-CYsJTpNM.js} +1 -1
- package/dist/client/assets/{gateway-client-BuiOykcN.js → gateway-client-CnYYocwu.js} +1 -1
- package/dist/client/assets/general-BiYLEv2o.js +1 -0
- package/dist/client/assets/{github-icon-huXDOAgf.js → github-icon-swNUSpAU.js} +1 -1
- package/dist/client/assets/home-BbjS-573.js +1 -0
- package/dist/client/assets/{hooks-BoX5BC-f.js → hooks-BlE0QZwR.js} +2 -2
- package/dist/client/assets/{hooks-DZOMRp7D.js → hooks-D0dDgrIf.js} +1 -1
- package/dist/client/assets/icon-button-7c--Wy5B.js +1 -0
- package/dist/client/assets/{index-BWpNlf6e.js → index-0-s9o3tr.js} +1 -1
- package/dist/client/assets/index-BDYXeKzz.js +1 -0
- package/dist/client/assets/index-BOHOyAF8.css +1 -0
- package/dist/client/assets/{index-tj4CWdxr.js → index-BUfoj27y.js} +1 -1
- package/dist/client/assets/index-BchRuDAc.js +26 -0
- package/dist/client/assets/{index-BD213WLU.js → index-C97O3ClY.js} +1 -1
- package/dist/client/assets/index-CutV0Ygc.js +1 -0
- package/dist/client/assets/{index-DqT4mG5l.js → index-DGY2nhhI.js} +1 -1
- package/dist/client/assets/index-DItj2r3e.js +5 -0
- package/dist/client/assets/index-DKXWNSdB.js +1 -0
- package/dist/client/assets/{index-Bb-Re5q8.js → index-DllcfiZL.js} +1 -1
- package/dist/client/assets/{index-DiULBiX9.js → index-DyCAAYSx.js} +1 -1
- package/dist/client/assets/index-EcuFIS2a.js +235 -0
- package/dist/client/assets/{index-DWw5wi2G.js → index-Exw_Yjch.js} +1 -1
- package/dist/client/assets/{index-2gtoysbs.js → index-fN6RkMSD.js} +1 -1
- package/dist/client/assets/{index-redirect-BQTLrDGT.js → index-redirect-Bm4zqVUy.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-CjWlcBHD.js → infiniteQueryObserver-3RxH1tr-.js} +1 -1
- package/dist/client/assets/infra-billing-CmY2herT.js +1 -0
- package/dist/client/assets/input-BrPa4I3Z.js +8 -0
- package/dist/client/assets/input-Buz_7xoG.js +1 -0
- package/dist/client/assets/input-C5klQNJJ.js +1 -0
- package/dist/client/assets/{integration-icon-BeEdjsn9.js → integration-icon-D3FHJbYu.js} +1 -1
- package/dist/client/assets/{label-BMxIRiEr.js → label-BX1BwzZ4.js} +1 -1
- package/dist/client/assets/{last-preview-page-B_H0ubHa.js → last-preview-page-BSVfE6AT.js} +1 -1
- package/dist/client/assets/layout-030aDjqi.js +1 -0
- package/dist/client/assets/legacy-agents-deep-BblX_qPq.js +1 -0
- package/dist/client/assets/legacy-main-redirect-BDaODIKZ.js +1 -0
- package/dist/client/assets/library-CmkU9fCT.js +161 -0
- package/dist/client/assets/{login-C4Dx9xMO.js → login-BpUdj6Fq.js} +1 -1
- package/dist/client/assets/{markdown-DGWjAeXL.js → markdown-VKlC4_bJ.js} +3 -3
- package/dist/client/assets/{mcp-app-renderer-BTjC7Gse.js → mcp-app-renderer-wS7imsel.js} +2 -2
- package/dist/client/assets/{mcp-oauth-C4khbNJJ.js → mcp-oauth-B7YJNr4N.js} +1 -1
- package/dist/client/assets/members-2ZkimP3H.js +1 -0
- package/dist/client/assets/message-templates-DyGM313y.js +1 -0
- package/dist/client/assets/{mini-report-page-Ci4cxCz8.js → mini-report-page-CYdef8vQ.js} +1 -1
- package/dist/client/assets/mock-board-Dk2mRFCa.js +90 -0
- package/dist/client/assets/{monaco-editor-CMRYkmyb.js → monaco-editor-ChRh_qus.js} +2 -2
- package/dist/client/assets/{monitoring-stats-row-PncjnNwy.js → monitoring-stats-row-DirMMFq2.js} +1 -1
- package/dist/client/assets/multi-select-CYKeAXVo.js +1 -0
- package/dist/client/assets/{mustache-CPZS2ebG.js → mustache-BpzqsH6c.js} +1 -1
- package/dist/client/assets/{oauth-callback-CETK2WZB.js → oauth-callback-CLQttSb2.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DqbbngEF.js → oauth-callback-ai-provider-C5AqSldx.js} +1 -1
- package/dist/client/assets/{onboarding-B5zAGi2B.js → onboarding-BYeSkDcE.js} +1 -1
- package/dist/client/assets/optimistic-project-sidebar-views-hB0JGrCs.js +1 -0
- package/dist/client/assets/{org-file-open-context-BCUpiY_R.js → org-file-open-context-D26BTBiX.js} +1 -1
- package/dist/client/assets/{organization-choice-BNulT5zU.js → organization-choice-sm9k2ko4.js} +1 -1
- package/dist/client/assets/orgs-BT6gh3Sc.js +1 -0
- package/dist/client/assets/{page-seo-form-BrHgBXF1.js → page-seo-form-Bhk-2qvu.js} +1 -1
- package/dist/client/assets/{pair-B46EBBjF.js → pair-Bh73YYpe.js} +8 -8
- package/dist/client/assets/plan-ladder-B-hb17ya.js +1 -0
- package/dist/client/assets/{popover-yk_ePqAA.js → popover-Bff85VlI.js} +1 -1
- package/dist/client/assets/post-calendar-BUJnl75O.js +1 -0
- package/dist/client/assets/post-editor-B8ClYTJb.js +1 -0
- package/dist/client/assets/{preview-content-CfbsbElk.js → preview-content-C4FuOpTi.js} +1 -1
- package/dist/client/assets/{preview-dialog-CA2C3DS4.js → preview-dialog-DY1kQ4y_.js} +1 -1
- package/dist/client/assets/primitives-BCCkMTJb.js +1 -0
- package/dist/client/assets/profile-T7ySaz_t.js +1 -0
- package/dist/client/assets/project-app-view-D4HCSkue.js +1 -0
- package/dist/client/assets/project-feed-CRHprIgj.js +1 -0
- package/dist/client/assets/{project-icon-MWmzrrm8.js → project-icon-D_oHwik9.js} +1 -1
- package/dist/client/assets/project-reports-CzVFjEoR.js +1 -0
- package/dist/client/assets/project-tasks-c_cBe8VF.js +1 -0
- package/dist/client/assets/{prompts-4lILOzK9.js → prompts-BuPAnA4R.js} +1 -1
- package/dist/client/assets/record-editor-CHfqyrFA.js +1 -0
- package/dist/client/assets/redirect-editor-BrEMZWAU.js +1 -0
- package/dist/client/assets/registry-4kJYrulU.js +2 -0
- package/dist/client/assets/registry-layout-o90YrVKa.js +27 -0
- package/dist/client/assets/reports-COffkxyo.js +1 -0
- package/dist/client/assets/{reports-BpxYdv2_.js → reports-DEVutxJq.js} +2 -2
- package/dist/client/assets/reports-onboarding-Dt5mvf07.js +1 -0
- package/dist/client/assets/reports-tab-C6PZg0b6.js +2 -0
- package/dist/client/assets/repositories-DBFrDUwl.js +1 -0
- package/dist/client/assets/repository-import-picker-ftg0FRzY.js +1 -0
- package/dist/client/assets/repository-picker-BKj90hIS.js +1 -0
- package/dist/client/assets/{require-capability-CmtOZnXt.js → require-capability-gpVnF6U4.js} +1 -1
- package/dist/client/assets/{required-auth-layout-RoMNnMPO.js → required-auth-layout-BhdxJMdb.js} +1 -1
- package/dist/client/assets/{reset-password-BeUL8IgX.js → reset-password-DD2ixVIR.js} +1 -1
- package/dist/client/assets/resizable-wU1MiASn.js +1 -0
- package/dist/client/assets/review-settings-3uLiRV1J.js +1 -0
- package/dist/client/assets/{rich-text-link-control-CHsxXHIo.js → rich-text-link-control-Bn-QsIS6.js} +2 -2
- package/dist/client/assets/roles-DX_ap2B0.js +1 -0
- package/dist/client/assets/route-Bdqr734y.js +1 -0
- package/dist/client/assets/route-Cg6AOuOY.js +1 -0
- package/dist/client/assets/route-DGhKwFXa.js +1 -0
- package/dist/client/assets/route-page-header-DKm5kHtX.js +1 -0
- package/dist/client/assets/runnable-block-editor-9i5DpxOA.js +16 -0
- package/dist/client/assets/{sandbox-lifecycle-context-C7VKOJoV.js → sandbox-lifecycle-context-BHn9YFEW.js} +2 -2
- package/dist/client/assets/{schema-1zAO-l7e.js → schema-FDf70VFI.js} +1 -1
- package/dist/client/assets/{scroll-area-C-wtbVS1.js → scroll-area-DMmJ7JtI.js} +1 -1
- package/dist/client/assets/search-input-BHVk6m6A.js +1 -0
- package/dist/client/assets/search-toggle-CCC7TvwN.js +1 -0
- package/dist/client/assets/secrets-BNtrMaDs.js +1 -0
- package/dist/client/assets/sections-editor-HtflyYMM.js +2 -0
- package/dist/client/assets/select-DBfOOW9i.js +1 -0
- package/dist/client/assets/select-model-2C5Fdpra.js +1 -0
- package/dist/client/assets/seo-editor-CFULobkJ.js +1 -0
- package/dist/client/assets/separator-8fswVHAH.js +1 -0
- package/dist/client/assets/settings-tab-s3d5MtS-.js +5 -0
- package/dist/client/assets/{sheet-i72Qx7sL.js → sheet-DWSThpSZ.js} +1 -1
- package/dist/client/assets/shell-layout-BQnbNNla.js +1 -0
- package/dist/client/assets/{shell-layout-CuFt8bor.css → shell-layout-CE2Eihra.css} +1 -1
- package/dist/client/assets/sidebar-CoC2_Nad.js +1 -0
- package/dist/client/assets/{skill-preview-gfYVdSdM.js → skill-preview-QgrtYNqp.js} +1 -1
- package/dist/client/assets/skills-BVINvlqv.js +1 -0
- package/dist/client/assets/sso-CSqM_F3b.js +1 -0
- package/dist/client/assets/store-DBNpNTVQ.js +1 -0
- package/dist/client/assets/store-registry-DLmFNBij.js +2 -0
- package/dist/client/assets/{switch-BQFtt3BH.js → switch-BIfmgDHS.js} +1 -1
- package/dist/client/assets/synced-repos-CG_pm_Ch.js +1 -0
- package/dist/client/assets/{table-6I6YKvFY.js → table-CEVOOGGz.js} +1 -1
- package/dist/client/assets/{tabs-CLziM0Ww.js → tabs-Dd0IWElc.js} +1 -1
- package/dist/client/assets/{task-board-DrUf5p-Z.js → task-board-Dip4Wu9j.js} +1 -1
- package/dist/client/assets/task-route-SKFoAFiU.js +1 -0
- package/dist/client/assets/task-status-k7EGfTLN.js +1 -0
- package/dist/client/assets/taskboard-analytics-C3lk9wb7.js +1 -0
- package/dist/client/assets/tasks-Sl_c9zFF.js +1 -0
- package/dist/client/assets/{tasks-Drgd6az8.js → tasks-ebQIYdwz.js} +4 -4
- package/dist/client/assets/textarea-D5v3ol7T.js +1 -0
- package/dist/client/assets/thread-button-C3YUAV-G.js +1 -0
- package/dist/client/assets/{thread-intent-F-sZEflj.js → thread-intent-CTSjhfEo.js} +1 -1
- package/dist/client/assets/thread-route-B57JfaL5.js +1 -0
- package/dist/client/assets/thread-route-CHwqHPf_.js +1 -0
- package/dist/client/assets/thread-sheet-body-Hqh1hVbj.js +1 -0
- package/dist/client/assets/toggle-group-CwAn2mKr.js +1 -0
- package/dist/client/assets/toolbar-icon-button-ChZE-2zp.js +1 -0
- package/dist/client/assets/{tooltip-DV2xHesQ.js → tooltip-nr5oS_bm.js} +1 -1
- package/dist/client/assets/{track-ZuOMvhd2.js → track-BDYWN4z3.js} +1 -1
- package/dist/client/assets/{types-27TVsPN_.js → types-7UQ7SDxU.js} +3 -3
- package/dist/client/assets/usage-stats-YafP0g9G.js +1 -0
- package/dist/client/assets/use-ai-providers-D-abiIwe.js +1 -0
- package/dist/client/assets/use-automations-D_y1YNke.js +1 -0
- package/dist/client/assets/{use-autosave-DOzyZumC.js → use-autosave-z8cIzzdm.js} +1 -1
- package/dist/client/assets/use-connect-companion-jQzCS0Na.js +1 -0
- package/dist/client/assets/use-connection-BKZRi94S.js +1 -0
- package/dist/client/assets/{use-copy-C_ctOeuP.js → use-copy-Cp_DyXH6.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-D1w9d4ex.js → use-create-virtual-mcp-nvoTomrD.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-onM9TTf8.js → use-date-fns-locale-CNoKSvxx.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DqyNKPJM.js → use-debounced-autosave-B0HBbqeX.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B9nG3bW5.js → use-debounced-value-BgYHDTDk.js} +1 -1
- package/dist/client/assets/use-deco-credits-CqbkXgA9.js +1 -0
- package/dist/client/assets/{use-decopilot-events-BpuQrfKN.js → use-decopilot-events-qaEKsixC.js} +1 -1
- package/dist/client/assets/use-delete-connection-CqvqqWgS.js +1 -0
- package/dist/client/assets/{use-deployment-admin-BVfgEagI.js → use-deployment-admin-DzkF6L4b.js} +1 -1
- package/dist/client/assets/{use-entitlements-Dl7pAsQ5.js → use-entitlements-kPr6KRf9.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-mcfOeAAq.js → use-fast-preview-draft-url-BBBDyhsD.js} +1 -1
- package/dist/client/assets/use-file-configs-6ygOocDG.js +1 -0
- package/dist/client/assets/use-in-settings-BCDqA2EC.js +1 -0
- package/dist/client/assets/{use-infinite-scroll-PhBGPm8H.js → use-infinite-scroll-D0T36z_V.js} +1 -1
- package/dist/client/assets/use-join-requests-BBovhUnp.js +1 -0
- package/dist/client/assets/use-main-panel-tabs-BghanH6r.js +1 -0
- package/dist/client/assets/use-mcp-auth-status-h4sAecTI.js +1 -0
- package/dist/client/assets/{use-mcp-client-e_hCatGm.js → use-mcp-client-B_gcvvCy.js} +6 -6
- package/dist/client/assets/{use-mcp-prompts-DJRXjL4_.js → use-mcp-prompts-DfSKL4Gu.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-g86k4oib.js → use-mcp-tools-DC47roTz.js} +1 -1
- package/dist/client/assets/use-members-C6brpkJ1.js +1 -0
- package/dist/client/assets/{use-mobile-hIijCK0k.js → use-mobile-BZ15DgEB.js} +1 -1
- package/dist/client/assets/use-navigate-to-agent-B8SXI0oO.js +1 -0
- package/dist/client/assets/use-open-billing-url-BAg3ZeFq.js +1 -0
- package/dist/client/assets/use-org-auth-client-8fDIgHEZ.js +1 -0
- package/dist/client/assets/use-org-fs-Bf6n51Xm.js +1 -0
- package/dist/client/assets/use-org-repo-syncs-CnBqiATM.js +8 -0
- package/dist/client/assets/{use-org-sso-BvfIL0yq.js → use-org-sso-QeqdMaIa.js} +1 -1
- package/dist/client/assets/use-organization-roles-tuKknI1K.js +1 -0
- package/dist/client/assets/use-organization-settings-DvtBymY3.js +1 -0
- package/dist/client/assets/{use-panel-navigate-WrD0KEYx.js → use-panel-navigate-IItrbgmN.js} +1 -1
- package/dist/client/assets/use-project-native-view-presence-WwnxvZuP.js +1 -0
- package/dist/client/assets/use-project-scope-CCxyXvEU.js +1 -0
- package/dist/client/assets/use-registry-connections-Bd4wJHbx.js +1 -0
- package/dist/client/assets/use-releases-DZvNer89.js +1 -0
- package/dist/client/assets/use-reports-diagnostic-BeTEI2FZ.js +1 -0
- package/dist/client/assets/{use-route-default-main-Djaj_cL9.js → use-route-default-main-BhbKsXCz.js} +1 -1
- package/dist/client/assets/use-secrets-Bq9yyXHE.js +1 -0
- package/dist/client/assets/{use-section-preview-base-BOFovHh4.js → use-section-preview-base--XbKHK2U.js} +1 -1
- package/dist/client/assets/{use-session-runtime-BR1aW1y5.js → use-session-runtime-B5wMaHtP.js} +1 -1
- package/dist/client/assets/use-tags-Do2tDPSO.js +1 -0
- package/dist/client/assets/use-task-board-analytics-MK_Z2cUq.js +1 -0
- package/dist/client/assets/use-task-metadata-CQjLXps1.js +1 -0
- package/dist/client/assets/use-thread-outputs-DYukUH5N.js +1 -0
- package/dist/client/assets/{use-view-mode-B0LeaJg7.js → use-view-mode-BEPkb8x0.js} +1 -1
- package/dist/client/assets/use-virtual-mcp-Ji9vcgUj.js +1 -0
- package/dist/client/assets/useInfiniteQuery-CzQJkRT9.js +1 -0
- package/dist/client/assets/{useQueries-C-SV8tD7.js → useQueries-D0xhxw7a.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-D9iG0Y5m.js +1 -0
- package/dist/client/assets/{users-BiOPZ43X.js → users-DzwkCv2F.js} +1 -1
- package/dist/client/assets/utils-y2q6u6PK.js +4 -0
- package/dist/client/assets/variant-calendar-D1R9xk7D.js +1 -0
- package/dist/client/assets/{variant-matcher-override-BFQoXu82.js → variant-matcher-override-qHzE4baz.js} +1 -1
- package/dist/client/assets/view-mode-toggle-Ca0bFull.js +1 -0
- package/dist/client/assets/{virtual-mcp-ldxphi5G.js → virtual-mcp-Dji-1ojO.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/cli.js +3 -3
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/Check-B3RSsr_D.js +0 -1
- package/dist/client/assets/ChevronRight-USKkhEpL.js +0 -1
- package/dist/client/assets/ChevronSelectorVertical-DpRb2z1l.js +0 -1
- package/dist/client/assets/Database01-C0YJpjc3.js +0 -1
- package/dist/client/assets/DotsVertical-CsjwfYzf.js +0 -1
- package/dist/client/assets/File02-BvR-HYxK.js +0 -1
- package/dist/client/assets/GitBranch01-rWb2SJK9.js +0 -1
- package/dist/client/assets/HardDrive-DNTPLPT4.js +0 -1
- package/dist/client/assets/MessageCircle01-DBcg2aiD.js +0 -1
- package/dist/client/assets/Printer-CvyxF9Jo.js +0 -1
- package/dist/client/assets/Shield01-CqB4I7qm.js +0 -1
- package/dist/client/assets/Tool01-DouqPjim.js +0 -1
- package/dist/client/assets/XClose-BgzK-Dwz.js +0 -1
- package/dist/client/assets/ZoomOut-BPxprY2s.js +0 -1
- package/dist/client/assets/add-connection-dialog-DZjTm9W3.js +0 -1
- package/dist/client/assets/agent-analytics-DmvdLg8B.js +0 -2
- package/dist/client/assets/agent-app-BvmFdS4C.js +0 -1
- package/dist/client/assets/agent-assets-czUGY90q.js +0 -1
- package/dist/client/assets/agent-automation-C5Kr5Oj3.js +0 -20
- package/dist/client/assets/agent-automations-D-3-Opoc.js +0 -1
- package/dist/client/assets/agent-connect-sources-CjhmYssY.js +0 -1
- package/dist/client/assets/agent-deck-BC5MWVm-.js +0 -1
- package/dist/client/assets/agent-e2e-DkL4Ltr6.js +0 -1
- package/dist/client/assets/agent-experiments--rXT-2aB.js +0 -1
- package/dist/client/assets/agent-file-C3XkHLMm.js +0 -1
- package/dist/client/assets/agent-hosting-DaIfm8Hu.js +0 -1
- package/dist/client/assets/agent-icon-CczrFEe7.js +0 -1
- package/dist/client/assets/agent-library-file-Dji653pU.js +0 -1
- package/dist/client/assets/agent-monitor-C-HIyaF_.js +0 -1
- package/dist/client/assets/agent-overview-cm15sxNU.js +0 -1
- package/dist/client/assets/agent-settings-XmhY1FOi.js +0 -1
- package/dist/client/assets/agent-site-editor-code-_Tz57RqE.js +0 -2
- package/dist/client/assets/agent-site-editor-content-DOAcxz0t.js +0 -2
- package/dist/client/assets/agent-site-editor-preview-mg5Q6hoW.js +0 -518
- package/dist/client/assets/agent-view-ClMILC98.js +0 -1
- package/dist/client/assets/agents-list-rKFF5b3o.js +0 -1
- package/dist/client/assets/anchors-yqDzZN4K.js +0 -1
- package/dist/client/assets/api-keys-AIfL76r6.js +0 -1
- package/dist/client/assets/api-keys-B6ry5Bc6.js +0 -1
- package/dist/client/assets/app-editor-BZKFeBmU.js +0 -1
- package/dist/client/assets/asset-utils-DhbLEVKo.js +0 -1
- package/dist/client/assets/auth-entry-CwWjlqGu.js +0 -1
- package/dist/client/assets/automation-list-row-Btr-Kty6.js +0 -1
- package/dist/client/assets/automation-runs-CnOOOwZJ.js +0 -1
- package/dist/client/assets/automations-CtLmB1Eo.js +0 -1
- package/dist/client/assets/badge-Bu51Hlti.js +0 -1
- package/dist/client/assets/block-document-BLCekKXO.js +0 -3
- package/dist/client/assets/breadcrumb-Dhdru7Jh.js +0 -1
- package/dist/client/assets/build-improve-prompt-doc-Cedp3vV1.js +0 -2
- package/dist/client/assets/bulk-category-panel-D3c_qJDk.js +0 -1
- package/dist/client/assets/calendar-DIQx67oO.js +0 -1
- package/dist/client/assets/capability-load-error-CJMvYDf4.js +0 -1
- package/dist/client/assets/cards-BVw8sRdW.js +0 -8
- package/dist/client/assets/category-editor-C7sRrVfl.js +0 -1
- package/dist/client/assets/checkbox-jLf7fBuW.js +0 -1
- package/dist/client/assets/choose-editor-Cbu3-nVC.js +0 -1
- package/dist/client/assets/collapsible-CTgXdVQa.js +0 -1
- package/dist/client/assets/collection-detail-BF7WM7Gn.js +0 -1
- package/dist/client/assets/collection-display-button-C-4xB6xx.js +0 -1
- package/dist/client/assets/collection-tabs-CrXIJeNf.js +0 -1
- package/dist/client/assets/combobox-BHrqHmge.js +0 -1
- package/dist/client/assets/command-B-XD29Nx.js +0 -1
- package/dist/client/assets/command-palette-store-DK-56E2K.js +0 -1
- package/dist/client/assets/connect-D4qCE3TM.js +0 -8
- package/dist/client/assets/connect-layout-DGO84ImO.js +0 -1
- package/dist/client/assets/connection-card-fcMCwbTh.js +0 -1
- package/dist/client/assets/connection-detail-DS015J4e.js +0 -1
- package/dist/client/assets/connections-C98FMYyY.js +0 -1
- package/dist/client/assets/dialog-llvhXw2o.js +0 -1
- package/dist/client/assets/discover-DNPHmIfF.js +0 -1
- package/dist/client/assets/domain-settings-CXxEmIjB.js +0 -1
- package/dist/client/assets/download-app-dialog-D_4eQbbs.js +0 -1
- package/dist/client/assets/dropdown-menu-C5iafa8S.js +0 -1
- package/dist/client/assets/feature-paywall-DEy2mpV2.js +0 -1
- package/dist/client/assets/file-explorer-Bs7B2-rr.js +0 -2
- package/dist/client/assets/file-share-button-Dk1ugrdV.js +0 -3
- package/dist/client/assets/general-BYFfG0fF.js +0 -1
- package/dist/client/assets/home-DTaaCW3K.js +0 -1
- package/dist/client/assets/index-2eKztu7k.js +0 -5
- package/dist/client/assets/index-BH7uCYoT.js +0 -1
- package/dist/client/assets/index-CSd_k8Np.js +0 -1
- package/dist/client/assets/index-CiMUXLco.js +0 -26
- package/dist/client/assets/index-CpNTsElB.css +0 -1
- package/dist/client/assets/index-D4RUT3q0.js +0 -1
- package/dist/client/assets/index-D_X-LIyA.js +0 -1
- package/dist/client/assets/index-Dc7hzqoi.js +0 -235
- package/dist/client/assets/infra-billing-D6jrbNxA.js +0 -1
- package/dist/client/assets/input-DXlaTX4w.js +0 -1
- package/dist/client/assets/input-D_FfvHr0.js +0 -8
- package/dist/client/assets/input-uIV5S_EX.js +0 -1
- package/dist/client/assets/layout-Dli4i2a0.js +0 -1
- package/dist/client/assets/legacy-agents-deep-CoiLV3QJ.js +0 -1
- package/dist/client/assets/legacy-main-redirect-BZ4nzqkQ.js +0 -1
- package/dist/client/assets/library-Dste3SFA.js +0 -161
- package/dist/client/assets/members-CRtKrUle.js +0 -1
- package/dist/client/assets/message-templates-B8kOo0Kk.js +0 -1
- package/dist/client/assets/mock-board-DRa60E6i.js +0 -90
- package/dist/client/assets/multi-select-DzAZ8Rb8.js +0 -1
- package/dist/client/assets/optimistic-project-sidebar-views-CrZ9OeIk.js +0 -1
- package/dist/client/assets/orgs-B1TBklWZ.js +0 -1
- package/dist/client/assets/plan-ladder-B2pv9Y73.js +0 -1
- package/dist/client/assets/post-calendar-Bx8YiCbs.js +0 -1
- package/dist/client/assets/post-editor-B1fD7o8C.js +0 -1
- package/dist/client/assets/primitives-JiGRyPkw.js +0 -1
- package/dist/client/assets/profile-CDR0JVtv.js +0 -1
- package/dist/client/assets/project-app-view-8VWdrWMf.js +0 -1
- package/dist/client/assets/project-feed-ChJRKxhk.js +0 -1
- package/dist/client/assets/project-reports-D31utlHg.js +0 -1
- package/dist/client/assets/project-tasks-D2AAgqxo.js +0 -1
- package/dist/client/assets/record-editor-DPAL8Tq5.js +0 -1
- package/dist/client/assets/redirect-editor-EPs_GX-_.js +0 -1
- package/dist/client/assets/registry-Dw8UrRRZ.js +0 -2
- package/dist/client/assets/registry-layout-CC2lewiS.js +0 -27
- package/dist/client/assets/reports-Ch9UvBcS.js +0 -1
- package/dist/client/assets/reports-onboarding-Dhm8IBuD.js +0 -1
- package/dist/client/assets/reports-tab-BJWrZp37.js +0 -2
- package/dist/client/assets/repositories-CMIGVJwC.js +0 -1
- package/dist/client/assets/repository-import-picker-DhVniDI2.js +0 -1
- package/dist/client/assets/repository-picker-BkoSI-jm.js +0 -1
- package/dist/client/assets/resizable-Bt7dvMCc.js +0 -1
- package/dist/client/assets/review-settings-Cx_Yzx40.js +0 -1
- package/dist/client/assets/roles-BNleKwt9.js +0 -1
- package/dist/client/assets/route-CHqG9ihd.js +0 -1
- package/dist/client/assets/route-DqJoK5dW.js +0 -1
- package/dist/client/assets/route-x8jgkj5T.js +0 -1
- package/dist/client/assets/runnable-block-editor-xmOnaiFL.js +0 -16
- package/dist/client/assets/search-input-Pobww52G.js +0 -1
- package/dist/client/assets/secrets-BF5nuoR4.js +0 -1
- package/dist/client/assets/sections-editor-B1LpXw4X.js +0 -2
- package/dist/client/assets/select-BkKPcZFe.js +0 -1
- package/dist/client/assets/select-model-DPv-zVVj.js +0 -1
- package/dist/client/assets/seo-editor-9G7mQFJ5.js +0 -1
- package/dist/client/assets/settings-tab-D1V5Uszb.js +0 -5
- package/dist/client/assets/shell-layout-Ce0aCJuX.js +0 -1
- package/dist/client/assets/sidebar-C5KRz1Pj.js +0 -1
- package/dist/client/assets/skills-CgTiBPyO.js +0 -1
- package/dist/client/assets/sso-BK-aRT5P.js +0 -1
- package/dist/client/assets/store-Nm6KtwbD.js +0 -1
- package/dist/client/assets/store-registry-Cs6bPPkP.js +0 -2
- package/dist/client/assets/synced-repos-B1z4DDCt.js +0 -1
- package/dist/client/assets/task-route-BCTCy27Q.js +0 -1
- package/dist/client/assets/task-status-DhCT2ly_.js +0 -1
- package/dist/client/assets/taskboard-analytics-Cf1r1f7I.js +0 -1
- package/dist/client/assets/tasks-BNvHI7hJ.js +0 -1
- package/dist/client/assets/textarea-BU6xemAP.js +0 -1
- package/dist/client/assets/thread-route-BBf64Mwk.js +0 -1
- package/dist/client/assets/thread-route-BSYRqZDg.js +0 -1
- package/dist/client/assets/thread-sheet-body-B4OUWlMn.js +0 -1
- package/dist/client/assets/toggle-group-BiU_UDOq.js +0 -1
- package/dist/client/assets/toolbar-icon-button-PuQFE8Y9.js +0 -1
- package/dist/client/assets/usage-stats-vMRDbAUM.js +0 -1
- package/dist/client/assets/use-ai-providers-BnF5Rw_n.js +0 -1
- package/dist/client/assets/use-automations-Bo0S3g8m.js +0 -1
- package/dist/client/assets/use-connect-companion-CClQCUMS.js +0 -1
- package/dist/client/assets/use-connection-Ba04fHwa.js +0 -1
- package/dist/client/assets/use-deco-credits-BGBshlLi.js +0 -1
- package/dist/client/assets/use-delete-connection-Cns6x8UC.js +0 -1
- package/dist/client/assets/use-file-configs-DYGSdjth.js +0 -1
- package/dist/client/assets/use-join-requests-DjeVFQr9.js +0 -1
- package/dist/client/assets/use-main-panel-tabs-sSRGo66A.js +0 -1
- package/dist/client/assets/use-mcp-auth-status-I377R0Kg.js +0 -1
- package/dist/client/assets/use-members-DPYHJDe2.js +0 -1
- package/dist/client/assets/use-navigate-to-agent-C8pu0B4z.js +0 -1
- package/dist/client/assets/use-open-billing-url-Df7K1DCF.js +0 -1
- package/dist/client/assets/use-org-auth-client-DbPU3bA-.js +0 -1
- package/dist/client/assets/use-org-fs-Du-ErRPs.js +0 -1
- package/dist/client/assets/use-org-notice-CyiiFkRG.js +0 -1
- package/dist/client/assets/use-organization-roles-FAEtbpE5.js +0 -1
- package/dist/client/assets/use-organization-settings-CKbX2SdA.js +0 -1
- package/dist/client/assets/use-project-native-view-presence-DWzPH-Sc.js +0 -1
- package/dist/client/assets/use-project-scope-DU0-JxYr.js +0 -1
- package/dist/client/assets/use-registry-connections-SLFMHpqj.js +0 -1
- package/dist/client/assets/use-releases-CFNTwgY3.js +0 -1
- package/dist/client/assets/use-reports-diagnostic-8BvW2in8.js +0 -1
- package/dist/client/assets/use-secrets-DVry--sz.js +0 -1
- package/dist/client/assets/use-tags-CZXCbbwL.js +0 -1
- package/dist/client/assets/use-task-board-analytics-Ci1AhxvH.js +0 -1
- package/dist/client/assets/use-task-metadata-Dt9l5S_a.js +0 -1
- package/dist/client/assets/use-thread-outputs-Dq-RN0P_.js +0 -1
- package/dist/client/assets/use-virtual-mcp-DkK7ErtB.js +0 -1
- package/dist/client/assets/useInfiniteQuery-CspLjV7h.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BiQYAhJn.js +0 -1
- package/dist/client/assets/utils-DsvmRe8M.js +0 -4
- package/dist/client/assets/variant-calendar-DImnsJnP.js +0 -1
- package/dist/client/assets/view-mode-toggle-DvGhnpsV.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var M0$=D(()=>{cg()});f
|
|
|
2076
2076
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Lu`
|
|
2077
2077
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
2078
2078
|
`.execute($)}}async function o6$($){await kX4($),await SX4($);let Z=new n6$({db:$,provider:{getMigrations:()=>Promise.resolve(bs0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function CX4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Zt0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await bD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await o6$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function _X4(){let $=l$(),Z=new n6$({db:$.db,provider:{getMigrations:()=>Promise.resolve(bs0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var a6$=D(()=>{p6$();Qt0();dQ()});async function zJ0($){let Z={...process.env},Q=H90($,Z);console.log(VR1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?Y$$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (PY0(),zY0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Qt0(),G$$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (dQ(),A1$)),{migrateToLatest:F}=await Promise.resolve().then(() => (a6$(),r6$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return I0$(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ys0=D(()=>{cg();J$$();o1()});var Z5$={};$0(Z5$,{updateService:()=>cz,subscribeCliState:()=>us0,setTuiConsoleIntercepted:()=>PJ0,setServerUrl:()=>ko,setMigrationsDone:()=>Vo,setDevMode:()=>xX4,resetCliStateForTests:()=>vX4,isTuiConsoleIntercepted:()=>AJ0,getCliState:()=>hs0,addLogEntry:()=>cD});function s6$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function e6$(){return{services:s6$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function vX4(){_Y=e6$()}function Io(){for(let $ of gs0)$()}function hs0(){return _Y}function us0($){return gs0.add($),()=>gs0.delete($)}function cz($){_Y={..._Y,services:_Y.services.map((Z)=>Z.name===$.name?$:Z)},Io()}function Vo(){_Y={..._Y,migrationsStatus:"done"},Io()}function ko($){_Y={..._Y,serverUrl:$},Io()}function cD($){let Z=[..._Y.logs,$];_Y={..._Y,logs:Z.length>500?Z.slice(-500):Z},Io()}function xX4(){_Y={..._Y,services:[...s6$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Io()}function PJ0($){$5$=$}function AJ0(){return $5$}var _Y,gs0,$5$=!1;var mz=D(()=>{_Y=e6$();gs0=new Set});import{createServer as Q5$}from"net";function fX4($){return new Promise((Z)=>{let Q=Q5$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function So($){if(await fX4($))return $;let Z=await new Promise((Q,X)=>{let Y=Q5$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var ls0=()=>{};var ms0={};$0(ms0,{startDevServer:()=>yX4,pipeToLogStore:()=>cs0});import{join as bX4}from"path";function cs0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
|
|
2079
|
-
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function yX4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await So(Number(Y)+1):await So(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await zJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)cz({name:O.name,status:"ready",port:O.port});Vo();let F=bX4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)cs0(N.stdout),cs0(N.stderr);ko(J),cz({name:"Vite",status:"ready",port:Number(Y)}),cz({name:"API",status:"ready",port:Number(K.port)});let L=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (PY0(),zY0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var ds0=D(()=>{ys0();mz();ls0()});var TJ0;var is0=D(()=>{TJ0={name:"decocms",version:"4.372.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as hX4,Text as X5$}from"ink";import{jsx as uX4,jsxs as Y5$}from"react/jsx-runtime";function J5$({version:$}){return Y5$(hX4,{flexDirection:"column",marginTop:1,children:[dY0.map((Z,Q)=>uX4(X5$,{color:iY0[Q],children:Z},Q)),Y5$(X5$,{dimColor:!0,children:[" v",$]})]})}var G5$=D(()=>{Bo()});import{Box as dz,Text as mD}from"ink";import{Spinner as lX4}from"@inkjs/ui";import{jsx as aJ,jsxs as Du}from"react/jsx-runtime";function K5$({status:$}){if($==="pending")return aJ(lX4,{label:""});return aJ(mD,{color:"green",children:"\u2713"})}function cX4($){return`${$.name}: ${$.port||"...."}`}function W5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Du(dz,{flexDirection:"column",paddingBottom:1,children:[aJ(J5$,{version:TJ0.version}),aJ(dz,{marginBottom:1,children:aJ(mD,{dimColor:!0,children:"\u2500".repeat(80)})}),aJ(dz,{children:Du(mD,{dimColor:!0,children:["Home: ",Q]})}),Du(dz,{gap:2,children:[$.map((Y)=>Du(dz,{gap:1,children:[aJ(mD,{children:cX4(Y)}),aJ(K5$,{status:Y.status})]},Y.name)),Du(dz,{gap:1,children:[aJ(mD,{children:"Migrations"}),aJ(K5$,{status:Z})]})]}),aJ(dz,{children:X?Du(mD,{children:["Open in browser: ",aJ(mD,{color:"cyan",children:X})]}):aJ(mD,{dimColor:!0,children:"Starting..."})})]})}var H5$=D(()=>{is0();G5$()});import{Box as mX4,Text as Co}from"ink";import{jsx as ps0,jsxs as ns0}from"react/jsx-runtime";function dX4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function F5$({logs:$}){return ps0(mX4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ps0(Co,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ns0(Co,{children:[ns0(Co,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ps0(Co,{color:dX4(Z.status),children:Z.status}),ns0(Co,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var U5$=()=>{};var ts0={};$0(ts0,{App:()=>nX4});import{Box as iX4}from"ink";import{useSyncExternalStore as pX4}from"react";import{jsx as N5$,jsxs as tX4}from"react/jsx-runtime";function nX4({home:$}){let Z=pX4(us0,hs0);return tX4(iX4,{flexDirection:"column",children:[N5$(W5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),N5$(F5$,{logs:Z.logs})]})}var os0=D(()=>{H5$();U5$();mz()});var TG="thread-gate",gN="decopilot-hosted-harness",hN="decopilot-hosted-harness-sandboxed",RG="automations",dD="background-tools",iz="task-board-github-reads";var B5$="11";function L5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:B5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var D5$=()=>{};import oX4 from"pg";async function w5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=rX4}=$,Y=$.log??((W)=>console.log(W)),J=new oX4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[O5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await L$(aX4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[O5$.toString()])}catch{}await J.end().catch(()=>{})}}var O5$=8314027461559302n,rX4=600000,aX4=500;var j5$=D(()=>{i$()});function sX4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function rs0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function E5$(){let $=sX4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:rs0($,"--cpu-prof-dir")??process.cwd(),name:rs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(rs0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function z5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=gz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),RJ0=setInterval(()=>void Z().catch(()=>{}),$),RJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(RJ0)clearInterval(RJ0)}}var RJ0;var P5$=()=>{};import*as eX4 from"bun:jsc";function A5$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{$Y4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=ZY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var $Y4,ZY4;var T5$=D(()=>{({startSamplingProfiler:$Y4,samplingProfilerStackTraces:ZY4}=eX4)});function R5$(){E5$();let $=[z5$(),L1$(),A5$()];return()=>{for(let Z of $)Z()}}var q5$=D(()=>{nn0();P5$();T5$()});var pz=v((M5$)=>{Object.defineProperty(M5$,"__esModule",{value:!0});M5$.RepublishHeaders=M5$.DirectMsgHeaders=M5$.JsHeaders=M5$.AdvisoryKind=void 0;M5$.isOrderedPushConsumerOptions=QY4;M5$.isPullConsumer=XY4;M5$.isPushConsumer=YY4;M5$.isBoundPushConsumerOptions=JY4;function QY4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function XY4($){return $.isPullConsumer()}function YY4($){return $.isPushConsumer()}function JY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}M5$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};M5$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};M5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};M5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sJ=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.TD=V5$.TE=V5$.Empty=void 0;V5$.encode=LY4;V5$.decode=DY4;V5$.Empty=new Uint8Array(0);V5$.TE=new TextEncoder;V5$.TD=new TextDecoder;function BY4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function LY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(V5$.TE.encode($[Q]));if(Z.length===0)return V5$.Empty;if(Z.length===1)return Z[0];return BY4(...Z)}function DY4($){if(!$||$.length===0)return"";return V5$.TD.decode($)}});var eJ=v((C5$)=>{Object.defineProperty(C5$,"__esModule",{value:!0});C5$.errors=C5$.PermissionViolationError=C5$.NoRespondersError=C5$.TimeoutError=C5$.RequestError=C5$.ProtocolError=C5$.ConnectionError=C5$.DrainingConnectionError=C5$.ClosedConnectionError=C5$.AuthorizationError=C5$.UserAuthenticationExpiredError=C5$.InvalidOperationError=C5$.InvalidArgumentError=C5$.InvalidSubjectError=void 0;class ss0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}C5$.InvalidSubjectError=ss0;class qJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new qJ0(`${$} ${Z}`,Q)}}C5$.InvalidArgumentError=qJ0;class es0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}C5$.InvalidOperationError=es0;class MJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new MJ0($);return null}}C5$.UserAuthenticationExpiredError=MJ0;class IJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new IJ0($);return null}}C5$.AuthorizationError=IJ0;class $e0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}C5$.ClosedConnectionError=$e0;class Ze0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}C5$.DrainingConnectionError=Ze0;class Qe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}C5$.ConnectionError=Qe0;class Xe0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}C5$.ProtocolError=Xe0;class Ye0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof VJ0}}C5$.RequestError=Ye0;class Je0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}C5$.TimeoutError=Je0;class VJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}C5$.NoRespondersError=VJ0;class kJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new kJ0($,Q,X,Y)}}C5$.PermissionViolationError=kJ0;C5$.errors={AuthorizationError:IJ0,ClosedConnectionError:$e0,ConnectionError:Qe0,DrainingConnectionError:Ze0,InvalidArgumentError:qJ0,InvalidOperationError:es0,InvalidSubjectError:ss0,NoRespondersError:VJ0,PermissionViolationError:kJ0,ProtocolError:Xe0,RequestError:Ye0,TimeoutError:Je0,UserAuthenticationExpiredError:MJ0}});var QW=v((b5$)=>{Object.defineProperty(b5$,"__esModule",{value:!0});b5$.SimpleMutex=b5$.Perf=void 0;b5$.extend=_Y4;b5$.render=vY4;b5$.timeout=xY4;b5$.delay=fY4;b5$.deadline=bY4;b5$.deferred=Ke0;b5$.debugDeferred=yY4;b5$.shuffle=gY4;b5$.collect=hY4;b5$.jitter=f5$;b5$.backoff=uY4;b5$.nanos=lY4;b5$.millis=cY4;b5$.randomToken=iY4;var CY4=sJ(),Ge0=eJ();function _Y4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function vY4($){return CY4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function xY4($,Z=!0){let Q=Z?new Ge0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Ge0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function fY4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function bY4($,Z=1000){let Q=Ke0(),X=setTimeout(()=>{Q.reject(new Ge0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Ke0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function yY4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function gY4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function hY4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class v5${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}b5$.Perf=v5$;class x5${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ke0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}b5$.SimpleMutex=x5$;function f5$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function uY4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return f5$(Q>Z?$[Z]:$[Q])}}}function lY4($){return $*1e6}function cY4($){return Math.floor($/1e6)}var mY4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",uN=new Uint8Array(62);for(let $=0;$<62;$++)uN[$]=mY4.charCodeAt($);var dY4=218340105584896;function iY4(){let $=Math.floor(Math.random()*dY4),Z=$%62,Q=uN[Z];$=($-Z)/62,Z=$%62;let X=uN[Z];$=($-Z)/62,Z=$%62;let Y=uN[Z];$=($-Z)/62,Z=$%62;let J=uN[Z];$=($-Z)/62,Z=$%62;let G=uN[Z];$=($-Z)/62,Z=$%62;let K=uN[Z];$=($-Z)/62,Z=$%62;let W=uN[Z];$=($-Z)/62;let H=uN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var d5$=v((c5$)=>{Object.defineProperty(c5$,"__esModule",{value:!0});c5$.nuid=c5$.NuidImpl=void 0;var KJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iD=62,CJ0=12,u5$=10,g5$=33,WJ4=333,h5$=CJ0+u5$,He0=new Uint8Array(iD);for(let $=0;$<iD;$++)He0[$]=KJ4.charCodeAt($);var SJ0=4294967296,l5$=BigInt(iD)**BigInt(u5$),_o=Number(l5$/(1n<<32n)),We0=Number(l5$%(1n<<32n));function HJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function FJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else HJ4($)}class Fe0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(h5$),this.cbuf=new Uint8Array(CJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_o+1)),this.seqLo=Math.floor(Math.random()*SJ0);while($++<8&&this.seqHi===_o&&this.seqLo>=We0);if(this.seqHi===_o&&this.seqLo>=We0)this.seqLo=0;this.inc=Math.random()*(WJ4-g5$)+g5$|0}setPre(){FJ4(this.cbuf);for(let $=0;$<CJ0;$++)this.buf[$]=He0[this.cbuf[$]%iD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=h5$-1;Q>=CJ0;Q--){let X=Math.floor($/iD),J=($-X*iD)*SJ0+Z,G=Math.floor(J/iD),K=J-G*iD;this.buf[Q]=He0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=SJ0)this.seqLo-=SJ0,this.seqHi+=1;if(this.seqHi>_o||this.seqHi===_o&&this.seqLo>=We0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}c5$.NuidImpl=Fe0;c5$.nuid=new Fe0});var t5$=v((p5$)=>{Object.defineProperty(p5$,"__esModule",{value:!0});p5$.nuid=p5$.Nuid=void 0;var i5$=d5$();p5$.Nuid=i5$.NuidImpl;p5$.nuid=i5$.nuid});var vJ0=v((_J0)=>{Object.defineProperty(_J0,"__esModule",{value:!0});_J0.nuid=_J0.Nuid=void 0;var o5$=t5$();Object.defineProperty(_J0,"Nuid",{enumerable:!0,get:function(){return o5$.Nuid}});Object.defineProperty(_J0,"nuid",{enumerable:!0,get:function(){return o5$.nuid}})});var pD=v((r5$)=>{Object.defineProperty(r5$,"__esModule",{value:!0});r5$.DEFAULT_HOST=r5$.DEFAULT_PORT=r5$.Match=void 0;r5$.syncIterator=OJ4;r5$.createInbox=wJ4;var LJ4=vJ0(),DJ4=eJ();r5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function OJ4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function wJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw DJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${LJ4.nuid.next()}`}r5$.DEFAULT_PORT=4222;r5$.DEFAULT_HOST="127.0.0.1"});var vo=v(($9$)=>{Object.defineProperty($9$,"__esModule",{value:!0});$9$.DataBuffer=void 0;var s5$=sJ();class e5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return s5$.TE.encode($)}static toAscii($){return s5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}$9$.DataBuffer=e5$});var nz=v((X9$)=>{Object.defineProperty(X9$,"__esModule",{value:!0});X9$.LF=X9$.CR=X9$.CRLF=X9$.CR_LF_LEN=X9$.CR_LF=void 0;X9$.setTransportFactory=qJ4;X9$.defaultPort=MJ4;X9$.getUrlParseFn=IJ4;X9$.newTransport=VJ4;X9$.getResolveFn=kJ4;X9$.protoLen=Q9$;X9$.extractProtocolMessage=SJ4;var AJ4=sJ(),TJ4=pD(),RJ4=vo(),$3;function qJ4($){$3=$}function MJ4(){return $3!==void 0&&$3.defaultPort!==void 0?$3.defaultPort:TJ4.DEFAULT_PORT}function IJ4(){return $3!==void 0&&$3.urlParseFn?$3.urlParseFn:void 0}function VJ4(){if(!$3||typeof $3.factory!=="function")throw Error("transport fn is not set");return $3.factory()}function kJ4(){return $3!==void 0&&$3.dnsResolveFn?$3.dnsResolveFn:void 0}X9$.CR_LF=`\r
|
|
2079
|
+
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)cD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function yX4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await So(Number(Y)+1):await So(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await zJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)cz({name:O.name,status:"ready",port:O.port});Vo();let F=bX4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)cs0(N.stdout),cs0(N.stderr);ko(J),cz({name:"Vite",status:"ready",port:Number(Y)}),cz({name:"API",status:"ready",port:Number(K.port)});let L=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (PY0(),zY0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var ds0=D(()=>{ys0();mz();ls0()});var TJ0;var is0=D(()=>{TJ0={name:"decocms",version:"4.373.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as hX4,Text as X5$}from"ink";import{jsx as uX4,jsxs as Y5$}from"react/jsx-runtime";function J5$({version:$}){return Y5$(hX4,{flexDirection:"column",marginTop:1,children:[dY0.map((Z,Q)=>uX4(X5$,{color:iY0[Q],children:Z},Q)),Y5$(X5$,{dimColor:!0,children:[" v",$]})]})}var G5$=D(()=>{Bo()});import{Box as dz,Text as mD}from"ink";import{Spinner as lX4}from"@inkjs/ui";import{jsx as aJ,jsxs as Du}from"react/jsx-runtime";function K5$({status:$}){if($==="pending")return aJ(lX4,{label:""});return aJ(mD,{color:"green",children:"\u2713"})}function cX4($){return`${$.name}: ${$.port||"...."}`}function W5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Du(dz,{flexDirection:"column",paddingBottom:1,children:[aJ(J5$,{version:TJ0.version}),aJ(dz,{marginBottom:1,children:aJ(mD,{dimColor:!0,children:"\u2500".repeat(80)})}),aJ(dz,{children:Du(mD,{dimColor:!0,children:["Home: ",Q]})}),Du(dz,{gap:2,children:[$.map((Y)=>Du(dz,{gap:1,children:[aJ(mD,{children:cX4(Y)}),aJ(K5$,{status:Y.status})]},Y.name)),Du(dz,{gap:1,children:[aJ(mD,{children:"Migrations"}),aJ(K5$,{status:Z})]})]}),aJ(dz,{children:X?Du(mD,{children:["Open in browser: ",aJ(mD,{color:"cyan",children:X})]}):aJ(mD,{dimColor:!0,children:"Starting..."})})]})}var H5$=D(()=>{is0();G5$()});import{Box as mX4,Text as Co}from"ink";import{jsx as ps0,jsxs as ns0}from"react/jsx-runtime";function dX4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function F5$({logs:$}){return ps0(mX4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ps0(Co,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ns0(Co,{children:[ns0(Co,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ps0(Co,{color:dX4(Z.status),children:Z.status}),ns0(Co,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var U5$=()=>{};var ts0={};$0(ts0,{App:()=>nX4});import{Box as iX4}from"ink";import{useSyncExternalStore as pX4}from"react";import{jsx as N5$,jsxs as tX4}from"react/jsx-runtime";function nX4({home:$}){let Z=pX4(us0,hs0);return tX4(iX4,{flexDirection:"column",children:[N5$(W5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),N5$(F5$,{logs:Z.logs})]})}var os0=D(()=>{H5$();U5$();mz()});var TG="thread-gate",gN="decopilot-hosted-harness",hN="decopilot-hosted-harness-sandboxed",RG="automations",dD="background-tools",iz="task-board-github-reads";var B5$="11";function L5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:B5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var D5$=()=>{};import oX4 from"pg";async function w5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=rX4}=$,Y=$.log??((W)=>console.log(W)),J=new oX4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[O5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await L$(aX4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[O5$.toString()])}catch{}await J.end().catch(()=>{})}}var O5$=8314027461559302n,rX4=600000,aX4=500;var j5$=D(()=>{i$()});function sX4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function rs0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function E5$(){let $=sX4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:rs0($,"--cpu-prof-dir")??process.cwd(),name:rs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(rs0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function z5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=gz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),RJ0=setInterval(()=>void Z().catch(()=>{}),$),RJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(RJ0)clearInterval(RJ0)}}var RJ0;var P5$=()=>{};import*as eX4 from"bun:jsc";function A5$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{$Y4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=ZY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var $Y4,ZY4;var T5$=D(()=>{({startSamplingProfiler:$Y4,samplingProfilerStackTraces:ZY4}=eX4)});function R5$(){E5$();let $=[z5$(),L1$(),A5$()];return()=>{for(let Z of $)Z()}}var q5$=D(()=>{nn0();P5$();T5$()});var pz=v((M5$)=>{Object.defineProperty(M5$,"__esModule",{value:!0});M5$.RepublishHeaders=M5$.DirectMsgHeaders=M5$.JsHeaders=M5$.AdvisoryKind=void 0;M5$.isOrderedPushConsumerOptions=QY4;M5$.isPullConsumer=XY4;M5$.isPushConsumer=YY4;M5$.isBoundPushConsumerOptions=JY4;function QY4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function XY4($){return $.isPullConsumer()}function YY4($){return $.isPushConsumer()}function JY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}M5$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};M5$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};M5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};M5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sJ=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.TD=V5$.TE=V5$.Empty=void 0;V5$.encode=LY4;V5$.decode=DY4;V5$.Empty=new Uint8Array(0);V5$.TE=new TextEncoder;V5$.TD=new TextDecoder;function BY4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function LY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(V5$.TE.encode($[Q]));if(Z.length===0)return V5$.Empty;if(Z.length===1)return Z[0];return BY4(...Z)}function DY4($){if(!$||$.length===0)return"";return V5$.TD.decode($)}});var eJ=v((C5$)=>{Object.defineProperty(C5$,"__esModule",{value:!0});C5$.errors=C5$.PermissionViolationError=C5$.NoRespondersError=C5$.TimeoutError=C5$.RequestError=C5$.ProtocolError=C5$.ConnectionError=C5$.DrainingConnectionError=C5$.ClosedConnectionError=C5$.AuthorizationError=C5$.UserAuthenticationExpiredError=C5$.InvalidOperationError=C5$.InvalidArgumentError=C5$.InvalidSubjectError=void 0;class ss0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}C5$.InvalidSubjectError=ss0;class qJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new qJ0(`${$} ${Z}`,Q)}}C5$.InvalidArgumentError=qJ0;class es0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}C5$.InvalidOperationError=es0;class MJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new MJ0($);return null}}C5$.UserAuthenticationExpiredError=MJ0;class IJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new IJ0($);return null}}C5$.AuthorizationError=IJ0;class $e0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}C5$.ClosedConnectionError=$e0;class Ze0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}C5$.DrainingConnectionError=Ze0;class Qe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}C5$.ConnectionError=Qe0;class Xe0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}C5$.ProtocolError=Xe0;class Ye0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof VJ0}}C5$.RequestError=Ye0;class Je0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}C5$.TimeoutError=Je0;class VJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}C5$.NoRespondersError=VJ0;class kJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new kJ0($,Q,X,Y)}}C5$.PermissionViolationError=kJ0;C5$.errors={AuthorizationError:IJ0,ClosedConnectionError:$e0,ConnectionError:Qe0,DrainingConnectionError:Ze0,InvalidArgumentError:qJ0,InvalidOperationError:es0,InvalidSubjectError:ss0,NoRespondersError:VJ0,PermissionViolationError:kJ0,ProtocolError:Xe0,RequestError:Ye0,TimeoutError:Je0,UserAuthenticationExpiredError:MJ0}});var QW=v((b5$)=>{Object.defineProperty(b5$,"__esModule",{value:!0});b5$.SimpleMutex=b5$.Perf=void 0;b5$.extend=_Y4;b5$.render=vY4;b5$.timeout=xY4;b5$.delay=fY4;b5$.deadline=bY4;b5$.deferred=Ke0;b5$.debugDeferred=yY4;b5$.shuffle=gY4;b5$.collect=hY4;b5$.jitter=f5$;b5$.backoff=uY4;b5$.nanos=lY4;b5$.millis=cY4;b5$.randomToken=iY4;var CY4=sJ(),Ge0=eJ();function _Y4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function vY4($){return CY4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function xY4($,Z=!0){let Q=Z?new Ge0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Ge0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function fY4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function bY4($,Z=1000){let Q=Ke0(),X=setTimeout(()=>{Q.reject(new Ge0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Ke0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function yY4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function gY4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function hY4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class v5${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}b5$.Perf=v5$;class x5${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ke0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}b5$.SimpleMutex=x5$;function f5$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function uY4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return f5$(Q>Z?$[Z]:$[Q])}}}function lY4($){return $*1e6}function cY4($){return Math.floor($/1e6)}var mY4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",uN=new Uint8Array(62);for(let $=0;$<62;$++)uN[$]=mY4.charCodeAt($);var dY4=218340105584896;function iY4(){let $=Math.floor(Math.random()*dY4),Z=$%62,Q=uN[Z];$=($-Z)/62,Z=$%62;let X=uN[Z];$=($-Z)/62,Z=$%62;let Y=uN[Z];$=($-Z)/62,Z=$%62;let J=uN[Z];$=($-Z)/62,Z=$%62;let G=uN[Z];$=($-Z)/62,Z=$%62;let K=uN[Z];$=($-Z)/62,Z=$%62;let W=uN[Z];$=($-Z)/62;let H=uN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var d5$=v((c5$)=>{Object.defineProperty(c5$,"__esModule",{value:!0});c5$.nuid=c5$.NuidImpl=void 0;var KJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iD=62,CJ0=12,u5$=10,g5$=33,WJ4=333,h5$=CJ0+u5$,He0=new Uint8Array(iD);for(let $=0;$<iD;$++)He0[$]=KJ4.charCodeAt($);var SJ0=4294967296,l5$=BigInt(iD)**BigInt(u5$),_o=Number(l5$/(1n<<32n)),We0=Number(l5$%(1n<<32n));function HJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function FJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else HJ4($)}class Fe0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(h5$),this.cbuf=new Uint8Array(CJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_o+1)),this.seqLo=Math.floor(Math.random()*SJ0);while($++<8&&this.seqHi===_o&&this.seqLo>=We0);if(this.seqHi===_o&&this.seqLo>=We0)this.seqLo=0;this.inc=Math.random()*(WJ4-g5$)+g5$|0}setPre(){FJ4(this.cbuf);for(let $=0;$<CJ0;$++)this.buf[$]=He0[this.cbuf[$]%iD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=h5$-1;Q>=CJ0;Q--){let X=Math.floor($/iD),J=($-X*iD)*SJ0+Z,G=Math.floor(J/iD),K=J-G*iD;this.buf[Q]=He0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=SJ0)this.seqLo-=SJ0,this.seqHi+=1;if(this.seqHi>_o||this.seqHi===_o&&this.seqLo>=We0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}c5$.NuidImpl=Fe0;c5$.nuid=new Fe0});var t5$=v((p5$)=>{Object.defineProperty(p5$,"__esModule",{value:!0});p5$.nuid=p5$.Nuid=void 0;var i5$=d5$();p5$.Nuid=i5$.NuidImpl;p5$.nuid=i5$.nuid});var vJ0=v((_J0)=>{Object.defineProperty(_J0,"__esModule",{value:!0});_J0.nuid=_J0.Nuid=void 0;var o5$=t5$();Object.defineProperty(_J0,"Nuid",{enumerable:!0,get:function(){return o5$.Nuid}});Object.defineProperty(_J0,"nuid",{enumerable:!0,get:function(){return o5$.nuid}})});var pD=v((r5$)=>{Object.defineProperty(r5$,"__esModule",{value:!0});r5$.DEFAULT_HOST=r5$.DEFAULT_PORT=r5$.Match=void 0;r5$.syncIterator=OJ4;r5$.createInbox=wJ4;var LJ4=vJ0(),DJ4=eJ();r5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function OJ4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function wJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw DJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${LJ4.nuid.next()}`}r5$.DEFAULT_PORT=4222;r5$.DEFAULT_HOST="127.0.0.1"});var vo=v(($9$)=>{Object.defineProperty($9$,"__esModule",{value:!0});$9$.DataBuffer=void 0;var s5$=sJ();class e5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return s5$.TE.encode($)}static toAscii($){return s5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}$9$.DataBuffer=e5$});var nz=v((X9$)=>{Object.defineProperty(X9$,"__esModule",{value:!0});X9$.LF=X9$.CR=X9$.CRLF=X9$.CR_LF_LEN=X9$.CR_LF=void 0;X9$.setTransportFactory=qJ4;X9$.defaultPort=MJ4;X9$.getUrlParseFn=IJ4;X9$.newTransport=VJ4;X9$.getResolveFn=kJ4;X9$.protoLen=Q9$;X9$.extractProtocolMessage=SJ4;var AJ4=sJ(),TJ4=pD(),RJ4=vo(),$3;function qJ4($){$3=$}function MJ4(){return $3!==void 0&&$3.defaultPort!==void 0?$3.defaultPort:TJ4.DEFAULT_PORT}function IJ4(){return $3!==void 0&&$3.urlParseFn?$3.urlParseFn:void 0}function VJ4(){if(!$3||typeof $3.factory!=="function")throw Error("transport fn is not set");return $3.factory()}function kJ4(){return $3!==void 0&&$3.dnsResolveFn?$3.dnsResolveFn:void 0}X9$.CR_LF=`\r
|
|
2080
2080
|
`;X9$.CR_LF_LEN=X9$.CR_LF.length;X9$.CRLF=RJ4.DataBuffer.fromAscii(X9$.CR_LF);X9$.CR=new Uint8Array(X9$.CRLF)[0];X9$.LF=new Uint8Array(X9$.CRLF)[1];function Q9$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===X9$.CR&&$[Q]===X9$.LF)return Q+1}return 0}function SJ4($){let Z=Q9$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return AJ4.TD.decode(X)}return""}});var De0=v((U9$)=>{Object.defineProperty(U9$,"__esModule",{value:!0});U9$.ipV4=W9$;U9$.isIP=lJ4;U9$.parseIP=H9$;var xo=4,tz=16,xJ0=48,K9$=57,J9$=65,hJ4=70,G9$=97,uJ4=102,Le0=16777215;function W9$($,Z,Q,X){let Y=new Uint8Array(tz);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function lJ4($){return H9$($)!==void 0}function H9$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return F9$($);case":":return cJ4($)}return}function F9$($){let Z=new Uint8Array(xo);for(let Q=0;Q<xo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=mJ4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return W9$(Z[0],Z[1],Z[2],Z[3])}function cJ4($){let Z=new Uint8Array(tz),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<tz){let{n:Y,c:J,ok:G}=dJ4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=tz-xo)return;if(X+xo>tz)return;let K=F9$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=xo;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<tz){if(Q<0)return;let Y=tz-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function mJ4($){let Z=0,Q=0;for(Z=0;Z<$.length&&xJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=K9$;Z++)if(Q=Q*10+($.charCodeAt(Z)-xJ0),Q>=Le0)return{n:Le0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function dJ4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(xJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=K9$)Z*=16,Z+=$.charCodeAt(Q)-xJ0;else if(G9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=uJ4)Z*=16,Z+=$.charCodeAt(Q)-G9$+10;else if(J9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=hJ4)Z*=16,Z+=$.charCodeAt(Q)-J9$+10;else break;if(Z>=Le0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Pe0=v((B9$)=>{Object.defineProperty(B9$,"__esModule",{value:!0});B9$.Servers=B9$.ServerImpl=void 0;B9$.isIPV4OrHostname=N9$;B9$.hostPort=ze0;var Oe0=nz(),we0=QW(),je0=De0(),tJ4=pD(),oJ4=eJ();function N9$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Ee0($){return!N9$($)}function rJ4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function ze0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=rJ4($),Ee0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Ee0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):tJ4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Ou{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=ze0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,je0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${Ee0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Ou(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,we0.shuffle)(Z);return this.resolves=Z,Z}}B9$.ServerImpl=Ou;class fJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw oJ4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Oe0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=ze0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Ou(Y))}if(this.randomize)(0,we0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,je0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Oe0.getUrlParseFn)();$=Q?Q($):$;let X=new Ou($,Z);if((0,je0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return fJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return fJ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Oe0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Ou(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,we0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}B9$.Servers=fJ0});var bJ0=v((w9$)=>{Object.defineProperty(w9$,"__esModule",{value:!0});w9$.QueuedIteratorImpl=void 0;var Ae0=QW(),D9$=eJ();class O9${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Ae0.deferred)(),this.yields=[],this.iterClosed=(0,Ae0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new D9$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new D9$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Ae0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}w9$.QueuedIteratorImpl=O9$});var Te0=v((P9$)=>{Object.defineProperty(P9$,"__esModule",{value:!0});P9$.MuxSubscription=void 0;var $34=pD(),E9$=eJ();class z9${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,$34.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new E9$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new E9$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}P9$.MuxSubscription=z9$});var Re0=v((R9$)=>{Object.defineProperty(R9$,"__esModule",{value:!0});R9$.Heartbeat=void 0;var Z34=QW();class T9${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Z34.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}R9$.Heartbeat=T9$});var Ie0=v((k9$)=>{Object.defineProperty(k9$,"__esModule",{value:!0});k9$.DenoBuffer=k9$.MAX_SIZE=k9$.AssertionError=void 0;k9$.assert=I9$;k9$.concat=V9$;k9$.append=X34;k9$.readAll=Y34;k9$.writeAll=J34;var Q34=sJ();class qe0 extends Error{constructor($){super($);this.name="AssertionError"}}k9$.AssertionError=qe0;function I9$($,Z="Assertion failed."){if(!$)throw new qe0(Z)}var M9$=32768;k9$.MAX_SIZE=4294967294;function yJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function V9$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function X34($,Z){return V9$($,Uint8Array.of(Z))}class Me0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){I9$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=yJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Q34.TE.encode($))}write($){let Z=this._grow($.byteLength);return yJ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)yJ0(this._buf.subarray(this._off),this._buf);else if(X+$>k9$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,k9$.MAX_SIZE));yJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,k9$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(M9$);while(!0){let X=this.capacity-this.length<M9$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}k9$.DenoBuffer=Me0;function Y34($){let Z=new Me0;return Z.readFrom($),Z.bytes()}function J34($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Se0=v((x9$)=>{Object.defineProperty(x9$,"__esModule",{value:!0});x9$.cc=x9$.State=x9$.Parser=x9$.Kind=void 0;x9$.describe=N34;var Ve0=Ie0(),ke0=sJ();x9$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function N34($){let Z,Q="";switch($.kind){case x9$.Kind.MSG:Z="MSG";break;case x9$.Kind.OK:Z="OK";break;case x9$.Kind.ERR:Z="ERR",Q=ke0.TD.decode($.data);break;case x9$.Kind.PING:Z="PING";break;case x9$.Kind.PONG:Z="PONG";break;case x9$.Kind.INFO:Z="INFO",Q=ke0.TD.decode($.data)}return`${Z}: ${Q}`}function C9$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var _9$=48,B34=57,wu=67108864;class v9${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=x9$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case x9$.State.OP_START:switch(Q){case x9$.cc.M:case x9$.cc.m:this.state=x9$.State.OP_M,this.hdr=-1,this.ma=C9$();break;case x9$.cc.H:case x9$.cc.h:this.state=x9$.State.OP_H,this.hdr=0,this.ma=C9$();break;case x9$.cc.P:case x9$.cc.p:this.state=x9$.State.OP_P;break;case x9$.cc.PLUS:this.state=x9$.State.OP_PLUS;break;case x9$.cc.MINUS:this.state=x9$.State.OP_MINUS;break;case x9$.cc.I:case x9$.cc.i:this.state=x9$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_H:switch(Q){case x9$.cc.M:case x9$.cc.m:this.state=x9$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_M:switch(Q){case x9$.cc.S:case x9$.cc.s:this.state=x9$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MS:switch(Q){case x9$.cc.G:case x9$.cc.g:this.state=x9$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MSG:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:this.state=x9$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MSG_SPC:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:continue;default:this.state=x9$.State.MSG_ARG,this.as=Z}break;case x9$.State.MSG_ARG:switch(Q){case x9$.cc.CR:this.drop=1;break;case x9$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=x9$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case x9$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:x9$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=x9$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:x9$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=x9$.State.MSG_END;break;case x9$.State.MSG_END:switch(Q){case x9$.cc.NL:this.drop=0,this.as=Z+1,this.state=x9$.State.OP_START;break;default:continue}break;case x9$.State.OP_PLUS:switch(Q){case x9$.cc.O:case x9$.cc.o:this.state=x9$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PLUS_O:switch(Q){case x9$.cc.K:case x9$.cc.k:this.state=x9$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PLUS_OK:switch(Q){case x9$.cc.NL:this.dispatcher.push({kind:x9$.Kind.OK}),this.drop=0,this.state=x9$.State.OP_START;break}break;case x9$.State.OP_MINUS:switch(Q){case x9$.cc.E:case x9$.cc.e:this.state=x9$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MINUS_E:switch(Q){case x9$.cc.R:case x9$.cc.r:this.state=x9$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MINUS_ER:switch(Q){case x9$.cc.R:case x9$.cc.r:this.state=x9$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MINUS_ERR:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:this.state=x9$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_MINUS_ERR_SPC:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:continue;default:this.state=x9$.State.MINUS_ERR_ARG,this.as=Z}break;case x9$.State.MINUS_ERR_ARG:switch(Q){case x9$.cc.CR:this.drop=1;break;case x9$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:x9$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=x9$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case x9$.State.OP_P:switch(Q){case x9$.cc.I:case x9$.cc.i:this.state=x9$.State.OP_PI;break;case x9$.cc.O:case x9$.cc.o:this.state=x9$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PO:switch(Q){case x9$.cc.N:case x9$.cc.n:this.state=x9$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PON:switch(Q){case x9$.cc.G:case x9$.cc.g:this.state=x9$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PONG:switch(Q){case x9$.cc.NL:this.dispatcher.push({kind:x9$.Kind.PONG}),this.drop=0,this.state=x9$.State.OP_START;break}break;case x9$.State.OP_PI:switch(Q){case x9$.cc.N:case x9$.cc.n:this.state=x9$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PIN:switch(Q){case x9$.cc.G:case x9$.cc.g:this.state=x9$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_PING:switch(Q){case x9$.cc.NL:this.dispatcher.push({kind:x9$.Kind.PING}),this.drop=0,this.state=x9$.State.OP_START;break}break;case x9$.State.OP_I:switch(Q){case x9$.cc.N:case x9$.cc.n:this.state=x9$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_IN:switch(Q){case x9$.cc.F:case x9$.cc.f:this.state=x9$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_INF:switch(Q){case x9$.cc.O:case x9$.cc.o:this.state=x9$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_INFO:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:this.state=x9$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case x9$.State.OP_INFO_SPC:switch(Q){case x9$.cc.SPACE:case x9$.cc.TAB:continue;default:this.state=x9$.State.INFO_ARG,this.as=Z}break;case x9$.State.INFO_ARG:switch(Q){case x9$.cc.CR:this.drop=1;break;case x9$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:x9$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=x9$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===x9$.State.MSG_ARG||this.state===x9$.State.MINUS_ERR_ARG||this.state===x9$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Ve0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===x9$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Ve0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new Ve0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case x9$.cc.SPACE:case x9$.cc.TAB:case x9$.cc.CR:case x9$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],wu);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],wu);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${ke0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case x9$.cc.SPACE:case x9$.cc.TAB:case x9$.cc.CR:case x9$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],wu),this.ma.size=this.protoParseInt(Z[3],wu);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],wu),this.ma.size=this.protoParseInt(Z[4],wu);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<_9$||$[X]>B34)return-1;Q=Q*10+($[X]-_9$)}return Z!==void 0&&Q>Z?-1:Q}}x9$.Parser=v9$;x9$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};x9$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var uJ0=v((b9$)=>{Object.defineProperty(b9$,"__esModule",{value:!0});b9$.MsgHdrsImpl=void 0;b9$.canonicalMIMEHeaderKey=_e0;b9$.headers=O34;var f9$=sJ(),XW=pD(),hJ0=eJ();function _e0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw hJ0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function O34($=0,Z=""){if($===0&&Z!=="")throw hJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw hJ0.InvalidArgumentError.format("description","is required");return new ju($,Z)}var Ce0="NATS/1.0";class ju{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new ju,X=f9$.TD.decode($).split(`\r
|
|
2081
2081
|
`),Y=X[0];if(Y!==Ce0){let J=Y.replace(Ce0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Ce0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
2082
2082
|
${Z}: ${Q[X]}`;return`${$}\r
|
|
@@ -3597,7 +3597,7 @@ Studio renders those as real images in the comment.`,`- End the run by calling \
|
|
|
3597
3597
|
If the preview will not render (303s, hangs, blank) or you otherwise cannot exercise the change, do NOT approve: request changes stating what is blocking and what is needed to unblock. An unverified preview is not a pass.
|
|
3598
3598
|
`+"4. RECORD the whole pass as a task comment BEFORE the decision \u2014 a "+"durable record, separate from the short decision summary, and REQUIRED: a verdict with no comment is an incomplete run and you will be asked for one. Structure it: what you read and the concrete issues with file/line references, WHICH of them you fixed (with the commits), the acceptance criteria / scenarios you exercised with a pass/fail on each, a "+"before\u2192after pointer to the screenshots, the exact URL(s) and viewport, "+`and anything you did not review or could not verify and why.
|
|
3599
3599
|
That comment must ALWAYS carry the visual change: embed the before/after screenshots in it whenever the change has any visual surface. If it has none, write the exact words \`${F10}\` in the comment and `+"name why (backend-only, config, test-only) \u2014 that literal is what a "+"machine check looks for, so no paraphrase of it counts, and silence about screenshots is not an acceptable answer either way.\n5. DECIDE. Approve once the pull request is in the state you would approve. Only `request_changes` for something you genuinely cannot settle here (a product decision, a missing credential, an approach that needs "+"rethinking) \u2014 that hands the card to a human, it does not start another "+"agent round. NEVER end your run without having called `TASK_BOARD_REVIEW_DECISION`: a run that stops to wait on a background task, or that runs low on room, must decide on what it knows first. An unrecorded verdict strands the card and is the one failure this run cannot leave behind."}});function tH6($,Z){return $.status===I$.review&&$.assigneeId===$8&&Z===!0}function rH1($){return $.filter((Q)=>Q.action==="merge_conflict_resolution").length>=ap$}async function ij($,Z,Q,X){if(!tH6(Q,X.conflict))return!1;let J=(await $.storage.organizationSettings.get(Z))?.flags??{};if(!qV$(J))return!1;let G=_B(J),K=await $.storage.taskBoard.listActivity(Q.id,Z);if(!nw(K,G,{cycleStartedAt:Q.reviewCycleStartedAt,verifiedOnly:!0}))return!1;if(rH1(K))return console.warn(`[task-board] conflict auto-resolve cap (${ap$}) reached on task ${Q.id} \u2014 leaving the PR for a human`),!1;let W=X.pr,H=await $.storage.taskBoard.claimConflictResolution(Q.id,Z,Q.updatedBy);if(!H)return!1;Z8(Z,H);try{await LH($,H,{pr:{number:W.number,url:W.url},resolveConflict:!0})}catch(F){throw await sp$($,H,F).catch(()=>!1),await $.storage.taskBoard.update(H.id,Z,{status:I$.review},"system").then((U)=>Z8(Z,U)).catch((U)=>console.error("[task-board] conflict-resolution status revert failed",U)),F}return await d6($,{taskBoardItemId:Q.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:W.number}}),!0}var ap$=3;var ld=D(()=>{I4();GZ();PX();F9();MU()});import{DBOS as eH1}from"@dbos-inc/dbos-sdk";function $n$($){aH1=$}async function sH6($,Z){if(!aH1)throw Error("[task-board-github-read] runtime not initialized \u2014 setTaskBoardGithubReadRuntime() must run before the workflow fires");let Q=await jK(aH1.db,$);if(!Q)return sH1;return await Qn$(Q,$,Z)}async function eH6($,Z){return await eH1.runStep(()=>sH6($,Z),{name:"readPrState"})}function Zn$(){if(WV0)return;WV0=eH1.registerWorkflow(eH6,{name:"taskBoardGithubReadWorkflow"})}async function cd($,Z){if(!WV0)return sH1;try{return await(await eH1.startWorkflow(WV0,{queueName:iz,timeoutMS:aH6})($,Z)).getResult()}catch(Q){return console.error("[task-board-github-read] throttled PR read failed",Q),sH1}}var oH6=20,rH6=4,aH6=60000,ep$,aH1=null,sH1,WV0=null;var U80=D(()=>{bb();W7();ep$={concurrency:rH6,rateLimit:{limitPerPeriod:oH6,periodSec:60}};sH1={state:null,merged:null,checksStatus:null,conflict:null}});import{createHash as $F6}from"crypto";class hb{config;options;now;kv=null;codec=kw();revalidating=new Set;fallback;placeholderFallback=new Map;static MAX_PLACEHOLDER_FALLBACK_ENTRIES=1000;constructor($,Z,Q=()=>Date.now()){this.config=$;this.options=Z;this.now=Q;let X={revalidateAfterMs:$.revalidateAfterMs,maxStaleMs:$.maxStaleMs,maxValueBytes:Xn$};this.fallback=new xU0({"tools/call":X,"resources/read":X,"prompts/get":X})}async init($){if($){this.kv=$;return}let Z=this.options.getJetStream();if(!Z)return;this.kv=await new Jn$.Kvm(Z).create(this.config.bucket,{storage:Yn$.StorageType.Memory,ttl:this.config.maxStaleMs,maxValueSize:Xn$})}storageKey($,Z){let Q=$F6("sha256").update(Z).digest("hex").slice(0,32);return`${$}.${Q}`}async fetch($){let{namespace:Z,key:Q,fetchLive:X,onRevalidation:Y}=$,{cache:J,maxStaleMs:G,revalidateAfterMs:K}=this.config;if(!this.kv)return this.fallback.fetch({type:"tools/call",connectionId:Z,scope:{kind:"org"},params:{key:Q},fetchLive:X,onRevalidation:Y});let W=this.storageKey(Z,Q),H=$.fresh?null:await this.read(W),F=H?this.now()-H.storedAt:Number.POSITIVE_INFINITY;if(!H||F>G){WL.add(1,{cache:J,outcome:"miss"});let U=await X();return await this.write(W,U,J),U}if(F>K&&!this.revalidating.has(W))WL.add(1,{cache:J,outcome:"stale"}),this.revalidating.add(W),Y(X().then((U)=>this.write(W,U,J)).catch(()=>{WL.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(W)));else WL.add(1,{cache:J,outcome:"hit"});return H.value}async fetchOrPlaceholder($){let{namespace:Z,key:Q,fetchLive:X,placeholder:Y}=$,{cache:J,maxStaleMs:G}=this.config,K=this.storageKey(Z,Q),W=await this.read(K),H=W?this.now()-W.storedAt:Number.POSITIVE_INFINITY,F=W!=null&&H<=G,U=W&&$.revalidateAfterMs?$.revalidateAfterMs(W.value):this.config.revalidateAfterMs;if(F&&H<=U)return WL.add(1,{cache:J,outcome:"hit"}),{value:W.value,live:!0};if(WL.add(1,{cache:J,outcome:F?"stale":"placeholder"}),!this.revalidating.has(K))this.revalidating.add(K),X().then((N)=>this.write(K,N,J)).catch(()=>{WL.add(1,{cache:J,outcome:"error"})}).finally(()=>this.revalidating.delete(K));return F?{value:W.value,live:!0}:{value:Y,live:!1}}async refresh($){let Z=await $.fetchLive();return await this.write(this.storageKey($.namespace,$.key),Z,this.config.cache),WL.add(1,{cache:this.config.cache,outcome:"refresh"}),Z}async read($){if(!this.kv)return this.placeholderFallback.get($)??null;try{let Z=await this.kv?.get($);if(!Z?.value?.length)return null;if(Z.operation==="DEL"||Z.operation==="PURGE")return null;return this.codec.decode(Z.value)}catch{return null}}async write($,Z,Q){if(!this.kv){if(this.placeholderFallback.size>=hb.MAX_PLACEHOLDER_FALLBACK_ENTRIES){let X=this.placeholderFallback.keys().next().value;if(X!==void 0)this.placeholderFallback.delete(X)}this.placeholderFallback.set($,{storedAt:this.now(),value:Z});return}try{await this.kv?.put($,this.codec.encode({storedAt:this.now(),value:Z}))}catch{WL.add(1,{cache:Q,outcome:"store_rejected"})}}async invalidate($){if(this.fallback.invalidate($),!this.kv)return;try{let Z=await this.kv.keys(`${$}.*`);for await(let Q of Z)await this.kv.delete(Q).catch(()=>{})}catch{}}teardown(){this.kv=null}}function ZF1($){Gn$=$?.reads??null,Kn$=$?.cards??null}function QF1(){return Gn$??ZF6}function HV0(){return Kn$??QF6}var Yn$,Jn$,WL,Xn$=524288,$F1,N80,Gn$=null,Kn$=null,ZF6,QF6;var XF1=D(()=>{o00();D6();Yn$=k(pN(),1),Jn$=k(v00(),1),WL=G$.createCounter("pr_read_cache.fetches",{description:"Task board PR cache outcomes (hit, stale, miss, placeholder, refresh, error, store_rejected)",unit:"{fetches}"}),$F1={bucket:"DECOCMS_PR_READS",revalidateAfterMs:55000,maxStaleMs:1800000,cache:"reads"},N80={bucket:"DECOCMS_PR_CARDS",revalidateAfterMs:30000,maxStaleMs:86400000,cache:"cards"};ZF6=new hb($F1,{getJetStream:()=>null}),QF6=new hb(N80,{getJetStream:()=>null})});import{z as FV0}from"zod";function XF6($){if($ instanceof b0&&$.isRateLimited)return!0;let Q=($ instanceof Error?$.message:String($)).replace(/https?:\/\/\S+/gi," ");return/too many requests|rate limit|\b429\b/i.test(Q)}function Wn$($){return QF1().invalidate($)}function EK($){return HV0().invalidate($)}async function B80($,Z,Q,X,Y=!1){try{return await QF1().fetch({namespace:$,key:Z,fresh:Y,fetchLive:()=>Y8(X,{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1,isRetriable:(G)=>!XF6(G)}),onRevalidation:()=>{}})??null}catch(J){let G=J instanceof o6?J.cause:J;return console.error(`[task-board] ${Z} failed for ${Q}:`,G),null}}function YF1($,Z,Q){return VN0($,Z,G80(Q)).catch((X)=>{return console.error(`[task-board] no client for ${md(Q)}:`,X),null})}function ub($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")||Z.endsWith(".vercel.app")||Z.endsWith(".vtex.app")}function GF6($){for(let Q of $){let X=/^Workers Builds:\s*([a-z0-9][a-z0-9-]*)\s*$/i.exec(Q.name)?.[1],Y=Q.summary?/Version ID:\s*([0-9a-f]{8})/i.exec(Q.summary)?.[1]:null;if(!X||!Y)continue;let J=`https://${Y}-${X}.${JF6}.workers.dev`;if(ub(J))return J}let Z=(Q)=>Q.conclusion==="success";for(let Q of[...$.filter(Z),...$.filter((X)=>!Z(X))]){let X=(Q.url&&ub(Q.url)?Q.url:null)??Hn$(Q.summary);if(X)return X}return null}function Hn$($){if(typeof $!=="string")return null;return($.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find(ub)??null}function KF6($){let Z=(X)=>Date.parse(X.updatedAt??"")||Date.parse(X.createdAt??""),Q=$.map((X,Y)=>({c:X,index:Y})).sort((X,Y)=>{let J=Z(X.c),G=Z(Y.c);if(Number.isNaN(J)||Number.isNaN(G))return X.index-Y.index;return G-J}).map(({c:X})=>X);for(let X of Q){let Y=X.body;if(!Y)continue;let J=Y.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(J?.[1]&&ub(J[1]))return J[1];let G=Hn$(Y);if(G)return G}return null}function WF6($){return typeof $==="string"&&/^[0-9a-fA-F]{7,40}$/.test($)?$:null}function JF1($){if($==="merged")return{state:"closed",merged:!0};return{state:$,merged:!1}}async function HF6($,Z,Q,X){let Y=(J)=>J.state==="completed"&&J.conclusion!==null&&J.conclusion!=="success"&&J.conclusion!=="skipped"&&J.conclusion!=="neutral";return await Promise.all(X.map(async(J)=>({name:J.name,status:J.state,conclusion:J.conclusion,detailsUrl:J.url,summary:J.summary??(Y(J)&&J.id!==null?await B80(Z,`check-log:${J.id}`,`${md(Q)} check ${J.id}`,()=>$.readCheckLog(J.id)):null)})))}async function FF6($,Z,Q,X=!1){let Y=await YF1($,Z,Q);if(!Y)return UV0;let J=L80(Q),G=await B80(J,`detail:${Q.number}`,md(Q),()=>Y.readDetailed({number:Q.number}),X);if(!G)return UV0;let{state:K,merged:W}=JF1(G.state);if(K!=="open")return{...UV0,title:G.title,body:G.body,updatedAt:G.updatedAt,state:K,draft:G.draft,merged:W};let F=GF6(G.checkRuns)??KF6(G.comments);if(!F){let U=WF6(G.headSha),N=U?await B80(J,`deployed:${U}`,`${md(Q)} (deployment preview)`,()=>Y.readDeployedUrl(U)):null;F=N&&ub(N)?N:null}return{title:G.title,body:G.body,updatedAt:G.updatedAt,state:K,draft:G.draft,merged:W,mergeable:G.conflicting===null?null:!G.conflicting,checksStatus:G.checks,checks:await HF6(Y,J,Q,G.checkRuns),previewUrl:F}}async function NV0($,Z,Q,X){let Y=await YF1($,Z,Q);if(!Y)return null;return B80(L80(Q),`read:${Q.number}`,`${md(Q)} (${X})`,()=>Y.read(Q.number))}async function Fn$($,Z,Q){let X=await YF1($,Z,Q);if(!X)return null;return(await B80(L80(Q),`detail:${Q.number}`,md(Q),()=>X.readDetailed({number:Q.number})))?.checks??null}async function BV0($,Z,Q){return(await NV0($,Z,Q,"conflict"))?.conflicting??null}async function $V0($,Z,Q){let X=await NV0($,Z,Q,"landing");if(!X)return{state:null,merged:null};return JF1(X.state)}async function Qn$($,Z,Q){let X=await NV0($,Z,Q,"candidate");if(!X)return{state:null,merged:null,checksStatus:null,conflict:null};return{...JF1(X.state),checksStatus:X.checks,conflict:X.conflicting}}async function Un$($,Z,Q){let X=await NV0($,Z,Q,"head ref");if(!X||X.state!=="open")return null;return X.head.length>0?X.head:null}function KF1($){return Nn$($).every((Z)=>Z.checksStatus!=="failing"&&Z.checksStatus!=="pending")}function UF6($){let Z=$.findIndex((Q)=>Q!=="closed");return Z===-1?0:Z}async function lb($,Z,Q){if(Q.length<=1)return Q[0];let X=[];for(let Y of Q){let{state:J}=await cd(Z,Y);if(X.push(J),J!=="closed")break}return Q[UF6(X)]}function Bn$($,Z,Q,X=!1){return Promise.all(Q.map(async(Y)=>{let J=await FF6($,Z,Y,X);return{url:Y.url,number:Y.number,repoOwner:Y.repoOwner,repoName:Y.repoName,createdAt:Y.createdAt,...J}}))}async function Ln$($,Z,Q){try{let X=await $.storage.taskBoard.listPrs(Q,Z);if(X.length===0)return null;let Y=await HV0().refresh({namespace:Z,key:Q,fetchLive:()=>Bn$($,Z,X,!0)});return Dn$(Z,Q,Y),Y}catch(X){return console.error(`[task-board] pr card refresh failed for ${Q}:`,X),null}}var md=($)=>`${$.repoOwner}/${$.repoName}#${$.number}`,L80=($)=>iW(G80($).repo),YF6=0,JF6="deco-cx",UV0,GF1=($)=>Nn$($).length>0,Nn$=($)=>$.filter((Z)=>Z.state!=="closed"&&Z.merged!==!0),NF6,cb;var W7=D(()=>{R0();Y7();I4();F6();i$();g3();ud();PX();xb();BH();F9();tH1();ld();U80();XF1();aI0();UV0={title:null,body:null,updatedAt:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};NF6=g({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the change requests (GitHub and Bitbucket pull requests, GitLab merge requests) linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from its provider.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:FV0.object({taskBoardItemId:FV0.string()}),outputSchema:FV0.object({prs:FV0.array(xg$)}),handler:async({taskBoardItemId:$},Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.taskBoard.getById($,Q),Y=await Z.storage.taskBoard.listPrs($,Q),J=()=>Bn$(Z,Q,Y),{value:G,live:K}=await HV0().fetchOrPlaceholder({namespace:Q,key:$,fetchLive:J,revalidateAfterMs:(F)=>F.some((U)=>Bk$(U))?YF6:N80.revalidateAfterMs,placeholder:Y.map((F)=>({url:F.url,number:F.number,repoOwner:F.repoOwner,repoName:F.repoName,createdAt:F.createdAt,...UV0}))});if(!K)return{prs:G};let W=I$.review,H=G.find((F)=>F.state==="open"&&!F.merged);if(X&&qJ(X)&&X.assigneeId===$8&&GF1(G))await KV0(Z,X,{previewMatchesHead:KF1(G)}).catch((F)=>{console.error("[task-board] reviewer auto-handoff failed",F)});if(X&&X.status===W&&X.assigneeId===$8&&H&&H.mergeable===!1)await ij(Z,Q,X,{pr:{number:H.number,url:H.url},conflict:!0}).catch((F)=>{console.error("[task-board] conflict auto-resolve failed",F)});if(yb(G))try{let F=await Z.storage.organizationSettings.get(Q),U=QU(F?.flags);if(X&&dp$(X.status,U)&&!await Z.storage.taskBoard.hasHumanRejectedDone($,Q)){let N=await Z.storage.taskBoard.update($,Q,{status:U},X.updatedBy);await d6(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:X.status,to:U}}),Z8(Q,N)}}catch(F){console.error("[task-board] merged-PR reconcile failed",F)}return{prs:G}}}),cb=hd(NF6)});function wn$($){if(On$.has($.kind??""))return 0;return wF6($)?DF6:OF6}function wF6($){let Z=$.kind??"";if(On$.has(Z))return!1;if(BF6.has(Z))return!0;let Q=$.errorText??"";if(!Q)return!1;if(Q.includes(SM0))return!0;let X=Q.replace(/https?:\/\/\S+/gi," ");return LF6.some((Y)=>Y.test(X))}var BF6,On$,LF6,DF6=3,OF6=1;var jn$=D(()=>{SI0();BF6=new Set(["stall","liveness","projection","abandoned"]),On$=new Set(["cancelled",...s$0]),LF6=[/sandbox did not become ready/i,/sandbox (?:provisioning|claim) failed/i,/mcp is unusable/i,/harness_crashed: unexpected eof/i,/too many clients already|timeout exceeded when trying to connect/i,/\b(?:429|503)\b|too many requests|service unavailable/i]});function LV0($,Z,Q,X){XJ({event:$,organizationId:Z,properties:{task_id:Q.id,reports_task:UJ(Q),...X}})}function Z8($,Z){a5.emit($,{id:crypto.randomUUID(),type:Hk$,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()})}function Dn$($,Z,Q){a5.emit($,{id:crypto.randomUUID(),type:Uk$,source:"task-board",subject:Z,data:{id:Z,prs:Q},time:new Date().toISOString()})}function En$($,Z){a5.emit($,{id:crypto.randomUUID(),type:Fk$,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function jF6($,Z){return $?[$]:Z}async function WF1($,Z,Q){let X=$.metadata?.runMetadata?.taskBoardItemId,Y=!X&&Q?await $.storage.taskBoard.linkedTaskIds(Q,Z):[];return jF6(X,Y)}async function HF1($,Z,Q){return $.storage.taskBoard.boardManagedIds(await WF1($,Z,Q),Z)}async function zn$($,Z,Q){let X=$.organization?.id;if(!X)return;try{let Y=I$[Z];for(let J of await HF1($,X,Q)){let G=await $.storage.taskBoard.getById(J,X);if(!G)continue;if(G.status===Y||!QV0(G.status,Y))continue;let K=await $.storage.taskBoard.update(J,X,{status:Y},$.auth?.user?.id??G.updatedBy);if(await $.storage.taskBoard.recordActivity({taskBoardItemId:J,action:"status_changed",actorId:null,data:{from:G.status,to:Y}}).catch((W)=>console.error("[task-board] activity log write failed",W)),Z8(X,K),Z==="progress")LV0("task_run_started",X,K,{from:G.status})}}catch(Y){console.error("[task-board] run transition failed",Y)}}async function DV0($,Z){let Q=$.organization?.id;if(!Q)return;try{for(let X of await HF1($,Q,Z)){let Y=await $.storage.taskBoard.openReviewCycleIfInProgress(X,Q);if(!Y)continue;Z8(Q,Y),LV0("task_run_completed",Q,Y,{from:"in_progress",via:"pr_open"})}}catch(X){console.error("[task-board] review-cycle open failed",X)}}async function OV0($,Z,Q,X){let Y=$.organization?.id;if(!Y)return;try{let J=mj(Z);if(!J)return;let G=await HF1($,Y,X);for(let K of G)await $.storage.taskBoard.linkPr({taskBoardItemId:K,organizationId:Y,url:J.url,prNumber:J.number,repo:J.repo,connectionId:Q??null});if(G.length>0)await EK(Y)}catch(J){console.error("[task-board] PR capture failed",J)}}async function dd($,Z,Q,X){try{let Y=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,Q);for(let J of Y)Z8(Q,J),LV0("task_run_completed",Q,J,{from:"in_progress",via:"thread_finish"});for(let J of Y)await $.clearRunRetry(J.id,Q).catch(()=>{})}catch(Y){console.error("[task-board] thread-finish transition failed",Y)}await FF1($,Z,Q),await UF1($,X,Z,Q)}function Pn$($){return(gb($.status)??-1)>=ZV0.in_review||Boolean($.reviewCycleStartedAt)}async function FF1($,Z,Q){try{let X=await $.failedRunInfo(Z,Q);if(!X)return;let Y=wn$(X);for(let J of await $.linkedTaskIds(Z,Q)){let G=await $.getById(J,Q);if(!G)continue;if(G.source)continue;if(Pn$(G))await $.relabelDeliveredFailure(Z,Q,PF6).catch(()=>{});if(G.status!==I$.progress)continue;if(G.reviewCycleStartedAt)continue;if(G.threads.some((H)=>H.hasMessages&&H.status==="in_progress"))continue;let K=G.retryAttempts;if(K<Y){let H=p7(zF6,EF6,K,2,0.5);if(!await $.scheduleRunRetry(J,Q,K+1,new Date(Date.now()+H)))continue;await $.recordActivity({taskBoardItemId:J,action:"status_changed",actorId:null,data:{from:I$.progress,to:I$.progress,retry:K+1,of:Y,reason:X.errorText??X.kind}}).catch(()=>{});continue}let W=await $.returnToTodoAfterFailure(J,Q,G.updatedBy);if(!W)continue;await $.recordActivity({taskBoardItemId:J,action:"status_changed",actorId:null,data:{from:I$.progress,to:I$.queue,reason:X.errorText??X.kind,retriesSpent:K}}).catch(()=>{}),Z8(Q,W),LV0("task_run_failed",Q,G,{reason:X.kind??"error",retries_spent:K})}}catch(X){console.error("[task-board] failed-run reaction failed",X)}}async function UF1($,Z,Q,X){try{for(let Y of await $.linkedTaskIds(Q,X)){let J=await $.getById(Y,X);if(!J)continue;if(J.source)continue;if(Pn$(J))continue;if(J.threads.some((K)=>K.hasMessages&&(K.status===null||!J80.has(K.status))))continue;if((await $.listPrs(Y,X)).length>0)continue;await wk$(Z,X,Y)}}catch(Y){console.error("[task-board] quota refund pass failed",Y)}}async function NF1($,Z){if(Z.status!==I$.progress||!qJ(Z))return;try{let Q=await $.storage.taskBoard.update(Z.id,Z.organizationId,{status:I$.review},Z.updatedBy);await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:I$.review}}).catch(()=>{}),Z8(Z.organizationId,Q),await gp$($,Q)}catch(Q){console.error(`[task-board] parking ${Z.id} for review failed`,Q)}}async function qU($,Z,Q){let X=Z.organizationId;if(Z.assigneeId!==$8)return!1;try{await NF1($,Z).catch((J)=>console.warn(`[task-board] parking ${Z.id} before hand-off failed`,J));let Y=await $.storage.taskBoard.unassignSuperAgent(Z.id,X,Z.updatedBy);if(!Y)return!1;return await d6($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:Q}}),console.warn(`[task-board] ${Z.id} handed to a human: ${Q}`),Z8(X,Y),!0}catch(Y){return console.error(`[task-board] handing ${Z.id} to a human failed`,Y),!1}}async function sp$($,Z,Q){if(!(Q instanceof KY))return!1;if(Q.reason!=="runs_exhausted")return!1;return await qU($,Z,"per-task run limit reached \u2014 the Super Agent can no longer re-dispatch "+"itself on this task. Re-run it manually to continue."),!0}async function An$($,Z){let Q=$.organization?.id;if(!Q)return;try{let X=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,Q);for(let Y of X)Z8(Q,Y)}catch(X){console.error("[task-board] thread-run reopen failed",X)}}function Tn$($){return $.includes("create_pull_request")||$.includes("createPullRequest")||$.includes("create_merge_request")||$.includes("createMergeRequest")}function Rn$($){if(AF6.test($))return!0;return TF6.test($)&&RF6.test($)}var EF6=30000,zF6=120000,PF6="Run ended after it had already delivered \u2014 the task moved on without it",AF6,TF6,RF6;var F9=D(()=>{KK();g4();KL();xb();hp$();W7();jn$();i$();X80();I4();PX();BH();AF6=/\b(?:gh\s+pr|glab\s+mr)\s+create\b/,TF6=/\/(?:repos\/[^\s"']+\/pulls|projects\/[^\s"']+\/merge_requests|repositories\/[^\s"']+\/pullrequests)\b/,RF6=/(?:-X|--request)\s+POST/});function qF6($){if($.status==="completed")return"advance";if($.status==="failed"&&$.messageStorageVersion===2&&($.harnessId==="decopilot"||$.harnessId==="claude-code"))return"nudge";return"none"}function MF6($){return["This task is still In Progress on the board and your last run ended without finishing it.","","Look at what you already did (`git log`, `git status`, and the messages above), 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,",$==="decopilot"?"- or, if you're blocked on something only a human knows, call the `user_ask` tool.":"- or, if you're blocked on something only a human knows, say what you need and stop.","","Don't start over and don't redo work you already committed or pushed. You are on the same branch as before \u2014 push to it and update your existing pull request rather than opening a second one."].join(`
|
|
3600
|
-
`)}async function IF6($,Z,Q){await fd($,Z,Q,{messageId:`stall-nudge-${Z.id}-${Q.id}`,prompt:MF6(Q.harness_id),workflowID:`stall-nudge:${Z.id}:${Q.id}`})}async function VF6($,Z){let Q=await $.storage.threads.get(Z);if(!Q)return{action:"none",thread:null};return{action:qF6({status:Q.status,messageStorageVersion:Q.message_storage_version,harnessId:Q.harness_id}),thread:Q}}function kF6($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return a$0($,Z)}async function SF6($,Z){let Q=[];for(let X of Z.threads){if(X.status!=="in_progress")continue;let Y=await $.storage.threads.get(X.threadId);if(!Y||!kF6(Y))continue;if(await $.storage.threads.markRunFailed(X.threadId,BF1,"abandoned"))Q.push(X.threadId),console.warn(`[task-board] failed never-started thread ${X.threadId} on ${Z.id}`)}return Q}async function qn$($,Z){let Q=$.organization?.id;if(!Q)return;for(let X of Z){if(X.status==="in_progress")try{if((await SF6($,X)).length>0)continue}catch(G){console.error(`[task-board] reaping threads for ${X.id} failed`,G)}let Y;try{Y=X.repo!=null&&(await $.storage.taskBoard.listPrs(X.id,Q)).length>0}catch(G){console.error(`[task-board] listPrs for ${X.id} failed`,G);continue}if(!gH1(X,Y))continue;let J=X.threads.find((G)=>G.hasMessages);if(!J)continue;try{let{action:G,thread:K}=await VF6($,J.threadId);if(G==="none"||!K)continue;if(G==="advance")await dd($.storage.taskBoard,J.threadId,Q,$.storage.organizationBilling);else await IF6($,X,K)}catch(G){console.error(`[task-board] stall recovery failed for ${X.id}`,G)}}}var BF1="Run never started \u2014 no pod picked it up before the idle window elapsed";var LF1=D(()=>{mI0();KL();F9()});import{z as IU}from"zod";var CF6,_F6,mb;var DF1=D(()=>{I4();R0();WJ();g3();LF1();aI0();CF6=IU.object({key:IU.string(),title:IU.string(),position:IU.number()}),_F6=g({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization, plus the `owner/name` repos this organization has imported (the valid values for a task's `repo` field).",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IU.object({}),outputSchema:IU.object({items:IU.array(Dd),repos:IU.array(IU.string()),columns:IU.array(CF6)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let[X,{items:Y},J]=await Promise.all([Z.storage.taskBoard.list(Q),Z.storage.connections.list(Q,{slug:"mcp-github"}),Z.storage.repositories.listByOrg(Q)]),G=[...new Set([...J.map((K)=>K.path),...KV$(Y)])];return qn$(Z,X),{items:X,repos:G,columns:Gk$}}}),mb=hd(_F6)});async function Mn$($,Z,Q){if(Z.assigneeId)return Z;let X=Z.organizationId,Y=await $.storage.columnAutomations.get(X,Z.status);if(!Y)return Z;let J=await $.storage.taskBoard.claimUnassignedForSuperAgent(Z.id,X,Q.assignedBy,Q.actor,Z.status);if(!J)return Z;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:null,to:$8}});try{await pj($,J,{instruction:Y.prompt??void 0})}catch(G){return console.warn(`[task-board] column rule on ${Z.status} rejected for ${Z.id}, un-delegating:`,G instanceof Error?G.message:G),await $.storage.taskBoard.unassignSuperAgent(Z.id,X,Q.actor)??await $.storage.taskBoard.getById(Z.id,X)??J}return J}var In$=D(()=>{I4();MU()});function Vn$($){if($===void 0)return;let Z=[];for(let Q of $){let X=Q.trim().replace(/[\t\r\n]/g,"").replace(/\\/g,"/");if(!X.startsWith("/")||X.startsWith("//"))continue;if(!Z.includes(X))Z.push(X);if(Z.length===20)break}return Z}import{z as OY}from"zod";function fF6($){return xF6.some((Z)=>$[Z]!==void 0)}function bF6($,Z){let Q=[];for(let{field:J,action:G}of vF6){if(Z[J]===$[J])continue;Q.push({action:G,data:{from:$[J],to:Z[J]}})}if(Z.description!==$.description)Q.push({action:"description_changed"});let X=new Set($.tags.map((J)=>J.id));if(Z.tags.length!==$.tags.length||Z.tags.some((J)=>!X.has(J.id)))Q.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return Q}function yF6($,Z){if($!==$8)return!1;if(!Z)return!1;return Z.assigneeId!==$8?!0:Z.status===I$.queue}function hF6($,Z,Q){let X=$!==void 0&&gF6.has($),Y=Z!==void 0&&qJ(Z);return Q&&X&&Y}function OF1($,Z){return $!==void 0&&lH1($)&&!Z}var vF6,xF6,gF6,db;var wV0=D(()=>{I4();R0();GZ();g3();BH();wK1();MU();PX();aB();F9();In$();xb();W7();KK();vF6=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"type",action:"type_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}],xF6=["title","description","status","priority","type","assigneeId","repo","dueDate","sortOrder","previewRoutes","tagIds"];gF6=new Set(["approved","merged","post_deploy_validation","done","archived"]);db=g({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:OY.object({id:OY.string(),title:OY.string().min(1).max(AM0).optional(),description:OY.string().max(PM0).nullable().optional(),status:sB.optional(),priority:Wb.optional(),type:N$0.optional(),assigneeId:OY.string().nullable().optional(),repo:OY.string().max(TM0).nullable().optional(),dueDate:OY.string().datetime().nullable().optional(),sortOrder:OY.number().optional(),previewRoutes:OY.array(OY.string().max(500)).max(20).optional().describe("Paths this task's work created or edited, e.g. "+'["/cliente-vip", "/cliente-vip/faq"]. Paths only \u2014 no host: the '+"card joins each onto the pull request's deploy-preview origin so a reviewer can open the pages directly. Replaces the previous set; pass [] to clear."),tagIds:OY.array(OY.string()).max(1000).optional(),linkThreadId:OY.string().optional(),prUrl:OY.string().nullable().optional().describe("GitHub pull request URL to link to this task, e.g. https://github.com/owner/repo/pull/123. Pass it after opening a PR for an existing card; linking one is what starts its review.")}),outputSchema:OY.object({item:Dd}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=$.prUrl?mj($.prUrl):null;if($.prUrl&&!X)throw Error(`Not a change request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>, https://gitlab.com/<namespace>/<project>/-/merge_requests/<iid> or https://bitbucket.org/<workspace>/<repo>/pull-requests/<id>)`);if($.assigneeId)await RM0(Z,Q,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,Q))throw Error(`Task board item not found: ${$.id}`);if(!await Z.storage.threads.get($.linkThreadId))throw Error(`Thread not found: ${$.linkThreadId}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,Q)}let Y=fF6($),J=Y?await Z.storage.taskBoard.getById($.id,Q):null;if(Y&&!J)throw Error(`Task board item not found: ${$.id}`);if($.status!==void 0&&lH1($.status)){let N=await Z.storage.organizationSettings.get(Q);if(OF1($.status,jQ(N?.flags,"delivery_lanes_enabled")))throw Error("Delivery lanes are not enabled for this organization \u2014 enable "+"them in Settings before moving a task to Approved, Merged, or Post-deploy Validation.")}let G=b3.getStore()!==void 0;if(hF6($.status,J??void 0,G))throw Error("This task is under review \u2014 a run can't move it to Done or Archived. "+"Leave it for the reviewer; only a person, or TASK_BOARD_REVIEW_DECISION on a reviewer's own run, closes out a task under review.");let K=$.assigneeId!==void 0&&$.assigneeId!==(J?.assigneeId??null),W=yF6($.assigneeId,J),F=(W?I$.queue:void 0)??$.status;if(J&&UJ(J)){if($.title!==void 0||$.description!==void 0||$.priority!==void 0)throw Error("This task was generated from your report and can't be edited \u2014 create your own task instead.");if(W)await fm(Z,J,rw())}if($.tagIds!==void 0){let N=await Z.storage.tags.listOrgTags(Q),B=new Set(N.map((L)=>L.id));for(let L of $.tagIds)if(!B.has(L))throw Error(`Tag not found: ${L}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,d0(Z))}let U;if(Y)U=await Z.storage.taskBoard.update($.id,Q,{title:$.title,description:$.description,status:F,priority:$.priority,type:$.type,assigneeId:$.assigneeId,assignedBy:K?$.assigneeId?d0(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sortOrder:$.sortOrder,previewRoutes:Vn$($.previewRoutes)},d0(Z));else{let N=await Z.storage.taskBoard.getById($.id,Q);if(!N)throw Error(`Task board item not found: ${$.id}`);U=N}if(X)await Z.storage.taskBoard.linkPr({taskBoardItemId:U.id,organizationId:Q,url:X.url,prNumber:X.number,repo:X.repo,connectionId:null}),await EK(Q).catch((N)=>{console.error("[task-board] PR card cache invalidation failed",N)});if(J){let N=d0(Z),B=bF6(J,U);if(B.length>0)await lp$(Z,B.map((L)=>({taskBoardItemId:U.id,actorId:N,...L,alsoSubscribe:L.action==="assignee_changed"&&U.assigneeId!==$8?[U.assigneeId]:void 0})))}if(J&&U.description!==J.description)await Z.storage.notifications.notifyMentions({taskBoardItemId:U.id,organizationId:Q,actorId:d0(Z),body:U.description??"",previousBody:J.description});if(Y||$.linkThreadId||X)Z8(Q,U);if(W)return await pj(Z,U,{userInitiated:!0}),{item:U};if($.status!==void 0&&J!==null&&J.status!==U.status)U=await Mn$(Z,U,{assignedBy:d0(Z),actor:d0(Z)});return{item:U}}})});import{z as jV0}from"zod";var ib;var wF1=D(()=>{R0();F9();ib=g({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item. A reports-pushed task also dismisses its finding, so the next diagnostic import won't re-create the card.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:jV0.object({id:jV0.string()}),outputSchema:jV0.object({success:jV0.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,Q,d0(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return En$(Q,$.id),{success:!0}}})});import{z as n$}from"zod";async function nF6($,Z,Q){let X=n(Z),Y={query:{orgIds:[X.id]},org:X.slug??X.id},J=$.to??new Date().toISOString(),K={from:$.from??new Date(Date.parse(J)-uF6).toISOString(),to:J},W=$.org;if(!W||W===X.slug||W===X.id)return{query:{...K,...Y.query},org:Y.org};let H=await W80(Z);if(W==="all"){if(!H)return{query:{...K,...Y.query},org:Y.org};return fb({action:"analytics_read",actorUserId:Z.auth?.user?.id,actorOrgId:X.id,targetOrgId:"all",tool:Q}),{query:{...K,orgIds:null},org:"all"}}if(!H)throw Error("Not allowed to read another organization's task board analytics");let F=await Z.storage.taskBoardAnalytics.resolveOrgRef(W);if(!F)throw Error(`Organization not found: ${W}`);return fb({action:"analytics_read",actorUserId:Z.auth?.user?.id,actorOrgId:X.id,targetOrgId:F.id,tool:Q}),{query:{...K,orgIds:[F.id]},org:F.slug}}function tF6($){let Z=$.sections.filter((X)=>X.kind==="stat").flatMap((X)=>X.values).map((X)=>`${X.label}: ${X.value??"\u2014"}${X.unit?` ${X.unit}`:""}`).join(", "),Q=$.sections.filter((X)=>X.kind==="table").map((X)=>`${X.title} (${X.rows.length} rows)`).join(", ");return[`${$.org}, ${$.range.from}..${$.range.to}`,Z,Q].filter(Boolean).join(" \u2014 ")}function id($,Z,Q,X){return g({name:$,description:Q,annotations:{title:Z,readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lF6,outputSchema:pF6,modelSummary:tF6,handler:async(Y,J)=>{t(J),await J.access.check();let{query:G,org:K}=await nF6(Y,J,$);return{range:{from:G.from,to:G.to},org:K,sections:await X(J,G)}}})}var uF6=2592000000,lF6,cF6,mF6,dF6,iF6,pF6,pb,nb,tb,ob,rb,ab,sb;var jF1=D(()=>{R0();rI0();lF6=n$.object({org:n$.string().optional().describe('Org slug or id to report on. Omit for the current org. "all" is the cross-tenant aggregate (admin orgs only).'),from:n$.string().optional().describe("ISO start of the range. Defaults to 30 days ago."),to:n$.string().optional().describe("ISO end of the range. Defaults to now.")}),cF6=n$.object({kind:n$.literal("stat"),title:n$.string(),values:n$.array(n$.object({label:n$.string(),value:n$.number().nullable(),unit:n$.string().optional()}))}),mF6=n$.object({kind:n$.literal("series"),title:n$.string(),unit:n$.string().optional(),points:n$.array(n$.record(n$.string(),n$.union([n$.number(),n$.string(),n$.null()])))}),dF6=n$.object({kind:n$.literal("table"),title:n$.string(),columns:n$.array(n$.string()),rows:n$.array(n$.array(n$.union([n$.string(),n$.number(),n$.null()])))}),iF6=n$.discriminatedUnion("kind",[cF6,mF6,dF6]),pF6=n$.object({range:n$.object({from:n$.string(),to:n$.string()}),org:n$.string(),sections:n$.array(iF6)});pb=id("TASK_BOARD_DELIVERY","Task Board Delivery","Task board throughput and flow: tasks completed, how many shipped a PR, lead vs cycle time, completions per day by board, time in review, and dwell by lane.",($,Z)=>$.storage.taskBoardAnalytics.delivery(Z)),nb=id("TASK_BOARD_STUCK","Task Board Stuck Work","What is stuck on the task board right now: open lane visits oldest first, and work in progress bucketed by age. Deliberately not time-filtered.",($,Z)=>$.storage.taskBoardAnalytics.stuck(Z)),tb=id("TASK_BOARD_COST","Task Board Cost","Task board spend: total USD, cost per completed task and per shipped PR, spend burned on abandoned work, spend per day, cost by tenant, and the coverage % that says how much of it was actually priced.",($,Z)=>$.storage.taskBoardAnalytics.cost(Z)),ob=id("TASK_BOARD_QUALITY","Task Board Quality","Task board quality: first-pass yield, rework rate, autonomy (finished without a human), abandonment, rework over time, and retry burn.",($,Z)=>$.storage.taskBoardAnalytics.quality(Z)),rb=id("TASK_BOARD_ERRORS","Task Board Errors","Task board run failures: failed runs, quota-blocked runs, failures per day, failure kinds, a live error feed, error signatures, and superseded runs.",($,Z)=>$.storage.taskBoardAnalytics.errors(Z)),ab=id("TASK_BOARD_TENANTS","Task Board Tenants",'Per-tenant task board scorecard and queue wait. Pass org: "all" for the cross-tenant view (admin orgs only).',($,Z)=>$.storage.taskBoardAnalytics.tenants(Z)),sb=g({name:"TASK_BOARD_ADMIN_ORG_LIST",description:"Whether the caller may read every org's task board, and if so the orgs that have board items. Non-admins get an empty list.",annotations:{title:"List Task Board Admin Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:n$.object({}),outputSchema:n$.object({isTaskBoardAdmin:n$.boolean(),orgs:n$.array(n$.object({id:n$.string(),slug:n$.string(),name:n$.string()}))}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);if(!up$(Q.id)||!await W80(Z))return{isTaskBoardAdmin:!1,orgs:[]};return{isTaskBoardAdmin:!0,orgs:await Z.storage.taskBoardAnalytics.orgsWithBoardItems()}}})});function kn$($,Z){let Q=({output:X,toolCallId:Y})=>FI0(X,Y,Z)??{type:"json",value:X};return{TASK_BOARD_ITEM_LIST:c1({description:mb.description,inputSchema:Z0(mb.inputSchema),execute:(X)=>mb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_CREATE:c1({description:eb.description,inputSchema:Z0(eb.inputSchema),execute:(X)=>eb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_UPDATE:c1({description:db.description,inputSchema:Z0(db.inputSchema),execute:(X)=>db.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_DELETE:c1({description:ib.description,inputSchema:Z0(ib.inputSchema),execute:(X)=>ib.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_PRS_GET:c1({description:cb.description,inputSchema:Z0(cb.inputSchema),execute:(X)=>cb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ADMIN_ORG_LIST:c1({description:sb.description,inputSchema:Z0(sb.inputSchema),execute:(X)=>sb.execute(X,$),toModelOutput:Q}),TASK_BOARD_DELIVERY:c1({description:pb.description,inputSchema:Z0(pb.inputSchema),execute:(X)=>pb.execute(X,$),toModelOutput:Q}),TASK_BOARD_STUCK:c1({description:nb.description,inputSchema:Z0(nb.inputSchema),execute:(X)=>nb.execute(X,$),toModelOutput:Q}),TASK_BOARD_COST:c1({description:tb.description,inputSchema:Z0(tb.inputSchema),execute:(X)=>tb.execute(X,$),toModelOutput:Q}),TASK_BOARD_QUALITY:c1({description:ob.description,inputSchema:Z0(ob.inputSchema),execute:(X)=>ob.execute(X,$),toModelOutput:Q}),TASK_BOARD_ERRORS:c1({description:rb.description,inputSchema:Z0(rb.inputSchema),execute:(X)=>rb.execute(X,$),toModelOutput:Q}),TASK_BOARD_TENANTS:c1({description:ab.description,inputSchema:Z0(ab.inputSchema),execute:(X)=>ab.execute(X,$),toModelOutput:Q})}}var Sn$=D(()=>{h4();PU();EF1();DF1();wV0();wF1();W7();jF1()});function Cn$($){return{COLLECTION_VIRTUAL_MCP_CREATE:c1({description:G2.description,inputSchema:Z0(G2.inputSchema),execute:(Z)=>G2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_LIST:c1({description:W2.description,inputSchema:Z0(W2.inputSchema),execute:(Z)=>W2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_GET:c1({description:H2.description,inputSchema:Z0(H2.inputSchema),execute:(Z)=>H2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_UPDATE:c1({description:F2.description,inputSchema:Z0(F2.inputSchema),execute:(Z)=>F2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_DELETE:c1({description:U2.description,inputSchema:Z0(U2.inputSchema),execute:(Z)=>U2.execute(Z,$)}),VIRTUAL_MCP_PLUGIN_CONFIG_GET:c1({description:N2.description,inputSchema:Z0(N2.inputSchema),execute:(Z)=>N2.execute(Z,$)}),VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE:c1({description:B2.description,inputSchema:Z0(B2.inputSchema),execute:(Z)=>B2.execute(Z,$)}),VIRTUAL_MCP_PINNED_VIEWS_UPDATE:c1({description:L2.description,inputSchema:Z0(L2.inputSchema),execute:(Z)=>L2.execute(Z,$)}),COLLECTION_CONNECTIONS_LIST:c1({description:X2.description,inputSchema:Z0(X2.inputSchema),execute:(Z)=>X2.execute(Z,$)}),COLLECTION_CONNECTIONS_GET:c1({description:Y2.description,inputSchema:Z0(Y2.inputSchema),execute:(Z)=>Y2.execute(Z,$)})}}var _n$=D(()=>{h4();RX1();TX1();uX1();sX1();iX1();mX1();tX1();ZY1();eX1();$Y1()});async function rF6($,Z,Q){let{provider:X,imageProvider:Y,webSearchProvider:J,deepResearchProvider:G,organization:K,models:W,toolApprovalLevel:H="auto",isPlanMode:F=!1,toolOutputMap:U,pendingImages:N,passthroughClient:B,vmContext:L,htmlArtifactBuffer:O,taskId:w,agentId:j,onChildUsage:E,backgroundDispatcher:z}=Z,P={isPlanMode:F},A=Q.auth?.user?.id,q=Ai$({writer:$,toolOutputMap:U,passthroughClient:B,toolApprovalLevel:H,isPlanMode:F,objectStorage:Q.objectStorage});if(A)q.update_interests=Ki$({write:async(C)=>{await Q.storage.interests.setForAgent(C.orgId,C.agentId,C.userId,{interests:C.interests})},orgId:K.id,agentId:j,userId:A});if(Object.assign(q,ki$(Q)),Object.assign(q,await sF6(Q,w)?Pp$(Q,w):kn$(Q,U)),KX(j))Object.assign(q,Cn$(Q));let V=m$0(H,!1,P)!==!1,M;if(L){let C=await Cd(Q,{virtualMcpId:L.virtualMcpId,branch:L.branch,userId:L.userId,syncTools:L.syncTools,threadId:L.threadId}),d=Zi$(C);M=ed$({fs:d.fs,htmlArtifactBuffer:O,toolOutputMap:U,needsApproval:V,pendingImages:N}),Object.assign(q,M);let x=await Yi$({ctx:Q,orgId:K.id,virtualMcpId:L.virtualMcpId,userId:L.userId,threadId:L.threadId,writer:$,rebindFs:async(b)=>{d.swap(await Cd(Q,{virtualMcpId:L.virtualMcpId,branch:b,userId:L.userId,syncTools:L.syncTools,threadId:L.threadId}))}});if(x)q.load_repo=x}if(X)q.subtask=o$0("subtask",PF1,AF1($,{provider:X,organization:K,models:W,self:{id:j},currentThreadId:w,needsApproval:m$0(H,!1,P)!==!1,onChildUsage:E,vmTools:M,parentBuiltInParams:Z},Q),z,(C)=>Oi$(w,C));if(Y&&W.image&&Q.objectStorage)q.generate_image=o$0("generate_image",n$0,Bi$($,{provider:Y,imageModelInfo:W.image,objectStorage:Q.objectStorage,allowHttpExternalUrls:E0().localMode}),z);if(J&&W.webSearch){let C=eW1({provider:J,modelInfo:W.webSearch,ctx:Q,mode:"quick",toolName:"web_search"});q.web_search=aW1($,{researchJob:C,toolOutputMap:U,taskId:w})}if(G&&W.deepResearch){let C=eW1({provider:G,modelInfo:W.deepResearch,ctx:Q,mode:"deep",toolName:"deep_research"});q.deep_research=aW1($,{researchJob:C,toolOutputMap:U,taskId:w,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}return q}function aF6($,Z,Q){let X=Z.organization.id,Y=Q.auth?.user?.id,J={};for(let[G,K]of Object.entries($)){let W=K,H=W.execute;if(typeof H!=="function"){J[G]=K;continue}let F=oF6[G],U=H.constructor?.name==="AsyncGeneratorFunction",N=(L,O)=>{if(!X||!Y)return;k1.capture({distinctId:Y,event:"tool_called",groups:{organization:X},properties:{organization_id:X,tool_source:"builtin",tool_name:G,tool_safe_name:G,read_only:F?.readOnly??null,destructive:F?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(L),is_error:O}})},B=U?async function*(L,O){let w=performance.now(),j=!1;try{yield*H.call(W,L,O)}catch(E){throw j=!0,E}finally{N(performance.now()-w,j)}}:async(L,O)=>{let w=performance.now(),j=!1;try{return await H.call(W,L,O)}catch(E){throw j=!0,E}finally{N(performance.now()-w,j)}};J[G]={...W,execute:B}}return J}async function EV0($,Z,Q){let X=await rF6($,Z,Q),Y=aF6(X,Z,Q);if(!Z.isPlanMode){let{propose_plan:J,...G}=Y;return G}return Y}function vn$($){let{ctx:Z,writer:Q,toolOutputMap:X,subtaskParams:Y,planMode:J}=$,G={user_ask:AI0,todo_write:TI0,read_tool_output:HI0({toolOutputMap:X})};if(J)G.propose_plan=qI0;if(Y.provider)G.subtask=AF1(Q,Y,Z);return G}async function sF6($,Z){try{return(await $.storage.threads.get(Z))?.metadata?.source==="jira"}catch{return!1}}var oF6;var zF1=D(()=>{g4();d$0();PU();$i$();zI0();Ji$();TF1();mW1();dW1();Wi$();iW1();Li$();tW1();rW1();t$0();ji$();Pi$();Ti$();Si$();Ap$();Sn$();S8();_n$();o1();oF6={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1},TASK_BOARD_ITEM_LIST:{readOnly:!0,destructive:!1},TASK_BOARD_ITEM_CREATE:{readOnly:!1,destructive:!1},TASK_BOARD_ITEM_UPDATE:{readOnly:!1,destructive:!1},TASK_BOARD_ITEM_DELETE:{readOnly:!1,destructive:!0},TASK_BOARD_ITEM_PRS_GET:{readOnly:!0,destructive:!1},TASK_BOARD_ADMIN_ORG_LIST:{readOnly:!0,destructive:!1},TASK_BOARD_DELIVERY:{readOnly:!0,destructive:!1},TASK_BOARD_STUCK:{readOnly:!0,destructive:!1},TASK_BOARD_COST:{readOnly:!0,destructive:!1},TASK_BOARD_QUALITY:{readOnly:!0,destructive:!1},TASK_BOARD_ERRORS:{readOnly:!0,destructive:!1},TASK_BOARD_TENANTS:{readOnly:!0,destructive:!1}}});async function xn$($){let Z=$.toolOutputMap??WI0(),{tools:Q,nameMap:X}=await PI0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:KI0,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await EV0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):vn$({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),J=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([K])=>!eF6.includes(K))):Y;return{tools:{...Q,...J},toolOutputMap:Z,nameMap:X}}var eF6;var fn$=D(()=>{d$0();PU();zF1();eF6=["subtask","user_ask","propose_plan"]});var PV0={};$0(PV0,{waitForSeed:()=>HU6,seedLocalMode:()=>GU6,pruneUndecryptableJwks:()=>gn$,markSeedComplete:()=>WU6,isLocalMode:()=>HL,healLocalJwks:()=>XU6,getLocalAdminUser:()=>RF1,getLocalAdminPassword:()=>zV0});import{symmetricDecrypt as $U6}from"better-auth/crypto";import{sql as bn$}from"kysely";import{userInfo as ZU6}from"os";async function XU6(){let $=E0();if(!$.localMode)return 0;if(!$.betterAuthSecret)return 0;return gn$(l$().db,$.betterAuthSecret)}async function gn$($,Z){let Q;try{Q=(await bn$`
|
|
3600
|
+
`)}async function IF6($,Z,Q){await fd($,Z,Q,{messageId:`stall-nudge-${Z.id}-${Q.id}`,prompt:MF6(Q.harness_id),workflowID:`stall-nudge:${Z.id}:${Q.id}`})}async function VF6($,Z){let Q=await $.storage.threads.get(Z);if(!Q)return{action:"none",thread:null};return{action:qF6({status:Q.status,messageStorageVersion:Q.message_storage_version,harnessId:Q.harness_id}),thread:Q}}function kF6($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return a$0($,Z)}async function SF6($,Z){let Q=[];for(let X of Z.threads){if(X.status!=="in_progress")continue;let Y=await $.storage.threads.get(X.threadId);if(!Y||!kF6(Y))continue;if(await $.storage.threads.markRunFailed(X.threadId,BF1,"abandoned"))Q.push(X.threadId),console.warn(`[task-board] failed never-started thread ${X.threadId} on ${Z.id}`)}return Q}async function qn$($,Z){let Q=$.organization?.id;if(!Q)return;for(let X of Z){if(X.status==="in_progress")try{if((await SF6($,X)).length>0)continue}catch(G){console.error(`[task-board] reaping threads for ${X.id} failed`,G)}let Y;try{Y=X.repo!=null&&(await $.storage.taskBoard.listPrs(X.id,Q)).length>0}catch(G){console.error(`[task-board] listPrs for ${X.id} failed`,G);continue}if(!gH1(X,Y))continue;let J=X.threads.find((G)=>G.hasMessages);if(!J)continue;try{let{action:G,thread:K}=await VF6($,J.threadId);if(G==="none"||!K)continue;if(G==="advance")await dd($.storage.taskBoard,J.threadId,Q,$.storage.organizationBilling);else await IF6($,X,K)}catch(G){console.error(`[task-board] stall recovery failed for ${X.id}`,G)}}}var BF1="Run never started \u2014 no pod picked it up before the idle window elapsed";var LF1=D(()=>{mI0();KL();F9()});import{z as IU}from"zod";var CF6,_F6,mb;var DF1=D(()=>{I4();R0();WJ();g3();LF1();aI0();CF6=IU.object({key:IU.string(),title:IU.string(),position:IU.number()}),_F6=g({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization, plus the `owner/name` repos this organization has imported (the valid values for a task's `repo` field).",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IU.object({}),outputSchema:IU.object({items:IU.array(Dd),repos:IU.array(IU.string()),columns:IU.array(CF6)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let[X,{items:Y},J]=await Promise.all([Z.storage.taskBoard.list(Q),Z.storage.connections.list(Q,{slug:"mcp-github"}),Z.storage.repositories.listByOrg(Q)]),G=[...new Set([...J.map((K)=>K.path),...KV$(Y)])];return qn$(Z,X),{items:X,repos:G,columns:Gk$}}}),mb=hd(_F6)});async function Mn$($,Z,Q){if(Z.assigneeId)return Z;let X=Z.organizationId,Y=await $.storage.columnAutomations.get(X,Z.status);if(!Y)return Z;let J=await $.storage.taskBoard.claimUnassignedForSuperAgent(Z.id,X,Q.assignedBy,Q.actor,Z.status);if(!J)return Z;await $.storage.taskBoard.recordActivity({taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:null,to:$8}});try{await pj($,J,{instruction:Y.prompt??void 0})}catch(G){return console.warn(`[task-board] column rule on ${Z.status} rejected for ${Z.id}, un-delegating:`,G instanceof Error?G.message:G),await $.storage.taskBoard.unassignSuperAgent(Z.id,X,Q.actor)??await $.storage.taskBoard.getById(Z.id,X)??J}return J}var In$=D(()=>{I4();MU()});function Vn$($){if($===void 0)return;let Z=[];for(let Q of $){let X=Q.trim().replace(/[\t\r\n]/g,"").replace(/\\/g,"/");if(!X.startsWith("/")||X.startsWith("//"))continue;if(!Z.includes(X))Z.push(X);if(Z.length===20)break}return Z}import{z as OY}from"zod";function fF6($){return xF6.some((Z)=>$[Z]!==void 0)}function bF6($,Z){let Q=[];for(let{field:J,action:G}of vF6){if(Z[J]===$[J])continue;Q.push({action:G,data:{from:$[J],to:Z[J]}})}if(Z.description!==$.description)Q.push({action:"description_changed"});let X=new Set($.tags.map((J)=>J.id));if(Z.tags.length!==$.tags.length||Z.tags.some((J)=>!X.has(J.id)))Q.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return Q}function yF6($,Z){if($!==$8)return!1;if(!Z)return!1;return Z.assigneeId!==$8?!0:Z.status===I$.queue}function hF6($,Z,Q){let X=$!==void 0&&gF6.has($),Y=Z!==void 0&&qJ(Z);return Q&&X&&Y}function OF1($,Z){return $!==void 0&&lH1($)&&!Z}var vF6,xF6,gF6,db;var wV0=D(()=>{I4();R0();GZ();g3();BH();wK1();MU();PX();aB();F9();In$();xb();W7();KK();vF6=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"type",action:"type_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}],xF6=["title","description","status","priority","type","assigneeId","repo","dueDate","sortOrder","previewRoutes","tagIds"];gF6=new Set(["approved","merged","post_deploy_validation","done","archived"]);db=g({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:OY.object({id:OY.string(),title:OY.string().min(1).max(AM0).optional(),description:OY.string().max(PM0).nullable().optional(),status:sB.optional(),priority:Wb.optional(),type:N$0.optional(),assigneeId:OY.string().nullable().optional(),repo:OY.string().max(TM0).nullable().optional(),dueDate:OY.string().datetime().nullable().optional(),sortOrder:OY.number().optional(),previewRoutes:OY.array(OY.string().max(500)).max(20).optional().describe("Paths this task's work created or edited, e.g. "+'["/cliente-vip", "/cliente-vip/faq"]. Paths only \u2014 no host: the '+"card joins each onto the pull request's deploy-preview origin so a reviewer can open the pages directly. Replaces the previous set; pass [] to clear."),tagIds:OY.array(OY.string()).max(1000).optional(),linkThreadId:OY.string().optional(),prUrl:OY.string().nullable().optional().describe("GitHub pull request URL to link to this task, e.g. https://github.com/owner/repo/pull/123. Pass it after opening a PR for an existing card; linking one is what starts its review.")}),outputSchema:OY.object({item:Dd}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=$.prUrl?mj($.prUrl):null;if($.prUrl&&!X)throw Error(`Not a change request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>, https://gitlab.com/<namespace>/<project>/-/merge_requests/<iid> or https://bitbucket.org/<workspace>/<repo>/pull-requests/<id>)`);if($.assigneeId)await RM0(Z,Q,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,Q))throw Error(`Task board item not found: ${$.id}`);if(!await Z.storage.threads.get($.linkThreadId))throw Error(`Thread not found: ${$.linkThreadId}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,Q)}let Y=fF6($),J=Y?await Z.storage.taskBoard.getById($.id,Q):null;if(Y&&!J)throw Error(`Task board item not found: ${$.id}`);if($.status!==void 0&&lH1($.status)){let N=await Z.storage.organizationSettings.get(Q);if(OF1($.status,jQ(N?.flags,"delivery_lanes_enabled")))throw Error("Delivery lanes are not enabled for this organization \u2014 enable "+"them in Settings before moving a task to Approved, Merged, or Post-deploy Validation.")}let G=b3.getStore()!==void 0;if(hF6($.status,J??void 0,G))throw Error("This task is under review \u2014 a run can't move it to Done or Archived. "+"Leave it for the reviewer; only a person, or TASK_BOARD_REVIEW_DECISION on a reviewer's own run, closes out a task under review.");let K=$.assigneeId!==void 0&&$.assigneeId!==(J?.assigneeId??null),W=yF6($.assigneeId,J),F=(W?I$.queue:void 0)??$.status;if(J&&UJ(J)){if($.title!==void 0||$.description!==void 0||$.priority!==void 0)throw Error("This task was generated from your report and can't be edited \u2014 create your own task instead.");if(W)await fm(Z,J,rw())}if($.tagIds!==void 0){let N=await Z.storage.tags.listOrgTags(Q),B=new Set(N.map((L)=>L.id));for(let L of $.tagIds)if(!B.has(L))throw Error(`Tag not found: ${L}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,d0(Z))}let U;if(Y)U=await Z.storage.taskBoard.update($.id,Q,{title:$.title,description:$.description,status:F,priority:$.priority,type:$.type,assigneeId:$.assigneeId,assignedBy:K?$.assigneeId?d0(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sortOrder:$.sortOrder,previewRoutes:Vn$($.previewRoutes)},d0(Z));else{let N=await Z.storage.taskBoard.getById($.id,Q);if(!N)throw Error(`Task board item not found: ${$.id}`);U=N}if(X)await Z.storage.taskBoard.linkPr({taskBoardItemId:U.id,organizationId:Q,url:X.url,prNumber:X.number,repo:X.repo,connectionId:null}),await EK(Q).catch((N)=>{console.error("[task-board] PR card cache invalidation failed",N)});if(J){let N=d0(Z),B=bF6(J,U);if(B.length>0)await lp$(Z,B.map((L)=>({taskBoardItemId:U.id,actorId:N,...L,alsoSubscribe:L.action==="assignee_changed"&&U.assigneeId!==$8?[U.assigneeId]:void 0})))}if(J&&U.description!==J.description)await Z.storage.notifications.notifyMentions({taskBoardItemId:U.id,organizationId:Q,actorId:d0(Z),body:U.description??"",previousBody:J.description});if(Y||$.linkThreadId||X)Z8(Q,U);if(W)return await pj(Z,U,{userInitiated:!0}),{item:U};if($.status!==void 0&&J!==null&&J.status!==U.status)U=await Mn$(Z,U,{assignedBy:d0(Z),actor:d0(Z)});return{item:U}}})});import{z as jV0}from"zod";var ib;var wF1=D(()=>{R0();F9();ib=g({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item. A reports-pushed task also dismisses its finding, so the next diagnostic import won't re-create the card.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:jV0.object({id:jV0.string()}),outputSchema:jV0.object({success:jV0.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,Q,d0(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return En$(Q,$.id),{success:!0}}})});import{z as n$}from"zod";async function nF6($,Z,Q){let X=n(Z),Y={query:{orgIds:[X.id]},org:X.slug??X.id},J=$.to??new Date().toISOString(),K={from:$.from??new Date(Date.parse(J)-uF6).toISOString(),to:J},W=$.org;if(!W||W===X.slug||W===X.id)return{query:{...K,...Y.query},org:Y.org};let H=await W80(Z);if(W==="all"){if(!H)return{query:{...K,...Y.query},org:Y.org};return fb({action:"analytics_read",actorUserId:Z.auth?.user?.id,actorOrgId:X.id,targetOrgId:"all",tool:Q}),{query:{...K,orgIds:null},org:"all"}}if(!H)throw Error("Not allowed to read another organization's task board analytics");let F=await Z.storage.taskBoardAnalytics.resolveOrgRef(W);if(!F)throw Error(`Organization not found: ${W}`);return fb({action:"analytics_read",actorUserId:Z.auth?.user?.id,actorOrgId:X.id,targetOrgId:F.id,tool:Q}),{query:{...K,orgIds:[F.id]},org:F.slug}}function tF6($){let Z=$.sections.filter((X)=>X.kind==="stat").flatMap((X)=>X.values).map((X)=>`${X.label}: ${X.value??"\u2014"}${X.unit?` ${X.unit}`:""}`).join(", "),Q=$.sections.filter((X)=>X.kind==="table").map((X)=>`${X.title} (${X.rows.length} rows)`).join(", ");return[`${$.org}, ${$.range.from}..${$.range.to}`,Z,Q].filter(Boolean).join(" \u2014 ")}function id($,Z,Q,X){return g({name:$,description:Q,annotations:{title:Z,readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lF6,outputSchema:pF6,modelSummary:tF6,handler:async(Y,J)=>{t(J),await J.access.check();let{query:G,org:K}=await nF6(Y,J,$);return{range:{from:G.from,to:G.to},org:K,sections:await X(J,G)}}})}var uF6=2592000000,lF6,cF6,mF6,dF6,iF6,pF6,pb,nb,tb,ob,rb,ab,sb;var jF1=D(()=>{R0();rI0();lF6=n$.object({org:n$.string().optional().describe('Org slug or id to report on. Omit for the current org. "all" is the cross-tenant aggregate (admin orgs only).'),from:n$.string().datetime({offset:!0}).optional().describe("ISO start of the range. Defaults to 30 days ago."),to:n$.string().datetime({offset:!0}).optional().describe("ISO end of the range. Defaults to now.")}),cF6=n$.object({kind:n$.literal("stat"),title:n$.string(),values:n$.array(n$.object({label:n$.string(),value:n$.number().nullable(),unit:n$.string().optional()}))}),mF6=n$.object({kind:n$.literal("series"),title:n$.string(),unit:n$.string().optional(),points:n$.array(n$.record(n$.string(),n$.union([n$.number(),n$.string(),n$.null()])))}),dF6=n$.object({kind:n$.literal("table"),title:n$.string(),columns:n$.array(n$.string()),rows:n$.array(n$.array(n$.union([n$.string(),n$.number(),n$.null()])))}),iF6=n$.discriminatedUnion("kind",[cF6,mF6,dF6]),pF6=n$.object({range:n$.object({from:n$.string(),to:n$.string()}),org:n$.string(),sections:n$.array(iF6)});pb=id("TASK_BOARD_DELIVERY","Task Board Delivery","Task board throughput and flow: tasks completed, how many shipped a PR, lead vs cycle time, completions per day by board, time in review, and dwell by lane.",($,Z)=>$.storage.taskBoardAnalytics.delivery(Z)),nb=id("TASK_BOARD_STUCK","Task Board Stuck Work","What is stuck on the task board right now: open lane visits oldest first, and work in progress bucketed by age. Deliberately not time-filtered.",($,Z)=>$.storage.taskBoardAnalytics.stuck(Z)),tb=id("TASK_BOARD_COST","Task Board Cost","Task board spend: total USD, cost per completed task and per shipped PR, spend burned on abandoned work, spend per day, cost by tenant, and the coverage % that says how much of it was actually priced.",($,Z)=>$.storage.taskBoardAnalytics.cost(Z)),ob=id("TASK_BOARD_QUALITY","Task Board Quality","Task board quality: first-pass yield, rework rate, autonomy (finished without a human), abandonment, rework over time, and retry burn.",($,Z)=>$.storage.taskBoardAnalytics.quality(Z)),rb=id("TASK_BOARD_ERRORS","Task Board Errors","Task board run failures: failed runs, quota-blocked runs, failures per day, failure kinds, a live error feed, error signatures, and superseded runs.",($,Z)=>$.storage.taskBoardAnalytics.errors(Z)),ab=id("TASK_BOARD_TENANTS","Task Board Tenants",'Per-tenant task board scorecard and queue wait. Pass org: "all" for the cross-tenant view (admin orgs only).',($,Z)=>$.storage.taskBoardAnalytics.tenants(Z)),sb=g({name:"TASK_BOARD_ADMIN_ORG_LIST",description:"Whether the caller may read every org's task board, and if so the orgs that have board items. Non-admins get an empty list.",annotations:{title:"List Task Board Admin Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:n$.object({}),outputSchema:n$.object({isTaskBoardAdmin:n$.boolean(),orgs:n$.array(n$.object({id:n$.string(),slug:n$.string(),name:n$.string()}))}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);if(!up$(Q.id)||!await W80(Z))return{isTaskBoardAdmin:!1,orgs:[]};return{isTaskBoardAdmin:!0,orgs:await Z.storage.taskBoardAnalytics.orgsWithBoardItems()}}})});function kn$($,Z){let Q=({output:X,toolCallId:Y})=>FI0(X,Y,Z)??{type:"json",value:X};return{TASK_BOARD_ITEM_LIST:c1({description:mb.description,inputSchema:Z0(mb.inputSchema),execute:(X)=>mb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_CREATE:c1({description:eb.description,inputSchema:Z0(eb.inputSchema),execute:(X)=>eb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_UPDATE:c1({description:db.description,inputSchema:Z0(db.inputSchema),execute:(X)=>db.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_DELETE:c1({description:ib.description,inputSchema:Z0(ib.inputSchema),execute:(X)=>ib.execute(X,$),toModelOutput:Q}),TASK_BOARD_ITEM_PRS_GET:c1({description:cb.description,inputSchema:Z0(cb.inputSchema),execute:(X)=>cb.execute(X,$),toModelOutput:Q}),TASK_BOARD_ADMIN_ORG_LIST:c1({description:sb.description,inputSchema:Z0(sb.inputSchema),execute:(X)=>sb.execute(X,$),toModelOutput:Q}),TASK_BOARD_DELIVERY:c1({description:pb.description,inputSchema:Z0(pb.inputSchema),execute:(X)=>pb.execute(X,$),toModelOutput:Q}),TASK_BOARD_STUCK:c1({description:nb.description,inputSchema:Z0(nb.inputSchema),execute:(X)=>nb.execute(X,$),toModelOutput:Q}),TASK_BOARD_COST:c1({description:tb.description,inputSchema:Z0(tb.inputSchema),execute:(X)=>tb.execute(X,$),toModelOutput:Q}),TASK_BOARD_QUALITY:c1({description:ob.description,inputSchema:Z0(ob.inputSchema),execute:(X)=>ob.execute(X,$),toModelOutput:Q}),TASK_BOARD_ERRORS:c1({description:rb.description,inputSchema:Z0(rb.inputSchema),execute:(X)=>rb.execute(X,$),toModelOutput:Q}),TASK_BOARD_TENANTS:c1({description:ab.description,inputSchema:Z0(ab.inputSchema),execute:(X)=>ab.execute(X,$),toModelOutput:Q})}}var Sn$=D(()=>{h4();PU();EF1();DF1();wV0();wF1();W7();jF1()});function Cn$($){return{COLLECTION_VIRTUAL_MCP_CREATE:c1({description:G2.description,inputSchema:Z0(G2.inputSchema),execute:(Z)=>G2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_LIST:c1({description:W2.description,inputSchema:Z0(W2.inputSchema),execute:(Z)=>W2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_GET:c1({description:H2.description,inputSchema:Z0(H2.inputSchema),execute:(Z)=>H2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_UPDATE:c1({description:F2.description,inputSchema:Z0(F2.inputSchema),execute:(Z)=>F2.execute(Z,$)}),COLLECTION_VIRTUAL_MCP_DELETE:c1({description:U2.description,inputSchema:Z0(U2.inputSchema),execute:(Z)=>U2.execute(Z,$)}),VIRTUAL_MCP_PLUGIN_CONFIG_GET:c1({description:N2.description,inputSchema:Z0(N2.inputSchema),execute:(Z)=>N2.execute(Z,$)}),VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE:c1({description:B2.description,inputSchema:Z0(B2.inputSchema),execute:(Z)=>B2.execute(Z,$)}),VIRTUAL_MCP_PINNED_VIEWS_UPDATE:c1({description:L2.description,inputSchema:Z0(L2.inputSchema),execute:(Z)=>L2.execute(Z,$)}),COLLECTION_CONNECTIONS_LIST:c1({description:X2.description,inputSchema:Z0(X2.inputSchema),execute:(Z)=>X2.execute(Z,$)}),COLLECTION_CONNECTIONS_GET:c1({description:Y2.description,inputSchema:Z0(Y2.inputSchema),execute:(Z)=>Y2.execute(Z,$)})}}var _n$=D(()=>{h4();RX1();TX1();uX1();sX1();iX1();mX1();tX1();ZY1();eX1();$Y1()});async function rF6($,Z,Q){let{provider:X,imageProvider:Y,webSearchProvider:J,deepResearchProvider:G,organization:K,models:W,toolApprovalLevel:H="auto",isPlanMode:F=!1,toolOutputMap:U,pendingImages:N,passthroughClient:B,vmContext:L,htmlArtifactBuffer:O,taskId:w,agentId:j,onChildUsage:E,backgroundDispatcher:z}=Z,P={isPlanMode:F},A=Q.auth?.user?.id,q=Ai$({writer:$,toolOutputMap:U,passthroughClient:B,toolApprovalLevel:H,isPlanMode:F,objectStorage:Q.objectStorage});if(A)q.update_interests=Ki$({write:async(C)=>{await Q.storage.interests.setForAgent(C.orgId,C.agentId,C.userId,{interests:C.interests})},orgId:K.id,agentId:j,userId:A});if(Object.assign(q,ki$(Q)),Object.assign(q,await sF6(Q,w)?Pp$(Q,w):kn$(Q,U)),KX(j))Object.assign(q,Cn$(Q));let V=m$0(H,!1,P)!==!1,M;if(L){let C=await Cd(Q,{virtualMcpId:L.virtualMcpId,branch:L.branch,userId:L.userId,syncTools:L.syncTools,threadId:L.threadId}),d=Zi$(C);M=ed$({fs:d.fs,htmlArtifactBuffer:O,toolOutputMap:U,needsApproval:V,pendingImages:N}),Object.assign(q,M);let x=await Yi$({ctx:Q,orgId:K.id,virtualMcpId:L.virtualMcpId,userId:L.userId,threadId:L.threadId,writer:$,rebindFs:async(b)=>{d.swap(await Cd(Q,{virtualMcpId:L.virtualMcpId,branch:b,userId:L.userId,syncTools:L.syncTools,threadId:L.threadId}))}});if(x)q.load_repo=x}if(X)q.subtask=o$0("subtask",PF1,AF1($,{provider:X,organization:K,models:W,self:{id:j},currentThreadId:w,needsApproval:m$0(H,!1,P)!==!1,onChildUsage:E,vmTools:M,parentBuiltInParams:Z},Q),z,(C)=>Oi$(w,C));if(Y&&W.image&&Q.objectStorage)q.generate_image=o$0("generate_image",n$0,Bi$($,{provider:Y,imageModelInfo:W.image,objectStorage:Q.objectStorage,allowHttpExternalUrls:E0().localMode}),z);if(J&&W.webSearch){let C=eW1({provider:J,modelInfo:W.webSearch,ctx:Q,mode:"quick",toolName:"web_search"});q.web_search=aW1($,{researchJob:C,toolOutputMap:U,taskId:w})}if(G&&W.deepResearch){let C=eW1({provider:G,modelInfo:W.deepResearch,ctx:Q,mode:"deep",toolName:"deep_research"});q.deep_research=aW1($,{researchJob:C,toolOutputMap:U,taskId:w,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}return q}function aF6($,Z,Q){let X=Z.organization.id,Y=Q.auth?.user?.id,J={};for(let[G,K]of Object.entries($)){let W=K,H=W.execute;if(typeof H!=="function"){J[G]=K;continue}let F=oF6[G],U=H.constructor?.name==="AsyncGeneratorFunction",N=(L,O)=>{if(!X||!Y)return;k1.capture({distinctId:Y,event:"tool_called",groups:{organization:X},properties:{organization_id:X,tool_source:"builtin",tool_name:G,tool_safe_name:G,read_only:F?.readOnly??null,destructive:F?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(L),is_error:O}})},B=U?async function*(L,O){let w=performance.now(),j=!1;try{yield*H.call(W,L,O)}catch(E){throw j=!0,E}finally{N(performance.now()-w,j)}}:async(L,O)=>{let w=performance.now(),j=!1;try{return await H.call(W,L,O)}catch(E){throw j=!0,E}finally{N(performance.now()-w,j)}};J[G]={...W,execute:B}}return J}async function EV0($,Z,Q){let X=await rF6($,Z,Q),Y=aF6(X,Z,Q);if(!Z.isPlanMode){let{propose_plan:J,...G}=Y;return G}return Y}function vn$($){let{ctx:Z,writer:Q,toolOutputMap:X,subtaskParams:Y,planMode:J}=$,G={user_ask:AI0,todo_write:TI0,read_tool_output:HI0({toolOutputMap:X})};if(J)G.propose_plan=qI0;if(Y.provider)G.subtask=AF1(Q,Y,Z);return G}async function sF6($,Z){try{return(await $.storage.threads.get(Z))?.metadata?.source==="jira"}catch{return!1}}var oF6;var zF1=D(()=>{g4();d$0();PU();$i$();zI0();Ji$();TF1();mW1();dW1();Wi$();iW1();Li$();tW1();rW1();t$0();ji$();Pi$();Ti$();Si$();Ap$();Sn$();S8();_n$();o1();oF6={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1},TASK_BOARD_ITEM_LIST:{readOnly:!0,destructive:!1},TASK_BOARD_ITEM_CREATE:{readOnly:!1,destructive:!1},TASK_BOARD_ITEM_UPDATE:{readOnly:!1,destructive:!1},TASK_BOARD_ITEM_DELETE:{readOnly:!1,destructive:!0},TASK_BOARD_ITEM_PRS_GET:{readOnly:!0,destructive:!1},TASK_BOARD_ADMIN_ORG_LIST:{readOnly:!0,destructive:!1},TASK_BOARD_DELIVERY:{readOnly:!0,destructive:!1},TASK_BOARD_STUCK:{readOnly:!0,destructive:!1},TASK_BOARD_COST:{readOnly:!0,destructive:!1},TASK_BOARD_QUALITY:{readOnly:!0,destructive:!1},TASK_BOARD_ERRORS:{readOnly:!0,destructive:!1},TASK_BOARD_TENANTS:{readOnly:!0,destructive:!1}}});async function xn$($){let Z=$.toolOutputMap??WI0(),{tools:Q,nameMap:X}=await PI0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:KI0,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await EV0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):vn$({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),J=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([K])=>!eF6.includes(K))):Y;return{tools:{...Q,...J},toolOutputMap:Z,nameMap:X}}var eF6;var fn$=D(()=>{d$0();PU();zF1();eF6=["subtask","user_ask","propose_plan"]});var PV0={};$0(PV0,{waitForSeed:()=>HU6,seedLocalMode:()=>GU6,pruneUndecryptableJwks:()=>gn$,markSeedComplete:()=>WU6,isLocalMode:()=>HL,healLocalJwks:()=>XU6,getLocalAdminUser:()=>RF1,getLocalAdminPassword:()=>zV0});import{symmetricDecrypt as $U6}from"better-auth/crypto";import{sql as bn$}from"kysely";import{userInfo as ZU6}from"os";async function XU6(){let $=E0();if(!$.localMode)return 0;if(!$.betterAuthSecret)return 0;return gn$(l$().db,$.betterAuthSecret)}async function gn$($,Z){let Q;try{Q=(await bn$`
|
|
3601
3601
|
select id, "privateKey" from jwks
|
|
3602
3602
|
`.execute($)).rows}catch(Y){if(Y?.code==="42P01")return 0;return console.warn("[local-mode] JWKS heal skipped \u2014 could not read jwks:",Y),0}let X=0;for(let Y of Q){let J=!0;try{await $U6({key:Z,data:JSON.parse(Y.privateKey)})}catch{J=!1}if(J)continue;try{await bn$`delete from jwks where id = ${Y.id}`.execute($),X++}catch(G){console.warn(`[local-mode] JWKS heal could not delete stale key ${Y.id}:`,G)}}return X}async function zV0(){return"local-mode-default"}function hn$(){try{return ZU6().username||"local"}catch{return"local"}}function YU6($){return $.charAt(0).toUpperCase()+$.slice(1)}async function JU6(){let $=l$(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function GU6(){if(!await JU6())return!1;let Z=hn$(),Q=`${Z}@${yn$}`,X=YU6(Z),Y=await zV0(),J=await N8.api.signUpEmail({body:{email:Q,password:Y,name:X}});if(!J?.user?.id)throw Error("Failed to create local admin user");let G=J.user.id,K=l$();await K.db.updateTable("user").set({role:"admin"}).where("id","=",G).execute();let W=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),H=`${X} Local`;return await K.db.updateTable("organization").set({name:H,slug:W}).where("id","in",(F)=>F.selectFrom("member").select("organizationId").where("userId","=",G)).execute(),!0}async function RF1(){let $=l$(),Z=hn$(),Q=await $.db.selectFrom("user").where("email","=",`${Z}@${yn$}`).selectAll().executeTakeFirst();if(Q)return Q;return $.db.selectFrom("user").where("email","=",`${Z}@${QU6}`).selectAll().executeTakeFirst()}function HL(){return E0().localMode}function WU6(){un$()}function HU6(){return KU6}var yn$="localhost.studio",QU6="localhost.mesh",un$,KU6;var $y=D(()=>{dQ();o1();V3();KU6=new Promise(($)=>{if(un$=$,!HL())$()})});var ln$=D(()=>{MI0()});function UU6($){return $.type==="file"&&"mediaType"in $&&typeof $.mediaType==="string"&&FU6.has($.mediaType)}function nn$($){let Z=$.match(/^data:([^;]+);base64,(.+)$/s);if(!Z)return null;let[,Q,X]=Z;try{let Y=atob(X),J=new Uint8Array(Y.length);for(let G=0;G<Y.length;G++)J[G]=Y.charCodeAt(G);return{mimeType:Q,bytes:J}}catch{return null}}function qF1($){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"}[$]??"bin"}async function NU6($,Z,Q,X){if(!X.objectStorage)return null;try{return await X.objectStorage.put(Z,$,{contentType:Q}),Z}catch(Y){return console.error("[file-materializer] Failed to upload file:",Y),null}}async function D80($,Z){if(!Z.objectStorage)return null;try{return await Z.objectStorage.presignedGetUrl($,BU6)}catch(Q){return console.error("[file-materializer] Failed to generate presigned URL:",Q),null}}function tn$($){try{return decodeURIComponent($)}catch{return $}}function mn$($,Z){let Q=typeof $.filename==="string"&&$.filename.trim()?$.filename:`attachment.${qF1(Z)}`,X=Q.match(LU6);if(X?.[1])Q=tn$(X[1]);return[...Q.split(/[\\/]/).pop()??Q].filter((G)=>(G.codePointAt(0)??0)>=32).join("").trim()||`attachment.${qF1(Z)}`}function dn$($,Z){if(!Z.has($))return Z.add($),$;let Q=$.lastIndexOf("."),X=Q>0?$.slice(0,Q):$,Y=Q>0?$.slice(Q):"";for(let J=2;;J++){let G=`${X} (${J})${Y}`;if(!Z.has(G))return Z.add(G),G}}async function in$($,Z,Q,X,Y){if(!Y||!X.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(Y),hasOrgFs:Boolean(X.orgFs)}),null;try{let J=`${Y}/${Q}`;return await X.orgFs.write("uploads",J,$,{actor:X.auth?.user?.id??"unknown",contentType:Z}),{key:XF("uploads",J),sandboxPath:`org/upload/${Q}`}}catch(J){return console.error("[file-materializer] uploads-volume write failed:",J),null}}async function AV0($,Z,Q){if(!Z.organization)return $;let X=Z.organization.slug;if(!X)return $;let Y=$.findLastIndex((P)=>P.role==="user");if(Y===-1)return $;let J=$[Y],G=J.parts.filter((P)=>P.type==="file"&&("url"in P)&&typeof P.url==="string"&&P.url.startsWith("data:")),W=Boolean(Q?.threadId&&Z.orgFs)?J.parts.flatMap((P)=>{if(P.type!=="text"||!("text"in P)||typeof P.text!=="string")return[];let A=P.text.match(DU6);if(!A?.[1]||A[2]===void 0)return[];return[{name:tn$(A[1]),content:A[2]}]}):[];if(G.length===0&&W.length===0)return $;let H=new Set,F=G.flatMap((P)=>{if(P.type!=="file"||!("url"in P)||typeof P.url!=="string")return[];let A=nn$(P.url);if(!A)return[];let q=dn$(mn$(P,A.mimeType),H);return[{dataUrl:P.url,parsed:A,filename:q}]}),U=W.map(({name:P,content:A})=>({filename:dn$(mn$({filename:P},"text/plain"),H),content:A})),B=(await Promise.all([...F.map(async({dataUrl:P,parsed:A,filename:q})=>{let V=await in$(A.bytes,A.mimeType,q,Z,Q?.threadId);if(!V)return null;return{dataUrl:P,studioStorageUrl:YL(V.key),redirectUrl:Gu(Z.baseUrl,X,V.key),filename:q,sandboxPath:V.sandboxPath}}),...U.map(async({filename:P,content:A})=>{let q=await in$(new TextEncoder().encode(A),z7(P),P,Z,Q?.threadId);if(!q)return null;return{dataUrl:null,studioStorageUrl:YL(q.key),redirectUrl:Gu(Z.baseUrl,X,q.key),filename:P,sandboxPath:q.sandboxPath}})])).filter((P)=>P!==null);if(B.length===0)return $;let L=B.map((P)=>P.sandboxPath?`- ${P.filename}: ${P.sandboxPath} (tool URL: ${P.studioStorageUrl})`:`- ${P.filename}: ${P.studioStorageUrl}`).join(`
|
|
3603
3603
|
`),O=B.some((P)=>P.sandboxPath)?`[Attached files \u2014 already inside your sandbox; read them at the given path. The tool URL is only for tools that take a URL argument]
|
|
@@ -3683,7 +3683,7 @@ ${Q.trim()}`}function VL6($){return[`Your ${ZU[$]} comment carries no screenshot
|
|
|
3683
3683
|
AND date >= {since:Date} AND date <= {until:Date}
|
|
3684
3684
|
GROUP BY host
|
|
3685
3685
|
ORDER BY sum(requests) DESC
|
|
3686
|
-
LIMIT 25`,{slug:$,since:Z,until:Q});return[...new Set(X.map((Y)=>Ji(Y.host)).filter(Boolean))]}async function Ra$($){let Z=E0().oneDollarStatsApiKey;if(!Z||!UL())return null;let{slug:Q,testName:X,since:Y,until:J,goalOnDash:G}=$,K=await oL6(Q,Y,J);if(K.length===0)return null;let W=`event:props:${X}`,H=[Y,J],F=Array.from(new Set([Uk0,...$.goals])),U=async(b,c,y)=>{let m=[];for(let e=0;e<K.length;e+=Ta$){let N0=await Promise.all(K.slice(e,e+Ta$).map(async(s)=>{let r=await fetch(pL6,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":Z,Accept:"application/json"},body:JSON.stringify({site_id:s,metrics:b,date_range:H,...c.length?{dimensions:c}:{},...y.length?{filters:y}:{},pagination:{limit:1e4,offset:0}}),signal:AbortSignal.timeout(nL6)}).catch(()=>null);if(!r||!r.ok)return[];return(await r.json().catch(()=>null))?.results??[]}));for(let s of N0)m.push(...s)}return m},N=async(b,c)=>{let y=b===Uk0;return(await U(["visitors"],[W,...y?[]:["event:goal"]],[["is",W,[c]],...y?[]:[["is","event:goal",[b]]]])).reduce((e,N0)=>e+(N0.metrics?.[0]??0),0)},B=async(b)=>{let c=G===Uk0;return U(["visitors"],["time:day",W,...c?[]:["event:goal"]],[["is",W,[b]],...c?[]:[["is","event:goal",[G]]]])},[L,O,w]=await Promise.all([Promise.all(F.map(async(b)=>({goal:b,variant:await N(b,"true"),default:await N(b,"false")}))),B("false"),B("true")]),j=L.find((b)=>b.goal===Uk0),E={default:j?.default??0,variant:j?.variant??0},z=new Map;for(let b of O){let c=b.dimensions?.[0]?.split(" ")[0]??"";if(!c)continue;let y=z.get(c)??{default:0,variant:0};y.default+=b.metrics?.[0]??0,z.set(c,y)}for(let b of w){let c=b.dimensions?.[0]?.split(" ")[0]??"";if(!c)continue;let y=z.get(c)??{default:0,variant:0};y.variant+=b.metrics?.[0]??0,z.set(c,y)}let P=Array.from(z.entries()).map(([b,c])=>({date:b,...c})).sort((b,c)=>b.date.localeCompare(c.date)),A=O.reduce((b,c)=>b+(c.metrics?.[0]??0),0),q=w.reduce((b,c)=>b+(c.metrics?.[0]??0),0),V={successes:A,total:E.default},M={successes:q,total:E.variant},C=Aa$(V,M),d=C==null||Number.isNaN(C)?1000:C,x=Pa$(V,M);return{visitors:E,goals:L,timeseries:P,stats:{totalParticipants:E.default+E.variant,sampleSize:d,probabilityVariantBest:x,probabilityDefaultBest:1-x}}}var pL6="https://deco.lilstts.com/plausible",nL6=12000,Ta$=6,Uk0="visitors",tL6="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})";var qa$=D(()=>{o1();Hk0();Fk0()});import{z as i6}from"zod";function Ia$($){return $.toISOString().slice(0,10)}function rL6(){let $=new Date,Z=new Date($);return Z.setUTCDate(Z.getUTCDate()-29),{since:Ia$(Z),until:Ia$($)}}var Ma$,YN1;var Va$=D(()=>{JK();R0();qa$();Wy();Ma$=/^\d{4}-\d{2}-\d{2}$/;YN1=g({name:"EXPERIMENT_RESULTS",description:"A/B results for one experiment: per-goal visitor conversions for each variant, a daily timeseries for the selected goal, and the computed statistics (participants, target sample size, probability each variant is best).",annotations:{title:"Experiment Results",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:i6.object({site:i6.string().min(1).max(60).refine(Q7).describe("Site slug the experiment belongs to."),key:i6.string().min(1).describe("Analytics prop key the variants split on: `event:props:<key>` = 'true'/'false'. In the deco runtime this is the sticky segment matcher block's id (not the multivariate section name), so `key` must equal that matcher id for results to populate."),since:i6.string().regex(Ma$).optional().describe("Window start (YYYY-MM-DD)."),until:i6.string().regex(Ma$).optional().describe("Window end (YYYY-MM-DD)."),goals:i6.array(i6.string()).default([]).describe("Custom goals to aggregate conversions for."),goalOnDash:i6.string().default("visitors").describe("Goal plotted in the timeseries / used for the statistics.")}),outputSchema:i6.object({available:i6.boolean(),results:i6.object({visitors:i6.object({default:i6.number(),variant:i6.number()}),goals:i6.array(i6.object({goal:i6.string(),default:i6.number(),variant:i6.number()})),timeseries:i6.array(i6.object({date:i6.string(),default:i6.number(),variant:i6.number()})),stats:i6.object({totalParticipants:i6.number(),sampleSize:i6.number(),probabilityVariantBest:i6.number(),probabilityDefaultBest:i6.number()})}).nullable()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);await AK(Z,Q.id,$.site);let X=$.site.toLowerCase(),Y=$.since&&$.until?{since:$.since,until:$.until}:rL6(),J=await Ra$({slug:X,testName:$.key,since:Y.since,until:Y.until,goals:$.goals,goalOnDash:$.goalOnDash});return{available:J!==null,results:J}}})});var ka$=D(()=>{Ba$();La$();Da$();Oa$();wa$();Va$()});import{z as Sa$}from"zod";function $D6($,Z){let Q=$?.[Z];if(!Q)return;return Object.entries(Q).filter(([,Y])=>(PQ in Y)).sort(([,Y],[,J])=>(J[PQ]?.createdAt??0)-(Y[PQ]?.createdAt??0))[0]?.[0]}var sL6,eL6,JN1;var Ca$=D(()=>{g4();R0();Tb();kd();BQ();EJ();sL6=Sa$.object({data:Mi$.describe("Data for the new thread (id is auto-generated if not provided)")}),eL6=Sa$.object({item:AU.describe("The created thread entity")});JN1=g({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:sL6,outputSchema:eL6,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to create thread");let{data:Y}=$,J=Y.id??q8("thrd"),K=(await kI0(Z.storage.virtualMcps,Y.virtual_mcp_id,Q.id)).metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??$D6(K?.sandboxMap,X)??wI0(OI0(Z.auth.user));let F=await Z.storage.threads.create({id:J,organization_id:Q.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:X,metadata:{runtime:Y.runtime??EI0(K)}});if(F.isNew)k1.capture({distinctId:X,event:"chat_started",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:J,has_title:!!$.data.title,created_via:"tool"}});return{item:wK(F)}}})});import{z as GN1}from"zod";var ZD6,QD6,KN1;var _a$=D(()=>{g4();R0();Tb();kd();ZD6=GN1.object({id:GN1.string().describe("ID of the thread to update"),data:Ii$.describe("Partial thread data to update")}),QD6=GN1.object({item:AU.describe("The updated thread entity")}),KN1=g({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ZD6,outputSchema:QD6,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to update thread");let{id:Y,data:J}=$,G=await Z.storage.threads.get(Y);if(!G)throw Error("Thread not found in organization");if(J.virtual_mcp_id!==void 0)await kI0(Z.storage.virtualMcps,J.virtual_mcp_id,Q.id);if(J.branch===null&&G.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(G.virtual_mcp_id,Q.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:J.title,description:J.description,hidden:J.hidden,updated_by:X};if(J.status)K.status=J.status;if(J.metadata!==void 0){let H=_m(J.metadata)??{},F=Pb(G.metadata?.runtime),U=Pb(H.runtime);if(F&&U&&U!==F)throw Error(`Cannot change a thread's runtime (${F} \u2192 ${U}); it is stamped once at creation. Start a new chat instead.`);let N=G.metadata?.sandboxMap;K.metadata={...H,...F?{runtime:F}:{},...N!==void 0?{sandboxMap:N}:{}}}if(J.branch!==void 0)K.branch=J.branch;if(J.virtual_mcp_id!==void 0)K.virtual_mcp_id=J.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(J.hidden!==void 0&&J.hidden!==G.hidden)k1.capture({distinctId:X,event:J.hidden?"chat_archived":"chat_unarchived",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:Y}});return{item:wK(W)}}})});var WN1;var va$=D(()=>{q3();Tb();g4();R0();GL();Zk0();ed();WN1=g({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:i00,outputSchema:p00(AU),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)throw Error(`Thread not found: ${$.id}`);if(X.status==="in_progress"){let J=(K)=>(W)=>console.error("[thread] delete-time run cancel step failed",{threadId:$.id,step:K,err:W});await sd($.id).catch(J("background-jobs")),await Xi($.id).catch(J("gate-head"));let G=await Z.storage.threads.getRunFence($.id).catch(()=>null);if(G)await Gy($.id,G).catch(J("hosted-harness"));eV0($.id)}await Z.storage.threads.delete($.id);let Y=d0(Z);if(Y)k1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:$.id}});return{item:wK(X)}}})});var xa$=D(()=>{Ca$();QH1();XH1();_a$();va$();YH1()});function YD6($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function JD6($){return $.map((Z)=>{let Q=Z.metadata;if(Q?.tiptapDoc)return Z;let X=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!X?.text||typeof X.text!=="string")return Z;return{...Z,metadata:{...Q,tiptapDoc:YD6(X.text)}}})}function Nk0($){let Z;if(typeof $==="string")try{let Q=JSON.parse($);if(Array.isArray(Q)&&Q.length>0&&Q[0]?.role&&Array.isArray(Q[0]?.parts))Z=Q;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return JD6(Z)}import{z as P5}from"zod";var HN1;var fa$=D(()=>{g4();R0();GZ();HN1=g({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:P5.object({name:P5.string().min(1).max(255),virtual_mcp_id:P5.string(),messages:P5.union([P5.string(),P5.array(P5.looseObject({id:P5.string().optional(),role:P5.enum(["user","assistant","system"]),parts:P5.array(P5.record(P5.string(),P5.unknown())),metadata:P5.unknown().optional()}))]),models:P5.object({tier:uw,modelId:P5.string().optional(),credentialId:P5.string().optional()}).loose().default({tier:"smart"}),tools:P5.array(P5.string()).nullable().optional(),maxAgentSteps:P5.number().int().min(1).max(100).nullable().optional(),temperature:P5.number().default(0.5),active:P5.boolean().default(!0)}),outputSchema:P5.object({id:P5.string(),name:P5.string(),active:P5.boolean(),created_at:P5.string()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("Unable to determine user identity");let Y=Nk0($.messages),J=await Z.storage.automations.create({organization_id:Q.id,created_by:X,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return k1.capture({distinctId:X,event:"automation_created",groups:{organization:Q.id},properties:{organization_id:Q.id,automation_id:J.id,virtual_mcp_id:$.virtual_mcp_id,active:J.active,tier:$.models.tier}}),{id:J.id,name:J.name,active:J.active,created_at:J.created_at}}})});import{z as G5}from"zod";var FN1;var ba$=D(()=>{R0();FN1=g({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:G5.object({id:G5.string()}),outputSchema:G5.object({automation:G5.object({id:G5.string(),name:G5.string(),active:G5.boolean(),created_by:G5.string(),created_at:G5.string(),updated_at:G5.string(),virtual_mcp_id:G5.string(),messages:G5.unknown(),models:G5.unknown(),tools:G5.array(G5.string()).nullable(),maxAgentSteps:G5.number().nullable(),temperature:G5.number(),triggers:G5.array(G5.object({id:G5.string(),type:G5.enum(["cron","event","webhook"]),cron_expression:G5.string().nullable(),connection_id:G5.string().nullable(),event_type:G5.string().nullable(),params:G5.unknown().nullable(),last_run_at:G5.string().nullable(),api_key_id:G5.string().nullable(),created_at:G5.string()}))}).nullable()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=await Z.storage.automations.findById($.id,Q.id);if(!X)return{automation:null};let Y=await Z.storage.automations.listTriggers(X.id);return{automation:{id:X.id,name:X.name,active:X.active,created_by:X.created_by,created_at:X.created_at,updated_at:X.updated_at,virtual_mcp_id:X.virtual_mcp_id,messages:JSON.parse(X.messages),models:JSON.parse(X.models),tools:X.tools?JSON.parse(X.tools):null,maxAgentSteps:X.max_agent_steps,temperature:X.temperature,triggers:Y.map((J)=>({id:J.id,type:J.type,cron_expression:J.cron_expression,connection_id:J.connection_id,event_type:J.event_type,params:J.params?JSON.parse(J.params):null,last_run_at:J.last_run_at,api_key_id:J.api_key_id,created_at:J.created_at}))}}}})});import{z as d3}from"zod";var UN1;var ya$=D(()=>{R0();UN1=g({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:d3.object({virtual_mcp_id:d3.string().optional().nullable()}),outputSchema:d3.object({automations:d3.array(d3.object({id:d3.string(),name:d3.string(),active:d3.boolean(),created_by:d3.string(),created_at:d3.string(),trigger_count:d3.number(),nearest_next_run_at:d3.string().nullable(),virtual_mcp_id:d3.string()}))}),handler:async($,Z)=>{t(Z);let Q=n(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(Q.id,$.virtual_mcp_id)).map((J)=>({id:J.id,name:J.name,active:J.active,created_by:J.created_by,created_at:J.created_at,trigger_count:J.trigger_count,nearest_next_run_at:J.nearest_next_run_at,virtual_mcp_id:J.virtual_mcp_id}))}}})});function KD6($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((Q)=>typeof Q==="string"))return Z.length>0?Z:null}catch{}return null}function ga$($){return`${$}:context`}function ha$($,Z,Q,X,Y){let G=JSON.parse($.messages).map((H,F)=>({...H,id:`${Q}:${F}`})),K=Z?{...Y,[Od]:GD6}:Y;return{messages:G,models:{credentialId:X.credentialId,thinking:X.thinking,...X.image?{image:X.image}:{},...X.webSearch?{webSearch:X.webSearch}:{},...X.deepResearch?{deepResearch:X.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:KD6($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",triggerId:Z??void 0,...K?{runMetadata:K}:{},taskId:Q}}var GD6="new_task";var ua$=D(()=>{wd()});function TX($,Z,Q,X,Y,J,G,K){return TX.fromTZ(TX.tp($,Z,Q,X,Y,J,G),K)}function NN1($,Z=new Date){let Q=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],X=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${X} GMT`)-Date.parse(`${X} ${Q}`)}function WD6($,Z){let Q=new Date(Date.parse($));if(isNaN(Q))throw Error("minitz: Invalid ISO8601 passed to parser.");let X=$.substring(9);return $.includes("Z")||X.includes("-")||X.includes("+")?TX.tp(Q.getUTCFullYear(),Q.getUTCMonth()+1,Q.getUTCDate(),Q.getUTCHours(),Q.getUTCMinutes(),Q.getUTCSeconds(),"Etc/UTC"):TX.tp(Q.getFullYear(),Q.getMonth()+1,Q.getDate(),Q.getHours(),Q.getMinutes(),Q.getSeconds(),Z)}function HD6($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new TK($.startAt,$.timezone)),$.stopAt&&($.stopAt=new TK($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function _80($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function FD6($){return _80($)}function UD6($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var BN1=32,v80,da$,la$=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new TK(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,v80),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,Q,X){let Y=this[$],J=$==="day"&&this.lastDayOfMonth;if(Z===""&&!J)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(X);let G=Z.split(",");if(G.length>1)for(let K=0;K<G.length;K++)this.partToArray($,G[K],Q,X);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,Q,X):Z.indexOf("-")!==-1?this.handleRange(Z,$,Q,X):Z.indexOf("/")!==-1?this.handleStepping(Z,$,Q,X):Z!==""&&this.handleNumber(Z,$,Q,X)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,Q,X){let Y=this.extractNth($,Z),J=parseInt(Y[0],10)+Q;if(isNaN(J))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,J,Y[1]||X)}setPart($,Z,Q){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,Q);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=Q}handleRangeWithStepping($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(J===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,G,K,W]=J,H=parseInt(G,10)+Q,F=parseInt(K,10)+Q,U=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(U===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(U>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>F)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let N=H;N<=F;N+=U)this.setPart(Z,N,Y[1]||X)}extractNth($,Z){let Q=$,X;if(Q.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");X=Q.split("#")[1],Q=Q.split("#")[0]}return[Q,X]}handleRange($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].split("-");if(J.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let G=parseInt(J[0],10)+Q,K=parseInt(J[1],10)+Q;if(isNaN(G))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(G>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=G;W<=K;W++)this.setPart(Z,W,Y[1]||X)}handleStepping($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].split("/");if(J.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");J[0]===""&&(J[0]="*");let G=0;J[0]!=="*"&&(G=parseInt(J[0],10)+Q);let K=parseInt(J[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=G;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||X)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|BN1;else if(Z===v80)this.dayOfWeek[$]=v80;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|da$[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},ca$,NL,TK=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,Q){if(this.tz=Q,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,Q,X,Y){let J=new Date(Date.UTC(Z,Q,X)).getUTCDay(),G=0;for(let K=1;K<=X;K++)new Date(Date.UTC(Z,Q,K)).getUTCDay()===J&&G++;if(Y&v80&&da$[G-1]&Y)return!0;if(Y&BN1){let K=new Date(Date.UTC(Z,Q+1,0)).getUTCDate();for(let W=X+1;W<=K;W++)if(new Date(Date.UTC(Z,Q,W)).getUTCDay()===J)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let Q=TX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=Q.s,this.minute=Q.i,this.hour=Q.h,this.day=Q.d,this.month=Q.m-1,this.year=Q.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>ca$[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let Q=TX.fromTZISO(Z);this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply()}else return this.fromDate(TX.fromTZISO(Z,this.tz))}findNext(Z,Q,X,Y){let J=this[Q],G;X.lastDayOfMonth&&(this.month!==1?G=ca$[this.month]:G=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!X.starDOW&&Q=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[Q]+Y;W<X[Q].length;W++){let H=X[Q][W];if(Q==="day"&&X.lastDayOfMonth&&W-Y==G&&(H=1),Q==="day"&&!X.starDOW){let F=X.dayOfWeek[(K+(W-Y-1))%7];if(F&&F&v80)F=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,F)?1:0;else if(F)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${F}`);Z.legacyMode&&!X.starDOM?H=H||F:H=H&&F}if(H)return this[Q]=W-Y,J!==this[Q]?2:1}return 3}recurse(Z,Q,X){let Y=this.findNext(Q,NL[X][0],Z,NL[X][2]);if(Y>1){let J=X+1;for(;J<NL.length;)this[NL[J][0]]=-NL[J][2],J++;if(Y===3)return this[NL[X][1]]++,this[NL[X][0]]=-NL[X][2],this.apply(),this.recurse(Z,Q,0);if(this.apply())return this.recurse(Z,Q,X-1)}return X+=1,X>=NL.length?this:this.year>=3000?null:this.recurse(Z,Q,X)}increment(Z,Q,X){return this.second+=Q.interval!==void 0&&Q.interval>1&&X?Q.interval:1,this.ms=0,this.apply(),this.recurse(Z,Q,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):TX.fromTZ(TX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},ma$=30000,Bk0,Lk0=class{name;options;_states;fn;constructor($,Z,Q){let X,Y;if(_80(Z))Y=Z;else if(typeof Z=="object")X=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(_80(Q))Y=Q;else if(typeof Q=="object")X=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=X?.name,this.options=HD6(X),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:X?X.maxRuns:void 0,paused:X?X.paused:!1,pattern:new la$("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new TK($,this.options.timezone||this.options.utcOffset):this._states.pattern=new la$($,this.options.timezone),this.name){if(Bk0.find((J)=>J.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Bk0.push(this)}return Y!==void 0&&FD6(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let Q=[],X=Z||this._states.currentRun||void 0;for(;$--&&(X=this.nextRun(X));)Q.push(X);return Q}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,Q=this.fn!==void 0,X=!this._states.kill;return Z&&Q&&X&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof TK||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new TK($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=Bk0.indexOf(this);$>=0&&Bk0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),Q=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||Q===null?this:(Z>ma$&&(Z=ma$),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(Q),Z),this._states.currentTimeout&&this.options.unref&&UD6(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new TK(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){_80(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new TK($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,Q=!this._states.paused&&Z.getTime()>=$.getTime(),X=this._states.blocking&&this.options.protect;Q&&!X?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):Q&&X&&_80(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),Q=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),Q=!$),$=new TK($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let X=this._states.once||new TK($,this.options.timezone||this.options.utcOffset);return!Q&&X!==this._states.once&&(X=X.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||X===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&X.getTime()>=this.options.stopAt.getTime()?null:X}_calculatePreviousRun($,Z){let Q=new TK(void 0,this.options.timezone||this.options.utcOffset),X=$;if(this.options.startAt.getTime()<=Q.getTime()){X=this.options.startAt;let Y=X.getTime()+this.options.interval*1000;for(;Y<=Q.getTime();)X=new TK(X,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=X.getTime()+this.options.interval*1000;Z=!0}return X===null&&(X=void 0),[X,Z]}};var LN1=D(()=>{TX.fromTZISO=($,Z,Q)=>TX.fromTZ(WD6($,Z),Q);TX.fromTZ=function($,Z){let Q=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),X=NN1($.tz,Q),Y=new Date(Q.getTime()-X),J=NN1($.tz,Y);if(J-X===0)return Y;{let G=new Date(Q.getTime()-J),K=NN1($.tz,G);if(K-J===0)return G;if(!Z&&K-J>0)return G;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};TX.toTZ=function($,Z){let Q=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),X=new Date(Q);return{y:X.getFullYear(),m:X.getMonth()+1,d:X.getDate(),h:X.getHours(),i:X.getMinutes(),s:X.getSeconds(),tz:Z}};TX.tp=($,Z,Q,X,Y,J,G)=>({y:$,m:Z,d:Q,h:X,i:Y,s:J,tz:G});TX.minitz=TX;v80=31|BN1,da$=[1,2,4,8,16],ca$=[31,28,31,30,31,30,31,31,30,31,30,31],NL=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];Bk0=[]});function Dk0($,Z){try{return new Lk0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var DN1=D(()=>{LN1()});import{DBOS as TQ,SchedulerMode as ND6}from"@dbos-inc/dbos-sdk";async function zN1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
|
|
3686
|
+
LIMIT 25`,{slug:$,since:Z,until:Q});return[...new Set(X.map((Y)=>Ji(Y.host)).filter(Boolean))]}async function Ra$($){let Z=E0().oneDollarStatsApiKey;if(!Z||!UL())return null;let{slug:Q,testName:X,since:Y,until:J,goalOnDash:G}=$,K=await oL6(Q,Y,J);if(K.length===0)return null;let W=`event:props:${X}`,H=[Y,J],F=Array.from(new Set([Uk0,...$.goals])),U=async(b,c,y)=>{let m=[];for(let e=0;e<K.length;e+=Ta$){let N0=await Promise.all(K.slice(e,e+Ta$).map(async(s)=>{let r=await fetch(pL6,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":Z,Accept:"application/json"},body:JSON.stringify({site_id:s,metrics:b,date_range:H,...c.length?{dimensions:c}:{},...y.length?{filters:y}:{},pagination:{limit:1e4,offset:0}}),signal:AbortSignal.timeout(nL6)}).catch(()=>null);if(!r||!r.ok)return[];return(await r.json().catch(()=>null))?.results??[]}));for(let s of N0)m.push(...s)}return m},N=async(b,c)=>{let y=b===Uk0;return(await U(["visitors"],[W,...y?[]:["event:goal"]],[["is",W,[c]],...y?[]:[["is","event:goal",[b]]]])).reduce((e,N0)=>e+(N0.metrics?.[0]??0),0)},B=async(b)=>{let c=G===Uk0;return U(["visitors"],["time:day",W,...c?[]:["event:goal"]],[["is",W,[b]],...c?[]:[["is","event:goal",[G]]]])},[L,O,w]=await Promise.all([Promise.all(F.map(async(b)=>({goal:b,variant:await N(b,"true"),default:await N(b,"false")}))),B("false"),B("true")]),j=L.find((b)=>b.goal===Uk0),E={default:j?.default??0,variant:j?.variant??0},z=new Map;for(let b of O){let c=b.dimensions?.[0]?.split(" ")[0]??"";if(!c)continue;let y=z.get(c)??{default:0,variant:0};y.default+=b.metrics?.[0]??0,z.set(c,y)}for(let b of w){let c=b.dimensions?.[0]?.split(" ")[0]??"";if(!c)continue;let y=z.get(c)??{default:0,variant:0};y.variant+=b.metrics?.[0]??0,z.set(c,y)}let P=Array.from(z.entries()).map(([b,c])=>({date:b,...c})).sort((b,c)=>b.date.localeCompare(c.date)),A=O.reduce((b,c)=>b+(c.metrics?.[0]??0),0),q=w.reduce((b,c)=>b+(c.metrics?.[0]??0),0),V={successes:A,total:E.default},M={successes:q,total:E.variant},C=Aa$(V,M),d=C==null||Number.isNaN(C)?1000:C,x=Pa$(V,M);return{visitors:E,goals:L,timeseries:P,stats:{totalParticipants:E.default+E.variant,sampleSize:d,probabilityVariantBest:x,probabilityDefaultBest:1-x}}}var pL6="https://deco.lilstts.com/plausible",nL6=12000,Ta$=6,Uk0="visitors",tL6="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})";var qa$=D(()=>{o1();Hk0();Fk0()});import{z as i6}from"zod";function Ia$($){return $.toISOString().slice(0,10)}function rL6(){let $=new Date,Z=new Date($);return Z.setUTCDate(Z.getUTCDate()-29),{since:Ia$(Z),until:Ia$($)}}var Ma$,YN1;var Va$=D(()=>{JK();R0();qa$();Wy();Ma$=/^\d{4}-\d{2}-\d{2}$/;YN1=g({name:"EXPERIMENT_RESULTS",description:"A/B results for one experiment: per-goal visitor conversions for each variant, a daily timeseries for the selected goal, and the computed statistics (participants, target sample size, probability each variant is best).",annotations:{title:"Experiment Results",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:i6.object({site:i6.string().min(1).max(60).refine(Q7).describe("Site slug the experiment belongs to."),key:i6.string().min(1).describe("Analytics prop key the variants split on: `event:props:<key>` = 'true'/'false'. In the deco runtime this is the sticky segment matcher block's id (not the multivariate section name), so `key` must equal that matcher id for results to populate."),since:i6.string().regex(Ma$).optional().describe("Window start (YYYY-MM-DD)."),until:i6.string().regex(Ma$).optional().describe("Window end (YYYY-MM-DD)."),goals:i6.array(i6.string()).default([]).describe("Custom goals to aggregate conversions for."),goalOnDash:i6.string().default("visitors").describe("Goal plotted in the timeseries / used for the statistics.")}),outputSchema:i6.object({available:i6.boolean(),results:i6.object({visitors:i6.object({default:i6.number(),variant:i6.number()}),goals:i6.array(i6.object({goal:i6.string(),default:i6.number(),variant:i6.number()})),timeseries:i6.array(i6.object({date:i6.string(),default:i6.number(),variant:i6.number()})),stats:i6.object({totalParticipants:i6.number(),sampleSize:i6.number(),probabilityVariantBest:i6.number(),probabilityDefaultBest:i6.number()})}).nullable()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);await AK(Z,Q.id,$.site);let X=$.site.toLowerCase(),Y=$.since&&$.until?{since:$.since,until:$.until}:rL6(),J=await Ra$({slug:X,testName:$.key,since:Y.since,until:Y.until,goals:$.goals,goalOnDash:$.goalOnDash});return{available:J!==null,results:J}}})});var ka$=D(()=>{Ba$();La$();Da$();Oa$();wa$();Va$()});import{z as Sa$}from"zod";function $D6($,Z){let Q=$?.[Z];if(!Q)return;return Object.entries(Q).filter(([,Y])=>(PQ in Y)).sort(([,Y],[,J])=>(J[PQ]?.createdAt??0)-(Y[PQ]?.createdAt??0))[0]?.[0]}var sL6,eL6,JN1;var Ca$=D(()=>{g4();R0();Tb();kd();BQ();EJ();sL6=Sa$.object({data:Mi$.describe("Data for the new thread (id is auto-generated if not provided)")}),eL6=Sa$.object({item:AU.describe("The created thread entity")});JN1=g({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:sL6,outputSchema:eL6,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to create thread");let{data:Y}=$,J=Y.id??q8("thrd"),K=(await kI0(Z.storage.virtualMcps,Y.virtual_mcp_id,Q.id)).metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??$D6(K?.sandboxMap,X)??wI0(OI0(Z.auth.user));let F=await Z.storage.threads.create({id:J,organization_id:Q.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:X,metadata:{runtime:Y.runtime??EI0(K)}});if(F.isNew)k1.capture({distinctId:X,event:"chat_started",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:J,has_title:!!$.data.title,created_via:"tool"}});return{item:wK(F)}}})});import{z as GN1}from"zod";var ZD6,QD6,KN1;var _a$=D(()=>{g4();R0();Tb();kd();ZD6=GN1.object({id:GN1.string().describe("ID of the thread to update"),data:Ii$.describe("Partial thread data to update")}),QD6=GN1.object({item:AU.describe("The updated thread entity")}),KN1=g({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ZD6,outputSchema:QD6,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to update thread");let{id:Y,data:J}=$,G=await Z.storage.threads.get(Y);if(!G)throw Error("Thread not found in organization");let K;if(J.virtual_mcp_id!==void 0)K=await kI0(Z.storage.virtualMcps,J.virtual_mcp_id,Q.id);let W=J.virtual_mcp_id!==void 0?J.virtual_mcp_id:G.virtual_mcp_id;if(J.branch===null&&W){if((K??await Z.storage.virtualMcps.findById(W,Q.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let H={title:J.title,description:J.description,hidden:J.hidden,updated_by:X};if(J.status)H.status=J.status;if(J.metadata!==void 0){let U=_m(J.metadata)??{},N=Pb(G.metadata?.runtime),B=Pb(U.runtime);if(N&&B&&B!==N)throw Error(`Cannot change a thread's runtime (${N} \u2192 ${B}); it is stamped once at creation. Start a new chat instead.`);let L=G.metadata?.sandboxMap;H.metadata={...U,...N?{runtime:N}:{},...L!==void 0?{sandboxMap:L}:{}}}if(J.branch!==void 0)H.branch=J.branch;if(J.virtual_mcp_id!==void 0)H.virtual_mcp_id=J.virtual_mcp_id;let F=await Z.storage.threads.update(Y,H);if(J.hidden!==void 0&&J.hidden!==G.hidden)k1.capture({distinctId:X,event:J.hidden?"chat_archived":"chat_unarchived",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:Y}});return{item:wK(F)}}})});var WN1;var va$=D(()=>{q3();Tb();g4();R0();GL();Zk0();ed();WN1=g({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:i00,outputSchema:p00(AU),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)throw Error(`Thread not found: ${$.id}`);if(X.status==="in_progress"){let J=(K)=>(W)=>console.error("[thread] delete-time run cancel step failed",{threadId:$.id,step:K,err:W});await sd($.id).catch(J("background-jobs")),await Xi($.id).catch(J("gate-head"));let G=await Z.storage.threads.getRunFence($.id).catch(()=>null);if(G)await Gy($.id,G).catch(J("hosted-harness"));eV0($.id)}await Z.storage.threads.delete($.id);let Y=d0(Z);if(Y)k1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:Q.id},properties:{organization_id:Q.id,thread_id:$.id}});return{item:wK(X)}}})});var xa$=D(()=>{Ca$();QH1();XH1();_a$();va$();YH1()});function YD6($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function JD6($){return $.map((Z)=>{let Q=Z.metadata;if(Q?.tiptapDoc)return Z;let X=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!X?.text||typeof X.text!=="string")return Z;return{...Z,metadata:{...Q,tiptapDoc:YD6(X.text)}}})}function Nk0($){let Z;if(typeof $==="string")try{let Q=JSON.parse($);if(Array.isArray(Q)&&Q.length>0&&Q[0]?.role&&Array.isArray(Q[0]?.parts))Z=Q;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return JD6(Z)}import{z as P5}from"zod";var HN1;var fa$=D(()=>{g4();R0();GZ();HN1=g({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:P5.object({name:P5.string().min(1).max(255),virtual_mcp_id:P5.string(),messages:P5.union([P5.string(),P5.array(P5.looseObject({id:P5.string().optional(),role:P5.enum(["user","assistant","system"]),parts:P5.array(P5.record(P5.string(),P5.unknown())),metadata:P5.unknown().optional()}))]),models:P5.object({tier:uw,modelId:P5.string().optional(),credentialId:P5.string().optional()}).loose().default({tier:"smart"}),tools:P5.array(P5.string()).nullable().optional(),maxAgentSteps:P5.number().int().min(1).max(100).nullable().optional(),temperature:P5.number().default(0.5),active:P5.boolean().default(!0)}),outputSchema:P5.object({id:P5.string(),name:P5.string(),active:P5.boolean(),created_at:P5.string()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("Unable to determine user identity");let Y=Nk0($.messages),J=await Z.storage.automations.create({organization_id:Q.id,created_by:X,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return k1.capture({distinctId:X,event:"automation_created",groups:{organization:Q.id},properties:{organization_id:Q.id,automation_id:J.id,virtual_mcp_id:$.virtual_mcp_id,active:J.active,tier:$.models.tier}}),{id:J.id,name:J.name,active:J.active,created_at:J.created_at}}})});import{z as G5}from"zod";var FN1;var ba$=D(()=>{R0();FN1=g({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:G5.object({id:G5.string()}),outputSchema:G5.object({automation:G5.object({id:G5.string(),name:G5.string(),active:G5.boolean(),created_by:G5.string(),created_at:G5.string(),updated_at:G5.string(),virtual_mcp_id:G5.string(),messages:G5.unknown(),models:G5.unknown(),tools:G5.array(G5.string()).nullable(),maxAgentSteps:G5.number().nullable(),temperature:G5.number(),triggers:G5.array(G5.object({id:G5.string(),type:G5.enum(["cron","event","webhook"]),cron_expression:G5.string().nullable(),connection_id:G5.string().nullable(),event_type:G5.string().nullable(),params:G5.unknown().nullable(),last_run_at:G5.string().nullable(),api_key_id:G5.string().nullable(),created_at:G5.string()}))}).nullable()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=await Z.storage.automations.findById($.id,Q.id);if(!X)return{automation:null};let Y=await Z.storage.automations.listTriggers(X.id);return{automation:{id:X.id,name:X.name,active:X.active,created_by:X.created_by,created_at:X.created_at,updated_at:X.updated_at,virtual_mcp_id:X.virtual_mcp_id,messages:JSON.parse(X.messages),models:JSON.parse(X.models),tools:X.tools?JSON.parse(X.tools):null,maxAgentSteps:X.max_agent_steps,temperature:X.temperature,triggers:Y.map((J)=>({id:J.id,type:J.type,cron_expression:J.cron_expression,connection_id:J.connection_id,event_type:J.event_type,params:J.params?JSON.parse(J.params):null,last_run_at:J.last_run_at,api_key_id:J.api_key_id,created_at:J.created_at}))}}}})});import{z as d3}from"zod";var UN1;var ya$=D(()=>{R0();UN1=g({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:d3.object({virtual_mcp_id:d3.string().optional().nullable()}),outputSchema:d3.object({automations:d3.array(d3.object({id:d3.string(),name:d3.string(),active:d3.boolean(),created_by:d3.string(),created_at:d3.string(),trigger_count:d3.number(),nearest_next_run_at:d3.string().nullable(),virtual_mcp_id:d3.string()}))}),handler:async($,Z)=>{t(Z);let Q=n(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(Q.id,$.virtual_mcp_id)).map((J)=>({id:J.id,name:J.name,active:J.active,created_by:J.created_by,created_at:J.created_at,trigger_count:J.trigger_count,nearest_next_run_at:J.nearest_next_run_at,virtual_mcp_id:J.virtual_mcp_id}))}}})});function KD6($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((Q)=>typeof Q==="string"))return Z.length>0?Z:null}catch{}return null}function ga$($){return`${$}:context`}function ha$($,Z,Q,X,Y){let G=JSON.parse($.messages).map((H,F)=>({...H,id:`${Q}:${F}`})),K=Z?{...Y,[Od]:GD6}:Y;return{messages:G,models:{credentialId:X.credentialId,thinking:X.thinking,...X.image?{image:X.image}:{},...X.webSearch?{webSearch:X.webSearch}:{},...X.deepResearch?{deepResearch:X.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:KD6($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",triggerId:Z??void 0,...K?{runMetadata:K}:{},taskId:Q}}var GD6="new_task";var ua$=D(()=>{wd()});function TX($,Z,Q,X,Y,J,G,K){return TX.fromTZ(TX.tp($,Z,Q,X,Y,J,G),K)}function NN1($,Z=new Date){let Q=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],X=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${X} GMT`)-Date.parse(`${X} ${Q}`)}function WD6($,Z){let Q=new Date(Date.parse($));if(isNaN(Q))throw Error("minitz: Invalid ISO8601 passed to parser.");let X=$.substring(9);return $.includes("Z")||X.includes("-")||X.includes("+")?TX.tp(Q.getUTCFullYear(),Q.getUTCMonth()+1,Q.getUTCDate(),Q.getUTCHours(),Q.getUTCMinutes(),Q.getUTCSeconds(),"Etc/UTC"):TX.tp(Q.getFullYear(),Q.getMonth()+1,Q.getDate(),Q.getHours(),Q.getMinutes(),Q.getSeconds(),Z)}function HD6($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new TK($.startAt,$.timezone)),$.stopAt&&($.stopAt=new TK($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function _80($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function FD6($){return _80($)}function UD6($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var BN1=32,v80,da$,la$=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new TK(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,v80),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,Q,X){let Y=this[$],J=$==="day"&&this.lastDayOfMonth;if(Z===""&&!J)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(X);let G=Z.split(",");if(G.length>1)for(let K=0;K<G.length;K++)this.partToArray($,G[K],Q,X);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,Q,X):Z.indexOf("-")!==-1?this.handleRange(Z,$,Q,X):Z.indexOf("/")!==-1?this.handleStepping(Z,$,Q,X):Z!==""&&this.handleNumber(Z,$,Q,X)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,Q,X){let Y=this.extractNth($,Z),J=parseInt(Y[0],10)+Q;if(isNaN(J))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,J,Y[1]||X)}setPart($,Z,Q){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,Q);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=Q}handleRangeWithStepping($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(J===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,G,K,W]=J,H=parseInt(G,10)+Q,F=parseInt(K,10)+Q,U=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(U===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(U>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>F)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let N=H;N<=F;N+=U)this.setPart(Z,N,Y[1]||X)}extractNth($,Z){let Q=$,X;if(Q.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");X=Q.split("#")[1],Q=Q.split("#")[0]}return[Q,X]}handleRange($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].split("-");if(J.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let G=parseInt(J[0],10)+Q,K=parseInt(J[1],10)+Q;if(isNaN(G))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(G>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=G;W<=K;W++)this.setPart(Z,W,Y[1]||X)}handleStepping($,Z,Q,X){let Y=this.extractNth($,Z),J=Y[0].split("/");if(J.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");J[0]===""&&(J[0]="*");let G=0;J[0]!=="*"&&(G=parseInt(J[0],10)+Q);let K=parseInt(J[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=G;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||X)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|BN1;else if(Z===v80)this.dayOfWeek[$]=v80;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|da$[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},ca$,NL,TK=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,Q){if(this.tz=Q,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,Q,X,Y){let J=new Date(Date.UTC(Z,Q,X)).getUTCDay(),G=0;for(let K=1;K<=X;K++)new Date(Date.UTC(Z,Q,K)).getUTCDay()===J&&G++;if(Y&v80&&da$[G-1]&Y)return!0;if(Y&BN1){let K=new Date(Date.UTC(Z,Q+1,0)).getUTCDate();for(let W=X+1;W<=K;W++)if(new Date(Date.UTC(Z,Q,W)).getUTCDay()===J)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let Q=TX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=Q.s,this.minute=Q.i,this.hour=Q.h,this.day=Q.d,this.month=Q.m-1,this.year=Q.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>ca$[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let Q=TX.fromTZISO(Z);this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply()}else return this.fromDate(TX.fromTZISO(Z,this.tz))}findNext(Z,Q,X,Y){let J=this[Q],G;X.lastDayOfMonth&&(this.month!==1?G=ca$[this.month]:G=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!X.starDOW&&Q=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[Q]+Y;W<X[Q].length;W++){let H=X[Q][W];if(Q==="day"&&X.lastDayOfMonth&&W-Y==G&&(H=1),Q==="day"&&!X.starDOW){let F=X.dayOfWeek[(K+(W-Y-1))%7];if(F&&F&v80)F=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,F)?1:0;else if(F)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${F}`);Z.legacyMode&&!X.starDOM?H=H||F:H=H&&F}if(H)return this[Q]=W-Y,J!==this[Q]?2:1}return 3}recurse(Z,Q,X){let Y=this.findNext(Q,NL[X][0],Z,NL[X][2]);if(Y>1){let J=X+1;for(;J<NL.length;)this[NL[J][0]]=-NL[J][2],J++;if(Y===3)return this[NL[X][1]]++,this[NL[X][0]]=-NL[X][2],this.apply(),this.recurse(Z,Q,0);if(this.apply())return this.recurse(Z,Q,X-1)}return X+=1,X>=NL.length?this:this.year>=3000?null:this.recurse(Z,Q,X)}increment(Z,Q,X){return this.second+=Q.interval!==void 0&&Q.interval>1&&X?Q.interval:1,this.ms=0,this.apply(),this.recurse(Z,Q,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):TX.fromTZ(TX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},ma$=30000,Bk0,Lk0=class{name;options;_states;fn;constructor($,Z,Q){let X,Y;if(_80(Z))Y=Z;else if(typeof Z=="object")X=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(_80(Q))Y=Q;else if(typeof Q=="object")X=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=X?.name,this.options=HD6(X),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:X?X.maxRuns:void 0,paused:X?X.paused:!1,pattern:new la$("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new TK($,this.options.timezone||this.options.utcOffset):this._states.pattern=new la$($,this.options.timezone),this.name){if(Bk0.find((J)=>J.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Bk0.push(this)}return Y!==void 0&&FD6(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let Q=[],X=Z||this._states.currentRun||void 0;for(;$--&&(X=this.nextRun(X));)Q.push(X);return Q}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,Q=this.fn!==void 0,X=!this._states.kill;return Z&&Q&&X&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof TK||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new TK($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=Bk0.indexOf(this);$>=0&&Bk0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),Q=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||Q===null?this:(Z>ma$&&(Z=ma$),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(Q),Z),this._states.currentTimeout&&this.options.unref&&UD6(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new TK(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){_80(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new TK($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,Q=!this._states.paused&&Z.getTime()>=$.getTime(),X=this._states.blocking&&this.options.protect;Q&&!X?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):Q&&X&&_80(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),Q=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),Q=!$),$=new TK($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let X=this._states.once||new TK($,this.options.timezone||this.options.utcOffset);return!Q&&X!==this._states.once&&(X=X.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||X===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&X.getTime()>=this.options.stopAt.getTime()?null:X}_calculatePreviousRun($,Z){let Q=new TK(void 0,this.options.timezone||this.options.utcOffset),X=$;if(this.options.startAt.getTime()<=Q.getTime()){X=this.options.startAt;let Y=X.getTime()+this.options.interval*1000;for(;Y<=Q.getTime();)X=new TK(X,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=X.getTime()+this.options.interval*1000;Z=!0}return X===null&&(X=void 0),[X,Z]}};var LN1=D(()=>{TX.fromTZISO=($,Z,Q)=>TX.fromTZ(WD6($,Z),Q);TX.fromTZ=function($,Z){let Q=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),X=NN1($.tz,Q),Y=new Date(Q.getTime()-X),J=NN1($.tz,Y);if(J-X===0)return Y;{let G=new Date(Q.getTime()-J),K=NN1($.tz,G);if(K-J===0)return G;if(!Z&&K-J>0)return G;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};TX.toTZ=function($,Z){let Q=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),X=new Date(Q);return{y:X.getFullYear(),m:X.getMonth()+1,d:X.getDate(),h:X.getHours(),i:X.getMinutes(),s:X.getSeconds(),tz:Z}};TX.tp=($,Z,Q,X,Y,J,G)=>({y:$,m:Z,d:Q,h:X,i:Y,s:J,tz:G});TX.minitz=TX;v80=31|BN1,da$=[1,2,4,8,16],ca$=[31,28,31,30,31,30,31,31,30,31,30,31],NL=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];Bk0=[]});function Dk0($,Z){try{return new Lk0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var DN1=D(()=>{LN1()});import{DBOS as TQ,SchedulerMode as ND6}from"@dbos-inc/dbos-sdk";async function zN1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
|
|
3687
3687
|
WHERE q.name LIKE $1
|
|
3688
3688
|
AND NOT EXISTS (
|
|
3689
3689
|
SELECT 1 FROM dbos.workflow_status w
|