decocms 4.268.0 → 4.268.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-CRN3ysOa.js → AlertCircle-C9x_o_fj.js} +1 -1
- package/dist/client/assets/{AreaChart-CbyoUeNT.js → AreaChart-CdizwnZp.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BWXVS7qh.js → ArrowLeft-DCj1qYfu.js} +1 -1
- package/dist/client/assets/{ArrowUp-BrQWZ_Zy.js → ArrowUp-Cpwos_DS.js} +1 -1
- package/dist/client/assets/{Check-BwPXViwQ.js → Check-CRnez91K.js} +1 -1
- package/dist/client/assets/{CheckCircle-DItEp_48.js → CheckCircle-vrC3_Vfx.js} +1 -1
- package/dist/client/assets/{ChevronDown-BQ2-avdq.js → ChevronDown-Dnsyqb8y.js} +1 -1
- package/dist/client/assets/{ChevronRight-DIQh4uVu.js → ChevronRight-0SqAtFA1.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-DyDtKivX.js → ChevronSelectorVertical-DSzDo6o_.js} +1 -1
- package/dist/client/assets/{ChevronUp-CfKmchlf.js → ChevronUp-laDKx_qP.js} +1 -1
- package/dist/client/assets/{Copy01-D1pYggcL.js → Copy01-DEZWAZG1.js} +1 -1
- package/dist/client/assets/{CreditCard01-Dvo2lC0V.js → CreditCard01-Dkn0rPz4.js} +1 -1
- package/dist/client/assets/{DotsVertical-VL5CgJFT.js → DotsVertical-CP_Ba8vF.js} +1 -1
- package/dist/client/assets/{Download01-CJO-bqRo.js → Download01-CsdEM1It.js} +1 -1
- package/dist/client/assets/{Eye-CxcSic4G.js → Eye-Bf62QX2T.js} +1 -1
- package/dist/client/assets/{FilterLines-BWSdkw7w.js → FilterLines-B_UrSrlu.js} +1 -1
- package/dist/client/assets/{Globe01-D8tRVhpe.js → Globe01-6XQXRvcD.js} +1 -1
- package/dist/client/assets/{Globe04-DnHo38ny.js → Globe04-CBwJkkBp.js} +1 -1
- package/dist/client/assets/{HardDrive-CNlRN2Wo.js → HardDrive-BizZ6Nr3.js} +1 -1
- package/dist/client/assets/{Key01-9m29DvMP.js → Key01-CdJqhAoR.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BlQDZc-j.js → LinkExternal01-D9q7rgDw.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-BJ7hCM9a.js → LockUnlocked01-BpoMod4u.js} +1 -1
- package/dist/client/assets/{LogOut01-CBbJc40V.js → LogOut01-B10JMwSA.js} +1 -1
- package/dist/client/assets/{Monitor01-0XMb8v0N.js → Monitor01-C4Ouypd6.js} +1 -1
- package/dist/client/assets/{Palette-DNlynCjo.js → Palette-oe01kSEa.js} +1 -1
- package/dist/client/assets/{Play-OyBWwsA4.js → Play-KMHtN3lK.js} +1 -1
- package/dist/client/assets/{Plus-DRRnvQI0.js → Plus-oUwwsQC9.js} +1 -1
- package/dist/client/assets/{SearchLg-Bpy1Joyi.js → SearchLg-C3VBwfYd.js} +1 -1
- package/dist/client/assets/{SearchMd-DIGlOPt4.js → SearchMd-BGMZJeg6.js} +1 -1
- package/dist/client/assets/{Settings02-CvPJabiD.js → Settings02-BPZYSjmn.js} +1 -1
- package/dist/client/assets/{Share07-CEZw5SIe.js → Share07-DIu06qTz.js} +1 -1
- package/dist/client/assets/{Shield01-BN5M_1sH.js → Shield01-DVVvoIO7.js} +1 -1
- package/dist/client/assets/{Stars01-ByLyqrmQ.js → Stars01-Dw5CB0PC.js} +1 -1
- package/dist/client/assets/{Stars02-CmD8jRsw.js → Stars02-mHwxurF4.js} +1 -1
- package/dist/client/assets/{Sun-DUoeL411.js → Sun-DMFD05T-.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-B04U1YLb.js → SwitchHorizontal01-CsHaZMJn.js} +1 -1
- package/dist/client/assets/{Tool01-BYFqUT9W.js → Tool01-BP68Qora.js} +1 -1
- package/dist/client/assets/{Tool02-CePtOOf3.js → Tool02-CXYBw5DL.js} +1 -1
- package/dist/client/assets/{Trash01-URHNN6GM.js → Trash01-DzkE8NTa.js} +1 -1
- package/dist/client/assets/{TrendUp01-CGTVVbW6.js → TrendUp01-BRhahpgt.js} +1 -1
- package/dist/client/assets/{Upload01-BtRP0VLO.js → Upload01-DnE7SfBf.js} +1 -1
- package/dist/client/assets/{User01-BO58XeIX.js → User01-C-p_MCai.js} +1 -1
- package/dist/client/assets/{UserSquare-t5rXAN1M.js → UserSquare-BSu7ZveT.js} +1 -1
- package/dist/client/assets/{Users01-tfirKQ3F.js → Users01-Be7pBHW0.js} +1 -1
- package/dist/client/assets/{Users03-4OZ50Ayp.js → Users03-DxEkoIgf.js} +1 -1
- package/dist/client/assets/{XCircle-CaBYarfQ.js → XCircle-B1VYSijr.js} +1 -1
- package/dist/client/assets/{XClose-DQB5pcBJ.js → XClose-DFz1suZE.js} +1 -1
- package/dist/client/assets/{YAxis-Dkb1iXd_.js → YAxis-5SBfguMh.js} +1 -1
- package/dist/client/assets/{Zap-D-Ufypml.js → Zap-io0IWHC8.js} +1 -1
- package/dist/client/assets/{ZapSquare-DkRs1opt.js → ZapSquare-kYeEqhmP.js} +1 -1
- package/dist/client/assets/{access-gate-Rv5oSxyt.js → access-gate--ryS7FcR.js} +1 -1
- package/dist/client/assets/{agent-icon-C2Nj5gsU.js → agent-icon-C4ehI_AL.js} +1 -1
- package/dist/client/assets/{agents-list-DTWphv39.js → agents-list-DankSyQ2.js} +1 -1
- package/dist/client/assets/{ai-providers-DqND32wO.js → ai-providers-BLm_39rS.js} +1 -1
- package/dist/client/assets/{alert-DF-rjHyX.js → alert-7wmVTCWK.js} +1 -1
- package/dist/client/assets/{alert-dialog-BDUXGo8i.js → alert-dialog-Bi3hPgKg.js} +1 -1
- package/dist/client/assets/{api-keys-p8M2DGj-.js → api-keys-BE0aFhSN.js} +1 -1
- package/dist/client/assets/{app-editor-maPg1-eM.js → app-editor-W3g6THXT.js} +1 -1
- package/dist/client/assets/{auth-CRALwP64.js → auth-Du0wGEHb.js} +1 -1
- package/dist/client/assets/{auth-catchall-CdVoRM_Z.js → auth-catchall-DzkVIeHZ.js} +1 -1
- package/dist/client/assets/{auth-entry-C6-8MWJj.js → auth-entry-8v7nv4Ni.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DintZRX3.js → auth-split-layout-DQHXIqO8.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-174lnU4h.js → authenticate-and-persist-oauth-B4Kz6kuS.js} +1 -1
- package/dist/client/assets/{automation-list-row-CvNgjZsk.js → automation-list-row-RPVHkJqI.js} +1 -1
- package/dist/client/assets/{automation-runs-BWgSMsTi.js → automation-runs-XcRWyfrc.js} +1 -1
- package/dist/client/assets/{automations-B29GcH9i.js → automations-BgKtaXdX.js} +1 -1
- package/dist/client/assets/{avatar-DanyGfDS.js → avatar-p_5i-UJo.js} +1 -1
- package/dist/client/assets/{badge-BWY65tCW.js → badge-Crq4wth1.js} +1 -1
- package/dist/client/assets/{block-document-k4V4XWGR.js → block-document-CGXA7MAc.js} +1 -1
- package/dist/client/assets/{buckets-kfDFtv4v.js → buckets-CXpWw6iY.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-B6H_o_VV.js → bulk-category-panel-2ahc-rLM.js} +1 -1
- package/dist/client/assets/{capability-load-error-B7krW3A_.js → capability-load-error-CE02zRvO.js} +1 -1
- package/dist/client/assets/{cards-BZ7B5b1j.js → cards-3NOWVSxK.js} +1 -1
- package/dist/client/assets/{category-editor-wonMxxCG.js → category-editor-DWp5uKVg.js} +1 -1
- package/dist/client/assets/{chart-JM9xVURs.js → chart-uEMr8uaI.js} +1 -1
- package/dist/client/assets/{chat-context-DOdsyFhI.js → chat-context-B-iSjN3N.js} +1 -1
- package/dist/client/assets/{checkbox-BvLD9hvL.js → checkbox-BroXF3ag.js} +1 -1
- package/dist/client/assets/{choose-editor-CvxpFjwG.js → choose-editor-CytkD39w.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CrwdXJcV.js → cli-auth-success-DHehN84P.js} +1 -1
- package/dist/client/assets/{collection-detail-CA7Q1ZE1.js → collection-detail-QINZeNGy.js} +1 -1
- package/dist/client/assets/{collection-display-button-rt9f21UG.js → collection-display-button-DCir567D.js} +1 -1
- package/dist/client/assets/{collection-search-BKB1YwJ0.js → collection-search-BXhBXCi-.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-D3cHUm1Q.js → collection-table-wrapper-AmwoYN9I.js} +1 -1
- package/dist/client/assets/{collection-tabs-D0a2kdll.js → collection-tabs-LG35r4I4.js} +1 -1
- package/dist/client/assets/{command-NY3axkQx.js → command-DSZSfDjR.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DYmdW0Ud.js → commerce-onboarding-DD88anrH.js} +1 -1
- package/dist/client/assets/{connect-DE1OoXEm.js → connect-DH0QxP-E.js} +1 -1
- package/dist/client/assets/{connection-Cq8ofZ3G.js → connection-Brpz6zmP.js} +1 -1
- package/dist/client/assets/{connection-card-oPn_nO2S.js → connection-card-CC0uKt4s.js} +1 -1
- package/dist/client/assets/{connection-detail-T9YPVs8e.js → connection-detail-CcUwK_Ms.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BV_nfQh-.js → connection-form-helpers-bxw2_dEI.js} +1 -1
- package/dist/client/assets/{connections-D7ednpkO.js → connections-RpshfmR7.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-_-LDthKu.js → decopilot-sse-pool-DlrngIx-.js} +1 -1
- package/dist/client/assets/{dialog-F81nOmCB.js → dialog-CjqSJg65.js} +1 -1
- package/dist/client/assets/{domain-settings-qfRmbNuV.js → domain-settings-Bf9WXGCn.js} +1 -1
- package/dist/client/assets/{drawer-Bszwt4T_.js → drawer-DDaf7OuY.js} +1 -1
- package/dist/client/assets/{dropdown-menu-7kcp-OFr.js → dropdown-menu-Cn80C9Y9.js} +1 -1
- package/dist/client/assets/{empty-state-B0NySMko.js → empty-state-BcK7vjhM.js} +1 -1
- package/dist/client/assets/{extract-connection-data-JQBm1Bga.js → extract-connection-data-kSKAFNhL.js} +1 -1
- package/dist/client/assets/{file-explorer-DzEb9SYm.js → file-explorer-CMw8J8VE.js} +1 -1
- package/dist/client/assets/{file-type-icon-BH4Z0jp3.js → file-type-icon-BzS6xy4o.js} +1 -1
- package/dist/client/assets/{form-CICA2ZYq.js → form-BmZWcybV.js} +1 -1
- package/dist/client/assets/{general-D34Evk8x.js → general-Q3p9MywK.js} +1 -1
- package/dist/client/assets/{github-repo-picker-C8aJzAu3.js → github-repo-picker-Dxrdf_qM.js} +1 -1
- package/dist/client/assets/{hooks-CgEX-ag_.js → hooks-NPzkv3Sl.js} +1 -1
- package/dist/client/assets/{index-Dj7Z6qxO.js → index-6kgXY5UE.js} +1 -1
- package/dist/client/assets/{index-ZHJKW8ci.js → index-91rTMdKt.js} +3 -3
- package/dist/client/assets/{index-pUoK5Opt.js → index-BCEfzQBl.js} +1 -1
- package/dist/client/assets/{index-CCPyPdnI.js → index-CKiIsJn6.js} +1 -1
- package/dist/client/assets/{index-CTWM-OTM.js → index-CcXPuDdm.js} +1 -1
- package/dist/client/assets/{index-JPK3Ako2.js → index-DCwFdcAd.js} +1 -1
- package/dist/client/assets/{index-CdE5WfFO.js → index-DqUDJVF2.js} +1 -1
- package/dist/client/assets/{index-CYFWqD1M.js → index-DvF0F1gK.js} +56 -56
- package/dist/client/assets/{index-DofYUb_G.js → index-YzF9XmXm.js} +1 -1
- package/dist/client/assets/{index-redirect-BPhU15LX.js → index-redirect-B6Sc4t3y.js} +1 -1
- package/dist/client/assets/{index-B0rgkrbl.js → index-uPkmZNbL.js} +1 -1
- package/dist/client/assets/{infra-billing-BEWIbNCt.js → infra-billing-CLTREh_3.js} +1 -1
- package/dist/client/assets/{input-efp1Fr--.js → input-CcnIMVXv.js} +1 -1
- package/dist/client/assets/{integration-icon-iAX6PZKW.js → integration-icon-CF_2lOML.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DmAopVVS.js → invite-member-dialog-BkCL3-XZ.js} +1 -1
- package/dist/client/assets/{label-CIE4d5aH.js → label-Wi2DcjyJ.js} +1 -1
- package/dist/client/assets/{layout-CfEb2UNz.js → layout-CfadCIo3.js} +1 -1
- package/dist/client/assets/{login-CZxMFAf2.js → login-gMoN-j-y.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BMwV8L30.js → mcp-oauth-CjjRf3rC.js} +1 -1
- package/dist/client/assets/{members-L5EKqTHZ.js → members-vHAmmfBG.js} +1 -1
- package/dist/client/assets/{monaco-editor-Bn0Zxy9y.js → monaco-editor-BfjsooG_.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-qfRtpbtR.js → monitoring-stats-row-guOGFjGd.js} +1 -1
- package/dist/client/assets/{multi-select-CqBIlHfR.js → multi-select-BDKJKpMd.js} +1 -1
- package/dist/client/assets/{oauth-callback-Ci_sllQd.js → oauth-callback-BgGCD7E-.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DhN6r3x3.js → oauth-callback-ai-provider--IGRGA-t.js} +1 -1
- package/dist/client/assets/{onboarding-DmPQfAET.js → onboarding-D74kx5cE.js} +1 -1
- package/dist/client/assets/{org-layout-DUE279kG.js → org-layout-0oLyaQxm.js} +1 -1
- package/dist/client/assets/{organization-choice-eJ91cCWK.js → organization-choice-BEy4qcqB.js} +1 -1
- package/dist/client/assets/{orgs-UsnF3IkQ.js → orgs-D9OcLc97.js} +1 -1
- package/dist/client/assets/{page-seo-form-BsqWtlIT.js → page-seo-form-BmC9OkCd.js} +1 -1
- package/dist/client/assets/{popover-XOH22QlB.js → popover-nPZxlN3z.js} +1 -1
- package/dist/client/assets/{post-calendar-Cw8NnHNr.js → post-calendar-Bf-_hVdn.js} +1 -1
- package/dist/client/assets/{post-editor-BUmKASSr.js → post-editor-CQcjAZqg.js} +1 -1
- package/dist/client/assets/{primitives-L3-Oyx10.js → primitives-Liten4bf.js} +1 -1
- package/dist/client/assets/{profile-CfsOQgAC.js → profile-CiK0jRVc.js} +1 -1
- package/dist/client/assets/{project-app-view-DR6clsPe.js → project-app-view-Bi70ZVyC.js} +1 -1
- package/dist/client/assets/record-editor-CwKO3F0O.js +1 -0
- package/dist/client/assets/{redirect-editor-BsFiNQGN.js → redirect-editor-BsONApGQ.js} +1 -1
- package/dist/client/assets/registry-CHlIJAAb.js +2 -0
- package/dist/client/assets/{registry-layout-Dt5fGdCZ.js → registry-layout-C7P--kH9.js} +1 -1
- package/dist/client/assets/{reports-BQHgNCQI.js → reports-BvcikYTb.js} +1 -1
- package/dist/client/assets/{require-capability-BHWbsyTt.js → require-capability-AtZ8bdjk.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BboHmNiW.js → required-auth-layout-DvY9b3kt.js} +1 -1
- package/dist/client/assets/{reset-password-D83H50_z.js → reset-password-C3in8LOr.js} +1 -1
- package/dist/client/assets/{roles-BAwk7IFg.js → roles-BDngyfVR.js} +1 -1
- package/dist/client/assets/{search-input-BB9GiaVn.js → search-input-q52vy-2v.js} +1 -1
- package/dist/client/assets/{secrets-CaHlcOqt.js → secrets-C8vrjpOp.js} +1 -1
- package/dist/client/assets/{sections-editor-j8xVruyW.js → sections-editor-B1fho03h.js} +1 -1
- package/dist/client/assets/{select-DsQMK1Kj.js → select-CjhYFMs_.js} +1 -1
- package/dist/client/assets/{select-model-DEE4zP-y.js → select-model-CyZXDy75.js} +1 -1
- package/dist/client/assets/{self-tool-result-B49rNMh6.js → self-tool-result-XV9FG_fE.js} +1 -1
- package/dist/client/assets/{seo-editor-Bg3YtmSr.js → seo-editor-CeFdQ-g9.js} +1 -1
- package/dist/client/assets/{settings-layout-DrICPAk0.js → settings-layout-B1Qi4rhD.js} +1 -1
- package/dist/client/assets/{shell-controls-hqtY2GPr.js → shell-controls-CkRT8YS6.js} +1 -1
- package/dist/client/assets/{shell-layout-BTMdXIOz.js → shell-layout-BAJfyO_U.js} +1 -1
- package/dist/client/assets/{spinner-O0oAo1U7.js → spinner-CpOOkrLj.js} +1 -1
- package/dist/client/assets/{sprints-ZBXF3Lvs.js → sprints-CZeJxzps.js} +1 -1
- package/dist/client/assets/{sso-BgMy97T7.js → sso-Bf9El7Pp.js} +1 -1
- package/dist/client/assets/{store-DTA3iGq7.js → store-CxKUqSGB.js} +1 -1
- package/dist/client/assets/store-registry-C2X7SLOW.js +2 -0
- package/dist/client/assets/{switch-_-_134Vn.js → switch-Bd_a_uJ9.js} +1 -1
- package/dist/client/assets/{synced-repos-rpRBxilg.js → synced-repos-DEXCxv-e.js} +1 -1
- package/dist/client/assets/{tab-id-CiSJTLaO.js → tab-id-afG2_dXO.js} +1 -1
- package/dist/client/assets/{table-5ua8ktvf.js → table-Btx44eIZ.js} +1 -1
- package/dist/client/assets/{tabs-MGrZcv1s.js → tabs-DVYAmHFG.js} +1 -1
- package/dist/client/assets/{tasks-CnqrYTYG.js → tasks-DupkBGhk.js} +1 -1
- package/dist/client/assets/{textarea-CkdYtW-6.js → textarea-BeyaUsbB.js} +1 -1
- package/dist/client/assets/{toggle-group-OZZ51qxc.js → toggle-group-BGjnYU22.js} +1 -1
- package/dist/client/assets/{toolbar-DC8tV-kN.js → toolbar-LW4W_-dk.js} +1 -1
- package/dist/client/assets/{track-ivdTRSHc.js → track-DvIz6k1s.js} +1 -1
- package/dist/client/assets/{types-Cs1VZIbu.js → types-J4fj-pzu.js} +1 -1
- package/dist/client/assets/{use-ai-providers-RWKhxQjA.js → use-ai-providers-CqvuwT1M.js} +1 -1
- package/dist/client/assets/{use-api-keys-DTPKaNU4.js → use-api-keys-BVgLhEK_.js} +1 -1
- package/dist/client/assets/{use-automations-CiKVILWx.js → use-automations-B7W3Ba6c.js} +1 -1
- package/dist/client/assets/{use-autosave-BaJ7Jyqn.js → use-autosave-CqFhD4e_.js} +1 -1
- package/dist/client/assets/{use-clock-tick-IApfXDvA.js → use-clock-tick-qJYjmEWc.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-DVMKWKf9.js → use-commerce-diagnostic-D7plRWK0.js} +1 -1
- package/dist/client/assets/{use-connection-DVSYuZdw.js → use-connection-CjEL1MFQ.js} +1 -1
- package/dist/client/assets/{use-copy-CL2vmFNI.js → use-copy-B961PIR6.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CAFzJ50q.js → use-create-virtual-mcp-CNagwvwa.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DRkI1so0.js → use-debounced-autosave-Dpc9a6wM.js} +1 -1
- package/dist/client/assets/{use-debounced-value-C7_NO2MG.js → use-debounced-value-D4ro4Ufw.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-4mBp_Y4o.js → use-decopilot-events-D-pU-gJa.js} +1 -1
- package/dist/client/assets/{use-delete-connection-LKu9BhfB.js → use-delete-connection-DBwsU4Mz.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DkYRPmiY.js → use-deployment-admin--SqRSwEB.js} +1 -1
- package/dist/client/assets/{use-file-configs-Bnc_8rdf.js → use-file-configs-B1s3W1fw.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-D__LBhMr.js → use-infinite-scroll-oC_jBmkI.js} +1 -1
- package/dist/client/assets/{use-join-requests-SR1cKEmD.js → use-join-requests-B2rD5GBi.js} +1 -1
- package/dist/client/assets/{use-mcp-client-Bi1AWJXj.js → use-mcp-client-DvNA775b.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BMjPNxfN.js → use-mcp-tools-CZZADNHS.js} +1 -1
- package/dist/client/assets/{use-members-J1sgUlv9.js → use-members-D10Zs46p.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-ow_WzXBG.js → use-navigate-to-agent-BI1MNKgT.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DwrwZnit.js → use-org-auth-client-d2bnCp4y.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-39X2w53W.js → use-org-repo-syncs-4_FaPS5V.js} +1 -1
- package/dist/client/assets/{use-org-sso-COgAi5zj.js → use-org-sso-Wh2UWw7w.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BnSUpTJM.js → use-organization-roles-C1xp5Akk.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C7baNVfn.js → use-organization-settings-CcLa10CW.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BgNwA_qx.js → use-registry-connections-DD6WUfSb.js} +1 -1
- package/dist/client/assets/{use-secrets-cfR_qKt4.js → use-secrets-BFv0e5pq.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-B4bokskA.js → use-section-preview-base-sRbrii4V.js} +1 -1
- package/dist/client/assets/{use-status-sounds-3xqQZm7g.js → use-status-sounds-5_XUvd7l.js} +1 -1
- package/dist/client/assets/{use-tags-DKd1wl6J.js → use-tags-BnJZ68y0.js} +1 -1
- package/dist/client/assets/{use-task-board-items-BoycgCOg.js → use-task-board-items-C9MctQeI.js} +1 -1
- package/dist/client/assets/{use-view-mode-D0OtPkEo.js → use-view-mode-DRrxvciE.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DIU6uf6w.js → use-virtual-mcp-BtJMidiT.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-Cccy2AUK.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-Dm6ii004.js +1 -0
- package/dist/client/assets/{users-BWWXBI9s.js → users-Cr1QqZyz.js} +1 -1
- package/dist/client/assets/{variant-calendar-CSZcaldL.js → variant-calendar-K9Y9gFgs.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DBgOZAY4.js → view-mode-toggle-DAPUVXeU.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +4 -4
- package/dist/server/server.js +4 -4
- package/package.json +1 -1
- package/dist/client/assets/record-editor-DmkIRf1-.js +0 -1
- package/dist/client/assets/registry-EOzC4kGW.js +0 -2
- package/dist/client/assets/store-registry-1V6QycjH.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CDVZLJAB.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Bg2626fW.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1399,7 +1399,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var fi1=L(()=>{qf()});f
|
|
|
1399
1399
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await ab`
|
|
1400
1400
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1401
1401
|
`.execute($)}}async function Nr1($){await Io8($),await qo8($);let Z=new Hr1({db:$,provider:{getMigrations:()=>Promise.resolve(oi0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Mo8($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Wl0();let G=X??Q8(),J=async()=>{if(!Z&&!X)await gB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Nr1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Vo8(){let $=Q8(),Z=new Hr1({db:$.db,provider:{getMigrations:()=>Promise.resolve(oi0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.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}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Br1=L(()=>{Wr1();Hl0();ZX()});async function iZ0($){let Z={...process.env},X=c$0($,Z);console.log(yD1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Un1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (e90(),s90)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Hl0(),On1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (ZX(),Sp1)),{migrateToLatest:F}=await Promise.resolve().then(() => (Br1(),Ur1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return bi1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ri0=L(()=>{qf();Bn1();V$()});var wr1={};Q0(wr1,{updateService:()=>RE,subscribeCliState:()=>ei0,setTuiConsoleIntercepted:()=>pZ0,setServerUrl:()=>oi,setMigrationsDone:()=>ti,setDevMode:()=>So8,resetCliStateForTests:()=>ko8,isTuiConsoleIntercepted:()=>nZ0,getCliState:()=>si0,addLogEntry:()=>mB});function Or1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Lr1(){return{services:Or1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function ko8(){cQ=Lr1()}function ni(){for(let $ of ai0)$()}function si0(){return cQ}function ei0($){return ai0.add($),()=>ai0.delete($)}function RE($){cQ={...cQ,services:cQ.services.map((Z)=>Z.name===$.name?$:Z)},ni()}function ti(){cQ={...cQ,migrationsStatus:"done"},ni()}function oi($){cQ={...cQ,serverUrl:$},ni()}function mB($){let Z=[...cQ.logs,$];cQ={...cQ,logs:Z.length>500?Z.slice(-500):Z},ni()}function So8(){cQ={...cQ,services:[...Or1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},ni()}function pZ0($){Dr1=$}function nZ0(){return Dr1}var cQ,ai0,Dr1=!1;var IE=L(()=>{cQ=Lr1();ai0=new Set});import{createServer as Er1}from"net";function Co8($){return new Promise((Z)=>{let X=Er1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function ri($){if(await Co8($))return $;let Z=await new Promise((X,Q)=>{let Y=Er1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var $p0=()=>{};var Xp0={};Q0(Xp0,{startDevServer:()=>vo8,pipeToLogStore:()=>Zp0});import{join as _o8}from"path";function Zp0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1402
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function vo8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ri(Number(Y)+1):await ri(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await iZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)RE({name:D.name,status:"ready",port:D.port});ti();let F=_o8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,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",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Zp0(U.stdout),Zp0(U.stderr);oi(G),RE({name:"Vite",status:"ready",port:Number(Y)}),RE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (e90(),s90));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Qp0=L(()=>{ri0();IE();$p0()});var tZ0;var Yp0=L(()=>{tZ0={name:"decocms",version:"4.268.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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 fo8,Text as jr1}from"ink";import{jsx as bo8,jsxs as zr1}from"react/jsx-runtime";function Pr1({version:$}){return zr1(fo8,{flexDirection:"column",marginTop:1,children:[PZ0.map((Z,X)=>bo8(jr1,{color:AZ0[X],children:Z},X)),zr1(jr1,{dimColor:!0,children:[" v",$]})]})}var Ar1=L(()=>{bi()});import{Box as qE,Text as iB}from"ink";import{Spinner as yo8}from"@inkjs/ui";import{jsx as eY,jsxs as sb}from"react/jsx-runtime";function Tr1({status:$}){if($==="pending")return eY(yo8,{label:""});return eY(iB,{color:"green",children:"\u2713"})}function go8($){return`${$.name}: ${$.port||"...."}`}function Rr1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return sb(qE,{flexDirection:"column",paddingBottom:1,children:[eY(Pr1,{version:tZ0.version}),eY(qE,{marginBottom:1,children:eY(iB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(qE,{children:sb(iB,{dimColor:!0,children:["Home: ",X]})}),sb(qE,{gap:2,children:[$.map((Y)=>sb(qE,{gap:1,children:[eY(iB,{children:go8(Y)}),eY(Tr1,{status:Y.status})]},Y.name)),sb(qE,{gap:1,children:[eY(iB,{children:"Migrations"}),eY(Tr1,{status:Z})]})]}),eY(qE,{children:Q?sb(iB,{children:["Open in browser: ",eY(iB,{color:"cyan",children:Q})]}):eY(iB,{dimColor:!0,children:"Starting..."})})]})}var Ir1=L(()=>{Yp0();Ar1()});import{Box as ho8,Text as ai}from"ink";import{jsx as Gp0,jsxs as Jp0}from"react/jsx-runtime";function uo8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qr1({logs:$}){return Gp0(ho8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Gp0(ai,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Jp0(ai,{children:[Jp0(ai,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Gp0(ai,{color:uo8(Z.status),children:Z.status}),Jp0(ai,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mr1=()=>{};var Kp0={};Q0(Kp0,{App:()=>do8});import{Box as co8}from"ink";import{useSyncExternalStore as lo8}from"react";import{jsx as Vr1,jsxs as mo8}from"react/jsx-runtime";function do8({home:$}){let Z=lo8(ei0,si0);return mo8(co8,{flexDirection:"column",children:[Vr1(Rr1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Vr1(qr1,{logs:Z.logs})]})}var Wp0=L(()=>{Ir1();Mr1();IE()});var b3="thread-gate",$N="decopilot-hosted-harness",ZN="decopilot-hosted-harness-sandboxed",NJ="automations",pB="background-tools",ME="task-board-github-reads",VE="jira-push";var kr1="9";function Sr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:kr1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cr1=()=>{};import io8 from"pg";async function vr1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=po8}=$,Y=$.log??((W)=>console.log(W)),G=new io8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[_r1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(no8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[_r1.toString()])}catch{}await G.end().catch(()=>{})}}var _r1=8314027461559302n,po8=600000,no8=500;var xr1=L(()=>{N4()});function to8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function fr1(){let $=to8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hp0($,"--cpu-prof-dir")??process.cwd(),name:Hp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hp0($,"--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 br1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=zE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),oZ0=setInterval(()=>void Z().catch(()=>{}),$),oZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(oZ0)clearInterval(oZ0)}}var oZ0;var yr1=()=>{};import*as oo8 from"bun:jsc";function gr1(){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{ro8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ao8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var ro8,ao8;var hr1=L(()=>{({startSamplingProfiler:ro8,samplingProfilerStackTraces:ao8}=oo8)});function ur1(){fr1();let $=[br1(),Ap1(),gr1()];return()=>{for(let Z of $)Z()}}var cr1=L(()=>{ec0();yr1();hr1()});var kE=v((lr1)=>{Object.defineProperty(lr1,"__esModule",{value:!0});lr1.RepublishHeaders=lr1.DirectMsgHeaders=lr1.JsHeaders=lr1.AdvisoryKind=void 0;lr1.isOrderedPushConsumerOptions=so8;lr1.isPullConsumer=eo8;lr1.isPushConsumer=$r8;lr1.isBoundPushConsumerOptions=Zr8;function so8($){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 eo8($){return $.isPullConsumer()}function $r8($){return $.isPushConsumer()}function Zr8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}lr1.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"};lr1.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"};lr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};lr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.TD=mr1.TE=mr1.Empty=void 0;mr1.encode=Fr8;mr1.decode=Nr8;mr1.Empty=new Uint8Array(0);mr1.TE=new TextEncoder;mr1.TD=new TextDecoder;function Hr8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fr8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(mr1.TE.encode($[X]));if(Z.length===0)return mr1.Empty;if(Z.length===1)return Z[0];return Hr8(...Z)}function Nr8($){if(!$||$.length===0)return"";return mr1.TD.decode($)}});var ZG=v((nr1)=>{Object.defineProperty(nr1,"__esModule",{value:!0});nr1.errors=nr1.PermissionViolationError=nr1.NoRespondersError=nr1.TimeoutError=nr1.RequestError=nr1.ProtocolError=nr1.ConnectionError=nr1.DrainingConnectionError=nr1.ClosedConnectionError=nr1.AuthorizationError=nr1.UserAuthenticationExpiredError=nr1.InvalidOperationError=nr1.InvalidArgumentError=nr1.InvalidSubjectError=void 0;class Np0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}nr1.InvalidSubjectError=Np0;class rZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new rZ0(`${$} ${Z}`,X)}}nr1.InvalidArgumentError=rZ0;class Up0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}nr1.InvalidOperationError=Up0;class aZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aZ0($);return null}}nr1.UserAuthenticationExpiredError=aZ0;class sZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new sZ0($);return null}}nr1.AuthorizationError=sZ0;class Bp0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}nr1.ClosedConnectionError=Bp0;class Op0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}nr1.DrainingConnectionError=Op0;class Lp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}nr1.ConnectionError=Lp0;class Dp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}nr1.ProtocolError=Dp0;class wp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eZ0}}nr1.RequestError=wp0;class Ep0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}nr1.TimeoutError=Ep0;class eZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}nr1.NoRespondersError=eZ0;class $70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new $70($,X,Q,Y)}}nr1.PermissionViolationError=$70;nr1.errors={AuthorizationError:sZ0,ClosedConnectionError:Bp0,ConnectionError:Lp0,DrainingConnectionError:Op0,InvalidArgumentError:rZ0,InvalidOperationError:Up0,InvalidSubjectError:Np0,NoRespondersError:eZ0,PermissionViolationError:$70,ProtocolError:Dp0,RequestError:wp0,TimeoutError:Ep0,UserAuthenticationExpiredError:aZ0}});var y3=v((sr1)=>{Object.defineProperty(sr1,"__esModule",{value:!0});sr1.SimpleMutex=sr1.Perf=void 0;sr1.extend=Vr8;sr1.render=kr8;sr1.timeout=Sr8;sr1.delay=Cr8;sr1.deadline=_r8;sr1.deferred=zp0;sr1.debugDeferred=vr8;sr1.shuffle=xr8;sr1.collect=fr8;sr1.jitter=ar1;sr1.backoff=br8;sr1.nanos=yr8;sr1.millis=gr8;sr1.randomToken=cr8;var Mr8=$G(),jp0=ZG();function Vr8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function kr8($){return Mr8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Sr8($,Z=!0){let X=Z?new jp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new jp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Cr8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function _r8($,Z=1000){let X=zp0(),Q=setTimeout(()=>{X.reject(new jp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zp0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function vr8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function xr8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function fr8($){let Z=[];for await(let X of $)Z.push(X);return Z}class or1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}sr1.Perf=or1;class rr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zp0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}sr1.SimpleMutex=rr1;function ar1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function br8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ar1(X>Z?$[Z]:$[X])}}}function yr8($){return $*1e6}function gr8($){return Math.floor($/1e6)}var hr8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XN=new Uint8Array(62);for(let $=0;$<62;$++)XN[$]=hr8.charCodeAt($);var ur8=218340105584896;function cr8(){let $=Math.floor(Math.random()*ur8),Z=$%62,X=XN[Z];$=($-Z)/62,Z=$%62;let Q=XN[Z];$=($-Z)/62,Z=$%62;let Y=XN[Z];$=($-Z)/62,Z=$%62;let G=XN[Z];$=($-Z)/62,Z=$%62;let J=XN[Z];$=($-Z)/62,Z=$%62;let K=XN[Z];$=($-Z)/62,Z=$%62;let W=XN[Z];$=($-Z)/62;let H=XN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Ja1=v((Ya1)=>{Object.defineProperty(Ya1,"__esModule",{value:!0});Ya1.nuid=Ya1.NuidImpl=void 0;var Qa8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",nB=62,X70=12,Xa1=10,$a1=33,Ya8=333,Za1=X70+Xa1,Ap0=new Uint8Array(nB);for(let $=0;$<nB;$++)Ap0[$]=Qa8.charCodeAt($);var Z70=4294967296,Qa1=BigInt(nB)**BigInt(Xa1),si=Number(Qa1/(1n<<32n)),Pp0=Number(Qa1%(1n<<32n));function Ga8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ja8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ga8($)}class Tp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Za1),this.cbuf=new Uint8Array(X70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(si+1)),this.seqLo=Math.floor(Math.random()*Z70);while($++<8&&this.seqHi===si&&this.seqLo>=Pp0);if(this.seqHi===si&&this.seqLo>=Pp0)this.seqLo=0;this.inc=Math.random()*(Ya8-$a1)+$a1|0}setPre(){Ja8(this.cbuf);for(let $=0;$<X70;$++)this.buf[$]=Ap0[this.cbuf[$]%nB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Za1-1;X>=X70;X--){let Q=Math.floor($/nB),G=($-Q*nB)*Z70+Z,J=Math.floor(G/nB),K=G-J*nB;this.buf[X]=Ap0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Z70)this.seqLo-=Z70,this.seqHi+=1;if(this.seqHi>si||this.seqHi===si&&this.seqLo>=Pp0)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()}}Ya1.NuidImpl=Tp0;Ya1.nuid=new Tp0});var Fa1=v((Wa1)=>{Object.defineProperty(Wa1,"__esModule",{value:!0});Wa1.nuid=Wa1.Nuid=void 0;var Ka1=Ja1();Wa1.Nuid=Ka1.NuidImpl;Wa1.nuid=Ka1.nuid});var Y70=v((Q70)=>{Object.defineProperty(Q70,"__esModule",{value:!0});Q70.nuid=Q70.Nuid=void 0;var Na1=Fa1();Object.defineProperty(Q70,"Nuid",{enumerable:!0,get:function(){return Na1.Nuid}});Object.defineProperty(Q70,"nuid",{enumerable:!0,get:function(){return Na1.nuid}})});var tB=v((Ua1)=>{Object.defineProperty(Ua1,"__esModule",{value:!0});Ua1.DEFAULT_HOST=Ua1.DEFAULT_PORT=Ua1.Match=void 0;Ua1.syncIterator=Ua8;Ua1.createInbox=Ba8;var Fa8=Y70(),Na8=ZG();Ua1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ua8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Ba8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Na8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fa8.nuid.next()}`}Ua1.DEFAULT_PORT=4222;Ua1.DEFAULT_HOST="127.0.0.1"});var ei=v((Da1)=>{Object.defineProperty(Da1,"__esModule",{value:!0});Da1.DataBuffer=void 0;var Oa1=$G();class La1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Oa1.TE.encode($)}static toAscii($){return Oa1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}Da1.DataBuffer=La1});var SE=v((ja1)=>{Object.defineProperty(ja1,"__esModule",{value:!0});ja1.LF=ja1.CR=ja1.CRLF=ja1.CR_LF_LEN=ja1.CR_LF=void 0;ja1.setTransportFactory=Pa8;ja1.defaultPort=Aa8;ja1.getUrlParseFn=Ta8;ja1.newTransport=Ra8;ja1.getResolveFn=Ia8;ja1.protoLen=Ea1;ja1.extractProtocolMessage=qa8;var Ea8=$G(),ja8=tB(),za8=ei(),XG;function Pa8($){XG=$}function Aa8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:ja8.DEFAULT_PORT}function Ta8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function Ra8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Ia8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}ja1.CR_LF=`\r
|
|
1402
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function vo8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ri(Number(Y)+1):await ri(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await iZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)RE({name:D.name,status:"ready",port:D.port});ti();let F=_o8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,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",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Zp0(U.stdout),Zp0(U.stderr);oi(G),RE({name:"Vite",status:"ready",port:Number(Y)}),RE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (e90(),s90));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Qp0=L(()=>{ri0();IE();$p0()});var tZ0;var Yp0=L(()=>{tZ0={name:"decocms",version:"4.268.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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 fo8,Text as jr1}from"ink";import{jsx as bo8,jsxs as zr1}from"react/jsx-runtime";function Pr1({version:$}){return zr1(fo8,{flexDirection:"column",marginTop:1,children:[PZ0.map((Z,X)=>bo8(jr1,{color:AZ0[X],children:Z},X)),zr1(jr1,{dimColor:!0,children:[" v",$]})]})}var Ar1=L(()=>{bi()});import{Box as qE,Text as iB}from"ink";import{Spinner as yo8}from"@inkjs/ui";import{jsx as eY,jsxs as sb}from"react/jsx-runtime";function Tr1({status:$}){if($==="pending")return eY(yo8,{label:""});return eY(iB,{color:"green",children:"\u2713"})}function go8($){return`${$.name}: ${$.port||"...."}`}function Rr1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return sb(qE,{flexDirection:"column",paddingBottom:1,children:[eY(Pr1,{version:tZ0.version}),eY(qE,{marginBottom:1,children:eY(iB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(qE,{children:sb(iB,{dimColor:!0,children:["Home: ",X]})}),sb(qE,{gap:2,children:[$.map((Y)=>sb(qE,{gap:1,children:[eY(iB,{children:go8(Y)}),eY(Tr1,{status:Y.status})]},Y.name)),sb(qE,{gap:1,children:[eY(iB,{children:"Migrations"}),eY(Tr1,{status:Z})]})]}),eY(qE,{children:Q?sb(iB,{children:["Open in browser: ",eY(iB,{color:"cyan",children:Q})]}):eY(iB,{dimColor:!0,children:"Starting..."})})]})}var Ir1=L(()=>{Yp0();Ar1()});import{Box as ho8,Text as ai}from"ink";import{jsx as Gp0,jsxs as Jp0}from"react/jsx-runtime";function uo8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qr1({logs:$}){return Gp0(ho8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Gp0(ai,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Jp0(ai,{children:[Jp0(ai,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Gp0(ai,{color:uo8(Z.status),children:Z.status}),Jp0(ai,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mr1=()=>{};var Kp0={};Q0(Kp0,{App:()=>do8});import{Box as co8}from"ink";import{useSyncExternalStore as lo8}from"react";import{jsx as Vr1,jsxs as mo8}from"react/jsx-runtime";function do8({home:$}){let Z=lo8(ei0,si0);return mo8(co8,{flexDirection:"column",children:[Vr1(Rr1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Vr1(qr1,{logs:Z.logs})]})}var Wp0=L(()=>{Ir1();Mr1();IE()});var b3="thread-gate",$N="decopilot-hosted-harness",ZN="decopilot-hosted-harness-sandboxed",NJ="automations",pB="background-tools",ME="task-board-github-reads",VE="jira-push";var kr1="9";function Sr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:kr1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cr1=()=>{};import io8 from"pg";async function vr1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=po8}=$,Y=$.log??((W)=>console.log(W)),G=new io8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[_r1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(no8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[_r1.toString()])}catch{}await G.end().catch(()=>{})}}var _r1=8314027461559302n,po8=600000,no8=500;var xr1=L(()=>{N4()});function to8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function fr1(){let $=to8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hp0($,"--cpu-prof-dir")??process.cwd(),name:Hp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hp0($,"--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 br1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=zE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),oZ0=setInterval(()=>void Z().catch(()=>{}),$),oZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(oZ0)clearInterval(oZ0)}}var oZ0;var yr1=()=>{};import*as oo8 from"bun:jsc";function gr1(){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{ro8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ao8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var ro8,ao8;var hr1=L(()=>{({startSamplingProfiler:ro8,samplingProfilerStackTraces:ao8}=oo8)});function ur1(){fr1();let $=[br1(),Ap1(),gr1()];return()=>{for(let Z of $)Z()}}var cr1=L(()=>{ec0();yr1();hr1()});var kE=v((lr1)=>{Object.defineProperty(lr1,"__esModule",{value:!0});lr1.RepublishHeaders=lr1.DirectMsgHeaders=lr1.JsHeaders=lr1.AdvisoryKind=void 0;lr1.isOrderedPushConsumerOptions=so8;lr1.isPullConsumer=eo8;lr1.isPushConsumer=$r8;lr1.isBoundPushConsumerOptions=Zr8;function so8($){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 eo8($){return $.isPullConsumer()}function $r8($){return $.isPushConsumer()}function Zr8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}lr1.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"};lr1.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"};lr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};lr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.TD=mr1.TE=mr1.Empty=void 0;mr1.encode=Fr8;mr1.decode=Nr8;mr1.Empty=new Uint8Array(0);mr1.TE=new TextEncoder;mr1.TD=new TextDecoder;function Hr8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fr8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(mr1.TE.encode($[X]));if(Z.length===0)return mr1.Empty;if(Z.length===1)return Z[0];return Hr8(...Z)}function Nr8($){if(!$||$.length===0)return"";return mr1.TD.decode($)}});var ZG=v((nr1)=>{Object.defineProperty(nr1,"__esModule",{value:!0});nr1.errors=nr1.PermissionViolationError=nr1.NoRespondersError=nr1.TimeoutError=nr1.RequestError=nr1.ProtocolError=nr1.ConnectionError=nr1.DrainingConnectionError=nr1.ClosedConnectionError=nr1.AuthorizationError=nr1.UserAuthenticationExpiredError=nr1.InvalidOperationError=nr1.InvalidArgumentError=nr1.InvalidSubjectError=void 0;class Np0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}nr1.InvalidSubjectError=Np0;class rZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new rZ0(`${$} ${Z}`,X)}}nr1.InvalidArgumentError=rZ0;class Up0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}nr1.InvalidOperationError=Up0;class aZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aZ0($);return null}}nr1.UserAuthenticationExpiredError=aZ0;class sZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new sZ0($);return null}}nr1.AuthorizationError=sZ0;class Bp0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}nr1.ClosedConnectionError=Bp0;class Op0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}nr1.DrainingConnectionError=Op0;class Lp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}nr1.ConnectionError=Lp0;class Dp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}nr1.ProtocolError=Dp0;class wp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eZ0}}nr1.RequestError=wp0;class Ep0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}nr1.TimeoutError=Ep0;class eZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}nr1.NoRespondersError=eZ0;class $70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new $70($,X,Q,Y)}}nr1.PermissionViolationError=$70;nr1.errors={AuthorizationError:sZ0,ClosedConnectionError:Bp0,ConnectionError:Lp0,DrainingConnectionError:Op0,InvalidArgumentError:rZ0,InvalidOperationError:Up0,InvalidSubjectError:Np0,NoRespondersError:eZ0,PermissionViolationError:$70,ProtocolError:Dp0,RequestError:wp0,TimeoutError:Ep0,UserAuthenticationExpiredError:aZ0}});var y3=v((sr1)=>{Object.defineProperty(sr1,"__esModule",{value:!0});sr1.SimpleMutex=sr1.Perf=void 0;sr1.extend=Vr8;sr1.render=kr8;sr1.timeout=Sr8;sr1.delay=Cr8;sr1.deadline=_r8;sr1.deferred=zp0;sr1.debugDeferred=vr8;sr1.shuffle=xr8;sr1.collect=fr8;sr1.jitter=ar1;sr1.backoff=br8;sr1.nanos=yr8;sr1.millis=gr8;sr1.randomToken=cr8;var Mr8=$G(),jp0=ZG();function Vr8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function kr8($){return Mr8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Sr8($,Z=!0){let X=Z?new jp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new jp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Cr8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function _r8($,Z=1000){let X=zp0(),Q=setTimeout(()=>{X.reject(new jp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zp0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function vr8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function xr8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function fr8($){let Z=[];for await(let X of $)Z.push(X);return Z}class or1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}sr1.Perf=or1;class rr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zp0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}sr1.SimpleMutex=rr1;function ar1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function br8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ar1(X>Z?$[Z]:$[X])}}}function yr8($){return $*1e6}function gr8($){return Math.floor($/1e6)}var hr8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XN=new Uint8Array(62);for(let $=0;$<62;$++)XN[$]=hr8.charCodeAt($);var ur8=218340105584896;function cr8(){let $=Math.floor(Math.random()*ur8),Z=$%62,X=XN[Z];$=($-Z)/62,Z=$%62;let Q=XN[Z];$=($-Z)/62,Z=$%62;let Y=XN[Z];$=($-Z)/62,Z=$%62;let G=XN[Z];$=($-Z)/62,Z=$%62;let J=XN[Z];$=($-Z)/62,Z=$%62;let K=XN[Z];$=($-Z)/62,Z=$%62;let W=XN[Z];$=($-Z)/62;let H=XN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Ja1=v((Ya1)=>{Object.defineProperty(Ya1,"__esModule",{value:!0});Ya1.nuid=Ya1.NuidImpl=void 0;var Qa8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",nB=62,X70=12,Xa1=10,$a1=33,Ya8=333,Za1=X70+Xa1,Ap0=new Uint8Array(nB);for(let $=0;$<nB;$++)Ap0[$]=Qa8.charCodeAt($);var Z70=4294967296,Qa1=BigInt(nB)**BigInt(Xa1),si=Number(Qa1/(1n<<32n)),Pp0=Number(Qa1%(1n<<32n));function Ga8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ja8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ga8($)}class Tp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Za1),this.cbuf=new Uint8Array(X70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(si+1)),this.seqLo=Math.floor(Math.random()*Z70);while($++<8&&this.seqHi===si&&this.seqLo>=Pp0);if(this.seqHi===si&&this.seqLo>=Pp0)this.seqLo=0;this.inc=Math.random()*(Ya8-$a1)+$a1|0}setPre(){Ja8(this.cbuf);for(let $=0;$<X70;$++)this.buf[$]=Ap0[this.cbuf[$]%nB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Za1-1;X>=X70;X--){let Q=Math.floor($/nB),G=($-Q*nB)*Z70+Z,J=Math.floor(G/nB),K=G-J*nB;this.buf[X]=Ap0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Z70)this.seqLo-=Z70,this.seqHi+=1;if(this.seqHi>si||this.seqHi===si&&this.seqLo>=Pp0)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()}}Ya1.NuidImpl=Tp0;Ya1.nuid=new Tp0});var Fa1=v((Wa1)=>{Object.defineProperty(Wa1,"__esModule",{value:!0});Wa1.nuid=Wa1.Nuid=void 0;var Ka1=Ja1();Wa1.Nuid=Ka1.NuidImpl;Wa1.nuid=Ka1.nuid});var Y70=v((Q70)=>{Object.defineProperty(Q70,"__esModule",{value:!0});Q70.nuid=Q70.Nuid=void 0;var Na1=Fa1();Object.defineProperty(Q70,"Nuid",{enumerable:!0,get:function(){return Na1.Nuid}});Object.defineProperty(Q70,"nuid",{enumerable:!0,get:function(){return Na1.nuid}})});var tB=v((Ua1)=>{Object.defineProperty(Ua1,"__esModule",{value:!0});Ua1.DEFAULT_HOST=Ua1.DEFAULT_PORT=Ua1.Match=void 0;Ua1.syncIterator=Ua8;Ua1.createInbox=Ba8;var Fa8=Y70(),Na8=ZG();Ua1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ua8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Ba8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Na8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fa8.nuid.next()}`}Ua1.DEFAULT_PORT=4222;Ua1.DEFAULT_HOST="127.0.0.1"});var ei=v((Da1)=>{Object.defineProperty(Da1,"__esModule",{value:!0});Da1.DataBuffer=void 0;var Oa1=$G();class La1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Oa1.TE.encode($)}static toAscii($){return Oa1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}Da1.DataBuffer=La1});var SE=v((ja1)=>{Object.defineProperty(ja1,"__esModule",{value:!0});ja1.LF=ja1.CR=ja1.CRLF=ja1.CR_LF_LEN=ja1.CR_LF=void 0;ja1.setTransportFactory=Pa8;ja1.defaultPort=Aa8;ja1.getUrlParseFn=Ta8;ja1.newTransport=Ra8;ja1.getResolveFn=Ia8;ja1.protoLen=Ea1;ja1.extractProtocolMessage=qa8;var Ea8=$G(),ja8=tB(),za8=ei(),XG;function Pa8($){XG=$}function Aa8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:ja8.DEFAULT_PORT}function Ta8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function Ra8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Ia8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}ja1.CR_LF=`\r
|
|
1403
1403
|
`;ja1.CR_LF_LEN=ja1.CR_LF.length;ja1.CRLF=za8.DataBuffer.fromAscii(ja1.CR_LF);ja1.CR=new Uint8Array(ja1.CRLF)[0];ja1.LF=new Uint8Array(ja1.CRLF)[1];function Ea1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===ja1.CR&&$[X]===ja1.LF)return X+1}return 0}function qa8($){let Z=Ea1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Ea8.TD.decode(Q)}return""}});var Vp0=v((Ma1)=>{Object.defineProperty(Ma1,"__esModule",{value:!0});Ma1.ipV4=Ra1;Ma1.isIP=ya8;Ma1.parseIP=Ia1;var $p=4,CE=16,G70=48,Ta1=57,Pa1=65,fa8=70,Aa1=97,ba8=102,Mp0=16777215;function Ra1($,Z,X,Q){let Y=new Uint8Array(CE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function ya8($){return Ia1($)!==void 0}function Ia1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return qa1($);case":":return ga8($)}return}function qa1($){let Z=new Uint8Array($p);for(let X=0;X<$p;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=ha8($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Ra1(Z[0],Z[1],Z[2],Z[3])}function ga8($){let Z=new Uint8Array(CE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<CE){let{n:Y,c:G,ok:J}=ua8($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=CE-$p)return;if(Q+$p>CE)return;let K=qa1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=$p;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<CE){if(X<0)return;let Y=CE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function ha8($){let Z=0,X=0;for(Z=0;Z<$.length&&G70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Ta1;Z++)if(X=X*10+($.charCodeAt(Z)-G70),X>=Mp0)return{n:Mp0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ua8($){let Z=0,X=0;for(X=0;X<$.length;X++){if(G70<=$.charCodeAt(X)&&$.charCodeAt(X)<=Ta1)Z*=16,Z+=$.charCodeAt(X)-G70;else if(Aa1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ba8)Z*=16,Z+=$.charCodeAt(X)-Aa1+10;else if(Pa1<=$.charCodeAt(X)&&$.charCodeAt(X)<=fa8)Z*=16,Z+=$.charCodeAt(X)-Pa1+10;else break;if(Z>=Mp0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var xp0=v((ka1)=>{Object.defineProperty(ka1,"__esModule",{value:!0});ka1.Servers=ka1.ServerImpl=void 0;ka1.isIPV4OrHostname=Va1;ka1.hostPort=vp0;var kp0=SE(),Sp0=y3(),Cp0=Vp0(),ma8=tB(),ia8=ZG();function Va1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function _p0($){return!Va1($)}function pa8($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function vp0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=pa8($),_p0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=_p0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):ma8.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class eb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=vp0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.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,Cp0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${_p0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new eb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Sp0.shuffle)(Z);return this.resolves=Z,Z}}ka1.ServerImpl=eb;class J70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw ia8.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,kp0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=vp0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new eb(Y))}if(this.randomize)(0,Sp0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Cp0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,kp0.getUrlParseFn)();$=X?X($):$;let Q=new eb($,Z);if((0,Cp0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}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 J70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return J70.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 X=[],Q=[],Y=(0,kp0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new eb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Sp0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}ka1.Servers=J70});var K70=v((va1)=>{Object.defineProperty(va1,"__esModule",{value:!0});va1.QueuedIteratorImpl=void 0;var fp0=y3(),Ca1=ZG();class _a1{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,fp0.deferred)(),this.yields=[],this.iterClosed=(0,fp0.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(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ca1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ca1.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 Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,fp0.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}}va1.QueuedIteratorImpl=_a1});var bp0=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.MuxSubscription=void 0;var ra8=tB(),fa1=ZG();class ba1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,ra8.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((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new fa1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new fa1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}ya1.MuxSubscription=ba1});var yp0=v((ua1)=>{Object.defineProperty(ua1,"__esModule",{value:!0});ua1.Heartbeat=void 0;var aa8=y3();class ha1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,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,aa8.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})}}ua1.Heartbeat=ha1});var up0=v((ia1)=>{Object.defineProperty(ia1,"__esModule",{value:!0});ia1.DenoBuffer=ia1.MAX_SIZE=ia1.AssertionError=void 0;ia1.assert=da1;ia1.concat=ma1;ia1.append=ea8;ia1.readAll=$s8;ia1.writeAll=Zs8;var sa8=$G();class gp0 extends Error{constructor($){super($);this.name="AssertionError"}}ia1.AssertionError=gp0;function da1($,Z="Assertion failed."){if(!$)throw new gp0(Z)}var la1=32768;ia1.MAX_SIZE=4294967294;function W70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function ma1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function ea8($,Z){return ma1($,Uint8Array.of(Z))}class hp0{_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($){da1($<=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=W70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(sa8.TE.encode($))}write($){let Z=this._grow($.byteLength);return W70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)W70(this._buf.subarray(this._off),this._buf);else if(Q+$>ia1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,ia1.MAX_SIZE));W70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,ia1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(la1);while(!0){let Q=this.capacity-this.length<la1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}ia1.DenoBuffer=hp0;function $s8($){let Z=new hp0;return Z.readFrom($),Z.bytes()}function Zs8($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var dp0=v((ra1)=>{Object.defineProperty(ra1,"__esModule",{value:!0});ra1.cc=ra1.State=ra1.Parser=ra1.Kind=void 0;ra1.describe=Ws8;var cp0=up0(),lp0=$G();ra1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Ws8($){let Z,X="";switch($.kind){case ra1.Kind.MSG:Z="MSG";break;case ra1.Kind.OK:Z="OK";break;case ra1.Kind.ERR:Z="ERR",X=lp0.TD.decode($.data);break;case ra1.Kind.PING:Z="PING";break;case ra1.Kind.PONG:Z="PONG";break;case ra1.Kind.INFO:Z="INFO",X=lp0.TD.decode($.data)}return`${Z}: ${X}`}function na1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var ta1=48,Hs8=57,$y=67108864;class oa1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=ra1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case ra1.State.OP_START:switch(X){case ra1.cc.M:case ra1.cc.m:this.state=ra1.State.OP_M,this.hdr=-1,this.ma=na1();break;case ra1.cc.H:case ra1.cc.h:this.state=ra1.State.OP_H,this.hdr=0,this.ma=na1();break;case ra1.cc.P:case ra1.cc.p:this.state=ra1.State.OP_P;break;case ra1.cc.PLUS:this.state=ra1.State.OP_PLUS;break;case ra1.cc.MINUS:this.state=ra1.State.OP_MINUS;break;case ra1.cc.I:case ra1.cc.i:this.state=ra1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_H:switch(X){case ra1.cc.M:case ra1.cc.m:this.state=ra1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_M:switch(X){case ra1.cc.S:case ra1.cc.s:this.state=ra1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MS:switch(X){case ra1.cc.G:case ra1.cc.g:this.state=ra1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MSG:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:this.state=ra1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MSG_SPC:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:continue;default:this.state=ra1.State.MSG_ARG,this.as=Z}break;case ra1.State.MSG_ARG:switch(X){case ra1.cc.CR:this.drop=1;break;case ra1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=ra1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case ra1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:ra1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=ra1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:ra1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=ra1.State.MSG_END;break;case ra1.State.MSG_END:switch(X){case ra1.cc.NL:this.drop=0,this.as=Z+1,this.state=ra1.State.OP_START;break;default:continue}break;case ra1.State.OP_PLUS:switch(X){case ra1.cc.O:case ra1.cc.o:this.state=ra1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PLUS_O:switch(X){case ra1.cc.K:case ra1.cc.k:this.state=ra1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PLUS_OK:switch(X){case ra1.cc.NL:this.dispatcher.push({kind:ra1.Kind.OK}),this.drop=0,this.state=ra1.State.OP_START;break}break;case ra1.State.OP_MINUS:switch(X){case ra1.cc.E:case ra1.cc.e:this.state=ra1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MINUS_E:switch(X){case ra1.cc.R:case ra1.cc.r:this.state=ra1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MINUS_ER:switch(X){case ra1.cc.R:case ra1.cc.r:this.state=ra1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MINUS_ERR:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:this.state=ra1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_MINUS_ERR_SPC:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:continue;default:this.state=ra1.State.MINUS_ERR_ARG,this.as=Z}break;case ra1.State.MINUS_ERR_ARG:switch(X){case ra1.cc.CR:this.drop=1;break;case ra1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:ra1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=ra1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case ra1.State.OP_P:switch(X){case ra1.cc.I:case ra1.cc.i:this.state=ra1.State.OP_PI;break;case ra1.cc.O:case ra1.cc.o:this.state=ra1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PO:switch(X){case ra1.cc.N:case ra1.cc.n:this.state=ra1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PON:switch(X){case ra1.cc.G:case ra1.cc.g:this.state=ra1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PONG:switch(X){case ra1.cc.NL:this.dispatcher.push({kind:ra1.Kind.PONG}),this.drop=0,this.state=ra1.State.OP_START;break}break;case ra1.State.OP_PI:switch(X){case ra1.cc.N:case ra1.cc.n:this.state=ra1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PIN:switch(X){case ra1.cc.G:case ra1.cc.g:this.state=ra1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_PING:switch(X){case ra1.cc.NL:this.dispatcher.push({kind:ra1.Kind.PING}),this.drop=0,this.state=ra1.State.OP_START;break}break;case ra1.State.OP_I:switch(X){case ra1.cc.N:case ra1.cc.n:this.state=ra1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_IN:switch(X){case ra1.cc.F:case ra1.cc.f:this.state=ra1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_INF:switch(X){case ra1.cc.O:case ra1.cc.o:this.state=ra1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_INFO:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:this.state=ra1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case ra1.State.OP_INFO_SPC:switch(X){case ra1.cc.SPACE:case ra1.cc.TAB:continue;default:this.state=ra1.State.INFO_ARG,this.as=Z}break;case ra1.State.INFO_ARG:switch(X){case ra1.cc.CR:this.drop=1;break;case ra1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:ra1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=ra1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===ra1.State.MSG_ARG||this.state===ra1.State.MINUS_ERR_ARG||this.state===ra1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new cp0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===ra1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new cp0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new cp0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case ra1.cc.SPACE:case ra1.cc.TAB:case ra1.cc.CR:case ra1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],$y);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],$y);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}: ${lp0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case ra1.cc.SPACE:case ra1.cc.TAB:case ra1.cc.CR:case ra1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],$y),this.ma.size=this.protoParseInt(Z[3],$y);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],$y),this.ma.size=this.protoParseInt(Z[4],$y);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 X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<ta1||$[Q]>Hs8)return-1;X=X*10+($[Q]-ta1)}return Z!==void 0&&X>Z?-1:X}}ra1.Parser=oa1;ra1.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};ra1.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 N70=v((sa1)=>{Object.defineProperty(sa1,"__esModule",{value:!0});sa1.MsgHdrsImpl=void 0;sa1.canonicalMIMEHeaderKey=ip0;sa1.headers=Us8;var aa1=$G(),g3=tB(),F70=ZG();function ip0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw F70.InvalidArgumentError.format("header",`'${$[U]}' 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;N[U]=B,F=B==45}return String.fromCharCode(...N)}function Us8($=0,Z=""){if($===0&&Z!=="")throw F70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw F70.InvalidArgumentError.format("description","is required");return new Zy($,Z)}var mp0="NATS/1.0";class Zy{_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,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Zy,Q=aa1.TD.decode($).split(`\r
|
|
1404
1404
|
`),Y=Q[0];if(Y!==mp0){let G=Y.replace(mp0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=mp0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1405
1405
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -2235,7 +2235,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
2235
2235
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
2236
2236
|
</workflows>`,fF$={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:oj4,getId:sQ.USAGE_MANAGER}});function X11($){return nj.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function aj4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function JJ0({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=X11(Z);if(!Y)return $;let G=await aj4(Y,{orgId:X,ctx:Q}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function KJ0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(X)=>({label:X.label,activeForm:X.activeForm,action:X.action,completed:await X.isCompleted(Z),alwaysSuggest:X.alwaysSuggest})))}async function yF$($,Z,X){let Q={self:b8.SELF($),registry:b8.REGISTRY($),"community-registry":b8.COMMUNITY_REGISTRY($)};await Promise.all(rj4.map((Y)=>X.delete(`${Y}${$}`))),await Promise.all(nj.map(async(Y)=>{let G=Y.getId($),J=await X.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>Q[H]);if(J){await X.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=J.connections.find((N)=>N.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:F?.selected_resources??null,selected_prompts:F?.selected_prompts??null}})});return}await X.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:G})}))}var rj4,nj;var jh=L(()=>{y8();PF$();TF$();IF$();SF$();_F$();xF$();bF$();rj4=["studio-task-manager_"],nj=[kF$,zF$,RF$,CF$,AF$,vF$,fF$]});import{DBOS as WJ0}from"@dbos-inc/dbos-sdk";async function sj4($){let Z=Q8(),X=new $g(Z.db);await yF$($.orgId,$.createdBy,X)}async function ej4($){let Z=Q8(),X=new $g(Z.db);for(let Q of nj){let Y=Q.getId($.orgId),G=await X.findById(Y,$.orgId);if(!G)continue;let J=Q.selectedPrompts?[...Q.selectedPrompts]:null;if(G.connections.every((W)=>{let H=W.selected_prompts;if(J===null)return H===null;if(H===null)return!1;if(H.length!==J.length)return!1;return H.every((F,N)=>F===J[N])}))continue;await X.update(Y,$.createdBy,{connections:G.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:J}))})}}async function $z4($){await WJ0.runStep(()=>sj4($),{name:"installStudioPack"}),await WJ0.runStep(()=>ej4($),{name:"backfillSelectedPrompts"})}async function Q11($){await WJ0.startWorkflow(Zz4,{workflowID:`install-studio-pack:${Xz4}:${$.orgId}`})($)}async function gF$(){let Z=await Q8().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),X=new Map;for(let Q of Z)if(!X.has(Q.organizationId))X.set(Q.organizationId,Q.userId);await GJ0(Array.from(X),10,async([Q,Y])=>{try{await Q11({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}})}var Zz4,Xz4="v6";var HJ0=L(()=>{ZX();Da0();jh();Zz4=WJ0.registerWorkflow($z4,{name:"installStudioPackWorkflow"})});class Ro{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new Ro,Z=new Ro;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as K4}from"zod";var FJ0,hF$,uF$,cF$,lF$,dF$,mF$,iF$,pF$,nF$;var zh=L(()=>{FJ0=K4.record(K4.string(),K4.array(K4.string())),hF$=K4.object({id:K4.string().describe("Unique identifier for the API key"),name:K4.string().describe("Human-readable name for the API key"),userId:K4.string().describe("ID of the user who owns this API key"),permissions:FJ0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:K4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:K4.string().datetime().describe("When the API key was created (ISO 8601)")}),uF$=K4.object({name:K4.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:FJ0.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:K4.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:K4.record(K4.string(),K4.unknown()).optional().describe("Additional metadata to store with the API key")}),cF$=K4.object({id:K4.string().describe("Unique identifier for the API key"),name:K4.string().describe("Human-readable name for the API key"),key:K4.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:FJ0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:K4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:K4.string().datetime().describe("When the API key was created (ISO 8601)")}),lF$=K4.object({}),dF$=K4.object({items:K4.array(hF$).describe("List of API keys (without key values)")}),mF$=K4.object({keyId:K4.string().describe("ID of the API key to update"),name:K4.string().min(1).max(64).optional().describe("New name for the API key"),permissions:FJ0.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:K4.record(K4.string(),K4.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),iF$=K4.object({item:hF$.describe("The updated API key (without key value)")}),pF$=K4.object({keyId:K4.string().describe("ID of the API key to delete")}),nF$=K4.object({success:K4.boolean().describe("Whether the deletion was successful"),keyId:K4.string().describe("ID of the deleted API key")})});var Y11;var tF$=L(()=>{f4();k0();zh();Y11=c({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:uF$,outputSchema:cF$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),Q=X.expiresAt?X.expiresAt instanceof Date?X.expiresAt.toISOString():X.expiresAt:null,Y=X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,G=a0(Z);if(G)h1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var G11;var oF$=L(()=>{f4();k0();zh();G11=c({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:pF$,outputSchema:nF$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)h1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var J11;var rF$=L(()=>{k0();zh();J11=c({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lF$,outputSchema:dF$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.list(),Q=Z.organization?.id;return{items:(X??[]).filter((G)=>{return G.metadata?.organization?.id===Q}).map((G)=>({id:G.id,name:G.name??"Unnamed Key",userId:G.userId,permissions:G.permissions??{},expiresAt:G.expiresAt?G.expiresAt instanceof Date?G.expiresAt.toISOString():G.expiresAt:null,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});var K11;var aF$=L(()=>{k0();zh();K11=c({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:mF$,outputSchema:iF$,handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var sF$=L(()=>{tF$();oF$();rF$();aF$();zh()});function BL($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=Yz4.test(Z),Q=Gz4.test(Z),Y=Jz4.test(Z);if(X&&!Q&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=Q?Z:`https://${Z}`,J;try{J=new URL(G)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(J.protocol!=="http:"&&J.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=J.hostname.split(".");if(K.length<2||K.some((W)=>!W||!Kz4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var Yz4,Gz4,Jz4,Kz4;var Io=L(()=>{Yz4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,Gz4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,Jz4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,Kz4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as BQ}from"zod";function WH($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??y0()).reportsInternalApiUrl??Wz4).replace(/\/+$/,"")}function $N$($={}){return`${WH($)}/api/v2/mcp`}function tj($){let Z=$.apiKey??($.settings??y0()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function NJ0($){return new URL($).hostname}function Fz4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function Nz4($,Z={}){switch($){case"ownership_unverified":{let X=Z.email?`O e-mail ${Z.email}`:"Este e-mail",Q=Z.domain?` ${Z.domain}`:" este site";return`${X} n\xE3o tem permiss\xE3o para reivindicar${Q}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Commerce Discovery. Tente novamente ou fale com o suporte.";default:return $}}async function Uz4($){let Z=await qo($);return Fz4(Z?.error)?Z.error:"unknown"}async function qo($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function W11($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,X=await $.text().catch(()=>"");if(!X)return Z;try{let Q=JSON.parse(X),Y=typeof Q.error==="string"?Q.error:typeof Q.message==="string"?Q.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function XN$($,Z={}){let X=WH(Z),Q=tj(Z),Y=Z.fetchImpl??fetch,G=NJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}})});if(!K.ok){let H=await Uz4(K);throw new ZN$(H,{email:$.email,domain:G})}let W=Hz4.safeParse(await qo(K));if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function QN$($,Z={}){let X=WH(Z),Q=tj(Z),Y=Z.fetchImpl??fetch,G=NJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId})});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=eF$.safeParse(await qo(K));return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await W11(K));let W=eF$.safeParse(await qo(K));if(!W.success||!W.data.binding)throw Error("Commerce Discovery bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function YN$($,Z={}){let X=WH(Z),Q=tj(Z),Y=Z.fetchImpl??fetch,G=NJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.githubRepo?{github_repo:$.githubRepo}:{}})});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await W11(K));return{triggered:!0}}async function GN$($,Z={}){let X=WH(Z),Q=tj(Z),Y=Z.fetchImpl??fetch,G=NJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${Q}`}});if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await W11(K));let W=Bz4.safeParse(await qo(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var Wz4,Hz4,eF$,ZN$,Bz4;var oj=L(()=>{y8();V$();Wz4=new URL(p9$).origin,Hz4=BQ.object({token:BQ.string().min(1)}),eF$=BQ.object({binding:BQ.object({resource_id:BQ.string(),evidence:BQ.string()}).optional(),reason:BQ.string().optional(),detail:BQ.string().optional()});ZN$=class ZN$ extends Error{code;constructor($,Z={}){super(Nz4($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};Bz4=BQ.object({providers:BQ.record(BQ.string(),BQ.object({connected:BQ.boolean(),via:BQ.enum(["oauth","sa"]).nullable(),resource:BQ.string().nullable()}))})});import{z as BG}from"zod";var Oz4,Lz4,H11;var JN$=L(()=>{Io();k0();oj();Oz4=BG.object({siteUrl:BG.string().min(1).describe("Website URL of the store being bound."),provider:BG.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:BG.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),Lz4=BG.discriminatedUnion("ok",[BG.object({ok:BG.literal(!0),resourceId:BG.string(),evidence:BG.string()}),BG.object({ok:BG.literal(!1),reason:BG.string(),detail:BG.string()})]),H11=c({name:"COMMERCE_DISCOVERY_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Commerce Discovery verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Commerce Discovery Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Oz4,outputSchema:Lz4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=BL($.siteUrl);if(!Q.ok)throw Error(Q.error);return QN$({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as HH}from"zod";var Dz4,wz4,F11;var KN$=L(()=>{Io();k0();oj();Dz4=HH.object({siteUrl:HH.string().min(1).describe("Website URL of the store to inspect.")}),wz4=HH.object({providers:HH.record(HH.string(),HH.object({connected:HH.boolean(),via:HH.enum(["oauth","sa"]).nullable(),resource:HH.string().nullable()})),claimed:HH.boolean().describe("False when the site isn't claimed/upgraded for this org \u2014 providers is then empty because the status is unreadable, NOT because nothing is connected. The UI must warn instead of rendering existing bindings as disconnected.")}),F11=c({name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Commerce Discovery Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Dz4,outputSchema:wz4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=BL($.siteUrl);if(!Q.ok)throw Error(Q.error);return GN$({siteUrl:Q.value,orgId:X.id})}})});import{z as Mo}from"zod";var Ez4,jz4,N11;var WN$=L(()=>{y8();Io();k0();oj();Ez4=Mo.object({siteUrl:Mo.string().min(1).describe("Website URL to run the diagnostic for.")}),jz4=Mo.object({triggered:Mo.boolean(),reason:Mo.string().optional()}),N11=c({name:"COMMERCE_DISCOVERY_RUN",description:"Trigger the Commerce Discovery diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Ez4,outputSchema:jz4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=BL($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=b8.COMMERCE_DISCOVERY(X.id),J=(await Z.storage.connections.findById(Y,X.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return YN$({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var OL=L(()=>{LX0()});import{z as FH}from"zod";async function Tz4($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function Rz4($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var U11,zz4=3600000,Pz4,Az4,B11;var HN$=L(()=>{y8();Io();k0();lW();OL();oj();U11=xQ0,Pz4=FH.object({siteUrl:FH.string().min(1).describe("Website URL to configure.")}),Az4=FH.object({connection:QX,virtualMcp:YX,reportApp:FH.object({connectionId:FH.string(),virtualMcpId:FH.string(),toolName:FH.literal(U11)}),created:FH.object({connection:FH.boolean(),virtualMcp:FH.boolean()})});B11=c({name:"COMMERCE_DISCOVERY_SETUP",description:"Create or return the Commerce Discovery connection and virtual MCP for the current organization.",annotations:{title:"Set Up Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Pz4,outputSchema:Az4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=a0(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=BL($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=b8.COMMERCE_DISCOVERY(X.id),J=bQ0(X.id),K=new URLSearchParams({virtualmcpid:J,main:`app:${G}:${U11}`}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/${crypto.randomUUID()}?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),F={connection:!1,virtualMcp:!1},N=await XN$({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),U=$N$();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:X.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:U,connection_token:N.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:X.id,siteUrl:Y.value,connectionId:G});try{let w=GZ$(X.id,N.authorizationToken,U);H=await Z.storage.connections.create({...w,metadata:{...w.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),F.connection=!0}catch(w){H=await Tz4(Z,G,X.id,w)}}let B=await Z.storage.virtualMcps.findById(J,X.id);if(!B){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{B=await Z.storage.virtualMcps.create(X.id,Q,JZ$(X.id,H.id),{id:J}),F.virtualMcp=!0}catch(w){B=await Rz4(Z,J,X.id,w)}}if(!B.pinned)B=await Z.storage.virtualMcps.update(B.id,Q,{pinned:!0});let O=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((O?Date.now()-new Date(O.createdAt).getTime():Number.POSITIVE_INFINITY)<zz4){let E=(await Z.storage.organizationSettings.get(X.id))?.flags,j={};if(E?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(X.id,{flags:j})}return{connection:H,virtualMcp:B,reportApp:{connectionId:H.id,virtualMcpId:B.id,toolName:U11},created:F}}})});var FN$=L(()=>{JN$();KN$();WN$();HN$()});var O11=v((NN$)=>{Object.defineProperty(NN$,"__esModule",{value:!0});NN$.kvPrefix=NN$.KvWatchInclude=void 0;NN$.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};NN$.kvPrefix="KV_"});var TN$=v((PN$)=>{Object.defineProperty(PN$,"__esModule",{value:!0});PN$.KvStatusImpl=PN$.Bucket=PN$.Kvm=PN$.kvOperationHdr=void 0;PN$.Base64KeyCodec=Mz4;PN$.NoopKvCodecs=L11;PN$.defaultBucketOpts=ON$;PN$.validateKey=LN$;PN$.validateSearchKey=DN$;PN$.hasWildcards=wN$;PN$.validateBucket=UJ0;var n5=QG(),H5=g70(),p5=O11();function Mz4(){let $=(Z,X)=>{let Q=[];for(let Y of Z.split("."))switch(Y){case">":case"*":Q.push(Y);break;default:Q.push(X(Y));break}return Q.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function L11(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function ON$(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:L11(),storage:H5.StorageType.File}}PN$.kvOperationHdr="KV-Operation";var BN$="$KV",Vz4=/^[-/=.\w]+$/,kz4=/^[-/=.>*\w]+$/,Sz4=/^[-\w]+$/;function LN$($){if($.startsWith(".")||$.endsWith(".")||!Vz4.test($))throw Error(`invalid key: ${$}`)}function DN$($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!kz4.test($))throw Error(`invalid key: ${$}`)}function wN$($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),X=!1;for(let Q=0;Q<Z.length;Q++)switch(Z[Q]){case"*":X=!0;break;case">":if(Q!==Z.length-1)throw Error(`invalid key: ${$}`);X=!0;break;default:}return X}function UJ0($){if(!Sz4.test($))throw Error(`invalid bucket name: ${$}`)}class EN${js;constructor($){this.js=(0,H5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:X,min:Q}=this.js.nc.features.get(n5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return Ph.bind(this.js,$,Z);return Ph.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(p5.kvPrefix)});Y.forEach((J)=>{J.config.sealed=J.config.sealed||!1,J.config.deny_delete=J.config.deny_delete||!1,J.config.deny_purge=J.config.deny_purge||!1,J.config.allow_rollup_hdrs=J.config.allow_rollup_hdrs||!1});let G="";if(Y.length)G=this.js.nc.info?.cluster??"";return Y.map((J)=>{return new BJ0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new H5.ListerImpl(Z,$,this.js)}}PN$.Kvm=EN$;class Ph{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){UJ0($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=BN$,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){UJ0(Z);let Q=await $.jetstreamManager(),Y=new Ph(Z,$,Q);return await Y.init(X),Y}static async bind($,Z,X={}){let Q=$.getOptions()?.checkAPI||X.bindOnly===!1,Y=await $.jetstreamManager(Q),G={config:{allow_direct:X.allow_direct}};UJ0(Z);let J=new Ph(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||L11(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(ON$(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=H5.RetentionPolicy.Limits,X.max_msgs_per_subject=Z.history,Z.max_bytes)X.max_bytes=Z.max_bytes;if(X.max_msg_size=Z.maxValueSize,X.storage=Z.storage,$.placement)X.placement=$.placement;if($.republish)X.republish=$.republish;if($.description)X.description=$.description;if($.markerTTL)X.allow_msg_ttl=!0,X.subject_delete_marker_ttl=(0,n5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(p5.kvPrefix))H.name=`${p5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let N=Object.assign({},F),U=N.name.startsWith(p5.kvPrefix)?N.name.substring(p5.kvPrefix.length):N.name;if(!N.name.startsWith(p5.kvPrefix))N.name=`${p5.kvPrefix}${N.name}`;if(!F.external&&U!==this.bucket)N.subject_transforms=[{src:`$KV.${U}.>`,dest:`$KV.${this.bucket}.>`}];return N});X.sources=H,X.subjects=[this.subjectForBucket()]}else X.subjects=[this.subjectForBucket()];if($.metadata)X.metadata=$.metadata;if(typeof $.compression==="boolean")X.compression=$.compression?H5.StoreCompression.S2:H5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,n5.compare)(Y,(0,n5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?H5.DiscardPolicy.New:H5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(n5.Feature.JS_ALLOW_DIRECT);if(!J&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:J,X.allow_direct=$.allow_direct,this.direct=X.allow_direct,X.num_replicas=Z.replicas,Z.ttl)X.max_age=(0,n5.nanos)(Z.ttl);X.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(X.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(X);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let X=Z.name;if(X.startsWith(p5.kvPrefix))X=X.substring(p5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(p5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${Q}`,this.editPrefix=`${Z.external.api}.$KV.${X}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${p5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let X=[];if(Z){if(this.useJsPrefix)X.push(this.js.apiPrefix);if(this.editPrefix!=="")X.push(this.editPrefix);else X.push(this.prefix)}else if(this.prefix)X.push(this.prefix);return X.push($),X.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${BN$}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.encode(X));break}return Z.join(".")}decodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.decode(X));break}return Z.join(".")}validateKey=LN$;validateSearchKey=DN$;hasWildcards=wN$;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(H5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new jN$(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new zN$(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,X){let Q;try{let G={previousSeq:0},J=await this._put($,Z,G,X);return Promise.resolve(J)}catch(G){if(Q=G,G instanceof H5.JetStreamApiError){let J=G;if(J.code!==H5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==H5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(G)}}let Y=0;try{let G=await this.get($);if(G?.operation==="DEL"||G?.operation==="PURGE")return Y=G!==null?G.revision:0,this._put($,Z,{previousSeq:Y},X);else return Promise.reject(Q)}catch(G){return Promise.reject(G)}}update($,Z,X,Q){if(X<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:X,timeout:Q})}async _put($,Z,X={},Q){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:X?.timeout};if(X.previousSeq!==void 0){let J=(0,n5.headers)();G.headers=J,J.set(H5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,n5.headers)()).set(H5.PubHeaders.MessageTTL,Q);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,X={}){return this._put($,Z,X)}async get($,Z){let X=this.encodeKey($);this.validateKey(X);let Q={last_by_subj:this.subjectForKey(X)};if(Z&&Z.revision>0)Q={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),Q);else Y=await this.jsm.streams.getMessage(this.bucketName(),Q);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==X)return null;return G}catch(G){throw G}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],X=await this.history({key:">"});await(async()=>{for await(let J of X)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),X.stop();let Q=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=Q)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),G=await Promise.all(Y);return G.unshift({success:!0,purged:0}),G.reduce((J,K)=>{return J.purged+=K.purged,J})}async _deleteOrPurge($,Z,X){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,X);let Q=await this.keys($),Y=[];for await(let G of Q)if(Y.push(this._doDeleteOrPurge(G,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,X){let Q=this.encodeKey($);this.validateKey(Q);let Y=(0,n5.headers)();if(Y.set(PN$.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(H5.JsHeaders.RollupHdr,H5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(H5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(H5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),n5.Empty,{headers:Y})}_buildCC($,Z,X={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=H5.DeliverPolicy.LastPerSubject;if(Z===p5.KvWatchInclude.AllHistory)G=H5.DeliverPolicy.All;if(Z===p5.KvWatchInclude.UpdatesOnly)G=H5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:H5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,n5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new n5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,p5.KvWatchInclude.AllHistory,X),J=await this.js.consumers.getPushConsumer(this.stream,G);if(Q._data=J,(await J.info(!0)).num_pending===0)return Q.push(Y),Q;let W=await J.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(Q.push(F),Q.received++,H.info.pending===0)Q.push(Y)}});return W.closed().then(()=>{Q.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":Q.push(()=>{Q.stop()});break}})().then(),Q.iterClosed.then(()=>{W.stop()}),Q}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(n5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new n5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=p5.KvWatchInclude.LastValue;if($.include===p5.KvWatchInclude.AllHistory)Y=p5.KvWatchInclude.AllHistory;else if($.include===p5.KvWatchInclude.UpdatesOnly)Y=p5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${n5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=H5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,F=Y===p5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let N=0,U=await K.consume({callback:(B)=>{if(!F)N++,F=N>=H;let O=this.jmToWatchEntry(B,F);if(G&&O.operation==="DEL")return;X.push(O),X.received++}});return X.iterClosed.then(()=>{U.stop()}),U.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new n5.QueuedIteratorImpl,X=this._buildCC($,p5.KvWatchInclude.LastValue,{headers_only:!0}),Q=await this.js.consumers.getPushConsumer(this.stream,X);if((await Q.info()).num_pending===0)return Z.stop(),Z;Z._data=Q;let G=await Q.consume({callback:(J)=>{let K=J.headers?.get(PN$.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(J.subject.substring(this.prefixLen));Z.push(W)}if(J.info.pending===0)G.stop()}});return(async()=>{for await(let J of G.status())switch(J.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),G.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{G.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",X=this.bucketName(),Q=await this.jsm.streams.info(X);return new BJ0(Q,Z)}}PN$.Bucket=Ph;class BJ0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(p5.kvPrefix)?this.si.config.name.substring(p5.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,n5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,n5.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==H5.StoreCompression.None;return!1}}PN$.KvStatusImpl=BJ0;class jN${bucket;sm;prefixLen;codec;constructor($,Z,X,Q){this.bucket=$,this.prefixLen=Z,this.sm=X,this.codec=Q}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(PN$.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(H5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(n5.TD.decode(this.value),$)}string(){return n5.TD.decode(this.value)}}class zN${bucket;sm;prefixLen;update;codec;constructor($,Z,X,Q,Y){this.bucket=$,this.prefixLen=Z,this.sm=X,this.update=Q,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,n5.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(PN$.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(H5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(n5.TD.decode(this.value),$)}string(){return n5.TD.decode(this.value)}}});var D11=v((OK)=>{Object.defineProperty(OK,"__esModule",{value:!0});OK.validateKey=OK.validateBucket=OK.NoopKvCodecs=OK.Kvm=OK.defaultBucketOpts=OK.Bucket=OK.Base64KeyCodec=OK.KvWatchInclude=OK.kvPrefix=void 0;var RN$=O11();Object.defineProperty(OK,"kvPrefix",{enumerable:!0,get:function(){return RN$.kvPrefix}});Object.defineProperty(OK,"KvWatchInclude",{enumerable:!0,get:function(){return RN$.KvWatchInclude}});var rj=TN$();Object.defineProperty(OK,"Base64KeyCodec",{enumerable:!0,get:function(){return rj.Base64KeyCodec}});Object.defineProperty(OK,"Bucket",{enumerable:!0,get:function(){return rj.Bucket}});Object.defineProperty(OK,"defaultBucketOpts",{enumerable:!0,get:function(){return rj.defaultBucketOpts}});Object.defineProperty(OK,"Kvm",{enumerable:!0,get:function(){return rj.Kvm}});Object.defineProperty(OK,"NoopKvCodecs",{enumerable:!0,get:function(){return rj.NoopKvCodecs}});Object.defineProperty(OK,"validateBucket",{enumerable:!0,get:function(){return rj.validateBucket}});Object.defineProperty(OK,"validateKey",{enumerable:!0,get:function(){return rj.validateKey}})});var w11=v((LL)=>{Object.defineProperty(LL,"__esModule",{value:!0});LL.NoopKvCodecs=LL.Kvm=LL.defaultBucketOpts=LL.Bucket=LL.Base64KeyCodec=LL.KvWatchInclude=void 0;var cz4=D11();Object.defineProperty(LL,"KvWatchInclude",{enumerable:!0,get:function(){return cz4.KvWatchInclude}});var ko=D11();Object.defineProperty(LL,"Base64KeyCodec",{enumerable:!0,get:function(){return ko.Base64KeyCodec}});Object.defineProperty(LL,"Bucket",{enumerable:!0,get:function(){return ko.Bucket}});Object.defineProperty(LL,"defaultBucketOpts",{enumerable:!0,get:function(){return ko.defaultBucketOpts}});Object.defineProperty(LL,"Kvm",{enumerable:!0,get:function(){return ko.Kvm}});Object.defineProperty(LL,"NoopKvCodecs",{enumerable:!0,get:function(){return ko.NoopKvCodecs}})});function OJ0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class j11{options;kv=null;codec=OJ0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new qN$.Kvm($).create(dz4,{storage:IN$.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let X=await this.kv.get(`${$}.${Z}`);if(!X?.value?.length)return null;if(X.operation==="DEL"||X.operation==="PURGE")return null;return this.codec.decode(X.value)}catch{return null}}async set($,Z,X){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(X))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(X)=>{try{await this.kv.delete(`${X}.${$}`)}catch{}}))}teardown(){this.kv=null}}function mz4($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function LJ0($){return $ instanceof j1&&$.code===M1.MethodNotFound}function iz4($){return $ instanceof j1&&$.code===-32000&&/connection closed/i.test($.message)}async function wL($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(LJ0(H))return[];return So.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await Q.get($,Z);if(K===null)try{let H=await X();return Q.set($,Z,H).catch(()=>{}),E11.set(J,Date.now()),So.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(LJ0(H))return Q.set($,Z,[]).catch(()=>{}),[];return So.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(So.add(1,{type:$,outcome:"hit",stage:"hit"}),mz4(E11.get(J),Date.now(),G)&&!DJ0.has(J)){DJ0.add(J),E11.set(J,Date.now());let H=X().then((F)=>Q.set($,Z,F)).catch((F)=>{if(LJ0(F)||iz4(F)){if(LJ0(F))Q.set($,Z,[]).catch(()=>{});return}So.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>DJ0.delete(J));Y?.(H)}return K}function z11($){MN$=$}function U9(){return MN$}var IN$,qN$,So,dz4="DECOCMS_MCP_LISTS",DJ0,E11,DL=30000,MN$=null;var OG=L(()=>{F9();v6();IN$=k(uE(),1),qN$=k(w11(),1),So=P$.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});DJ0=new Set;P$.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(DJ0.size));E11=new Map});async function P11($,Z,X){let Q=new AbortController,Y,G=new Promise((K,W)=>{Y=setTimeout(()=>{Q.abort(),W(new VN$($.id,X))},X)}),J=(async()=>{let K=await z5($,Z,!0);try{return(await K.listTools(void 0,{timeout:X,signal:Q.signal})).tools}finally{await K.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,G])}finally{if(Y)clearTimeout(Y)}}var VN$;var kN$=L(()=>{Co();VN$=class VN$ extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});function wJ0($){return(Z)=>{if(Z instanceof j1&&Z.code===M1.MethodNotFound)return $;throw Z}}var SN$=L(()=>{F9()});function EJ0($,Z,X){let Q=EL($,Z,X,U9()??void 0),Y=$j(Q,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:pz4,toolCallTimeoutMs:sy});Y.server.setRequestHandler(KO,async()=>{return await Q.listResources().catch(wJ0({resources:[]}))}),Y.server.setRequestHandler(WO,async()=>{return await Q.listResourceTemplates().catch(wJ0({resourceTemplates:[]}))}),Y.server.setRequestHandler(HO,async()=>{return await Q.listPrompts().catch(wJ0({prompts:[]}))});let G=Y.close.bind(Y);return Y.close=async()=>{await G(),await Q.close().catch(()=>{})},Y}var pz4;var CN$=L(()=>{KQ();F9();_o();OG();SN$();pz4={tools:{},resources:{},prompts:{}}});var kN=L(()=>{Co();kN$();CN$()});function vo($,Z,X){if(Z.some((Q)=>Q!=="*"&&Q.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${X}_self`}}function xo($,Z){let X=new Map;for(let Q of Z){if(Q==="*")continue;let[Y,G]=HG0(Q);if(!nz4.has(G))continue;let J=mt(Y,$);if(typeof J!=="object"||J===null||!("value"in J))continue;let K=J.value;if(typeof K!=="string")continue;X.set(`${K}:${G}`,{targetConnectionId:K,scope:G})}return[...X.values()]}async function fo($,Z,X,Q){for(let J of Z){if(J==="*")continue;let[K]=HG0(J),W=mt(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=cG$($,Z),G=`${X}_self`;for(let J of Y){if(J===G)continue;let K=await Q.storage.connections.findById(J);if(!K||K.organization_id!==X)throw Error(`Referenced connection not found: ${J}`);try{await Q.access.check(J)}catch(W){throw Error(`Access denied to referenced connection: ${J}. ${W.message}`)}}}var nz4;var A11=L(()=>{Re0();mQ0();nz4=new Set([lQ0,dQ0])});import{z as _N$}from"zod";var tz4,oz4,T11;var vN$=L(()=>{f4();k0();V$();OG();kN();A11();To();lW();tz4=_N$.object({data:WX0.describe("Data for the new connection (id is auto-generated if not provided)")}),oz4=_N$.object({item:QX.describe("The created connection entity")}),T11=c({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:tz4,outputSchema:oz4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create connection");let Y={...$.data,organization_id:X.id,created_by:Q};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===X.id)throw Error("Connection already exists in organization")}if(Y.connection_type==="VIRTUAL"){let N=jy(Y.connection_url);if(!N)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let U=await Z.storage.virtualMcps.findById(N);if(!U)throw Error(`Virtual MCP not found: ${N}`);if(U.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=zy(N)}if(Y.connection_type==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=await UL({id:`pending-${Date.now()}`,title:Y.title,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:Y.connection_token,connection_headers:Y.connection_headers}).catch(()=>null),J=G?.tools?.length?G.tools:null,K=G?.scopes?.length?G.scopes:Y.configuration_scopes??null,W=Y.configuration_state??null;if(W&&K?.length)vo(W,K,X.id),await fo(W,K,X.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?xo(W,K):[];if(F.length>0){let N;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:H.id,createdBy:Q,grants:F});let{plaintextToken:U,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:H.id});N=B.id,await(await z5(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:H.id,token:U}}})}catch(U){if(N)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:H.id,tokenId:N});throw await Z.storage.connections.delete(H.id),U}}if(J)U9()?.set("tools",H.id,J).catch(()=>{});return h1.capture({distinctId:Q,event:"connection_created",groups:{organization:X.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:X.id,tools_count:J?.length??0}}),{item:H}}})});import{z as VJ}from"zod/v4";import{z as xN$}from"zod/v4";import{z as jJ0}from"zod/v4";import{z as NH}from"zod/v4";import{z as ez4}from"zod/v4";import{z as aj}from"zod/v4";import{z as UH}from"zod/v4";import{z as pZ}from"zod/v4";import{z as fN$}from"zod/v4";import{z as AJ0}from"zod/v4";import{z as AP4}from"zod/v4";import{z as bN$}from"zod/v4";import{z as zJ0}from"zod/v4";import{z as CP4}from"zod/v4";function bo($,Z){if($===Z)return!0;if($==null||Z==null)return $===Z;if(typeof $!==typeof Z)return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((X,Q)=>bo(X,Z[Q]))}if(typeof $==="object"&&typeof Z==="object"){let X=Object.keys($),Q=Object.keys(Z);if(X.length!==Q.length)return!1;return X.every((Y)=>Q.includes(Y)&&bo($[Y],Z[Y]))}return!1}function jP4(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((X)=>{if(Z.some((Y)=>bo(X,Y)))return!1;return Z.push(X),!0})}}function PJ0($,Z){return $.safeParse(Z).success}function q7($){if(typeof $==="boolean")return $?VJ.any():VJ.never();let Z={};for(let Y of fP4)Y.apply(Z,$);let X=[];if(Z.string!==!1)X.push(Z.string||VJ.string());if(Z.number!==!1)X.push(Z.number||VJ.number());if(Z.boolean!==!1)X.push(Z.boolean||VJ.boolean());if(Z.null!==!1)X.push(Z.null||VJ.null());if(Z.array!==!1)X.push(Z.array||VJ.array(VJ.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)X.push(Z.tuple);if(Z.object!==!1)if(Z.object)X.push(Z.object);else{let Y=VJ.custom((G)=>{return typeof G==="object"&&G!==null&&!Array.isArray(G)},"Must be an object, not an array");X.push(Y)}if(Z.file!==!1&&Z.file!==void 0)X.push(Z.file);let Q;if(X.length===0)Q=VJ.never();else if(X.length===1)Q=X[0];else if(!Object.keys($).some((G)=>G!=="$schema"&&G!=="title"&&G!=="description"))Q=VJ.any();else Q=VJ.union(X);for(let Y of bP4)Q=Y.apply(Q,$);return Q}var rz4=class{apply($,Z){if(!Z.type)return;let X=Array.isArray(Z.type)?Z.type:[Z.type],Q=new Set(X);if(!Q.has("string"))$.string=!1;if(!Q.has("number")&&!Q.has("integer"))$.number=!1;if(!Q.has("boolean"))$.boolean=!1;if(!Q.has("null"))$.null=!1;if(!Q.has("array"))$.array=!1;if(!Q.has("object"))$.object=!1;if(Q.has("integer")&&$.number!==!1){let Y=$.number||xN$.number();if(Y instanceof xN$.ZodNumber)$.number=Y.int()}}},az4=class{apply($,Z){if(Z.const===void 0)return;let X=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof X==="string")$.string=jJ0.literal(X);else if(typeof X==="number")$.number=jJ0.literal(X);else if(typeof X==="boolean")$.boolean=jJ0.literal(X);else if(X===null)$.null=jJ0.null();else if(Array.isArray(X))$.array=void 0;else if(typeof X==="object")$.object=void 0}},sz4=class{apply($,Z){if(!Z.enum)return;if(Z.enum.length===0){if(!Z.type)$.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1;return}let X={string:Z.enum.filter((Q)=>typeof Q==="string"),number:Z.enum.filter((Q)=>typeof Q==="number"),boolean:Z.enum.filter((Q)=>typeof Q==="boolean"),null:Z.enum.filter((Q)=>Q===null),array:Z.enum.filter((Q)=>Array.isArray(Q)),object:Z.enum.filter((Q)=>typeof Q==="object"&&Q!==null&&!Array.isArray(Q))};$.string=this.createTypeSchema(X.string,"string"),$.number=this.createTypeSchema(X.number,"number"),$.boolean=this.createTypeSchema(X.boolean,"boolean"),$.null=X.null.length>0?NH.null():!1,$.array=X.array.length>0?void 0:!1,$.object=X.object.length>0?void 0:!1}createTypeSchema($,Z){if($.length===0)return!1;if($.length===1)return NH.literal($[0]);if(Z==="string")return NH.enum($);if(Z==="number"){let[X,Q,...Y]=$;return NH.union([NH.literal(X),NH.literal(Q),...Y.map((G)=>NH.literal(G))])}if(Z==="boolean")return NH.union([NH.literal(!0),NH.literal(!1)]);return!1}},$P4=class{apply($,Z){let X=Z;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let Q=ez4.file();if(X.minLength!==void 0)Q=Q.min(X.minLength);if(X.maxLength!==void 0)Q=Q.max(X.maxLength);if(X.contentMediaType!==void 0)Q=Q.mime(X.contentMediaType);$.file=Q,$.string=!1}}},ZP4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minLength!==void 0||X.maxLength!==void 0||X.pattern!==void 0)){if($.string===void 0)$.string=aj.string()}}},XP4=class{apply($,Z){let X=Z;if(X.minLength===void 0)return;if($.string!==!1){let Q=$.string||aj.string();if(Q instanceof aj.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},QP4=class{apply($,Z){let X=Z;if(X.maxLength===void 0)return;if($.string!==!1){let Q=$.string||aj.string();if(Q instanceof aj.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},YP4=class{apply($,Z){let X=Z;if(!X.pattern)return;if($.string!==!1){let Q=$.string||aj.string();if(Q instanceof aj.ZodString){let Y=new RegExp(X.pattern);$.string=Q.regex(Y)}}}},GP4=class{apply($,Z){let X=Z;if(X.minimum===void 0)return;if($.number!==!1){let Q=$.number||UH.number();if(Q instanceof UH.ZodNumber)$.number=Q.min(X.minimum)}}},JP4=class{apply($,Z){let X=Z;if(X.maximum===void 0)return;if($.number!==!1){let Q=$.number||UH.number();if(Q instanceof UH.ZodNumber)$.number=Q.max(X.maximum)}}},KP4=class{apply($,Z){let X=Z;if(X.exclusiveMinimum===void 0)return;if($.number!==!1){let Q=$.number||UH.number();if(Q instanceof UH.ZodNumber)if(typeof X.exclusiveMinimum==="number")$.number=Q.gt(X.exclusiveMinimum);else $.number=!1}}},WP4=class{apply($,Z){let X=Z;if(X.exclusiveMaximum===void 0)return;if($.number!==!1){let Q=$.number||UH.number();if(Q instanceof UH.ZodNumber)if(typeof X.exclusiveMaximum==="number")$.number=Q.lt(X.exclusiveMaximum);else $.number=!1}}},HP4=class{apply($,Z){let X=Z;if(X.multipleOf===void 0)return;if($.number!==!1){let Q=$.number||UH.number();if(Q instanceof UH.ZodNumber)$.number=Q.refine((Y)=>{if(X.multipleOf===0)return!1;let G=Y/X.multipleOf,J=Math.round(G),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(X.multipleOf)*Number.EPSILON*10);return Math.abs(G-J)<=K/Math.abs(X.multipleOf)},{message:`Must be a multiple of ${X.multipleOf}`})}}},FP4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minItems!==void 0||X.maxItems!==void 0||X.items!==void 0||X.prefixItems!==void 0)){if($.array===void 0)$.array=pZ.array(pZ.any())}}},NP4=class{apply($,Z){let X=Z;if(X.minItems===void 0)return;if($.array!==!1)$.array=($.array||pZ.array(pZ.any())).min(X.minItems)}},UP4=class{apply($,Z){let X=Z;if(X.maxItems===void 0)return;if($.array!==!1)$.array=($.array||pZ.array(pZ.any())).max(X.maxItems)}},BP4=class{apply($,Z){let X=Z;if($.array===!1)return;if(Array.isArray(X.items))$.array=$.array||pZ.array(pZ.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let Q=q7(X.items),Y=pZ.array(Q);if($.array&&$.array instanceof pZ.ZodArray){let G=$.array._def;if(G.checks)G.checks.forEach((J)=>{if(J._zod&&J._zod.def){let K=J._zod.def;if(K.check==="min_length"&&K.minimum!==void 0)Y=Y.min(K.minimum);else if(K.check==="max_length"&&K.maximum!==void 0)Y=Y.max(K.maximum)}})}$.array=Y}else if(typeof X.items==="boolean"&&X.items===!1)if(!X.prefixItems)$.array=pZ.array(pZ.any()).max(0);else $.array=$.array||pZ.array(pZ.any());else if(typeof X.items==="boolean"&&X.items===!0)$.array=$.array||pZ.array(pZ.any());else if(X.prefixItems)$.array=$.array||pZ.array(pZ.any())}},OP4=class{apply($,Z){if(Z.type!=="array")return;let X=Z;if(!Array.isArray(X.items))return;if($.array===!1)return;let Q=X.items.map((G)=>q7(G)),Y;if(Q.length===0)Y=fN$.tuple([]);else Y=fN$.tuple(Q);if(X.minItems!==void 0&&X.minItems>Q.length)Y=!1;if(X.maxItems!==void 0&&X.maxItems<Q.length)Y=!1;$.tuple=Y,$.array=!1}},LP4=class{apply($,Z){let X=Z;if($.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)$.object=$.object||AJ0.object({}).passthrough()}},DP4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if($.object===void 0)$.object=AJ0.object({}).passthrough()}}},wP4=class{apply($,Z){let X=Z;if(X.maxProperties===void 0)return;if($.object!==!1){let Q=$.object||AJ0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},EP4=class{apply($,Z){let X=Z;if(X.minProperties===void 0)return;if($.object!==!1){let Q=$.object||AJ0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},zP4=class{apply($,Z){if(!Z.not)return $;let X=q7(Z.not);return $.refine((Q)=>!PJ0(X,Q),{message:"Value must not match the 'not' schema"})}},PP4=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(jP4(),{message:"Array items must be unique"})}},TP4=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((Q)=>q7(Q)).reduce((Q,Y)=>AP4.intersection(Q,Y),$)}},RP4=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let X=Z.anyOf.length===1?q7(Z.anyOf[0]):bN$.union([q7(Z.anyOf[0]),q7(Z.anyOf[1]),...Z.anyOf.slice(2).map((Q)=>q7(Q))]);return bN$.intersection($,X)}},IP4=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let X=Z.oneOf.map((Q)=>q7(Q));return $.refine((Q)=>{let Y=0;for(let G of X)if(G.safeParse(Q).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},qP4=class{apply($,Z){let X=Z;if(X.prefixItems&&Array.isArray(X.prefixItems)){let Y=X.prefixItems.map((G)=>q7(G));return $.refine((G)=>{if(!Array.isArray(G))return!0;for(let J=0;J<Math.min(G.length,Y.length);J++)if(!PJ0(Y[J],G[J]))return!1;if(G.length>Y.length){if(typeof X.items==="boolean"&&X.items===!1)return!1;else if(X.items&&typeof X.items==="object"&&!Array.isArray(X.items)){let J=q7(X.items);for(let K=Y.length;K<G.length;K++)if(!PJ0(J,G[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},MP4=class{apply($,Z){let X=Z;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return $;if($ instanceof zJ0.ZodObject||$ instanceof zJ0.ZodRecord){let Q={};if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0)Q[Y]=q7(G)}if(X.required&&Array.isArray(X.required)){let Y=new Set(X.required);for(let G of Object.keys(Q))if(!Y.has(G))Q[G]=Q[G].optional()}else for(let Y of Object.keys(Q))Q[Y]=Q[Y].optional();if(X.additionalProperties===!1)return zJ0.object(Q);else return zJ0.object(Q).passthrough()}return $.refine((Q)=>{if(typeof Q!=="object"||Q===null||Array.isArray(Q))return!0;if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0){if(Object.getOwnPropertyDescriptor(Q,Y)!==void 0){if(!q7(G).safeParse(Q[Y]).success)return!1}}}if(X.required&&Array.isArray(X.required)){for(let Y of X.required)if(Object.getOwnPropertyDescriptor(Q,Y)===void 0)return!1}if(X.additionalProperties===!1&&X.properties){let Y=new Set(Object.keys(X.properties));for(let G in Q)if(!Y.has(G))return!1}return!0},{message:"Object constraints validation failed"})}},VP4=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let X=Z.enum.filter((Q)=>Array.isArray(Q)||typeof Q==="object"&&Q!==null);if(X.length===0)return $;return $.refine((Q)=>{if(typeof Q!=="object"||Q===null)return!0;return X.some((Y)=>bo(Q,Y))},{message:"Value must match one of the enum values"})}},kP4=class{apply($,Z){if(Z.const===void 0)return $;let X=Z.const;if(typeof X!=="object"||X===null)return $;return $.refine((Q)=>bo(Q,X),{message:"Value must equal the const value"})}},SP4=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},_P4=class{apply($,Z){var X;let Q=Z;if(!((X=Q.required)==null?void 0:X.includes("__proto__"))||Z.type!==void 0)return $;return CP4.any().refine((Y)=>this.validateRequired(Y,Q.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((X)=>Object.prototype.hasOwnProperty.call($,X))}},vP4=class{apply($,Z){var X;let Q=Z;if(Q.contains===void 0)return $;let Y=q7(Q.contains),G=(X=Q.minContains)!=null?X:1,J=Q.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(PJ0(Y,H))W++;if(W<G)return!1;if(J!==void 0&&W>J)return!1;return!0},{message:"Array must contain required items matching the schema"})}},xP4=class{apply($,Z){let{default:X}=Z;if(X===void 0)return $;if(!$.safeParse(X).success)return $;return $.default(X)}},fP4,bP4;var yN$=L(()=>{fP4=[new az4,new sz4,new rz4,new $P4,new ZP4,new FP4,new DP4,new XP4,new QP4,new YP4,new GP4,new JP4,new KP4,new WP4,new HP4,new OP4,new NP4,new UP4,new BP4,new wP4,new EP4,new LP4],bP4=[new _P4,new VP4,new kP4,new TP4,new RP4,new IP4,new qP4,new MP4,new vP4,new zP4,new PP4,new xP4,new SP4]});class R11{constructor($){this._url=$}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{this._socket=new WebSocket(this._url,yP4),this._socket.onerror=(X)=>{let Q="error"in X?X.error:Error(`WebSocket error: ${JSON.stringify(X)}`);Z(Q),this.onerror?.(Q)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(X)=>{let Q;try{Q=KG.parse(JSON.parse(X.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(Q)}})}async close(){this._socket?.close()}send($){return new Promise((Z,X)=>{if(!this._socket){X(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var yP4="mcp";var gN$=L(()=>{F9()});function gP4($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let X=Z?.params?.protocolVersion;if(!X)return null;return{type:"emit",message:{result:{protocolVersion:X,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Z.jsonrpc??"2.0",id:Z.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var TJ0;var I11=L(()=>{dy();TJ0=class TJ0 extends oW{constructor($,Z){super($,Z)}send($,Z){let X=gP4($);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var hN$,uN$=async($,Z,X)=>{let Q=hP4($.connection,Z,X);if(!Q)throw Error("Unknown MCP connection type");let Y=new hN$({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(Q),{client:Y}},hP4=($,Z,X)=>{if($.type==="Websocket")return new R11(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...X??{},..."headers"in $?$.headers||{}:{}};if($.type==="SSE"){let G={requestInit:{headers:Y,signal:Z}};if($.token)G.eventSourceInit={fetch:(J,K)=>{return fetch(J,{...K,headers:{...Y,Accept:"text/event-stream"},signal:Z})}};return new jN(new URL($.url),G)}return new TJ0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var cN$=L(()=>{nW();zn();gN$();F9();KQ();I11();hN$=class hN$ extends p9{constructor($,Z){super($,{jsonSchemaValidator:j5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},fp,Z)}}});function cP4($,Z){if(sj.set($,Z),sj.size>uP4){let X=sj.keys().next().value;if(X!==void 0)sj.delete(X)}}function mN$($){let Z=(X)=>{if("connection"in $)return uN$({connection:$.connection},void 0,X);return $.client};return new Proxy({},{get(X,Q){if(Q==="toJSON")return null;if(typeof Q!=="string")throw Error("Name must be a string");if(Q==="listTools")return K;async function Y(W,H=Q){let F=$?.debugId?.(),N=F?{"x-trace-debug-id":F}:void 0,{client:U}=await Z(N),{structuredContent:B,isError:O,content:D}=await U.callTool({name:String(H),arguments:W});if(O){let E=D?.[0]?.text,j=typeof E==="string"?lN$(E):null,z=j?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(j.code,j.message,j.traceId):null;if(z)throw z;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(B??D)}`)}if(B!==void 0)return B;let w=D?.[0]?.text;return typeof w==="string"?lN$(w):void 0}async function G(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function J(){if(!("connection"in $))return G();let W=$.connection,H=JSON.stringify(W);try{if(!sj.has(H))cP4(H,G());return await sj.get(H)}catch(F){console.error("Failed to list tools",F),sj.delete(H);return}}async function K(){return(await J()??[]).map((H)=>dN$(H,Y))}return Y.asTool=async()=>{let H=(await J()??[]).find((F)=>F.name===Q);if(!H)throw Error(`Tool ${Q} not found`);return dN$(H,Y)},Y}})}var lN$=($)=>{try{return JSON.parse($)}catch{return $}},uP4=500,sj,dN$=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?q7($.inputSchema):void 0,outputSchema:$.outputSchema?q7($.outputSchema):void 0,execute:(X)=>{return Z(X.context,$.name)}}};var iN$=L(()=>{yN$();cN$();sj=new Map});function jL($){return mN$($)}var Ah;var q11=L(()=>{iN$();Ah=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(X)=>jL({connection:X});if(Z==="forClient")return(X)=>jL({client:X});return globalThis[Z]}})});function RJ0($){return{isImplementedBy:(Z)=>{for(let X of $){let Q=typeof X.name==="string"?new RegExp(`^${X.name}$`):X.name,Y=Z.find((G)=>Q.test(G.name));if(!Y&&X.opt)continue;if(!Y)return!1}return!0}}}var BH=($)=>{return{...RJ0($),forClient:(Z)=>{return jL({client:Z})},forConnection:(Z)=>{return jL({connection:Z})}}};var ej=L(()=>{q11()});import{z as t5}from"zod";var pN$,IJ0,nN$,qJ0,tN$,lP4;var oN$=L(()=>{ej();pN$=t5.object({specversion:t5.literal("1.0").describe("CloudEvents specification version"),id:t5.string().describe("Unique identifier for this event (UUID recommended)"),source:t5.string().describe("Connection ID of the event publisher"),type:t5.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:t5.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:t5.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:t5.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:t5.string().url().optional().describe("URI to the schema for the data attribute"),data:t5.unknown().optional().describe("Event payload (any JSON value)")}),IJ0=t5.object({events:t5.array(pN$).min(1).describe("Batch of CloudEvents to process")}),nN$=t5.object({success:t5.boolean().optional().describe("Whether this event was processed successfully"),error:t5.string().optional().describe("Error message for this event"),retryAfter:t5.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),qJ0=t5.object({success:t5.boolean().optional().describe("Batch success - applies to events not in results"),error:t5.string().optional().describe("Batch error message - applies to events not in results"),processedCount:t5.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:t5.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:t5.record(t5.string(),nN$).optional().describe("Per-event results keyed by event ID")}),tN$=[{name:"ON_EVENTS",inputSchema:IJ0,outputSchema:qJ0}],lP4=BH(tN$)});import{z as o5}from"zod";var rN$,aN$,sN$,eN$,$U$,ZU$,MJ0,M11;var V11=L(()=>{ej();rN$=o5.object({type:o5.literal("string"),enum:o5.array(o5.string()).optional(),description:o5.string().optional()}),aN$=o5.object({type:o5.string(),description:o5.string(),paramsSchema:o5.record(o5.string(),rN$)}),sN$=o5.object({}),eN$=o5.object({triggers:o5.array(aN$)}),$U$=o5.object({type:o5.string(),params:o5.record(o5.string(),o5.string()),enabled:o5.boolean(),callbackUrl:o5.url().optional(),callbackToken:o5.string().min(1).optional()}),ZU$=o5.object({success:o5.boolean()}),MJ0=[{name:"TRIGGER_LIST",inputSchema:sN$,outputSchema:eN$},{name:"TRIGGER_CONFIGURE",inputSchema:$U$,outputSchema:ZU$}],M11=BH(MJ0)});import{z as _$}from"zod";var dP4,mP4,iP4,pP4,nP4,tP4,oP4,rP4,aP4,sP4,eP4,$A4,$z;var yo=L(()=>{dP4=_$.object({prefix:_$.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:_$.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:_$.string().optional().describe("Token for pagination from previous response"),delimiter:_$.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),mP4=_$.object({objects:_$.array(_$.object({key:_$.string().describe("Object key/path"),size:_$.number().describe("Object size in bytes"),lastModified:_$.string().describe("Last modified timestamp"),etag:_$.string().describe("Entity tag for the object")})),nextContinuationToken:_$.string().optional().describe("Token for fetching next page of results"),isTruncated:_$.boolean().describe("Whether there are more results available"),commonPrefixes:_$.array(_$.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),iP4=_$.object({key:_$.string().describe("Object key/path to get metadata for")}),pP4=_$.object({contentType:_$.string().optional().describe("MIME type of the object"),contentLength:_$.number().describe("Size of the object in bytes"),lastModified:_$.string().describe("Last modified timestamp"),etag:_$.string().describe("Entity tag for the object"),metadata:_$.record(_$.string(),_$.string()).optional().describe("Custom metadata key-value pairs")}),nP4=_$.object({key:_$.string().describe("Object key/path to generate URL for"),expiresIn:_$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),tP4=_$.object({url:_$.string().describe("Presigned URL for downloading the object"),expiresIn:_$.number().describe("Expiration time in seconds that was used")}),oP4=_$.object({key:_$.string().describe("Object key/path for the upload"),expiresIn:_$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:_$.string().optional().describe("MIME type for the object being uploaded")}),rP4=_$.object({url:_$.string().describe("Presigned URL for uploading the object"),expiresIn:_$.number().describe("Expiration time in seconds that was used")}),aP4=_$.object({key:_$.string().describe("Object key/path to delete")}),sP4=_$.object({success:_$.boolean().describe("Whether the deletion was successful"),key:_$.string().describe("The key that was deleted")}),eP4=_$.object({keys:_$.array(_$.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),$A4=_$.object({deleted:_$.array(_$.string()).describe("Array of successfully deleted keys"),errors:_$.array(_$.object({key:_$.string(),message:_$.string()})).describe("Array of errors for failed deletions")}),$z=[{name:"LIST_OBJECTS",inputSchema:dP4,outputSchema:mP4},{name:"GET_OBJECT_METADATA",inputSchema:iP4,outputSchema:pP4},{name:"GET_PRESIGNED_URL",inputSchema:nP4,outputSchema:tP4},{name:"PUT_PRESIGNED_URL",inputSchema:oP4,outputSchema:rP4},{name:"DELETE_OBJECT",inputSchema:aP4,outputSchema:sP4},{name:"DELETE_OBJECTS",inputSchema:eP4,outputSchema:$A4}]});import{z as R6}from"zod";var XU$,QU$,YU$,go,VJ0,kJ0,SJ0,CJ0,ZA4;var k11=L(()=>{ej();XU$=R6.object({primary:R6.string().optional().describe("Primary brand color (hex)"),secondary:R6.string().optional().describe("Secondary brand color (hex)"),accent:R6.string().optional().describe("Accent / highlight color (hex)"),background:R6.string().optional().describe("Background color (hex)"),foreground:R6.string().optional().describe("Foreground / text color (hex)")}),QU$=R6.object({heading:R6.string().optional().describe("Font family for headings"),body:R6.string().optional().describe("Font family for body text"),code:R6.string().optional().describe("Font family for code / monospace")}),YU$=R6.object({logo:R6.string().optional().describe("Logo URL"),favicon:R6.string().optional().describe("Favicon URL"),ogImage:R6.string().optional().describe("Open Graph image URL")}),go=R6.object({id:R6.string(),name:R6.string().describe("Brand / company name"),domain:R6.string().optional().describe("Company domain (e.g. example.com)"),colors:XU$.optional().describe("Semantic color palette"),fonts:QU$.optional().describe("Font families by role"),assets:YU$.optional().describe("Visual identity assets"),overview:R6.string().optional().describe("Company overview / description"),tagline:R6.string().optional().describe("Brand tagline"),tone:R6.string().optional().describe("Tone of voice description"),metadata:R6.record(R6.string(),R6.unknown()).optional().describe("Extra design tokens and metadata")}),VJ0=R6.object({id:R6.string().optional().describe("Brand ID. Omit to get the default brand.")}),kJ0=R6.object({}),SJ0=R6.object({items:R6.array(go)}),CJ0=[{name:"BRAND_GET",inputSchema:VJ0,outputSchema:go},{name:"BRAND_LIST",inputSchema:kJ0,outputSchema:SJ0,opt:!0}],ZA4=BH(CJ0)});var S11=L(()=>{ej();oN$();V11();yo();k11()});import{z as R8}from"zod";function SN($){return R8.object({items:R8.array($).describe("Array of collection items"),totalCount:R8.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:R8.boolean().optional().describe("Whether there are more items available")})}function uo($){return R8.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function YA4($){return R8.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function GA4($){return R8.object({item:$.describe("The created entity with generated id")})}function JA4($){return R8.object({id:R8.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function KA4($){return R8.object({item:$.describe("The updated entity")})}function lo($){return R8.object({item:$.describe("The deleted entity")})}function vJ0($,Z,X){let Q=$.toUpperCase(),Y=X?.readOnly??!1,G=[{name:`COLLECTION_${Q}_LIST`,inputSchema:LK,outputSchema:SN(Z)},{name:`COLLECTION_${Q}_GET`,inputSchema:ho,outputSchema:uo(Z)}];if(!Y)G.push({name:`COLLECTION_${Q}_CREATE`,inputSchema:YA4(Z),outputSchema:GA4(Z),opt:!0},{name:`COLLECTION_${Q}_UPDATE`,inputSchema:JA4(Z),outputSchema:KA4(Z),opt:!0},{name:`COLLECTION_${Q}_DELETE`,inputSchema:co,outputSchema:lo(Z),opt:!0});return G}var _J0,XA4,GU$,QA4,LK,ho,co;var kJ=L(()=>{_J0=R8.object({id:R8.string().describe("Unique identifier for the entity"),title:R8.string().describe("Human-readable title for the entity"),description:R8.string().nullish().describe("Description of the entity"),created_at:R8.string().datetime(),updated_at:R8.string().datetime(),created_by:R8.string().optional(),updated_by:R8.string().optional()}),XA4=R8.object({field:R8.array(R8.string()),operator:R8.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:R8.unknown()}),GU$=R8.lazy(()=>R8.union([XA4,R8.object({operator:R8.enum(["and","or","not"]),conditions:R8.array(GU$)})])),QA4=R8.object({field:R8.array(R8.string()),direction:R8.enum(["asc","desc"]),nulls:R8.enum(["first","last"]).optional()}),LK=R8.object({where:GU$.optional().describe("Filter expression"),orderBy:R8.array(QA4).optional().describe("Sort expressions"),limit:R8.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:R8.number().int().min(0).optional().describe("Number of items to skip")});ho=R8.object({id:R8.string().describe("ID of the entity to retrieve")});co=R8.object({id:R8.string().describe("ID of the entity to delete")})});import{z as Th}from"zod";var WA4,HA4,JU$;var KU$=L(()=>{kJ();WA4=_J0.extend({avatar:Th.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:Th.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:Th.string().describe("Virtual MCP ID to use for this assistant"),model:Th.object({id:Th.string().describe("Model ID"),connectionId:Th.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),HA4=vJ0("assistant",WA4),JU$=[...HA4]});import{z as U0}from"zod";var mo,CN,HU$,FA4,NA4,FU$,UA4,BA4,OA4,LA4,DA4,wA4,NU$,EA4,jA4,zA4,PA4,AA4,TA4,RA4,IA4,qA4,MA4,Sb5,VA4,Cb5,WU$,kA4,SA4,xJ0,_b5;var UU$=L(()=>{ej();kJ();mo=U0.lazy(()=>U0.union([U0.null(),U0.string(),U0.number(),U0.boolean(),U0.record(U0.string(),mo),U0.array(mo)])),CN=U0.record(U0.string(),U0.record(U0.string(),mo)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),HU$=U0.object({type:U0.literal("text"),text:U0.string().describe("The text content"),providerOptions:CN}),FA4=U0.object({type:U0.literal("text"),text:U0.string().describe("The text content"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),NA4=U0.string().describe("File data as URL string"),FU$=U0.object({type:U0.literal("file"),filename:U0.string().optional().describe("Optional filename of the file"),data:NA4,mediaType:U0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:CN}),UA4=U0.object({type:U0.literal("file"),mediaType:U0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:U0.string().describe("Generated file data as base64 encoded string")}),BA4=U0.object({type:U0.literal("reasoning"),text:U0.string().describe("The reasoning text"),providerOptions:CN}),OA4=U0.object({type:U0.literal("reasoning"),text:U0.string().describe("The reasoning text"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),LA4=U0.object({type:U0.literal("tool-call"),toolCallId:U0.string().describe("ID of the tool call, used to match with tool result"),toolName:U0.string().describe("Name of the tool being called"),input:U0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:U0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:CN}),DA4=U0.object({type:U0.literal("tool-call"),toolCallId:U0.string().describe("ID of the tool call"),toolName:U0.string().describe("Name of the tool being called"),input:U0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:U0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),wA4=U0.union([U0.object({type:U0.literal("text"),value:U0.string()}),U0.object({type:U0.literal("json"),value:mo}),U0.object({type:U0.literal("error-text"),value:U0.string()}),U0.object({type:U0.literal("error-json"),value:mo}),U0.object({type:U0.literal("content"),value:U0.array(U0.union([U0.object({type:U0.literal("text"),text:U0.string().describe("Text content")}),U0.object({type:U0.literal("media"),data:U0.string().describe("Base-64 encoded media data"),mediaType:U0.string().describe("IANA media type")})]))}),U0.object({type:U0.literal("execution-denied"),reason:U0.string().optional()}),U0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),NU$=U0.object({type:U0.literal("tool-result"),toolCallId:U0.string().describe("ID of the tool call that this result is associated with"),toolName:U0.string().describe("Name of the tool that generated this result"),output:wA4.describe("Result of the tool call"),result:U0.unknown().describe("Unknown result of the tool call"),providerOptions:CN}),EA4=U0.object({type:U0.literal("tool-result"),toolCallId:U0.string().describe("ID of the tool call that this result is associated with"),toolName:U0.string().describe("Name of the tool that generated this result"),result:U0.any().describe("Result of the tool call (JSON-serializable)"),isError:U0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:U0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),jA4=U0.union([U0.object({type:U0.literal("source"),sourceType:U0.literal("url"),id:U0.string().describe("The ID of the source"),url:U0.string().describe("The URL of the source"),title:U0.string().optional().describe("The title of the source"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),U0.object({type:U0.literal("source"),sourceType:U0.literal("document"),id:U0.string().describe("The ID of the source"),mediaType:U0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:U0.string().describe("The title of the document"),filename:U0.string().optional().describe("Optional filename of the document"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")})]),zA4=U0.object({role:U0.literal("system"),content:U0.string().describe("System message content"),providerOptions:CN}),PA4=U0.object({role:U0.literal("user"),content:U0.array(U0.union([HU$,FU$])).describe("User message content parts (text or file)"),providerOptions:CN}),AA4=U0.object({role:U0.literal("assistant"),content:U0.array(U0.union([HU$,FU$,BA4,LA4,NU$])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:CN}),TA4=U0.object({role:U0.literal("tool"),content:U0.array(NU$).describe("Tool message content (tool results)"),providerOptions:CN}),RA4=U0.union([zA4,PA4,AA4,TA4]),IA4=U0.array(RA4).describe("A list of messages forming the prompt"),qA4=U0.object({prompt:IA4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:U0.number().optional().describe("Maximum number of tokens to generate"),temperature:U0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:U0.number().optional().describe("Nucleus sampling parameter"),topK:U0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:U0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:U0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:U0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:U0.array(U0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:U0.union([U0.object({type:U0.literal("text")}),U0.object({type:U0.literal("json"),schema:U0.any().optional().describe("JSON schema that the generated output should conform to"),name:U0.string().optional().describe("Name of output that should be generated"),description:U0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:U0.array(U0.any()).optional().describe("The tools that are available for the model"),toolChoice:U0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:U0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:U0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:U0.any().optional().describe("Additional provider-specific options")}),MA4=U0.object({content:U0.array(U0.union([FA4,UA4,OA4,DA4,EA4,jA4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:U0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:U0.looseObject({inputTokens:U0.number().optional(),outputTokens:U0.number().optional(),totalTokens:U0.number().optional(),reasoningTokens:U0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata"),request:U0.object({body:U0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:U0.object({id:U0.string().optional().describe("ID for the generated response"),timestamp:U0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:U0.string().optional().describe("The ID of the response model that was used"),headers:U0.record(U0.string(),U0.string()).optional().describe("Response headers"),body:U0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:U0.array(U0.any()).describe("Warnings for the call, e.g. unsupported settings")}),Sb5=U0.object({stream:U0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:U0.object({body:U0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:U0.object({headers:U0.record(U0.string(),U0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),VA4=U0.object({supportedUrls:U0.record(U0.string(),U0.array(U0.string())).describe("Supported URL patterns by media type for the provider")}),Cb5=U0.object({modelId:U0.string().describe("The ID of the model"),logo:U0.string().nullable(),description:U0.string().nullable(),capabilities:U0.array(U0.string()),limits:U0.object({contextWindow:U0.number(),maxOutputTokens:U0.number()}).nullable(),costs:U0.object({input:U0.number(),output:U0.number()}).nullable(),provider:U0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),WU$=U0.object({modelId:U0.string().describe("The ID of the model"),callOptions:qA4}),kA4=_J0.extend({logo:U0.string().nullable(),description:U0.string().nullable(),capabilities:U0.array(U0.string()),limits:U0.object({contextWindow:U0.number(),maxOutputTokens:U0.number()}).nullable(),costs:U0.object({input:U0.number(),output:U0.number()}).nullable(),provider:U0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),SA4=vJ0("llm",kA4,{readOnly:!0}),xJ0=[{name:"LLM_METADATA",inputSchema:U0.object({modelId:U0.string().describe("The ID of the model")}),outputSchema:VA4},{name:"LLM_DO_STREAM",inputSchema:WU$},{name:"LLM_DO_GENERATE",inputSchema:WU$,outputSchema:MA4},...SA4],_b5=BH(xJ0)});import{z as Zz}from"zod";var CA4,BU$;var OU$=L(()=>{CA4=Zz.object({scopes:Zz.array(Zz.string()).describe("List of scopes available"),stateSchema:Zz.record(Zz.string(),Zz.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),BU$=[{name:"MCP_CONFIGURATION",inputSchema:Zz.object({}),outputSchema:CA4}]});import{z as r5}from"zod";var _A4,vA4,LU$;var DU$=L(()=>{_A4=r5.object({}).strict(),vA4=r5.object({billing:r5.object({mode:r5.enum(["prepaid","postpaid"]),limitPeriod:r5.enum(["daily","weekly","monthly"]).nullable()}),limit:r5.object({total:r5.number().nullable(),remaining:r5.number().nullable(),reset:r5.string().nullable()}),usage:r5.object({total:r5.number(),daily:r5.number(),weekly:r5.number(),monthly:r5.number()}),alert:r5.object({enabled:r5.boolean(),threshold_usd:r5.number(),email:r5.string().nullable()}),connectionId:r5.string()}),LU$=[{name:"GATEWAY_USAGE",inputSchema:_A4,outputSchema:vA4},{name:"GATEWAY_SET_LIMIT",inputSchema:r5.object({}),outputSchema:r5.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:r5.object({}),outputSchema:r5.object({}),opt:!0}]});import{z as wU$}from"zod";function SJ(){return eX()===null}function fJ0($,Z){return $===b8.DEV_ASSETS(Z)}function Rh($,Z){let X=r9$(Z,$),Q=new Date().toISOString();return{id:X.id??b8.DEV_ASSETS($),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:$,created_by:"system",created_at:Q,updated_at:Q,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:xA4,bindings:["OBJECT_STORAGE"],status:"active"}}var xA4;var Ih=L(()=>{uB();yo();y8();xA4=$z.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:wU$.toJSONSchema($.inputSchema),outputSchema:wU$.toJSONSchema($.outputSchema)}))});function EU$($,Z){return $||Z===0}function jU$($,Z,X,Q,Y){let G=Z?Y+1:Y,J=$.slice(0,X),K=Q+X<G;return{items:J,totalCount:G,hasMore:K}}function zU$($,Z,X){if(!X)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function fA4($,Z){if(Z.length===0)return;let[X,...Q]=Z,Y=X==="slug"?qO($):$[X];for(let G of Q){if(Y===null||typeof Y!=="object")return;Y=Y[G]}return Y}function bA4($){let X=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${X}$`,"i")}function yA4($,Z,X){if($===void 0)return!0;switch(Z){case"eq":return X===null?$===null:$===X;case"gt":return $>X;case"gte":return $>=X;case"lt":return $<X;case"lte":return $<=X;case"in":return Array.isArray(X)&&X.includes($);case"like":return typeof $==="string"&&bA4(String(X)).test($);case"contains":return String($).toLowerCase().includes(String(X).toLowerCase());default:return!0}}function io($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:Q,conditions:Y}=Z;if(Y.length===0)return!0;switch(Q){case"and":return Y.every((G)=>io($,G));case"or":return Y.some((G)=>io($,G));case"not":return!Y.every((G)=>io($,G));default:return!0}}let X=fA4($,Z.field);return yA4(X,Z.operator,Z.value)}var PU$=L(()=>{hQ0()});import{z as zL}from"zod";var gA4=8,hA4,uA4,cA4,lA4,C11;var AU$=L(()=>{S11();KU$();kJ();UU$();OU$();yo();DU$();y8();k0();i5();OG();kN();Ih();lW();hQ0();PU$();hA4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:zL.object({})}],uA4={LLM:xJ0,LLMS:xJ0,ASSISTANTS:JU$,MCP:BU$,OBJECT_STORAGE:$z,AI_GATEWAY_BILLING:LU$,TRIGGER:MJ0,REGISTRY:hA4,BRAND:CJ0},cA4=LK.extend({binding:zL.union([zL.array(zL.object({}).passthrough()),zL.object({}).passthrough(),zL.string()]).optional(),include_virtual:zL.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:zL.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),lA4=SN(QX),C11=c({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cA4,outputSchema:lA4,handler:async($,Z)=>{await Z.access.check();let X=a(Z),Q=$.binding?typeof $.binding==="string"?(()=>{let E=uA4[$.binding.toUpperCase()];if(!E)throw Error(`Unknown binding: ${$.binding}`);return E})():$.binding:void 0,Y=Q?RJ0(Q):void 0,G=!!Y,J=$.limit??100,K=$.offset??0,W=_5(),H=b8.DEV_ASSETS(X.id),F=Rh(X.id,W),N=(!$.slug||qO(F)===$.slug)&&io(F,$.where),U=SJ()&&!G&&N,{sqlOffset:B,sqlLimit:O}=zU$(K,J,U),{items:D,totalCount:w}=await Z.storage.connections.list(X.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:G?void 0:O,offset:G?void 0:B});if(Y){let E=U9(),j=b8.SELF(X.id);await GJ0(D,gA4,async(z)=>{if(z.tools!==null)return;let A=z.id===j?async()=>{let{listManagementTools:R}=await Promise.resolve().then(() => (PL(),bJ0));return R(Z)}:()=>P11(z,Z,uQ0),P=await wL("tools",z.id,A,E,(R)=>Z.pendingRevalidations.push(R),DL);if(P!==null)z.tools=P})}if(SJ()&&EU$(G,K)&&N&&!D.some((E)=>E.id===H))D.unshift(F);if(G){let E=(await Promise.all(D.map(async(P)=>{if(!P.tools||P.tools.length===0)return null;return Y.isImplementedBy(P.tools.map((M)=>({name:M.name,inputSchema:M.inputSchema,outputSchema:M.outputSchema})))?P:null}))).filter((P)=>P!==null),j=E.length,z=E.slice(K,K+J),A=K+J<j;return{items:z,totalCount:j,hasMore:A}}return jU$(D,U,J,K,w)}})});var dA4,_11;var TU$=L(()=>{kJ();y8();k0();i5();OG();kN();Ih();lW();dA4=uo(QX),_11=c({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:ho,outputSchema:dA4,handler:async($,Z)=>{let X=a(Z);if(await Z.access.check(),SJ()&&fJ0($.id,X.id))return{item:Rh(X.id,_5())};let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)return{item:null};if(Q.tools===null){let Y=b8.SELF(X.id),G=Q.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (PL(),bJ0));return K(Z)}:async()=>{let K=await z5(Q,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},J=await wL("tools",Q.id,G,U9(),(K)=>Z.pendingRevalidations.push(K),DL);if(J!==null)Q.tools=J}return{item:Q}}})});class o6{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",$).executeTakeFirst();if(!Z)return null;return this.decryptToken(Z)}async upsert($){let Z=new Date().toISOString(),X=await this.vault.encrypt($.accessToken),Q=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null,G=$.expiresAt?.toISOString()??null,J=await this.db.insertInto("downstream_tokens").values({id:L8("dtok"),connectionId:$.connectionId,accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z})).returning(["id","createdAt"]).executeTakeFirstOrThrow();return{id:J.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:J.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint}}async delete($){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let Q=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(Q))return!0;return Q-Z<Date.now()}async decryptToken($){let Z=await this.vault.decrypt($.accessToken),X=$.refreshToken?await this.vault.decrypt($.refreshToken):null,Q=$.clientSecret?await this.vault.decrypt($.clientSecret):null;return{id:$.id,connectionId:$.connectionId,accessToken:Z,refreshToken:X,scope:$.scope,expiresAt:$.expiresAt,createdAt:$.createdAt,updatedAt:$.updatedAt,clientId:$.clientId,clientSecret:Q,tokenEndpoint:$.tokenEndpoint}}}var CJ=L(()=>{A7()});function qh(...$){if(nA4)console.log("[mcp-read-cache]",...$)}function tA4($){return $.kind==="org"?"org":`u:${$.userId}`}function v11($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(v11).join(",")}]`;return`{${Object.keys($).sort().map((X)=>`${JSON.stringify(X)}:${v11($[X])}`).join(",")}}`}class hJ0{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=mA4,Z=iA4,X=()=>Date.now(),Q=pA4){this.config=$;this.maxEntries=Z;this.now=X;this.maxTotalBytes=Q}stats(){return{entries:this.store.size,bytes:this.totalBytes}}deleteKey($){let Z=this.store.get($);if(Z)this.store.delete($),this.totalBytes-=Z.bytes}key($,Z,X,Q){return`${Z}:${tA4(X)}:${$}:${v11(Q)}`}storeSet($,Z,X,Q){let Y;try{Y=JSON.stringify(Z).length}catch{qh("SKIP non-serializable",$);return}if(Y>Q){qh("SKIP oversize",$,`${Y}b > cap ${Q}b`);return}this.deleteKey($);while(this.store.size>0&&(this.store.size>=this.maxEntries||this.totalBytes+Y>this.maxTotalBytes)){let G=this.store.keys().next().value;if(G===void 0)break;this.deleteKey(G)}this.store.set($,{value:Z,storedAt:X,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:X,scope:Q,params:Y,fetchLive:G,shouldCache:J,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,X,Q,Y),F=this.now(),N=this.store.get(H),U=N?F-N.storedAt:1/0;if(!N||U>W.maxStaleMs){yJ0.add(1,{type:Z,outcome:"miss"}),qh(N?"EXPIRED":"MISS",H);let B=await G();if(J?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else qh("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,N),U>W.revalidateAfterMs&&!this.revalidating.has(H)){yJ0.add(1,{type:Z,outcome:"stale"}),qh("STALE \u2192 serve + revalidate",H,`age=${U}ms`),this.revalidating.add(H);let B=G().then((O)=>{if(J?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{yJ0.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else yJ0.add(1,{type:Z,outcome:"hit"}),qh("HIT",H,`age=${U}ms`);return N.value}invalidate($){let Z=`${$}:`;for(let X of[...this.store.keys()])if(X.startsWith(Z))this.deleteKey(X)}}function f11(){return y0().mcpCacheEnabled}function uJ0(){return f11()?x11:null}var yJ0,gJ0=1024,RU$,mA4,iA4=2000,pA4,nA4,x11;var po=L(()=>{v6();V$();yJ0=P$.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),RU$=gJ0*gJ0,mA4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*gJ0},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*RU$},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*gJ0}},pA4=256*RU$,nA4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;x11=new hJ0;P$.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(x11.stats().entries));P$.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(x11.stats().bytes))});function MU$($){uJ0()?.invalidate($)}function Mh($){MU$($);let Z=b11?.();if(!Z)return;try{Z.publish(IU$,oA4.encode(JSON.stringify({connectionId:$,originId:qU$})))}catch(X){console.warn("[McpCacheInvalidation] publish failed (non-critical):",X)}}function VU$($){if(b11=$,no)return;let Z=$();if(!Z)return;no=Z.subscribe(IU$),(async()=>{for await(let X of no)try{let Q=JSON.parse(rA4.decode(X.data));if(Q.originId===qU$)continue;MU$(Q.connectionId)}catch{}})().catch(console.error)}function kU$(){no?.unsubscribe(),no=null,b11=void 0}var IU$="studio.mcp-cache.invalidate",qU$,oA4,rA4,b11,no=null;var to=L(()=>{po();qU$=crypto.randomUUID(),oA4=new TextEncoder,rA4=new TextDecoder});import{z as y11}from"zod";function sA4($){let Z={...$};for(let X of aA4)delete Z[X];return Z}function eA4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function XT4($,Z){return $.length===Z.length&&$.every((X,Q)=>X===Z[Q])}var aA4,$T4,ZT4,g11;var SU$=L(()=>{kN();CJ();k0();V$();OG();to();A11();To();lW();aA4=["id","organization_id","created_by","created_at"];$T4=y11.object({id:y11.string().describe("ID of the connection to update"),data:HX0.describe("Partial connection data to update")}),ZT4=y11.object({item:QX.describe("The updated connection entity")});g11=c({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:$T4,outputSchema:ZT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update connection");let{id:Y}=$,G=sA4($.data),J=G.configuration_state!==void 0||G.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==X.id)throw Error("Connection not found in organization");let W=G.connection_type??K.connection_type,H=eA4(G,K.connection_url);if(W==="VIRTUAL"){let f=jy(H);if(!f)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let b=await Z.storage.virtualMcps.findById(f);if(!b)throw Error(`Virtual MCP not found: ${f}`);if(b.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");H=zy(f)}let F=G.configuration_state??K.configuration_state??{},N=G.configuration_scopes??K.configuration_scopes??[];if(J){if(G.configuration_state!==void 0)F=G.configuration_state??{};else if(F===null||F===void 0)F={};if(G.configuration_scopes!==void 0)N=G.configuration_scopes??[];if(N.length>0){let f=F;vo(f,N,X.id),await fo(f,N,X.id,Z)}}if(W==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let U=G.connection_token??K.connection_token;if(!U)try{let b=await new o6(Z.db,Z.vault).get(Y);if(b?.accessToken)U=b.accessToken}catch{}let B=await UL({id:K.id,title:G.title??K.title,connection_type:W,connection_url:H,connection_token:U,connection_headers:G.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,D=!1;if(G.configuration_scopes===void 0&&B?.scopes?.length)D=!XT4(N,B.scopes),N=B.scopes;if(vo(F,N,X.id),D&&N.length>0)await fo(F,N,X.id,Z);let w=J||D,E=w?xo(F,N):[],j=w?xo(K.configuration_state??{},K.configuration_scopes??[]):[],z=K.configuration_state,A=z==null||Object.keys(z).length===0,P,R,M=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:j})}catch(f){console.error("Failed to restore credential grants after credential vault mutation failed",f)}},q={...G,connection_url:H,tools:null,configuration_state:F,configuration_scopes:N,updated_by:Q},S={...K,...q};if(w)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:E}),E.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:X.id,subjectConnectionId:Y})){let{plaintextToken:b,record:i}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:Y});R=i.id,P={baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:Y,token:b}}}}catch(f){if(R)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:R});throw await M(),f}if(w&&F&&N)try{await(await z5(S,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:N,firstRun:A,...P?{vault:P}:{}}})}catch(f){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",f),R)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:R});if(E.length>0)throw await M(),f}let m;try{m=await Z.storage.connections.update(Y,q)}catch(f){if(w){if(R)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:R});await M()}throw f}if(O)U9()?.set("tools",Y,O).catch(()=>{});return Mh(Y),{item:m}}})});import{z as QT4}from"zod";var YT4,h11;var CU$=L(()=>{kJ();f4();k0();OG();to();lW();YT4=co.extend({force:QT4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),h11=c({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:YT4,outputSchema:lo(QX),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q)throw Error(`Connection not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error("Connection not found in organization");if(Q.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let G=await Z.storage.virtualMcps.listByConnectionId(X.id,$.id);if(G.length>0)if($.force)await Z.storage.virtualMcps.removeConnectionReferences($.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:G.map((W)=>W.title)}));await Z.storage.connections.delete($.id);let J=await Z.storage.organizationSettings.get(X.id);if(J?.registry_config){let{registries:W,blockedMcps:H}=J.registry_config;if($.id in W){let{[$.id]:F,...N}=W;await Z.storage.organizationSettings.upsert(X.id,{registry_config:{registries:N,blockedMcps:H}})}}U9()?.invalidate($.id).catch(()=>{}),Mh($.id);let K=a0(Z);if(K)h1.capture({distinctId:K,event:"connection_deleted",groups:{organization:X.id},properties:{connection_id:Q.id,connection_type:Q.connection_type,app_name:Q.app_name??null,organization_id:X.id,forced:$.force??!1}});return{item:Q}}})});import{z as Vh}from"zod";var u11;var _U$=L(()=>{k0();u11=c({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Vh.object({id:Vh.string()}),outputSchema:Vh.object({id:Vh.string(),healthy:Vh.boolean(),latencyMs:Vh.number()}),handler:async($,Z)=>{let X=a(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var vU$=L(()=>{vN$();AU$();TU$();SU$();CU$();_U$()});import{sql as b4}from"kysely";import{z as OH}from"zod";function xU$($){if($===null||$===void 0)return"NULL";if(typeof $==="number")return String($);if(typeof $==="boolean")return $?"TRUE":"FALSE";if(typeof $==="string")return`'${$.replace(/'/g,"''")}'`;if($ instanceof Date)return`'${$.toISOString()}'`;return`'${JSON.stringify($).replace(/'/g,"''")}'`}function KT4($,Z){let X=$;for(let Y=Z.length;Y>=1;Y--){let G=`$${Y}`;if(X.includes(G))X=X.replaceAll(G,xU$(Z[Y-1]))}let Q=[];for(let Y=0;Y<X.length;Y++)if(X[Y]==="?")Q.push(Y);for(let Y=Math.min(Q.length,Z.length)-1;Y>=0;Y--){let G=Q[Y],J=xU$(Z[Y]);X=X.slice(0,G)+J+X.slice(G+1)}return X}function fU$($){return $.replace(/-/g,"_")}function HT4($){return`app_${fU$($)}`}function FT4($){return`app_role_${fU$($)}`}function NT4($){if($ instanceof Error){let Z=$.message.toLowerCase(),X=$.code;return X==="3F000"||X==="42704"||X==="22023"||Z.includes("schema")&&Z.includes("does not exist")||Z.includes("role")&&Z.includes("does not exist")}return!1}async function UT4($,Z,X){if(await b4`CREATE SCHEMA IF NOT EXISTS ${b4.id(Z)}`.execute($),!(await b4`
|
|
2237
2237
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${X}) as exists
|
|
2238
|
-
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(X)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(X)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(X)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(X)}`.execute($)}async function BT4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(Q).execute(Y)})}catch(Y){if(NT4(Y))return await UT4($,Z,X),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(Q).execute(G)});throw Y}}var JT4,WT4,bU$;var yU$=L(()=>{k0();JT4=OH.object({results:OH.array(OH.unknown()).optional(),success:OH.boolean().optional()});WT4=OH.object({sql:OH.string().describe("The SQL query to run"),params:OH.array(OH.any()).describe("The parameters to pass to the SQL query").optional()});bU$=c({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:WT4,outputSchema:OH.object({result:OH.array(JT4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=KT4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let Q=HT4(Z.connectionId),Y=FT4(Z.connectionId);return{result:[{results:(await BT4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function cJ0($){let Z=$.access.getRole();if(!FX(Z))throw new RN("Only organization owners and admins can change org-wide pin status")}var c11=L(()=>{ZY();vj()});async function lJ0($,Z,X){let Q=[...new Set(X)],Y=await Promise.all(Q.map((J)=>$.storage.connections.findById(J,Z))),G=Q.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function _N($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function dJ0($){let Z=2166136261;for(let X=0;X<$.length;X++)Z=Math.imul(Z^$.charCodeAt(X),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function oo($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function ro($,Z){if(!Z)return $;let X=`${dJ0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function LT4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var kh;var gU$=L(()=>{nW();kh=class kh extends p9{static MAX_PAGES_PER_CLIENT=1000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$;for(let X of Object.keys($)){let Q=dJ0(X);if(this.slugToKey.has(Q))throw Error(`GatewayClient: duplicate namespace code "${Q}" from keys "${this.slugToKey.get(Q)}" and "${X}"`);this.slugToKey.set(Q,X)}}namespace($,Z){return`${dJ0($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{tools:X}=await this.listTools();for(let Q of X){let Y=oo(Q._meta);if(!Y)continue;if(ro(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve tool "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}async resolvePromptTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{prompts:X}=await this.listPrompts();for(let Q of X){let Y=oo(Q._meta);if(!Y)continue;if(ro(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve prompt "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let X=this.clients[$];if(!X)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Q=X.client,Y;try{Y=typeof Q==="function"?Promise.resolve(Q()):Promise.resolve(Q)}catch(J){return Promise.reject(J)}let G=Y.catch((J)=>{throw this.resolvedClients.delete($),J});return this.resolvedClients.set($,G),G}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,X){try{let Q=await this.resolveClient($);return await Z(Q)}catch(Q){return console.warn(`GatewayClient: skipping ${X} from client "${$}" \u2014 ${Q?.message??Q}`),[]}}async paginate($,Z,X){let Q=[],Y,G=0;do{let J=await X(Y);Q.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<kh.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${kh.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Q}fetchAllTools($,Z){return this.paginate(Z,"tools",async(X)=>{let Q=await $.listTools(X?{cursor:X}:void 0);return{items:Q.tools,nextCursor:Q.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(X)=>{let Q=await $.listResources(X?{cursor:X}:void 0);return{items:Q.resources,nextCursor:Q.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(X)=>{let Q=await $.listResourceTemplates(X?{cursor:X}:void 0);return{items:Q.resourceTemplates,nextCursor:Q.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(X)=>{let Q=await $.listPrompts(X?{cursor:X}:void 0);return{items:Q.prompts,nextCursor:Q.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=X.tools,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],X=new Map;for(let[Q,Y]of Object.entries(this.clients)){let G=await this.listFromClient(Q,(W)=>this.fetchAllResources(W,Q),"resources"),J=Y.resources,K=J?new Set(J):null;for(let W of G){if(K&&!K.has(W.uri)&&!(W.name&&K.has(W.name)))continue;if($.has(W.uri)){console.warn(`GatewayClient: duplicate resource "${W.uri}" from client "${Q}" \u2014 skipping`);continue}$.add(W.uri),X.set(W.uri,Q),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:Q}})}}return this.resourceRouteMap=X,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[X,Q]of Object.entries(this.clients)){let Y=await this.listFromClient(X,(G)=>this.fetchAllResourceTemplates(G,X),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=X.prompts,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??LT4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,X){let[Q,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(Q)).callTool({...$,name:Y},Z,X)}async readResource($,Z){let X=await this.resolveResourceRoute($.uri);return(await this.resolveClient(X)).readResource($)}async getPrompt($,Z){let[X,Q]=await this.resolvePromptTarget($.name);return(await this.resolveClient(X)).getPrompt({...$,name:Q})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((X)=>X.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var mJ0=L(()=>{gU$()});function d11($){return _N($)}function wT4($,Z){let X=_N(Z)||"prompt";return`${String($).padStart(DT4,"0")}-${X}`}async function m11($,Z,X){try{await $.delete(iJ0,d11(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function pJ0($,Z,X,Q){let Y=d11(Z);await m11($,Z,X),await Promise.all(Q.slice(0,l11).map(async(G,J)=>{let K=wT4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(iJ0,`${Y}/${K}.json`,JSON.stringify(W),{actor:X,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function hU$($,Z){let X=d11(Z),Q;try{Q=await $.listDir(iJ0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,l11),G=[];for(let J of Y)try{let K=await $.read(iJ0,J.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")G.push(W)}catch{}return G}var iJ0="agent-prompts",l11=20,DT4;var ao=L(()=>{mJ0();DT4=String(l11-1).length});function Sh($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as lU$}from"zod";function ET4(){let $=uU$[Math.floor(Math.random()*uU$.length)];return`icon://${cU$[Math.floor(Math.random()*cU$.length)]}?color=${$}`}var uU$,cU$,jT4,zT4,i11;var dU$=L(()=>{k0();OL();c11();ao();uU$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],cU$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];jT4=lU$.object({data:NX0.describe("Data for the new virtual MCP")}),zT4=lU$.object({item:YX.describe("The created virtual MCP entity")}),i11=c({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:jT4,outputSchema:zT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)cJ0(Z);let{prompts:Y,metadata:G,...J}=$.data,K=Sh(G);if(J.connections.length>0)await lJ0(Z,X.id,J.connections.map((F)=>F.connection_id));let W={...J,metadata:K,icon:J.icon??ET4()},H=await Z.storage.virtualMcps.create(X.id,Q,W);if(Y?.length&&Z.orgFs&&H.id)await pJ0(Z.orgFs,H.id,Q,Y);return{item:H}}})});function PT4($){let Z=[],X=0;while(X<$.length){let Q=$[X];if(Q==="%")Z.push(".*");else if(Q==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Q))Z.push("\\"+Q);else Z.push(Q);X++}return Z.join("")}function AL($){return typeof $==="string"||typeof $==="number"}function p11($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function AT4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function nJ0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>nJ0($,H));case"or":return W.some((H)=>nJ0($,H));case"not":return!W.every((H)=>nJ0($,H));default:return!0}}let{field:X,operator:Q,value:Y}=Z,G=X.join(".");if(G==="connection_id"){if(Q!=="eq"||typeof Y!=="string")return!1;return AT4($,Y)}let J=p11($,G);switch(Q){case"eq":return J===Y;case"gt":return AL(J)&&AL(Y)&&J>Y;case"gte":return AL(J)&&AL(Y)&&J>=Y;case"lt":return AL(J)&&AL(Y)&&J<Y;case"lte":return AL(J)&&AL(Y)&&J<=Y;case"in":return Array.isArray(Y)&&Y.includes(J);case"like":if(typeof J!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;let K=PT4(Y);return new RegExp(`^${K}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Y!=="string")return!1;return J.toLowerCase().includes(Y.toLowerCase());default:return!0}}function TT4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=p11(X,G),K=p11(Q,G),W=0;if(J==null&&K==null)continue;if(J==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof K==="string")W=J.localeCompare(K);else if(typeof J==="number"&&typeof K==="number")W=J-K;else W=String(J).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var RT4,IT4,n11;var mU$=L(()=>{kJ();k0();OL();RT4=LK,IT4=SN(YX),n11=c({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RT4,outputSchema:IT4,handler:async($,Z)=>{await Z.access.check();let X=a(Z),Q=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,J=Q?await Z.storage.virtualMcps.listByConnectionId(X.id,Q):await Z.storage.virtualMcps.list(X.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((U)=>nJ0(U,$.where));if($.orderBy&&$.orderBy.length>0)J=TT4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),N=W+H<K;return{items:F,totalCount:K,hasMore:N}}})});import{z as t11}from"zod";var qT4,MT4,o11;var iU$=L(()=>{k0();OL();qT4=t11.object({id:t11.string().describe("ID of the virtual MCP to retrieve")}),MT4=t11.object({item:YX.nullable().describe("The retrieved virtual MCP, or null if not found")}),o11=c({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:qT4,outputSchema:MT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.virtualMcps.findById($.id);if(Q&&Q.organization_id!==X.id)return{item:null};if(!Q)return{item:null};return{item:Q}}})});function _J($){return r11.test($)}function pU$($){let Z=(X)=>typeof X==="string"?X.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var r11;var TL=L(()=>{r11=/^[a-z0-9][a-z0-9-]{0,59}$/});function nU$($){let{nextTitle:Z,currentTitle:X,currentSiteSlug:Q}=$;if(Q?.trim())return null;if(Z===void 0||Z===X)return null;let Y=X?.trim().toLowerCase()??"";return _J(Y)?Y:null}var tU$=L(()=>{TL()});import{z as a11}from"zod";var VT4,kT4,s11;var oU$=L(()=>{k0();ao();OL();c11();tU$();VT4=a11.object({id:a11.string().describe("ID of the virtual MCP to update"),data:UX0.describe("Partial virtual MCP data to update")}),kT4=a11.object({item:YX.describe("The updated virtual MCP entity")}),s11=c({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:VT4,outputSchema:kT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:J,...K}=$.data,W=Sh(J);if(W&&Y.metadata)W={...Y.metadata,...W};else if(W===null&&Y.metadata?.sandboxMap)W={sandboxMap:Y.metadata.sandboxMap};let H={...K,...J!==void 0?{metadata:W}:{}},F=nU$({nextTitle:H.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(F)H.metadata={...Y.metadata,...H.metadata,siteSlug:F};if(H.pinned!==void 0&&H.pinned!==Y.pinned)cJ0(Z);if(H.connections?.length)await lJ0(Z,X.id,H.connections.map((U)=>U.connection_id));let N=await Z.storage.virtualMcps.update($.id,Q,H);if(G!==void 0&&Z.orgFs)await pJ0(Z.orgFs,$.id,Q,G);return{item:N}}})});function ST4($){if(!$)return!1;let Z=$$1.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function aU$($){let Z={...$};for(let X of $$1)Z[X]="read";return Z}async function sU$($,Z){let X={...Z};for(;;){let Q=await $(X);if(!Q.isError)return{result:Q,grantedPermissions:X};let Y=Q.content?.find((W)=>W.type==="text")?.text,G=$$1.find((W)=>(W in X));if(!G||!ST4(Y))return{result:Q,grantedPermissions:X};let{[G]:J,...K}=X;X=K}}function CT4($){if(!$||typeof $!=="object"||Array.isArray($))return rU$;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return rU$;return Z}function _T4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function b5($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let X=_T4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:CT4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Xz($){return $.metadata?.orgShared===!0}function eU$($){let Z=new Set,X=[];for(let Q of $??[]){if(Q.status!=="active")continue;let Y=b5(Q);if(Y===null)continue;let G=e11(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),X.push(`${Y.owner}/${Y.repo}`)}return X}function tJ0($,Z,X){let Q=e11(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=b5(G);return J!==null&&e11(J.owner,J.repo)===Q});return Y.find(Xz)??Y[0]??null}var rU$,$$1,e11=($,Z)=>`${$}/${Z}`.toLowerCase();var QY=L(()=>{rU$={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},$$1=["deployments","checks"]});function $B$($){return zJ($)!==null||fQ0($)!==null}var ZB$=L(()=>{y8()});import{z as Z$1}from"zod";var vT4,xT4,X$1;var XB$=L(()=>{QY();CJ();k0();ao();OL();ZB$();vT4=Z$1.object({id:Z$1.string().describe("ID of the virtual MCP to delete")}),xT4=Z$1.object({item:YX.describe("The deleted virtual MCP entity")}),X$1=c({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:vT4,outputSchema:xT4,handler:async($,Z)=>{s(Z);let X=a(Z);if(await Z.access.check(),$B$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let Q=await Z.storage.virtualMcps.findById($.id);if(!Q)throw Error(`Virtual MCP not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(X.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(X.id,{main_agent_id:null})}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:$.id,error:G.message})}if(Z.orgFs)await m11(Z.orgFs,$.id,a0(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(Xz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&b5(G)&&!J){let W=await new o6(Z.db,Z.vault).get(Y);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(Y)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Y,error:G.message})}return{item:Q}}})});import{z as YY}from"zod";var fT4,Q$1;var QB$=L(()=>{k0();fT4=YY.object({id:YY.string(),virtualMcpId:YY.string(),pluginId:YY.string(),connectionId:YY.string().nullable(),settings:YY.record(YY.string(),YY.unknown()).nullable(),createdAt:YY.string(),updatedAt:YY.string()}),Q$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:YY.object({virtualMcpId:YY.string().describe("Virtual MCP ID"),pluginId:YY.string().describe("Plugin ID")}),outputSchema:YY.object({config:fT4.nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y}=$,G=await Z.storage.connections.findById(Q);if(!G||G.organization_id!==X.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(Q,Y);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as nZ}from"zod";var bT4,Y$1;var YB$=L(()=>{k0();Ih();i5();bT4=nZ.object({id:nZ.string(),virtualMcpId:nZ.string(),pluginId:nZ.string(),connectionId:nZ.string().nullable(),settings:nZ.record(nZ.string(),nZ.unknown()).nullable(),createdAt:nZ.string(),updatedAt:nZ.string()}),Y$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:nZ.object({virtualMcpId:nZ.string().describe("Virtual MCP ID"),pluginId:nZ.string().describe("Plugin ID"),connectionId:nZ.string().nullable().optional().describe("MCP connection to bind"),settings:nZ.record(nZ.string(),nZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:nZ.object({config:bT4}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=a0(Z),W=await Z.storage.connections.findById(Q);if(!W)throw Error(`Connection not found: ${Q}`);if(W.organization_id!==X.id)throw Error(`Connection not found: ${Q}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Q}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==X.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&SJ()&&fJ0(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=Rh(W.organization_id,_5());await Z.storage.connections.create({...N,organization_id:W.organization_id,created_by:K})}else if(G&&!H)throw Error(`Connection not found: ${G}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(Q,Y,{connectionId:G,settings:J});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});import{z as OQ}from"zod";var yT4,G$1;var GB$=L(()=>{k0();OL();yT4=OQ.object({connectionId:OQ.string(),toolName:OQ.string(),label:OQ.string(),icon:OQ.string().nullable().optional()}),G$1=c({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:OQ.object({virtualMcpId:OQ.string().describe("Virtual MCP ID"),pinnedViews:OQ.array(yT4).describe("Pinned views to set for the virtual MCP sidebar"),layout:OQ.object({defaultMainView:OQ.object({type:OQ.string(),id:OQ.string().optional(),toolName:OQ.string().optional()}).nullable().optional(),chatDefaultOpen:OQ.boolean().nullable().optional()}).optional()}),outputSchema:OQ.object({item:YX.nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=a0(Z),K=await Z.storage.virtualMcps.findById(Q);if(!K)throw Error(`Virtual MCP not found: ${Q}`);if(K.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Q}`);let W=K.metadata?.ui??{},H={...W,pinnedViews:Y.length>0?Y:null,layout:G??W.layout??null};return{item:await Z.storage.virtualMcps.update(Q,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as vN}from"zod";var gT4,hT4,J$1;var JB$=L(()=>{k0();gT4=vN.object({ids:vN.array(vN.string()).describe("Virtual MCP ids to look up")}),hT4=vN.object({items:vN.array(vN.object({id:vN.string(),last_used_at:vN.string().optional(),last_used_by:vN.string().optional()}))}),J$1=c({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:gT4,outputSchema:hT4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let X=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((Q)=>({id:Q,last_used_at:X.get(Q)?.last_used_at,last_used_by:X.get(Q)?.last_used_by}))}}})});var KB$=L(()=>{dU$();mU$();iU$();oU$();XB$();QB$();YB$();GB$();JB$()});import{z as OX}from"zod";var K$1;var WB$=L(()=>{v6();k0();K$1=c({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OX.object({startDate:OX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:OX.array(OX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:OX.array(OX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:OX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:OX.object({cells:OX.array(OX.object({virtualMcpId:OX.string().nullable(),toolName:OX.string(),calls:OX.number(),errors:OX.number(),outputSize:OX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=a(Z);return await Z.access.check(),await uQ(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as P5}from"zod";var W$1;var HB$=L(()=>{v6();k0();W$1=c({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:P5.object({id:P5.string().describe("Log ID to fetch")}),outputSchema:P5.object({log:P5.object({id:P5.string().optional(),organizationId:P5.string(),connectionId:P5.string(),toolName:P5.string(),input:P5.record(P5.string(),P5.unknown()),output:P5.record(P5.string(),P5.unknown()),isError:P5.boolean(),errorMessage:P5.string().nullish(),durationMs:P5.number(),timestamp:P5.string(),userId:P5.string().nullish(),requestId:P5.string(),userAgent:P5.string().nullish(),virtualMcpId:P5.string().nullish(),properties:P5.record(P5.string(),P5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await uQ();let X=a(Z),Q=await Z.storage.monitoring.getById(X.id,$.id);if(!Q)return{log:null};return{log:{...Q,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp}}}})});import{z as w8}from"zod";var cT4,H$1;var FB$=L(()=>{v6();k0();cT4=w8.object({id:w8.string().optional().describe("Unique log identifier"),organizationId:w8.string().describe("Organization ID"),connectionId:w8.string().describe("Connection ID"),toolName:w8.string().describe("Name of the tool that was called"),isError:w8.boolean().describe("Whether the call resulted in an error"),errorMessage:w8.string().nullish().describe("Error message if applicable"),durationMs:w8.number().describe("Call duration in milliseconds"),timestamp:w8.string().describe("ISO 8601 timestamp of the call"),userId:w8.string().nullish().describe("User who triggered the call"),requestId:w8.string().describe("Unique request identifier"),userAgent:w8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:w8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:w8.record(w8.string(),w8.string()).nullish().describe("Custom key-value metadata attached to the log")}),H$1=c({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:w8.object({connectionId:w8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:w8.array(w8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:w8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:w8.string().optional().describe("Filter by tool name"),isError:w8.boolean().optional().describe("Filter by error status"),startDate:w8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:w8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:w8.number().default(20).describe("Maximum number of results"),offset:w8.number().default(0).describe("Offset for pagination"),properties:w8.record(w8.string(),w8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:w8.array(w8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:w8.record(w8.string(),w8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:w8.record(w8.string(),w8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:w8.object({logs:w8.array(cT4).describe("Array of monitoring logs"),total:w8.number().describe("Total number of logs matching filters"),offset:w8.number().describe("Current offset for pagination"),limit:w8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await uQ();let X=a(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:X.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},J=await Z.storage.monitoring.query(G);return{logs:J.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:J.total,offset:$.offset,limit:$.limit}}})});import{z as F$}from"zod";var F$1;var NB$=L(()=>{v6();k0();F$1=c({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F$.object({startDate:F$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:F$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:F$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:F$.array(F$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:F$.array(F$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:F$.array(F$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:F$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:F$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:F$.array(F$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:F$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:F$.object({totalCalls:F$.number().describe("Total number of tool calls"),errorRate:F$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:F$.number().describe("Average call duration in milliseconds"),errorRatePercent:F$.string().optional().describe("Error rate as a percentage string"),totalErrors:F$.number().optional().describe("Total number of errors"),p50DurationMs:F$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:F$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:F$.array(F$.object({connectionId:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avgDurationMs:F$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:F$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:F$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:F$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:F$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:F$.array(F$.object({toolName:F$.string(),connectionId:F$.string().nullable(),calls:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:F$.array(F$.object({timestamp:F$.string(),toolName:F$.string(),calls:F$.number(),errors:F$.number(),avg:F$.number(),p95:F$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:F$.array(F$.object({timestamp:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avg:F$.number(),p50:F$.number(),p95:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),totalTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=a(Z);if(await Z.access.check(),await uQ(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:X.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let G=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:G.topTools,topToolsTimeseries:G.timeseries}}let Q=await Z.storage.monitoring.getStats({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...Q,errorRatePercent:(Q.errorRate*100).toFixed(2)}}})});import{z as LQ}from"zod";var N$1;var UB$=L(()=>{v6();k0();N$1=c({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LQ.object({threadIds:LQ.array(LQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:LQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:LQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:LQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:LQ.object({items:LQ.array(LQ.object({threadId:LQ.string(),calls:LQ.number(),inputTokens:LQ.number(),outputTokens:LQ.number(),totalTokens:LQ.number(),costUsd:LQ.number()}))}),handler:async($,Z)=>{let X=a(Z);return await Z.access.check(),await uQ(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:X.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var BB$=L(()=>{WB$();HB$();FB$();NB$();UB$()});function oJ0($){return typeof $==="string"&&dT4.has($.trim().toLowerCase())}var dT4;var U$1=L(()=>{dT4=new Set([".well-known","_admin","api","auth","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as LG}from"zod";var B$1;var OB$=L(()=>{k0();U$1();B$1=c({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:LG.object({slug:LG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!oJ0($),"Slug is reserved by Studio"),name:LG.string().min(1).max(255),description:LG.string().optional()}),outputSchema:LG.object({id:LG.string(),name:LG.string(),slug:LG.string(),logo:LG.string().nullable().optional(),metadata:LG.any().optional(),createdAt:LG.string().datetime().describe("ISO 8601 timestamp"),members:LG.array(LG.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create organization");let Q=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:X});if(!Q)throw Error("Failed to create organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as LH}from"zod";var O$1;var LB$=L(()=>{k0();O$1=c({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:LH.object({}),outputSchema:LH.object({organizations:LH.array(LH.object({id:LH.string(),name:LH.string(),slug:LH.string(),logo:LH.string().nullable().optional(),metadata:LH.any().optional(),createdAt:LH.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}}})});import{z as vJ}from"zod";var L$1;var DB$=L(()=>{k0();L$1=c({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:vJ.object({}),outputSchema:vJ.object({id:vJ.string(),name:vJ.string(),slug:vJ.string(),logo:vJ.string().nullable().optional(),metadata:vJ.any().optional(),createdAt:vJ.string().datetime().describe("ISO 8601 timestamp"),members:vJ.array(vJ.any()).optional(),invitations:vJ.array(vJ.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as DK}from"zod";var D$1;var wB$=L(()=>{k0();D$1=c({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:DK.object({id:DK.string(),name:DK.string().min(1).max(255).optional(),description:DK.string().optional()}),outputSchema:DK.object({id:DK.string(),name:DK.string(),slug:DK.string(),logo:DK.string().nullable().optional(),metadata:DK.any().optional(),createdAt:DK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X={};if($.name)X.name=$.name;if($.description!==void 0)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as so}from"zod";var w$1;var EB$=L(()=>{k0();w$1=c({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:so.object({id:so.string()}),outputSchema:so.object({success:so.boolean(),id:so.string()}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.get($.id);return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...X?.metadata,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as xN}from"zod";var E$1;var jB$=L(()=>{k0();UX();E$1=c({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xN.object({}),outputSchema:xN.object({organizationId:xN.string(),sidebar_items:xN.array(Wo).nullable().optional(),enabled_plugins:xN.array(xN.string()).nullable().optional(),registry_config:Ho.nullable().optional(),simple_mode:Fo.nullable().optional(),default_home_agents:Uo.nullable().optional(),flags:Oo.nullable().optional(),main_agent_id:xN.string().nullable().optional(),sprint_config:Bo.nullable().optional(),createdAt:xN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:xN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.organizationSettings.get(X);if(!Q)return{organizationId:X};return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as GY}from"zod";var j$1;var zB$=L(()=>{k0();UX();j$1=c({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:GY.object({organizationId:GY.string(),sidebar_items:GY.array(Wo).optional(),enabled_plugins:GY.array(GY.string()).optional(),registry_config:Ho.optional(),simple_mode:Fo.optional(),default_home_agents:Uo.optional(),flags:Oo.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:GY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear."),sprint_config:Bo.optional().describe("Task board sprint cadence. Replaced whole (not merged), so pass all three fields.")}),outputSchema:GY.object({organizationId:GY.string(),sidebar_items:GY.array(Wo).nullable().optional(),enabled_plugins:GY.array(GY.string()).nullable().optional(),registry_config:Ho.nullable().optional(),simple_mode:Fo.nullable().optional(),default_home_agents:Uo.nullable().optional(),flags:Oo.nullable().optional(),main_agent_id:GY.string().nullable().optional(),sprint_config:Bo.nullable().optional(),createdAt:GY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:GY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),a(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let Q=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags,main_agent_id:$.main_agent_id,sprint_config:$.sprint_config});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as wK}from"zod";var PB$,z$1,P$1;var AB$=L(()=>{k0();UX();PB$=JL.extend({organizationId:wK.string(),archivedAt:wK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:wK.string().describe("ISO 8601 timestamp"),updatedAt:wK.string().describe("ISO 8601 timestamp")}),z$1=c({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wK.object({includeArchived:wK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:wK.object({items:wK.array(PB$)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),P$1=c({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wK.object({id:wK.string().describe("Brand context ID")}),outputSchema:PB$.extend({organizationId:wK.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.get($.id,X);if(!Q)throw Error("Brand context not found");return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as Qz}from"zod";var TB$,A$1,T$1,R$1;var RB$=L(()=>{k0();UX();TB$=JL.extend({organizationId:Qz.string(),createdAt:Qz.string().describe("ISO 8601 timestamp"),updatedAt:Qz.string().describe("ISO 8601 timestamp")}),A$1=c({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:JL.omit({id:!0}),outputSchema:TB$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.create(X,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}),T$1=c({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JL.partial().required({id:!0}),outputSchema:TB$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,X);let J=await Z.storage.brandContext.update(Y,X,{name:G.name,domain:G.domain,overview:G.overview,logo:G.logo!==void 0?G.logo??null:void 0,favicon:G.favicon!==void 0?G.favicon??null:void 0,ogImage:G.ogImage!==void 0?G.ogImage??null:void 0,fonts:G.fonts!==void 0?G.fonts??null:void 0,colors:G.colors!==void 0?G.colors??null:void 0,images:G.images!==void 0?G.images??null:void 0,metadata:G.metadata!==void 0?G.metadata??null:void 0,archivedAt:G.archivedAt!==void 0?G.archivedAt??null:void 0,isDefault:G.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),R$1=c({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Qz.object({id:Qz.string().describe("Brand context ID")}),outputSchema:Qz.object({success:Qz.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,X,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function rJ0($,Z,X){let Q=$.trim();if(!Q.startsWith("http"))Q=`https://${Q}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:Q,formats:["branding"]})});if(!Y.ok){let U=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${U.slice(0,200)}`)}let G=await Y.json();if(!G.success||!G.data?.branding)return null;let J=G.data.branding,K=G.data.metadata??{},W=pT4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((U)=>U.trim()).filter(Boolean)?.slice().sort((U,B)=>U.length-B.length)[0]??K.ogSiteName??X??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function pT4($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[F,N]of Object.entries(Q))if(typeof N==="string"&&N&&mT4.has(F))Y[F]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,N]of Object.entries(K))if(typeof N==="string"&&N){let U=iT4[F.toLowerCase()];if(U&&!G[U])G[U]=N}let W=$.fonts;if(Array.isArray(W))for(let F of W){let N=F.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:X.logo??null,favicon:X.favicon??null,ogImage:X.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var mT4,iT4;var I$1=L(()=>{mT4=new Set(["primary","secondary","accent","background","foreground"]),iT4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as aJ0}from"zod";var nT4,q$1;var IB$=L(()=>{k0();I$1();UX();nT4=JL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:aJ0.boolean()}),q$1=c({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:aJ0.object({domain:aJ0.string().describe("Website domain to extract brand from"),brandId:aJ0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:nT4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=Z.firecrawlApiKey;if(!Q)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await rJ0($.domain,Q,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let G={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},J=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,X))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,X,G)})():await Z.storage.brandContext.create(X,G);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function qB$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let X=Object.fromEntries(Object.entries(Z).filter(([Q])=>Q!=="tagline"&&Q!=="tone"));return Object.keys(X).length>0?X:void 0})()}}var M$1,V$1;var MB$=L(()=>{k11();k0();M$1=c({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VJ0,outputSchema:go,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.id?await Z.storage.brandContext.get($.id,X):await Z.storage.brandContext.getDefault(X);if(!Q)throw Error($.id?"Brand not found":"No default brand configured");return qB$(Q)}}),V$1=c({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:kJ0,outputSchema:SJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X)).map(qB$)}}})});import{resolveTxt as tT4}from"dns/promises";function k$1($){return`${oT4}.${$.toLowerCase()}`}function VB$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function kB$($,Z,X=tT4){if(!Z)return!1;try{return(await X(k$1($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var oT4="_deco-verify";var SB$=()=>{};import{z as y5}from"zod";function RL($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?k$1($.domain):null,recordValue:Z?$.verificationToken:null}}function aT4($){let Z=$.toLowerCase().trim();if(!rT4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(EK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var rT4,S$1,sJ0,C$1,_$1,v$1,x$1,f$1;var CB$=L(()=>{DG();SB$();k0();rT4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,S$1=y5.enum(["off","auto","request"]),sJ0=y5.object({id:y5.string(),domain:y5.string(),joinMode:S$1,verificationStatus:y5.enum(["pending","verified"]),verificationMethod:y5.enum(["email","dns"]).nullable(),verifiedAt:y5.string().nullable(),recordName:y5.string().nullable(),recordValue:y5.string().nullable()});C$1=c({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({}),outputSchema:y5.object({domains:y5.array(sJ0)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(RL)}}}),_$1=c({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({domain:y5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:S$1.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:sJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=aT4($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===Q,K=await Z.storage.organizationDomains.getByOrgAndDomain(X.id,Q);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return RL(H)}return RL(K)}let W=J?await Z.storage.organizationDomains.add(X.id,Q,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(X.id,Q,{joinMode:"off",verificationStatus:"pending",verificationToken:VB$()});return RL(W)}}),v$1=c({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({id:y5.string(),joinMode:S$1}),outputSchema:sJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if($.joinMode!=="off"&&Q.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return RL(Y)}}),x$1=c({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:y5.object({id:y5.string()}),outputSchema:y5.object({verified:y5.boolean(),domain:sJ0}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if(Q.verificationStatus==="verified")return{verified:!0,domain:RL(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await kB$(Q.domain,Q.verificationToken))return{verified:!1,domain:RL(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:RL(G)}}}),f$1=c({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({id:y5.string()}),outputSchema:y5.object({success:y5.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function IL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as S9}from"zod";var sT4,b$1,y$1,g$1;var _B$=L(()=>{k0();f4();sT4=S9.object({id:S9.string(),userId:S9.string(),status:S9.enum(["pending","approved","denied"]),createdAt:S9.string(),user:S9.object({id:S9.string(),name:S9.string(),email:S9.string(),image:S9.string().nullable()}).nullable()}),b$1=c({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({}),outputSchema:S9.object({requests:S9.array(sT4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(X.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),y$1=c({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({requestId:S9.string()}),outputSchema:S9.object({success:S9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(!await Z.storage.organizationJoinRequests.decide(Q.id,"approved",Y??Q.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:X.id,userId:Q.userId,role:["user"]})}catch(J){if(!IL(J))throw J}if(Y)h1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),g$1=c({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({requestId:S9.string()}),outputSchema:S9.object({success:S9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)h1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as JY}from"zod";var h$1;var vB$=L(()=>{f4();k0();ZY();h$1=c({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JY.object({organizationId:JY.string().optional(),userId:JY.string(),role:JY.array(JY.string())}),outputSchema:JY.object({id:JY.string(),organizationId:JY.string(),userId:JY.string(),role:JY.union([JY.string(),JY.array(JY.string())]),createdAt:JY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!YG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:X,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as Ch}from"zod";var u$1;var xB$=L(()=>{f4();k0();u$1=c({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Ch.object({organizationId:Ch.string().optional(),memberIdOrEmail:Ch.string()}),outputSchema:Ch.object({success:Ch.boolean(),memberIdOrEmail:Ch.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.removeMember({organizationId:X,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(Q.member.userId,X);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as LX}from"zod";var c$1;var fB$=L(()=>{k0();c$1=c({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LX.object({limit:LX.number().int().min(1).max(1000).optional(),offset:LX.number().int().min(0).optional()}),outputSchema:LX.object({members:LX.array(LX.object({id:LX.string(),organizationId:LX.string(),userId:LX.string(),role:LX.string(),createdAt:LX.string().datetime().describe("ISO 8601 timestamp"),user:LX.object({id:LX.string(),name:LX.string(),email:LX.string(),image:LX.string().optional()}).optional()}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:X,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as tZ}from"zod";var l$1;var bB$=L(()=>{f4();k0();ZY();l$1=c({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:tZ.object({organizationId:tZ.string().optional(),memberId:tZ.string(),role:tZ.array(tZ.string())}),outputSchema:tZ.object({id:tZ.string(),organizationId:tZ.string(),userId:tZ.string(),role:tZ.union([tZ.string(),tZ.array(tZ.string())]),createdAt:tZ.string().datetime().describe("ISO 8601 timestamp"),user:tZ.object({email:tZ.string(),name:tZ.string(),image:tZ.string().optional()})}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!YG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:X,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,X);let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function yB$(){if(eo&&Date.now()-eo.fetchedAt<600000)return eo.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),X=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(X)||X<=0)throw Error("Invalid rate");return eo={rate:X,fetchedAt:Date.now()},X}catch{return eo?.rate??5.5}}function gB$($,Z,X){if(Z==="brl")return Math.round($/X);return $}var eo=null;function d$1($,Z="",X=new URLSearchParams){for(let[Q,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${Q}]`:Q;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)d$1(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")d$1(Y,G,X);else X.append(G,String(Y))}return X}async function $r($,Z){let X=y0().stripeSecretKey;if(!X)throw new wG(503,"billing is not configured");let Q=Z?.params?d$1(Z.params).toString():void 0,Y=await fetch(`${eT4}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout($24)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new wG(Y.status,J)}return G}function hB$($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function uB$($){let Z=y0().stripeOrgPriceId;if(!Z)throw new wG(503,"billing is not configured");let X=await $r("/checkout/sessions",{params:{mode:"subscription",...hB$(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!X.url)throw new wG(500,"checkout session lacks url");return{url:X.url}}function Z24($,Z){return Math.round($*(1+Z/100))}async function cB$($){let Z=Z24($.amountCents,$.feePercent),X=gB$($.amountCents,$.currency,await yB$()),Q=y0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:X},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await $r("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...hB$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...Q?{product:Q}:{product_data:{name:G}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!J.url)throw new wG(500,"checkout session lacks url");return{url:J.url}}async function eJ0($){let Z=await $r("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new wG(500,"portal session lacks url");return{url:Z.url}}async function $30($){return $r(`/subscriptions/${encodeURIComponent($)}`)}async function lB$($){await $r(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var eT4="https://api.stripe.com/v1",wG,$24=15000;var Yz=L(()=>{V$();wG=class wG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as m$1}from"zod";var i$1;var dB$=L(()=>{Yz();i5();k0();f4();i$1=c({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:m$1.object({}),outputSchema:m$1.object({url:m$1.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id,Q=Z.organization?.slug;if(!X||!Q)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(X);if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let G=`${d9()}/${encodeURIComponent(Q)}/members`,{url:J}=await uB$({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return NG({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as p$1}from"zod";var n$1;var mB$=L(()=>{Yz();i5();k0();n$1=c({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:p$1.object({}),outputSchema:p$1.object({url:p$1.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!X.slug)throw Error("Organization context required");let Q=await Z.storage.organizationBilling.getBilling(X.id);if(!Q?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await eJ0({customerId:Q.stripeCustomerId,returnUrl:`${d9()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof wG)throw Error(Y.message);throw Y}}})});function Z30($){return t$1[$%t$1.length]??X24}function KY($){return $.createdBy==="system"}function fN($){return X30.filter((Z)=>Oh($,Q24[Z]))}function vh($,Z){return $?.startsWith(`${_h[Z]}:`)??!1}function bN($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function o$1($,Z){let X=bN($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function qL($,Z,X){if(Z.length===0)return!1;let Q=o$1($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function pB$($,Z){return qL($,Z)&&!qL($,Z,{verifiedOnly:!0})}function nB$($){let Z=null;for(let X of $){if(X.action!=="review_approved"&&X.action!=="review_changes_requested")continue;let Q=new Date(X.occurredAt).getTime();if(Z&&Q<Z.at)continue;let Y=X.data?.notes;Z={at:Q,notes:X.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}function Y24($){let Z=0;for(let X of $){if(X.action!=="assignee_changed")continue;if(X.data?.to!==E8)continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function tB$($,Z=r$1){let X=Y24($),Q=new Set,Y=0;for(let G of[...$].sort((J,K)=>J.occurredAt.localeCompare(K.occurredAt))){let J=new Date(G.occurredAt).getTime();if(G.action==="status_changed"){if(G.data?.to==="in_review")Y=J;continue}if(G.action==="review_changes_requested"&&J>=X)Q.add(Y)}return Q.size+1>=Z}var E8="super-agent",t$1,X24,Zr='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',iB$,X30,_h,Q24,r$1=5,oB$="task-board.item.updated",rB$="task-board.item.deleted";var B9=L(()=>{UX();t$1=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],X24=t$1[0];iB$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",X30=["qa","code_review"],_h={qa:"QA Agent",code_review:"Code Reviewer"},Q24={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function a$1($){return $==="trial"?"trial":"subscription"}function Xr($,Z,X,Q={}){NG({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function s$1($){return $?.status==="active"||$?.status==="past_due"}function Q30($,Z){if(s$1($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function Qr(){let $=y0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function ML(){return{...Qr(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function xh($,Z,X=Qr()){if(!X.enforced||!KY(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Xr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new DX("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=Q30(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Xr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:a$1(G.periodKey),limit:G.limit}),new DX(G.exhaustedReason)}async function aB$($,Z,X=Qr()){if(!X.enforced||!KY(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=Q30(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Xr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:a$1(Y.periodKey),limit:Y.limit}),new DX(Y.exhaustedReason);if(G==="runs_exhausted")throw Xr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new DX("runs_exhausted");if(G==="claimed")Xr($,"task_quota_claimed",Z,{billing_mode:a$1(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function sB$($,Z,X,Q){if(Q==="skipped")return;await $.rollbackTaskClaim(Z,X,{releaseSlot:Q==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function eB$($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function $O$($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))NG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var G24="[SUBSCRIPTION_REQUIRED]",J24,DX;var xJ=L(()=>{B9();f4();V$();J24={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};DX=class DX extends Error{reason;constructor($){super(`${G24} ${J24[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as yN}from"zod";var e$1;var ZO$=L(()=>{k0();xJ();e$1=c({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:yN.object({}),outputSchema:yN.object({enforced:yN.boolean(),billingStatus:yN.string(),subscribed:yN.boolean(),hasBillingAccount:yN.boolean(),used:yN.number(),limit:yN.number(),currentPeriodEnd:yN.string().datetime().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=Qr(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=Q30(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:s$1(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var XO$=L(()=>{OB$();LB$();DB$();wB$();EB$();jB$();zB$();AB$();RB$();IB$();MB$();CB$();_B$();vB$();xB$();fB$();bB$();dB$();mB$();ZO$()});function DH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function Y30($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(Y30);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||Y30(X)));return!1}function $81($){return Array.isArray($)&&$.every(Y30)}function Yr($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||Y30(X)))}var CO$="vercel.ai.error",W24,QO$,YO$,W1,_O$="AI_APICallError",vO$,H24,GO$,JO$,W4,xO$="AI_EmptyResponseBodyError",fO$,F24,KO$,WO$,G30,bO$="AI_InvalidArgumentError",yO$,N24,HO$,FO$,VL,gO$="AI_InvalidPromptError",hO$,U24,NO$,UO$,fJ,uO$="AI_InvalidResponseDataError",cO$,B24,BO$,OO$,fh,lO$="AI_JSONParseError",dO$,O24,LO$,DO$,gN,mO$="AI_LoadAPIKeyError",iO$,L24,wO$,EO$,Gz,pO$="AI_LoadSettingError",nO$,D24,jO$,zO$,tO$,oO$="AI_NoContentGeneratedError",rO$,w24,PO$,AO$,aO$,sO$="AI_NoSuchModelError",eO$,E24,TO$,RO$,a5,$L$="AI_TooManyEmbeddingValuesForCallError",ZL$,j24,IO$,qO$,bh,XL$="AI_TypeValidationError",QL$,z24,MO$,VO$,A5,YL$="AI_UnsupportedFunctionalityError",GL$,P24,kO$,SO$,y4;var $$=L(()=>{W24=Symbol.for(CO$),W1=class $ extends(YO$=Error,QO$=W24,YO$){constructor({name:Z,message:X,cause:Q}){super(X);this[QO$]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,CO$)}static hasMarker(Z,X){let Q=Symbol.for(X);return Z!=null&&typeof Z==="object"&&Q in Z&&typeof Z[Q]==="boolean"&&Z[Q]===!0}},vO$=`vercel.ai.error.${_O$}`,H24=Symbol.for(vO$),W4=class extends(JO$=W1,GO$=H24,JO$){constructor({message:$,url:Z,requestBodyValues:X,statusCode:Q,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:W}){super({name:_O$,message:$,cause:J});this[GO$]=!0,this.url=Z,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return W1.hasMarker($,vO$)}},fO$=`vercel.ai.error.${xO$}`,F24=Symbol.for(fO$),G30=class extends(WO$=W1,KO$=F24,WO$){constructor({message:$="Empty response body"}={}){super({name:xO$,message:$});this[KO$]=!0}static isInstance($){return W1.hasMarker($,fO$)}};yO$=`vercel.ai.error.${bO$}`,N24=Symbol.for(yO$),VL=class extends(FO$=W1,HO$=N24,FO$){constructor({message:$,cause:Z,argument:X}){super({name:bO$,message:$,cause:Z});this[HO$]=!0,this.argument=X}static isInstance($){return W1.hasMarker($,yO$)}},hO$=`vercel.ai.error.${gO$}`,U24=Symbol.for(hO$),fJ=class extends(UO$=W1,NO$=U24,UO$){constructor({prompt:$,message:Z,cause:X}){super({name:gO$,message:`Invalid prompt: ${Z}`,cause:X});this[NO$]=!0,this.prompt=$}static isInstance($){return W1.hasMarker($,hO$)}},cO$=`vercel.ai.error.${uO$}`,B24=Symbol.for(cO$),fh=class extends(OO$=W1,BO$=B24,OO$){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:uO$,message:Z});this[BO$]=!0,this.data=$}static isInstance($){return W1.hasMarker($,cO$)}},dO$=`vercel.ai.error.${lO$}`,O24=Symbol.for(dO$),gN=class extends(DO$=W1,LO$=O24,DO$){constructor({text:$,cause:Z}){super({name:lO$,message:`JSON parsing failed: Text: ${$}.
|
|
2238
|
+
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(X)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(X)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(X)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(X)}`.execute($)}async function BT4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(Q).execute(Y)})}catch(Y){if(NT4(Y))return await UT4($,Z,X),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(Q).execute(G)});throw Y}}var JT4,WT4,bU$;var yU$=L(()=>{k0();JT4=OH.object({results:OH.array(OH.unknown()).optional(),success:OH.boolean().optional()});WT4=OH.object({sql:OH.string().describe("The SQL query to run"),params:OH.array(OH.any()).describe("The parameters to pass to the SQL query").optional()});bU$=c({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:WT4,outputSchema:OH.object({result:OH.array(JT4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=KT4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let Q=HT4(Z.connectionId),Y=FT4(Z.connectionId);return{result:[{results:(await BT4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function cJ0($){let Z=$.access.getRole();if(!FX(Z))throw new RN("Only organization owners and admins can change org-wide pin status")}var c11=L(()=>{ZY();vj()});async function lJ0($,Z,X){let Q=[...new Set(X)],Y=await Promise.all(Q.map((J)=>$.storage.connections.findById(J,Z))),G=Q.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function _N($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function dJ0($){let Z=2166136261;for(let X=0;X<$.length;X++)Z=Math.imul(Z^$.charCodeAt(X),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function oo($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function ro($,Z){if(!Z)return $;let X=`${dJ0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function LT4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var kh;var gU$=L(()=>{nW();kh=class kh extends p9{static MAX_PAGES_PER_CLIENT=1000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$;for(let X of Object.keys($)){let Q=dJ0(X);if(this.slugToKey.has(Q))throw Error(`GatewayClient: duplicate namespace code "${Q}" from keys "${this.slugToKey.get(Q)}" and "${X}"`);this.slugToKey.set(Q,X)}}namespace($,Z){return`${dJ0($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{tools:X}=await this.listTools();for(let Q of X){let Y=oo(Q._meta);if(!Y)continue;if(ro(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve tool "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}async resolvePromptTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{prompts:X}=await this.listPrompts();for(let Q of X){let Y=oo(Q._meta);if(!Y)continue;if(ro(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve prompt "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let X=this.clients[$];if(!X)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Q=X.client,Y;try{Y=typeof Q==="function"?Promise.resolve(Q()):Promise.resolve(Q)}catch(J){return Promise.reject(J)}let G=Y.catch((J)=>{throw this.resolvedClients.delete($),J});return this.resolvedClients.set($,G),G}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,X){try{let Q=await this.resolveClient($);return await Z(Q)}catch(Q){return console.warn(`GatewayClient: skipping ${X} from client "${$}" \u2014 ${Q?.message??Q}`),[]}}async paginate($,Z,X){let Q=[],Y,G=0;do{let J=await X(Y);Q.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<kh.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${kh.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Q}fetchAllTools($,Z){return this.paginate(Z,"tools",async(X)=>{let Q=await $.listTools(X?{cursor:X}:void 0);return{items:Q.tools,nextCursor:Q.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(X)=>{let Q=await $.listResources(X?{cursor:X}:void 0);return{items:Q.resources,nextCursor:Q.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(X)=>{let Q=await $.listResourceTemplates(X?{cursor:X}:void 0);return{items:Q.resourceTemplates,nextCursor:Q.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(X)=>{let Q=await $.listPrompts(X?{cursor:X}:void 0);return{items:Q.prompts,nextCursor:Q.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=X.tools,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],X=new Map;for(let[Q,Y]of Object.entries(this.clients)){let G=await this.listFromClient(Q,(W)=>this.fetchAllResources(W,Q),"resources"),J=Y.resources,K=J?new Set(J):null;for(let W of G){if(K&&!K.has(W.uri)&&!(W.name&&K.has(W.name)))continue;if($.has(W.uri)){console.warn(`GatewayClient: duplicate resource "${W.uri}" from client "${Q}" \u2014 skipping`);continue}$.add(W.uri),X.set(W.uri,Q),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:Q}})}}return this.resourceRouteMap=X,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[X,Q]of Object.entries(this.clients)){let Y=await this.listFromClient(X,(G)=>this.fetchAllResourceTemplates(G,X),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=X.prompts,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??LT4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,X){let[Q,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(Q)).callTool({...$,name:Y},Z,X)}async readResource($,Z){let X=await this.resolveResourceRoute($.uri);return(await this.resolveClient(X)).readResource($)}async getPrompt($,Z){let[X,Q]=await this.resolvePromptTarget($.name);return(await this.resolveClient(X)).getPrompt({...$,name:Q})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((X)=>X.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var mJ0=L(()=>{gU$()});function d11($){return _N($)}function wT4($,Z){let X=_N(Z)||"prompt";return`${String($).padStart(DT4,"0")}-${X}`}async function m11($,Z,X){try{await $.delete(iJ0,d11(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function pJ0($,Z,X,Q){let Y=d11(Z);await m11($,Z,X),await Promise.all(Q.slice(0,l11).map(async(G,J)=>{let K=wT4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(iJ0,`${Y}/${K}.json`,JSON.stringify(W),{actor:X,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function hU$($,Z){let X=d11(Z),Q;try{Q=await $.listDir(iJ0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,l11),G=[];for(let J of Y)try{let K=await $.read(iJ0,J.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")G.push(W)}catch{}return G}var iJ0="agent-prompts",l11=20,DT4;var ao=L(()=>{mJ0();DT4=String(l11-1).length});function Sh($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as lU$}from"zod";function ET4(){let $=uU$[Math.floor(Math.random()*uU$.length)];return`icon://${cU$[Math.floor(Math.random()*cU$.length)]}?color=${$}`}var uU$,cU$,jT4,zT4,i11;var dU$=L(()=>{k0();OL();c11();ao();uU$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],cU$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];jT4=lU$.object({data:NX0.describe("Data for the new virtual MCP")}),zT4=lU$.object({item:YX.describe("The created virtual MCP entity")}),i11=c({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:jT4,outputSchema:zT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)cJ0(Z);let{prompts:Y,metadata:G,...J}=$.data,K=Sh(G);if(J.connections.length>0)await lJ0(Z,X.id,J.connections.map((F)=>F.connection_id));let W={...J,metadata:K,icon:J.icon??ET4()},H=await Z.storage.virtualMcps.create(X.id,Q,W);if(Y?.length&&Z.orgFs&&H.id)await pJ0(Z.orgFs,H.id,Q,Y);return{item:H}}})});function PT4($){let Z=[],X=0;while(X<$.length){let Q=$[X];if(Q==="%")Z.push(".*");else if(Q==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Q))Z.push("\\"+Q);else Z.push(Q);X++}return Z.join("")}function AL($){return typeof $==="string"||typeof $==="number"}function p11($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function AT4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function nJ0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>nJ0($,H));case"or":return W.some((H)=>nJ0($,H));case"not":return!W.every((H)=>nJ0($,H));default:return!0}}let{field:X,operator:Q,value:Y}=Z,G=X.join(".");if(G==="connection_id"){if(Q!=="eq"||typeof Y!=="string")return!1;return AT4($,Y)}let J=p11($,G);switch(Q){case"eq":return J===Y;case"gt":return AL(J)&&AL(Y)&&J>Y;case"gte":return AL(J)&&AL(Y)&&J>=Y;case"lt":return AL(J)&&AL(Y)&&J<Y;case"lte":return AL(J)&&AL(Y)&&J<=Y;case"in":return Array.isArray(Y)&&Y.includes(J);case"like":if(typeof J!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;let K=PT4(Y);return new RegExp(`^${K}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Y!=="string")return!1;return J.toLowerCase().includes(Y.toLowerCase());default:return!0}}function TT4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=p11(X,G),K=p11(Q,G),W=0;if(J==null&&K==null)continue;if(J==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof K==="string")W=J.localeCompare(K);else if(typeof J==="number"&&typeof K==="number")W=J-K;else W=String(J).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var RT4,IT4,n11;var mU$=L(()=>{kJ();k0();OL();RT4=LK,IT4=SN(YX),n11=c({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RT4,outputSchema:IT4,handler:async($,Z)=>{await Z.access.check();let X=a(Z),Q=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,J=Q?await Z.storage.virtualMcps.listByConnectionId(X.id,Q):await Z.storage.virtualMcps.list(X.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((U)=>nJ0(U,$.where));if($.orderBy&&$.orderBy.length>0)J=TT4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),N=W+H<K;return{items:F,totalCount:K,hasMore:N}}})});import{z as t11}from"zod";var qT4,MT4,o11;var iU$=L(()=>{k0();OL();qT4=t11.object({id:t11.string().describe("ID of the virtual MCP to retrieve")}),MT4=t11.object({item:YX.nullable().describe("The retrieved virtual MCP, or null if not found")}),o11=c({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:qT4,outputSchema:MT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.virtualMcps.findById($.id);if(Q&&Q.organization_id!==X.id)return{item:null};if(!Q)return{item:null};return{item:Q}}})});function _J($){return r11.test($)}function pU$($){let Z=(X)=>typeof X==="string"?X.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var r11;var TL=L(()=>{r11=/^[a-z0-9][a-z0-9-]{0,59}$/});function nU$($){let{nextTitle:Z,currentTitle:X,currentSiteSlug:Q}=$;if(Q?.trim())return null;if(Z===void 0||Z===X)return null;let Y=X?.trim().toLowerCase()??"";return _J(Y)?Y:null}var tU$=L(()=>{TL()});import{z as a11}from"zod";var VT4,kT4,s11;var oU$=L(()=>{k0();ao();OL();c11();tU$();VT4=a11.object({id:a11.string().describe("ID of the virtual MCP to update"),data:UX0.describe("Partial virtual MCP data to update")}),kT4=a11.object({item:YX.describe("The updated virtual MCP entity")}),s11=c({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:VT4,outputSchema:kT4,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:J,...K}=$.data,W=Sh(J);if(W&&Y.metadata)W={...Y.metadata,...W};else if(W===null&&Y.metadata?.sandboxMap)W={sandboxMap:Y.metadata.sandboxMap};let H={...K,...J!==void 0?{metadata:W}:{}},F=nU$({nextTitle:H.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(F)H.metadata={...Y.metadata,...H.metadata,siteSlug:F};if(H.pinned!==void 0&&H.pinned!==Y.pinned)cJ0(Z);if(H.connections?.length)await lJ0(Z,X.id,H.connections.map((U)=>U.connection_id));let N=await Z.storage.virtualMcps.update($.id,Q,H);if(G!==void 0&&Z.orgFs)await pJ0(Z.orgFs,$.id,Q,G);return{item:N}}})});function ST4($){if(!$)return!1;let Z=$$1.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function aU$($){let Z={...$};for(let X of $$1)Z[X]="read";return Z}async function sU$($,Z){let X={...Z};for(;;){let Q=await $(X);if(!Q.isError)return{result:Q,grantedPermissions:X};let Y=Q.content?.find((W)=>W.type==="text")?.text,G=$$1.find((W)=>(W in X));if(!G||!ST4(Y))return{result:Q,grantedPermissions:X};let{[G]:J,...K}=X;X=K}}function CT4($){if(!$||typeof $!=="object"||Array.isArray($))return rU$;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return rU$;return Z}function _T4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function b5($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let X=_T4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:CT4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Xz($){return $.metadata?.orgShared===!0}function eU$($){let Z=new Set,X=[];for(let Q of $??[]){if(Q.status!=="active")continue;let Y=b5(Q);if(Y===null)continue;let G=e11(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),X.push(`${Y.owner}/${Y.repo}`)}return X}function tJ0($,Z,X){let Q=e11(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=b5(G);return J!==null&&e11(J.owner,J.repo)===Q});return Y.find(Xz)??Y[0]??null}var rU$,$$1,e11=($,Z)=>`${$}/${Z}`.toLowerCase();var QY=L(()=>{rU$={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},$$1=["deployments","checks"]});function $B$($){return zJ($)!==null||fQ0($)!==null}var ZB$=L(()=>{y8()});import{z as Z$1}from"zod";var vT4,xT4,X$1;var XB$=L(()=>{QY();CJ();k0();ao();OL();ZB$();vT4=Z$1.object({id:Z$1.string().describe("ID of the virtual MCP to delete")}),xT4=Z$1.object({item:YX.describe("The deleted virtual MCP entity")}),X$1=c({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:vT4,outputSchema:xT4,handler:async($,Z)=>{s(Z);let X=a(Z);if(await Z.access.check(),$B$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let Q=await Z.storage.virtualMcps.findById($.id);if(!Q)throw Error(`Virtual MCP not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(X.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(X.id,{main_agent_id:null})}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:$.id,error:G.message})}if(Z.orgFs)await m11(Z.orgFs,$.id,a0(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(Xz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&b5(G)&&!J){let W=await new o6(Z.db,Z.vault).get(Y);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(Y)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Y,error:G.message})}return{item:Q}}})});import{z as YY}from"zod";var fT4,Q$1;var QB$=L(()=>{k0();fT4=YY.object({id:YY.string(),virtualMcpId:YY.string(),pluginId:YY.string(),connectionId:YY.string().nullable(),settings:YY.record(YY.string(),YY.unknown()).nullable(),createdAt:YY.string(),updatedAt:YY.string()}),Q$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:YY.object({virtualMcpId:YY.string().describe("Virtual MCP ID"),pluginId:YY.string().describe("Plugin ID")}),outputSchema:YY.object({config:fT4.nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y}=$,G=await Z.storage.connections.findById(Q);if(!G||G.organization_id!==X.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(Q,Y);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as nZ}from"zod";var bT4,Y$1;var YB$=L(()=>{k0();Ih();i5();bT4=nZ.object({id:nZ.string(),virtualMcpId:nZ.string(),pluginId:nZ.string(),connectionId:nZ.string().nullable(),settings:nZ.record(nZ.string(),nZ.unknown()).nullable(),createdAt:nZ.string(),updatedAt:nZ.string()}),Y$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:nZ.object({virtualMcpId:nZ.string().describe("Virtual MCP ID"),pluginId:nZ.string().describe("Plugin ID"),connectionId:nZ.string().nullable().optional().describe("MCP connection to bind"),settings:nZ.record(nZ.string(),nZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:nZ.object({config:bT4}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=a0(Z),W=await Z.storage.connections.findById(Q);if(!W)throw Error(`Connection not found: ${Q}`);if(W.organization_id!==X.id)throw Error(`Connection not found: ${Q}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Q}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==X.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&SJ()&&fJ0(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=Rh(W.organization_id,_5());await Z.storage.connections.create({...N,organization_id:W.organization_id,created_by:K})}else if(G&&!H)throw Error(`Connection not found: ${G}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(Q,Y,{connectionId:G,settings:J});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});import{z as OQ}from"zod";var yT4,G$1;var GB$=L(()=>{k0();OL();yT4=OQ.object({connectionId:OQ.string(),toolName:OQ.string(),label:OQ.string(),icon:OQ.string().nullable().optional()}),G$1=c({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:OQ.object({virtualMcpId:OQ.string().describe("Virtual MCP ID"),pinnedViews:OQ.array(yT4).describe("Pinned views to set for the virtual MCP sidebar"),layout:OQ.object({defaultMainView:OQ.object({type:OQ.string(),id:OQ.string().optional(),toolName:OQ.string().optional()}).nullable().optional(),chatDefaultOpen:OQ.boolean().nullable().optional()}).optional()}),outputSchema:OQ.object({item:YX.nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=a0(Z),K=await Z.storage.virtualMcps.findById(Q);if(!K)throw Error(`Virtual MCP not found: ${Q}`);if(K.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Q}`);let W=K.metadata?.ui??{},H={...W,pinnedViews:Y.length>0?Y:null,layout:G??W.layout??null};return{item:await Z.storage.virtualMcps.update(Q,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as vN}from"zod";var gT4,hT4,J$1;var JB$=L(()=>{k0();gT4=vN.object({ids:vN.array(vN.string()).max(1000).describe("Virtual MCP ids to look up")}),hT4=vN.object({items:vN.array(vN.object({id:vN.string(),last_used_at:vN.string().optional(),last_used_by:vN.string().optional()}))}),J$1=c({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:gT4,outputSchema:hT4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let X=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((Q)=>({id:Q,last_used_at:X.get(Q)?.last_used_at,last_used_by:X.get(Q)?.last_used_by}))}}})});var KB$=L(()=>{dU$();mU$();iU$();oU$();XB$();QB$();YB$();GB$();JB$()});import{z as OX}from"zod";var K$1;var WB$=L(()=>{v6();k0();K$1=c({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OX.object({startDate:OX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:OX.array(OX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:OX.array(OX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:OX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:OX.object({cells:OX.array(OX.object({virtualMcpId:OX.string().nullable(),toolName:OX.string(),calls:OX.number(),errors:OX.number(),outputSize:OX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=a(Z);return await Z.access.check(),await uQ(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as P5}from"zod";var W$1;var HB$=L(()=>{v6();k0();W$1=c({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:P5.object({id:P5.string().describe("Log ID to fetch")}),outputSchema:P5.object({log:P5.object({id:P5.string().optional(),organizationId:P5.string(),connectionId:P5.string(),toolName:P5.string(),input:P5.record(P5.string(),P5.unknown()),output:P5.record(P5.string(),P5.unknown()),isError:P5.boolean(),errorMessage:P5.string().nullish(),durationMs:P5.number(),timestamp:P5.string(),userId:P5.string().nullish(),requestId:P5.string(),userAgent:P5.string().nullish(),virtualMcpId:P5.string().nullish(),properties:P5.record(P5.string(),P5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await uQ();let X=a(Z),Q=await Z.storage.monitoring.getById(X.id,$.id);if(!Q)return{log:null};return{log:{...Q,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp}}}})});import{z as w8}from"zod";var cT4,H$1;var FB$=L(()=>{v6();k0();cT4=w8.object({id:w8.string().optional().describe("Unique log identifier"),organizationId:w8.string().describe("Organization ID"),connectionId:w8.string().describe("Connection ID"),toolName:w8.string().describe("Name of the tool that was called"),isError:w8.boolean().describe("Whether the call resulted in an error"),errorMessage:w8.string().nullish().describe("Error message if applicable"),durationMs:w8.number().describe("Call duration in milliseconds"),timestamp:w8.string().describe("ISO 8601 timestamp of the call"),userId:w8.string().nullish().describe("User who triggered the call"),requestId:w8.string().describe("Unique request identifier"),userAgent:w8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:w8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:w8.record(w8.string(),w8.string()).nullish().describe("Custom key-value metadata attached to the log")}),H$1=c({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:w8.object({connectionId:w8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:w8.array(w8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:w8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:w8.string().optional().describe("Filter by tool name"),isError:w8.boolean().optional().describe("Filter by error status"),startDate:w8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:w8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:w8.number().default(20).describe("Maximum number of results"),offset:w8.number().default(0).describe("Offset for pagination"),properties:w8.record(w8.string(),w8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:w8.array(w8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:w8.record(w8.string(),w8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:w8.record(w8.string(),w8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:w8.object({logs:w8.array(cT4).describe("Array of monitoring logs"),total:w8.number().describe("Total number of logs matching filters"),offset:w8.number().describe("Current offset for pagination"),limit:w8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await uQ();let X=a(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:X.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},J=await Z.storage.monitoring.query(G);return{logs:J.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:J.total,offset:$.offset,limit:$.limit}}})});import{z as F$}from"zod";var F$1;var NB$=L(()=>{v6();k0();F$1=c({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F$.object({startDate:F$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:F$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:F$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:F$.array(F$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:F$.array(F$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:F$.array(F$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:F$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:F$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:F$.array(F$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:F$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:F$.object({totalCalls:F$.number().describe("Total number of tool calls"),errorRate:F$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:F$.number().describe("Average call duration in milliseconds"),errorRatePercent:F$.string().optional().describe("Error rate as a percentage string"),totalErrors:F$.number().optional().describe("Total number of errors"),p50DurationMs:F$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:F$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:F$.array(F$.object({connectionId:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avgDurationMs:F$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:F$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:F$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:F$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:F$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:F$.array(F$.object({toolName:F$.string(),connectionId:F$.string().nullable(),calls:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:F$.array(F$.object({timestamp:F$.string(),toolName:F$.string(),calls:F$.number(),errors:F$.number(),avg:F$.number(),p95:F$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:F$.array(F$.object({timestamp:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avg:F$.number(),p50:F$.number(),p95:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),totalTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=a(Z);if(await Z.access.check(),await uQ(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:X.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let G=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:G.topTools,topToolsTimeseries:G.timeseries}}let Q=await Z.storage.monitoring.getStats({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...Q,errorRatePercent:(Q.errorRate*100).toFixed(2)}}})});import{z as LQ}from"zod";var N$1;var UB$=L(()=>{v6();k0();N$1=c({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LQ.object({threadIds:LQ.array(LQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:LQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:LQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:LQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:LQ.object({items:LQ.array(LQ.object({threadId:LQ.string(),calls:LQ.number(),inputTokens:LQ.number(),outputTokens:LQ.number(),totalTokens:LQ.number(),costUsd:LQ.number()}))}),handler:async($,Z)=>{let X=a(Z);return await Z.access.check(),await uQ(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:X.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var BB$=L(()=>{WB$();HB$();FB$();NB$();UB$()});function oJ0($){return typeof $==="string"&&dT4.has($.trim().toLowerCase())}var dT4;var U$1=L(()=>{dT4=new Set([".well-known","_admin","api","auth","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as LG}from"zod";var B$1;var OB$=L(()=>{k0();U$1();B$1=c({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:LG.object({slug:LG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!oJ0($),"Slug is reserved by Studio"),name:LG.string().min(1).max(255),description:LG.string().optional()}),outputSchema:LG.object({id:LG.string(),name:LG.string(),slug:LG.string(),logo:LG.string().nullable().optional(),metadata:LG.any().optional(),createdAt:LG.string().datetime().describe("ISO 8601 timestamp"),members:LG.array(LG.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create organization");let Q=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:X});if(!Q)throw Error("Failed to create organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as LH}from"zod";var O$1;var LB$=L(()=>{k0();O$1=c({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:LH.object({}),outputSchema:LH.object({organizations:LH.array(LH.object({id:LH.string(),name:LH.string(),slug:LH.string(),logo:LH.string().nullable().optional(),metadata:LH.any().optional(),createdAt:LH.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}}})});import{z as vJ}from"zod";var L$1;var DB$=L(()=>{k0();L$1=c({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:vJ.object({}),outputSchema:vJ.object({id:vJ.string(),name:vJ.string(),slug:vJ.string(),logo:vJ.string().nullable().optional(),metadata:vJ.any().optional(),createdAt:vJ.string().datetime().describe("ISO 8601 timestamp"),members:vJ.array(vJ.any()).optional(),invitations:vJ.array(vJ.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as DK}from"zod";var D$1;var wB$=L(()=>{k0();D$1=c({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:DK.object({id:DK.string(),name:DK.string().min(1).max(255).optional(),description:DK.string().optional()}),outputSchema:DK.object({id:DK.string(),name:DK.string(),slug:DK.string(),logo:DK.string().nullable().optional(),metadata:DK.any().optional(),createdAt:DK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X={};if($.name)X.name=$.name;if($.description!==void 0)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as so}from"zod";var w$1;var EB$=L(()=>{k0();w$1=c({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:so.object({id:so.string()}),outputSchema:so.object({success:so.boolean(),id:so.string()}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.get($.id);return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...X?.metadata,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as xN}from"zod";var E$1;var jB$=L(()=>{k0();UX();E$1=c({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xN.object({}),outputSchema:xN.object({organizationId:xN.string(),sidebar_items:xN.array(Wo).nullable().optional(),enabled_plugins:xN.array(xN.string()).nullable().optional(),registry_config:Ho.nullable().optional(),simple_mode:Fo.nullable().optional(),default_home_agents:Uo.nullable().optional(),flags:Oo.nullable().optional(),main_agent_id:xN.string().nullable().optional(),sprint_config:Bo.nullable().optional(),createdAt:xN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:xN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.organizationSettings.get(X);if(!Q)return{organizationId:X};return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as GY}from"zod";var j$1;var zB$=L(()=>{k0();UX();j$1=c({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:GY.object({organizationId:GY.string(),sidebar_items:GY.array(Wo).optional(),enabled_plugins:GY.array(GY.string()).optional(),registry_config:Ho.optional(),simple_mode:Fo.optional(),default_home_agents:Uo.optional(),flags:Oo.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:GY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear."),sprint_config:Bo.optional().describe("Task board sprint cadence. Replaced whole (not merged), so pass all three fields.")}),outputSchema:GY.object({organizationId:GY.string(),sidebar_items:GY.array(Wo).nullable().optional(),enabled_plugins:GY.array(GY.string()).nullable().optional(),registry_config:Ho.nullable().optional(),simple_mode:Fo.nullable().optional(),default_home_agents:Uo.nullable().optional(),flags:Oo.nullable().optional(),main_agent_id:GY.string().nullable().optional(),sprint_config:Bo.nullable().optional(),createdAt:GY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:GY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),a(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let Q=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags,main_agent_id:$.main_agent_id,sprint_config:$.sprint_config});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as wK}from"zod";var PB$,z$1,P$1;var AB$=L(()=>{k0();UX();PB$=JL.extend({organizationId:wK.string(),archivedAt:wK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:wK.string().describe("ISO 8601 timestamp"),updatedAt:wK.string().describe("ISO 8601 timestamp")}),z$1=c({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wK.object({includeArchived:wK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:wK.object({items:wK.array(PB$)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),P$1=c({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wK.object({id:wK.string().describe("Brand context ID")}),outputSchema:PB$.extend({organizationId:wK.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.get($.id,X);if(!Q)throw Error("Brand context not found");return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as Qz}from"zod";var TB$,A$1,T$1,R$1;var RB$=L(()=>{k0();UX();TB$=JL.extend({organizationId:Qz.string(),createdAt:Qz.string().describe("ISO 8601 timestamp"),updatedAt:Qz.string().describe("ISO 8601 timestamp")}),A$1=c({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:JL.omit({id:!0}),outputSchema:TB$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.create(X,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}),T$1=c({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JL.partial().required({id:!0}),outputSchema:TB$,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,X);let J=await Z.storage.brandContext.update(Y,X,{name:G.name,domain:G.domain,overview:G.overview,logo:G.logo!==void 0?G.logo??null:void 0,favicon:G.favicon!==void 0?G.favicon??null:void 0,ogImage:G.ogImage!==void 0?G.ogImage??null:void 0,fonts:G.fonts!==void 0?G.fonts??null:void 0,colors:G.colors!==void 0?G.colors??null:void 0,images:G.images!==void 0?G.images??null:void 0,metadata:G.metadata!==void 0?G.metadata??null:void 0,archivedAt:G.archivedAt!==void 0?G.archivedAt??null:void 0,isDefault:G.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),R$1=c({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Qz.object({id:Qz.string().describe("Brand context ID")}),outputSchema:Qz.object({success:Qz.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,X,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function rJ0($,Z,X){let Q=$.trim();if(!Q.startsWith("http"))Q=`https://${Q}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:Q,formats:["branding"]})});if(!Y.ok){let U=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${U.slice(0,200)}`)}let G=await Y.json();if(!G.success||!G.data?.branding)return null;let J=G.data.branding,K=G.data.metadata??{},W=pT4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((U)=>U.trim()).filter(Boolean)?.slice().sort((U,B)=>U.length-B.length)[0]??K.ogSiteName??X??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function pT4($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[F,N]of Object.entries(Q))if(typeof N==="string"&&N&&mT4.has(F))Y[F]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,N]of Object.entries(K))if(typeof N==="string"&&N){let U=iT4[F.toLowerCase()];if(U&&!G[U])G[U]=N}let W=$.fonts;if(Array.isArray(W))for(let F of W){let N=F.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:X.logo??null,favicon:X.favicon??null,ogImage:X.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var mT4,iT4;var I$1=L(()=>{mT4=new Set(["primary","secondary","accent","background","foreground"]),iT4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as aJ0}from"zod";var nT4,q$1;var IB$=L(()=>{k0();I$1();UX();nT4=JL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:aJ0.boolean()}),q$1=c({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:aJ0.object({domain:aJ0.string().describe("Website domain to extract brand from"),brandId:aJ0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:nT4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=Z.firecrawlApiKey;if(!Q)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await rJ0($.domain,Q,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let G={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},J=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,X))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,X,G)})():await Z.storage.brandContext.create(X,G);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function qB$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let X=Object.fromEntries(Object.entries(Z).filter(([Q])=>Q!=="tagline"&&Q!=="tone"));return Object.keys(X).length>0?X:void 0})()}}var M$1,V$1;var MB$=L(()=>{k11();k0();M$1=c({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VJ0,outputSchema:go,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.id?await Z.storage.brandContext.get($.id,X):await Z.storage.brandContext.getDefault(X);if(!Q)throw Error($.id?"Brand not found":"No default brand configured");return qB$(Q)}}),V$1=c({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:kJ0,outputSchema:SJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X)).map(qB$)}}})});import{resolveTxt as tT4}from"dns/promises";function k$1($){return`${oT4}.${$.toLowerCase()}`}function VB$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function kB$($,Z,X=tT4){if(!Z)return!1;try{return(await X(k$1($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var oT4="_deco-verify";var SB$=()=>{};import{z as y5}from"zod";function RL($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?k$1($.domain):null,recordValue:Z?$.verificationToken:null}}function aT4($){let Z=$.toLowerCase().trim();if(!rT4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(EK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var rT4,S$1,sJ0,C$1,_$1,v$1,x$1,f$1;var CB$=L(()=>{DG();SB$();k0();rT4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,S$1=y5.enum(["off","auto","request"]),sJ0=y5.object({id:y5.string(),domain:y5.string(),joinMode:S$1,verificationStatus:y5.enum(["pending","verified"]),verificationMethod:y5.enum(["email","dns"]).nullable(),verifiedAt:y5.string().nullable(),recordName:y5.string().nullable(),recordValue:y5.string().nullable()});C$1=c({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({}),outputSchema:y5.object({domains:y5.array(sJ0)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(RL)}}}),_$1=c({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({domain:y5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:S$1.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:sJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=aT4($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===Q,K=await Z.storage.organizationDomains.getByOrgAndDomain(X.id,Q);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return RL(H)}return RL(K)}let W=J?await Z.storage.organizationDomains.add(X.id,Q,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(X.id,Q,{joinMode:"off",verificationStatus:"pending",verificationToken:VB$()});return RL(W)}}),v$1=c({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({id:y5.string(),joinMode:S$1}),outputSchema:sJ0,handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if($.joinMode!=="off"&&Q.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return RL(Y)}}),x$1=c({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:y5.object({id:y5.string()}),outputSchema:y5.object({verified:y5.boolean(),domain:sJ0}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if(Q.verificationStatus==="verified")return{verified:!0,domain:RL(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await kB$(Q.domain,Q.verificationToken))return{verified:!1,domain:RL(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:RL(G)}}}),f$1=c({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:y5.object({id:y5.string()}),outputSchema:y5.object({success:y5.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function IL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as S9}from"zod";var sT4,b$1,y$1,g$1;var _B$=L(()=>{k0();f4();sT4=S9.object({id:S9.string(),userId:S9.string(),status:S9.enum(["pending","approved","denied"]),createdAt:S9.string(),user:S9.object({id:S9.string(),name:S9.string(),email:S9.string(),image:S9.string().nullable()}).nullable()}),b$1=c({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({}),outputSchema:S9.object({requests:S9.array(sT4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(X.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),y$1=c({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({requestId:S9.string()}),outputSchema:S9.object({success:S9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(!await Z.storage.organizationJoinRequests.decide(Q.id,"approved",Y??Q.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:X.id,userId:Q.userId,role:["user"]})}catch(J){if(!IL(J))throw J}if(Y)h1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),g$1=c({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:S9.object({requestId:S9.string()}),outputSchema:S9.object({success:S9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)h1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as JY}from"zod";var h$1;var vB$=L(()=>{f4();k0();ZY();h$1=c({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JY.object({organizationId:JY.string().optional(),userId:JY.string(),role:JY.array(JY.string())}),outputSchema:JY.object({id:JY.string(),organizationId:JY.string(),userId:JY.string(),role:JY.union([JY.string(),JY.array(JY.string())]),createdAt:JY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!YG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:X,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as Ch}from"zod";var u$1;var xB$=L(()=>{f4();k0();u$1=c({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Ch.object({organizationId:Ch.string().optional(),memberIdOrEmail:Ch.string()}),outputSchema:Ch.object({success:Ch.boolean(),memberIdOrEmail:Ch.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.removeMember({organizationId:X,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(Q.member.userId,X);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as LX}from"zod";var c$1;var fB$=L(()=>{k0();c$1=c({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LX.object({limit:LX.number().int().min(1).max(1000).optional(),offset:LX.number().int().min(0).optional()}),outputSchema:LX.object({members:LX.array(LX.object({id:LX.string(),organizationId:LX.string(),userId:LX.string(),role:LX.string(),createdAt:LX.string().datetime().describe("ISO 8601 timestamp"),user:LX.object({id:LX.string(),name:LX.string(),email:LX.string(),image:LX.string().optional()}).optional()}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:X,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as tZ}from"zod";var l$1;var bB$=L(()=>{f4();k0();ZY();l$1=c({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:tZ.object({organizationId:tZ.string().optional(),memberId:tZ.string(),role:tZ.array(tZ.string())}),outputSchema:tZ.object({id:tZ.string(),organizationId:tZ.string(),userId:tZ.string(),role:tZ.union([tZ.string(),tZ.array(tZ.string())]),createdAt:tZ.string().datetime().describe("ISO 8601 timestamp"),user:tZ.object({email:tZ.string(),name:tZ.string(),image:tZ.string().optional()})}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!YG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:X,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,X);let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function yB$(){if(eo&&Date.now()-eo.fetchedAt<600000)return eo.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),X=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(X)||X<=0)throw Error("Invalid rate");return eo={rate:X,fetchedAt:Date.now()},X}catch{return eo?.rate??5.5}}function gB$($,Z,X){if(Z==="brl")return Math.round($/X);return $}var eo=null;function d$1($,Z="",X=new URLSearchParams){for(let[Q,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${Q}]`:Q;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)d$1(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")d$1(Y,G,X);else X.append(G,String(Y))}return X}async function $r($,Z){let X=y0().stripeSecretKey;if(!X)throw new wG(503,"billing is not configured");let Q=Z?.params?d$1(Z.params).toString():void 0,Y=await fetch(`${eT4}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout($24)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new wG(Y.status,J)}return G}function hB$($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function uB$($){let Z=y0().stripeOrgPriceId;if(!Z)throw new wG(503,"billing is not configured");let X=await $r("/checkout/sessions",{params:{mode:"subscription",...hB$(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!X.url)throw new wG(500,"checkout session lacks url");return{url:X.url}}function Z24($,Z){return Math.round($*(1+Z/100))}async function cB$($){let Z=Z24($.amountCents,$.feePercent),X=gB$($.amountCents,$.currency,await yB$()),Q=y0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:X},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await $r("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...hB$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...Q?{product:Q}:{product_data:{name:G}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!J.url)throw new wG(500,"checkout session lacks url");return{url:J.url}}async function eJ0($){let Z=await $r("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new wG(500,"portal session lacks url");return{url:Z.url}}async function $30($){return $r(`/subscriptions/${encodeURIComponent($)}`)}async function lB$($){await $r(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var eT4="https://api.stripe.com/v1",wG,$24=15000;var Yz=L(()=>{V$();wG=class wG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as m$1}from"zod";var i$1;var dB$=L(()=>{Yz();i5();k0();f4();i$1=c({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:m$1.object({}),outputSchema:m$1.object({url:m$1.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id,Q=Z.organization?.slug;if(!X||!Q)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(X);if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let G=`${d9()}/${encodeURIComponent(Q)}/members`,{url:J}=await uB$({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return NG({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as p$1}from"zod";var n$1;var mB$=L(()=>{Yz();i5();k0();n$1=c({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:p$1.object({}),outputSchema:p$1.object({url:p$1.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!X.slug)throw Error("Organization context required");let Q=await Z.storage.organizationBilling.getBilling(X.id);if(!Q?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await eJ0({customerId:Q.stripeCustomerId,returnUrl:`${d9()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof wG)throw Error(Y.message);throw Y}}})});function Z30($){return t$1[$%t$1.length]??X24}function KY($){return $.createdBy==="system"}function fN($){return X30.filter((Z)=>Oh($,Q24[Z]))}function vh($,Z){return $?.startsWith(`${_h[Z]}:`)??!1}function bN($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function o$1($,Z){let X=bN($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function qL($,Z,X){if(Z.length===0)return!1;let Q=o$1($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function pB$($,Z){return qL($,Z)&&!qL($,Z,{verifiedOnly:!0})}function nB$($){let Z=null;for(let X of $){if(X.action!=="review_approved"&&X.action!=="review_changes_requested")continue;let Q=new Date(X.occurredAt).getTime();if(Z&&Q<Z.at)continue;let Y=X.data?.notes;Z={at:Q,notes:X.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}function Y24($){let Z=0;for(let X of $){if(X.action!=="assignee_changed")continue;if(X.data?.to!==E8)continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function tB$($,Z=r$1){let X=Y24($),Q=new Set,Y=0;for(let G of[...$].sort((J,K)=>J.occurredAt.localeCompare(K.occurredAt))){let J=new Date(G.occurredAt).getTime();if(G.action==="status_changed"){if(G.data?.to==="in_review")Y=J;continue}if(G.action==="review_changes_requested"&&J>=X)Q.add(Y)}return Q.size+1>=Z}var E8="super-agent",t$1,X24,Zr='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',iB$,X30,_h,Q24,r$1=5,oB$="task-board.item.updated",rB$="task-board.item.deleted";var B9=L(()=>{UX();t$1=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],X24=t$1[0];iB$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",X30=["qa","code_review"],_h={qa:"QA Agent",code_review:"Code Reviewer"},Q24={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function a$1($){return $==="trial"?"trial":"subscription"}function Xr($,Z,X,Q={}){NG({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function s$1($){return $?.status==="active"||$?.status==="past_due"}function Q30($,Z){if(s$1($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function Qr(){let $=y0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function ML(){return{...Qr(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function xh($,Z,X=Qr()){if(!X.enforced||!KY(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Xr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new DX("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=Q30(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Xr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:a$1(G.periodKey),limit:G.limit}),new DX(G.exhaustedReason)}async function aB$($,Z,X=Qr()){if(!X.enforced||!KY(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=Q30(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Xr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:a$1(Y.periodKey),limit:Y.limit}),new DX(Y.exhaustedReason);if(G==="runs_exhausted")throw Xr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new DX("runs_exhausted");if(G==="claimed")Xr($,"task_quota_claimed",Z,{billing_mode:a$1(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function sB$($,Z,X,Q){if(Q==="skipped")return;await $.rollbackTaskClaim(Z,X,{releaseSlot:Q==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function eB$($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function $O$($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))NG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var G24="[SUBSCRIPTION_REQUIRED]",J24,DX;var xJ=L(()=>{B9();f4();V$();J24={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};DX=class DX extends Error{reason;constructor($){super(`${G24} ${J24[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as yN}from"zod";var e$1;var ZO$=L(()=>{k0();xJ();e$1=c({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:yN.object({}),outputSchema:yN.object({enforced:yN.boolean(),billingStatus:yN.string(),subscribed:yN.boolean(),hasBillingAccount:yN.boolean(),used:yN.number(),limit:yN.number(),currentPeriodEnd:yN.string().datetime().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=Qr(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=Q30(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:s$1(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var XO$=L(()=>{OB$();LB$();DB$();wB$();EB$();jB$();zB$();AB$();RB$();IB$();MB$();CB$();_B$();vB$();xB$();fB$();bB$();dB$();mB$();ZO$()});function DH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function Y30($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(Y30);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||Y30(X)));return!1}function $81($){return Array.isArray($)&&$.every(Y30)}function Yr($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||Y30(X)))}var CO$="vercel.ai.error",W24,QO$,YO$,W1,_O$="AI_APICallError",vO$,H24,GO$,JO$,W4,xO$="AI_EmptyResponseBodyError",fO$,F24,KO$,WO$,G30,bO$="AI_InvalidArgumentError",yO$,N24,HO$,FO$,VL,gO$="AI_InvalidPromptError",hO$,U24,NO$,UO$,fJ,uO$="AI_InvalidResponseDataError",cO$,B24,BO$,OO$,fh,lO$="AI_JSONParseError",dO$,O24,LO$,DO$,gN,mO$="AI_LoadAPIKeyError",iO$,L24,wO$,EO$,Gz,pO$="AI_LoadSettingError",nO$,D24,jO$,zO$,tO$,oO$="AI_NoContentGeneratedError",rO$,w24,PO$,AO$,aO$,sO$="AI_NoSuchModelError",eO$,E24,TO$,RO$,a5,$L$="AI_TooManyEmbeddingValuesForCallError",ZL$,j24,IO$,qO$,bh,XL$="AI_TypeValidationError",QL$,z24,MO$,VO$,A5,YL$="AI_UnsupportedFunctionalityError",GL$,P24,kO$,SO$,y4;var $$=L(()=>{W24=Symbol.for(CO$),W1=class $ extends(YO$=Error,QO$=W24,YO$){constructor({name:Z,message:X,cause:Q}){super(X);this[QO$]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,CO$)}static hasMarker(Z,X){let Q=Symbol.for(X);return Z!=null&&typeof Z==="object"&&Q in Z&&typeof Z[Q]==="boolean"&&Z[Q]===!0}},vO$=`vercel.ai.error.${_O$}`,H24=Symbol.for(vO$),W4=class extends(JO$=W1,GO$=H24,JO$){constructor({message:$,url:Z,requestBodyValues:X,statusCode:Q,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:W}){super({name:_O$,message:$,cause:J});this[GO$]=!0,this.url=Z,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return W1.hasMarker($,vO$)}},fO$=`vercel.ai.error.${xO$}`,F24=Symbol.for(fO$),G30=class extends(WO$=W1,KO$=F24,WO$){constructor({message:$="Empty response body"}={}){super({name:xO$,message:$});this[KO$]=!0}static isInstance($){return W1.hasMarker($,fO$)}};yO$=`vercel.ai.error.${bO$}`,N24=Symbol.for(yO$),VL=class extends(FO$=W1,HO$=N24,FO$){constructor({message:$,cause:Z,argument:X}){super({name:bO$,message:$,cause:Z});this[HO$]=!0,this.argument=X}static isInstance($){return W1.hasMarker($,yO$)}},hO$=`vercel.ai.error.${gO$}`,U24=Symbol.for(hO$),fJ=class extends(UO$=W1,NO$=U24,UO$){constructor({prompt:$,message:Z,cause:X}){super({name:gO$,message:`Invalid prompt: ${Z}`,cause:X});this[NO$]=!0,this.prompt=$}static isInstance($){return W1.hasMarker($,hO$)}},cO$=`vercel.ai.error.${uO$}`,B24=Symbol.for(cO$),fh=class extends(OO$=W1,BO$=B24,OO$){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:uO$,message:Z});this[BO$]=!0,this.data=$}static isInstance($){return W1.hasMarker($,cO$)}},dO$=`vercel.ai.error.${lO$}`,O24=Symbol.for(dO$),gN=class extends(DO$=W1,LO$=O24,DO$){constructor({text:$,cause:Z}){super({name:lO$,message:`JSON parsing failed: Text: ${$}.
|
|
2239
2239
|
Error message: ${DH(Z)}`,cause:Z});this[LO$]=!0,this.text=$}static isInstance($){return W1.hasMarker($,dO$)}},iO$=`vercel.ai.error.${mO$}`,L24=Symbol.for(iO$),Gz=class extends(EO$=W1,wO$=L24,EO$){constructor({message:$}){super({name:mO$,message:$});this[wO$]=!0}static isInstance($){return W1.hasMarker($,iO$)}},nO$=`vercel.ai.error.${pO$}`,D24=Symbol.for(nO$),tO$=class extends(zO$=W1,jO$=D24,zO$){constructor({message:$}){super({name:pO$,message:$});this[jO$]=!0}static isInstance($){return W1.hasMarker($,nO$)}},rO$=`vercel.ai.error.${oO$}`,w24=Symbol.for(rO$),aO$=class extends(AO$=W1,PO$=w24,AO$){constructor({message:$="No content generated."}={}){super({name:oO$,message:$});this[PO$]=!0}static isInstance($){return W1.hasMarker($,rO$)}},eO$=`vercel.ai.error.${sO$}`,E24=Symbol.for(eO$),a5=class extends(RO$=W1,TO$=E24,RO$){constructor({errorName:$=sO$,modelId:Z,modelType:X,message:Q=`No such ${X}: ${Z}`}){super({name:$,message:Q});this[TO$]=!0,this.modelId=Z,this.modelType=X}static isInstance($){return W1.hasMarker($,eO$)}},ZL$=`vercel.ai.error.${$L$}`,j24=Symbol.for(ZL$),bh=class extends(qO$=W1,IO$=j24,qO$){constructor($){super({name:$L$,message:`Too many values for a single embedding call. The ${$.provider} model "${$.modelId}" can only embed up to ${$.maxEmbeddingsPerCall} values per call, but ${$.values.length} values were provided.`});this[IO$]=!0,this.provider=$.provider,this.modelId=$.modelId,this.maxEmbeddingsPerCall=$.maxEmbeddingsPerCall,this.values=$.values}static isInstance($){return W1.hasMarker($,ZL$)}},QL$=`vercel.ai.error.${XL$}`,z24=Symbol.for(QL$),A5=class $ extends(VO$=W1,MO$=z24,VO$){constructor({value:Z,cause:X,context:Q}){let Y="Type validation failed";if(Q==null?void 0:Q.field)Y+=` for ${Q.field}`;if((Q==null?void 0:Q.entityName)||(Q==null?void 0:Q.entityId)){Y+=" (";let G=[];if(Q.entityName)G.push(Q.entityName);if(Q.entityId)G.push(`id: "${Q.entityId}"`);Y+=G.join(", "),Y+=")"}super({name:XL$,message:`${Y}: Value: ${JSON.stringify(Z)}.
|
|
2240
2240
|
Error message: ${DH(X)}`,cause:X});this[MO$]=!0,this.value=Z,this.context=Q}static isInstance(Z){return W1.hasMarker(Z,QL$)}static wrap({value:Z,cause:X,context:Q}){var Y,G,J;if($.isInstance(X)&&X.value===Z&&((Y=X.context)==null?void 0:Y.field)===(Q==null?void 0:Q.field)&&((G=X.context)==null?void 0:G.entityName)===(Q==null?void 0:Q.entityName)&&((J=X.context)==null?void 0:J.entityId)===(Q==null?void 0:Q.entityId))return X;return new $({value:Z,cause:X,context:Q})}},GL$=`vercel.ai.error.${YL$}`,P24=Symbol.for(GL$),y4=class extends(SO$=W1,kO$=P24,SO$){constructor({functionality:$,message:Z=`'${$}' functionality not supported.`}){super({name:YL$,message:Z});this[kO$]=!0,this.functionality=$}static isInstance($){return W1.hasMarker($,GL$)}}});import*as H30 from"zod/v4";import{ZodFirstPartyTypeKind as E4}from"zod/v3";import{ZodFirstPartyTypeKind as h24}from"zod/v3";import{ZodFirstPartyTypeKind as J30}from"zod/v3";function e$(...$){return $.reduce((Z,X)=>({...Z,...X!=null?X:{}}),{})}function K30({tools:$=[],providerToolNames:Z,resolveProviderToolName:X}){var Q;let Y={},G={};for(let J of $)if(J.type==="provider"){let K=(Q=X==null?void 0:X(J))!=null?Q:(J.id in Z)?Z[J.id]:void 0;if(K==null)continue;Y[J.name]=K,G[K]=J.name}return{toProviderToolName:(J)=>{var K;return(K=Y[J])!=null?K:J},toCustomToolName:(J)=>{var K;return(K=G[J])!=null?K:J}}}async function HY($,Z){if($==null)return Promise.resolve();let X=Z==null?void 0:Z.abortSignal;return new Promise((Q,Y)=>{if(X==null?void 0:X.aborted){Y(JL$());return}let G=setTimeout(()=>{J(),Q()},$),J=()=>{clearTimeout(G),X==null||X.removeEventListener("abort",K)},K=()=>{J(),Y(JL$())};X==null||X.addEventListener("abort",K)})}function JL$(){return new DOMException("Delay was aborted","AbortError")}function yh($){return Object.fromEntries([...$.headers])}function C9($){let Z=$.replace(/-/g,"+").replace(/_/g,"/"),X=T24(Z);return Uint8Array.from(X,(Q)=>Q.codePointAt(0))}function NY($){let Z="";for(let X=0;X<$.length;X++)Z+=String.fromCodePoint($[X]);return A24(Z)}function EZ($){return $ instanceof Uint8Array?NY($):$}function UL$($,Z={}){let{useArrayBrackets:X=!0}=Z,Q=new FormData;for(let[Y,G]of Object.entries($)){if(G==null)continue;if(Array.isArray(G)){if(G.length===1){Q.append(Y,G[0]);continue}let J=X?`${Y}[]`:Y;for(let K of G)Q.append(J,K);continue}Q.append(Y,G)}return Q}async function Gr($){var Z;try{await((Z=$.body)==null?void 0:Z.cancel())}catch(X){}}function I24($=globalThis){return $.window!=null}function q24($){let Z;try{Z=new URL($)}catch(Q){throw new wZ({url:$,message:`Invalid URL: ${$}`})}if(Z.protocol==="data:")return;if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw new wZ({url:$,message:`URL scheme must be http, https, or data, got ${Z.protocol}`});let X=Z.hostname.toLowerCase().replace(/\.+$/,"");if(!X)throw new wZ({url:$,message:"URL must have a hostname"});if(X==="localhost"||X.endsWith(".local")||X.endsWith(".localhost"))throw new wZ({url:$,message:`URL with hostname ${X} is not allowed`});if(X.startsWith("[")&&X.endsWith("]")){let Q=X.slice(1,-1);if(V24(Q))throw new wZ({url:$,message:`URL with IPv6 address ${X} is not allowed`});return}if(LL$(X)){if(DL$(X))throw new wZ({url:$,message:`URL with IP address ${X} is not allowed`});return}}function LL$($){let Z=$.split(".");if(Z.length!==4)return!1;return Z.every((X)=>{let Q=Number(X);return Number.isInteger(Q)&&Q>=0&&Q<=255&&String(Q)===X})}function DL$($){let Z=$.split(".").map(Number),[X,Q,Y]=Z;if(X===0)return!0;if(X===10)return!0;if(X===100&&Q>=64&&Q<=127)return!0;if(X===127)return!0;if(X===169&&Q===254)return!0;if(X===172&&Q>=16&&Q<=31)return!0;if(X===192&&Q===0&&Y===0)return!0;if(X===192&&Q===168)return!0;if(X===198&&(Q===18||Q===19))return!0;if(X>=240)return!0;return!1}function M24($){let Z=$.toLowerCase(),X=Z.indexOf("%");if(X!==-1)Z=Z.slice(0,X);let Q=Z.split("::");if(Q.length>2)return null;let Y=(J)=>{if(J==="")return[];let K=[],W=J.split(":");for(let H=0;H<W.length;H++){let F=W[H];if(F.includes(".")){if(H!==W.length-1||!LL$(F))return null;let[N,U,B,O]=F.split(".").map(Number);K.push(N<<8|U,B<<8|O);continue}if(!/^[0-9a-f]{1,4}$/.test(F))return null;K.push(parseInt(F,16))}return K},G=Y(Q[0]);if(G===null)return null;if(Q.length===2){let J=Y(Q[1]);if(J===null)return null;let K=8-G.length-J.length;if(K<0)return null;return[...G,...Array(K).fill(0),...J]}return G.length===8?G:null}function V24($){let Z=M24($);if(Z===null)return!0;let X=(Y)=>Z.slice(0,Y).every((G)=>G===0);if(X(7)&&(Z[7]===0||Z[7]===1))return!0;if((Z[0]&65024)===64512)return!0;if((Z[0]&65472)===65152)return!0;if((Z[0]&65472)===65216)return!0;if((Z[0]&65280)===65280)return!0;if(X(6)||X(5)&&Z[5]===65535||X(4)&&Z[4]===65535&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===0&&Z[3]===0&&Z[4]===0&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===1){let Y=Z[6]>>8&255,G=Z[6]&255,J=Z[7]>>8&255,K=Z[7]&255;return DL$(`${Y}.${G}.${J}.${K}`)}return!1}async function G81({url:$,headers:Z,abortSignal:X,maxRedirects:Q=k24}){let Y={signal:X};if(Z!==void 0)Y.headers=Z;let G=$;for(let J=0;J<=Q;J++){q24(G);let K=await fetch(G,{...Y,redirect:"manual"});if(K.type==="opaqueredirect"){if(!I24())throw new wZ({url:$,message:`Redirect from ${G} could not be validated and was blocked`});return await fetch(G,{...Y,redirect:"follow"})}let W=K.headers.get("location");if(K.status>=300&&K.status<400&&W){await Gr(K),G=new URL(W,G).toString();continue}return K}throw new wZ({url:$,message:`Too many redirects (max ${Q})`})}async function J81({response:$,url:Z,maxBytes:X=W30}){let Q=$.headers.get("content-length");if(Q!=null){let F=parseInt(Q,10);if(!isNaN(F)&&F>X)throw await Gr($),new wZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} bytes (Content-Length: ${F}).`})}let Y=$.body;if(Y==null)return new Uint8Array(0);let G=Y.getReader(),J=[],K=0;try{while(!0){let{done:F,value:N}=await G.read();if(F)break;if(K+=N.length,K>X)throw new wZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} bytes.`});J.push(N)}}finally{try{await G.cancel()}finally{G.releaseLock()}}let W=new Uint8Array(K),H=0;for(let F of J)W.set(F,H),H+=F.length;return W}async function K81($,Z){var X,Q;try{let Y=await G81({url:$,abortSignal:Z==null?void 0:Z.abortSignal});if(!Y.ok)throw await Gr(Y),new wZ({url:$,statusCode:Y.status,statusText:Y.statusText});let G=await J81({response:Y,url:$,maxBytes:(X=Z==null?void 0:Z.maxBytes)!=null?X:W30}),J=(Q=Y.headers.get("content-type"))!=null?Q:void 0;return new Blob([G],J?{type:J}:void 0)}catch(Y){if(wZ.isInstance(Y))throw Y;throw new wZ({url:$,cause:Y})}}function gh($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function WY($){return($ instanceof Error||$ instanceof DOMException)&&($.name==="AbortError"||$.name==="ResponseAborted"||$.name==="TimeoutError")}function _24($){if(!($ instanceof Error))return!1;let Z=$.code;if(typeof Z==="string"&&C24.includes(Z))return!0;return!1}function wL$({error:$,url:Z,requestBodyValues:X}){if(WY($))return $;if($ instanceof TypeError&&S24.includes($.message.toLowerCase())){let Q=$.cause;if(Q!=null)return new W4({message:`Cannot connect to API: ${Q.message}`,cause:Q,url:Z,requestBodyValues:X,isRetryable:!0})}if(_24($))return new W4({message:`Cannot connect to API: ${$.message}`,cause:$,url:Z,requestBodyValues:X,isRetryable:!0});return $}function kL($=globalThis){var Z,X,Q;if($.window)return"runtime/browser";if((Z=$.navigator)==null?void 0:Z.userAgent)return`runtime/${$.navigator.userAgent.toLowerCase()}`;if((Q=(X=$.process)==null?void 0:X.versions)==null?void 0:Q.node)return`runtime/node.js/${$.process.version.substring(0)}`;if($.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function SL($){if($==null)return{};let Z={};if($ instanceof Headers)$.forEach((X,Q)=>{Z[Q.toLowerCase()]=X});else{if(!Array.isArray($))$=Object.entries($);for(let[X,Q]of $)if(Q!=null)Z[X.toLowerCase()]=Q}return Z}function e4($,...Z){let X=new Headers(SL($)),Q=X.get("user-agent")||"";return X.set("user-agent",[Q,...Z].filter(Boolean).join(" ")),Object.fromEntries(X.entries())}function Kz($){return $!=null}function jL$($,Z){try{return new URL($).origin===new URL(Z).origin}catch(X){return!1}}function zL$({mediaType:$,url:Z,supportedUrls:X}){return Z=Z.toLowerCase(),$=$.toLowerCase(),Object.entries(X).map(([Q,Y])=>{let G=Q.toLowerCase();return G==="*"||G==="*/*"?{mediaTypePrefix:"",regexes:Y}:{mediaTypePrefix:G.replace(/\*/,""),regexes:Y}}).filter(({mediaTypePrefix:Q})=>$.startsWith(Q)).flatMap(({regexes:Q})=>Q).some((Q)=>Q.test(Z))}function hh({apiKey:$,environmentVariableName:Z,apiKeyParameterName:X="apiKey",description:Q}){if(typeof $==="string")return $;if($!=null)throw new Gz({message:`${Q} API key must be a string.`});if(typeof process>"u")throw new Gz({message:`${Q} API key is missing. Pass it using the '${X}' parameter. Environment variables are not supported in this environment.`});if($=process.env[Z],$==null)throw new Gz({message:`${Q} API key is missing. Pass it using the '${X}' parameter or the ${Z} environment variable.`});if(typeof $!=="string")throw new Gz({message:`${Q} API key must be a string. The value of the ${Z} environment variable is not a string.`});return $}function wH({settingValue:$,environmentVariableName:Z}){if(typeof $==="string")return $;if($!=null||typeof process>"u")return;if($=process.env[Z],$==null||typeof $!=="string")return;return $}function PL$($){var Z;let[X,Q=""]=$.toLowerCase().split("/");return(Z={mpeg:"mp3","x-wav":"wav",opus:"ogg",mp4:"m4a","x-m4a":"m4a"}[Q])!=null?Z:Q}function HL$($){let Z=JSON.parse($);if(Z===null||typeof Z!=="object")return Z;if(x24.test($)===!1&&f24.test($)===!1)return Z;return b24(Z)}function b24($){let Z=[$];while(Z.length){let X=Z;Z=[];for(let Q of X){if(Object.prototype.hasOwnProperty.call(Q,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(Q,"constructor")&&Q.constructor!==null&&typeof Q.constructor==="object"&&Object.prototype.hasOwnProperty.call(Q.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let Y in Q){let G=Q[Y];if(G&&typeof G==="object")Z.push(G)}}}return $}function W81($){let{stackTraceLimit:Z}=Error;try{Error.stackTraceLimit=0}catch(X){return HL$($)}try{return HL$($)}finally{Error.stackTraceLimit=Z}}function H81($){if($.type==="object"||Array.isArray($.type)&&$.type.includes("object")){$.additionalProperties=!1;let{properties:X}=$;if(X!=null)for(let Q of Object.keys(X))X[Q]=Jz(X[Q])}if($.items!=null)$.items=Array.isArray($.items)?$.items.map(Jz):Jz($.items);if($.anyOf!=null)$.anyOf=$.anyOf.map(Jz);if($.allOf!=null)$.allOf=$.allOf.map(Jz);if($.oneOf!=null)$.oneOf=$.oneOf.map(Jz);let{definitions:Z}=$;if(Z!=null)for(let X of Object.keys(Z))Z[X]=Jz(Z[X]);return $}function Jz($){if(typeof $==="boolean")return $;return H81($)}function EG(){return{}}function u24($,Z){var X,Q,Y;let G={type:"array"};if(((X=$.type)==null?void 0:X._def)&&((Y=(Q=$.type)==null?void 0:Q._def)==null?void 0:Y.typeName)!==h24.ZodAny)G.items=I6($.type._def,{...Z,currentPath:[...Z.currentPath,"items"]});if($.minLength)G.minItems=$.minLength.value;if($.maxLength)G.maxItems=$.maxLength.value;if($.exactLength)G.minItems=$.exactLength.value,G.maxItems=$.exactLength.value;return G}function c24($){let Z={type:"integer",format:"int64"};if(!$.checks)return Z;for(let X of $.checks)switch(X.kind){case"min":if(X.inclusive)Z.minimum=X.value;else Z.exclusiveMinimum=X.value;break;case"max":if(X.inclusive)Z.maximum=X.value;else Z.exclusiveMaximum=X.value;break;case"multipleOf":Z.multipleOf=X.value;break}return Z}function l24(){return{type:"boolean"}}function AL$($,Z){return I6($.type._def,Z)}function TL$($,Z,X){let Q=X!=null?X:Z.dateStrategy;if(Array.isArray(Q))return{anyOf:Q.map((Y,G)=>TL$($,Z,Y))};switch(Q){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return m24($)}}function i24($,Z){return{...I6($.innerType._def,Z),default:$.defaultValue()}}function p24($,Z){return Z.effectStrategy==="input"?I6($.schema._def,Z):EG()}function n24($){return{type:"string",enum:Array.from($.values)}}function o24($,Z){let X=[I6($.left._def,{...Z,currentPath:[...Z.currentPath,"allOf","0"]}),I6($.right._def,{...Z,currentPath:[...Z.currentPath,"allOf","1"]})].filter((Y)=>!!Y),Q=[];return X.forEach((Y)=>{if(t24(Y))Q.push(...Y.allOf);else{let G=Y;if("additionalProperties"in Y&&Y.additionalProperties===!1){let{additionalProperties:J,...K}=Y;G=K}Q.push(G)}}),Q.length?{allOf:Q}:void 0}function r24($){let Z=typeof $.value;if(Z!=="bigint"&&Z!=="number"&&Z!=="boolean"&&Z!=="string")return{type:Array.isArray($.value)?"array":"object"};return{type:Z==="bigint"?"integer":Z,const:$.value}}function RL$($,Z){let X={type:"string"};if($.checks)for(let Q of $.checks)switch(Q.kind){case"min":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value;break;case"max":X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"email":switch(Z.emailStrategy){case"format:email":zK(X,"email",Q.message,Z);break;case"format:idn-email":zK(X,"idn-email",Q.message,Z);break;case"pattern:zod":DQ(X,jK.email,Q.message,Z);break}break;case"url":zK(X,"uri",Q.message,Z);break;case"uuid":zK(X,"uuid",Q.message,Z);break;case"regex":DQ(X,Q.regex,Q.message,Z);break;case"cuid":DQ(X,jK.cuid,Q.message,Z);break;case"cuid2":DQ(X,jK.cuid2,Q.message,Z);break;case"startsWith":DQ(X,RegExp(`^${X81(Q.value,Z)}`),Q.message,Z);break;case"endsWith":DQ(X,RegExp(`${X81(Q.value,Z)}$`),Q.message,Z);break;case"datetime":zK(X,"date-time",Q.message,Z);break;case"date":zK(X,"date",Q.message,Z);break;case"time":zK(X,"time",Q.message,Z);break;case"duration":zK(X,"duration",Q.message,Z);break;case"length":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value,X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"includes":{DQ(X,RegExp(X81(Q.value,Z)),Q.message,Z);break}case"ip":{if(Q.version!=="v6")zK(X,"ipv4",Q.message,Z);if(Q.version!=="v4")zK(X,"ipv6",Q.message,Z);break}case"base64url":DQ(X,jK.base64url,Q.message,Z);break;case"jwt":DQ(X,jK.jwt,Q.message,Z);break;case"cidr":{if(Q.version!=="v6")DQ(X,jK.ipv4Cidr,Q.message,Z);if(Q.version!=="v4")DQ(X,jK.ipv6Cidr,Q.message,Z);break}case"emoji":DQ(X,jK.emoji(),Q.message,Z);break;case"ulid":{DQ(X,jK.ulid,Q.message,Z);break}case"base64":{switch(Z.base64Strategy){case"format:binary":{zK(X,"binary",Q.message,Z);break}case"contentEncoding:base64":{X.contentEncoding="base64";break}case"pattern:zod":{DQ(X,jK.base64,Q.message,Z);break}}break}case"nanoid":DQ(X,jK.nanoid,Q.message,Z);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return X}function X81($,Z){return Z.patternStrategy==="escape"?s24($):$}function s24($){let Z="";for(let X=0;X<$.length;X++){if(!a24.has($[X]))Z+="\\";Z+=$[X]}return Z}function zK($,Z,X,Q){var Y;if($.format||((Y=$.anyOf)==null?void 0:Y.some((G)=>G.format))){if(!$.anyOf)$.anyOf=[];if($.format)$.anyOf.push({format:$.format}),delete $.format;$.anyOf.push({format:Z,...X&&Q.errorMessages&&{errorMessage:{format:X}}})}else $.format=Z}function DQ($,Z,X,Q){var Y;if($.pattern||((Y=$.allOf)==null?void 0:Y.some((G)=>G.pattern))){if(!$.allOf)$.allOf=[];if($.pattern)$.allOf.push({pattern:$.pattern}),delete $.pattern;$.allOf.push({pattern:NL$(Z,Q),...X&&Q.errorMessages&&{errorMessage:{pattern:X}}})}else $.pattern=NL$(Z,Q)}function NL$($,Z){var X;if(!Z.applyRegexFlags||!$.flags)return $.source;let Q={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},Y=Q.i?$.source.toLowerCase():$.source,G="",J=!1,K=!1,W=!1;for(let H=0;H<Y.length;H++){if(J){G+=Y[H],J=!1;continue}if(Q.i){if(K){if(Y[H].match(/[a-z]/)){if(W)G+=Y[H],G+=`${Y[H-2]}-${Y[H]}`.toUpperCase(),W=!1;else if(Y[H+1]==="-"&&((X=Y[H+2])==null?void 0:X.match(/[a-z]/)))G+=Y[H],W=!0;else G+=`${Y[H]}${Y[H].toUpperCase()}`;continue}}else if(Y[H].match(/[a-z]/)){G+=`[${Y[H]}${Y[H].toUpperCase()}]`;continue}}if(Q.m){if(Y[H]==="^"){G+=`(^|(?<=[\r
|
|
2241
2241
|
]))`;continue}else if(Y[H]==="$"){G+=`($|(?=[\r
|
|
@@ -2737,7 +2737,7 @@ ${Z}`:Z))}}async listAttachments($){return(await this.request(`/rest/api/3/issue
|
|
|
2737
2737
|
${G}`.trim().slice(0,hS$)}function Vm4($){let Z=$.fields.priority?.name?.toLowerCase();return Z&&Rm4[Z]||"medium"}async function yS$($,Z,X){if(!Z.autoDelegate)return X;if(X.status!=="todo"||X.assigneeId)return X;let Q=Z.organizationId,Y=await $.storage.taskBoard.claimUnassignedForSuperAgent(X.id,Q,Z.createdBy,QU);if(!Y)return X;await $.storage.taskBoard.recordActivity({taskBoardItemId:X.id,action:"assignee_changed",actorId:null,data:{from:null,to:E8}});try{await BD($,Y)}catch(G){return console.warn(`[jira] auto-delegate of ${X.id} rejected, un-delegating:`,G instanceof Error?G.message:G),await $.storage.taskBoard.update(X.id,Q,{assigneeId:null,assignedBy:null},QU)}return Y}async function gS$($,Z,X,Q,Y,G,J){let K=Z.organizationId,W=Q.fields.comment;if(W&&W.total===0)return;let H=W&&W.comments.length>=W.total?W.comments:await X.listComments(Q.id),F=await $.storage.jiraIntegrations.knownJiraCommentIds(K,H.map((B)=>B.id)),N=H.filter((B)=>!F.has(B.id)&&B.author?.accountId!==G);if(N.length===0)return;let U=await J.resolve(N.flatMap((B)=>ka(B.body)));for(let B of N){let O=VA0(B.body,U).slice(0,hS$),D=await $.storage.taskBoard.createComment({taskBoardItemId:Y,organizationId:K,authorId:QU,body:`**${B.author?.displayName??"Jira"} \xB7 via Jira:**
|
|
2738
2738
|
|
|
2739
2739
|
${O}`});if(!D)continue;try{await $.storage.jiraIntegrations.createCommentLink({commentId:D.id,organizationId:K,jiraCommentId:B.id})}catch(w){if(w.code==="23505"){await $.storage.taskBoard.deleteComment(D.id,K,QU);continue}throw w}}}async function km4($,Z){let{organizationId:X,boardId:Q}=Z;if(!Q)throw Error("No Jira board selected");let Y=ak$(Z.statusMapping);if(Y.size===0)throw Error("No status mapping configured");let G=Z.lastSyncedAt===null,J=new nJ(Z.siteUrl,Z.email,Z.apiToken),{accountId:K}=await J.myself(),W=new NZ1(J),H=await J.listBacklogIssueIds(Q),F=Im4(Z),N={created:0,updated:0,unchanged:0,skipped:0},U,B=0,O=0,D=new Date;while(O<bS$){let w=await J.listBoardIssues({boardId:Q,jql:F,startAt:B});if(w.issues.length===0)break;B+=w.issues.length;let E=await $.storage.jiraIntegrations.getLinksByIssueIds(X,w.issues.map((j)=>j.id));await W.resolve(w.issues.flatMap((j)=>[...ka(j.fields.description),...(j.fields.comment?.comments??[]).flatMap((z)=>ka(z.body))]));for(let j of w.issues){if(O>=bS$)break;O++;let z=new Date(j.fields.updated);if(Number.isNaN(z.getTime()))throw Error(`Unparseable updated on ${j.key}`);let A=Y.get(j.fields.status.name);if(!A||!qm4(j)||H.has(j.id)){N.skipped++,U=z;continue}let P=E.get(j.id);if(P&&new Date(P.jiraUpdatedAt)>=z){N.unchanged++,U=z;continue}let R=j.fields.status.name,M={title:j.fields.summary,description:await Mm4(Z.siteUrl,j,W),priority:Vm4(j)};if(P){let q=P.jiraStatus!==R,S=await $.storage.taskBoard.getById(P.itemId,X),m=await $.storage.taskBoard.update(P.itemId,X,{...M,...q?{status:A}:{}},QU);if(await $.storage.jiraIntegrations.touchLink(P.itemId,{jiraStatus:R}),S&&q&&S.status!==A)await $.storage.taskBoard.recordActivity({taskBoardItemId:P.itemId,action:"status_changed",actorId:null,data:{from:S.status,to:A}});if(q&&!G)m=await yS$($,Z,m);await gS$($,Z,J,j,P.itemId,K,W),await $.storage.jiraIntegrations.touchLink(P.itemId,{jiraUpdatedAt:z}),d$(X,m),N.updated++}else{let q=await $.storage.taskBoard.create({organizationId:X,...M,status:A,by:QU});try{await $.storage.jiraIntegrations.createLink({itemId:q.id,organizationId:X,jiraIssueId:j.id,jiraIssueKey:j.key,jiraUpdatedAt:new Date(0),jiraStatus:R})}catch(S){if(S.code==="23505"){await $.storage.taskBoard.delete(q.id,X,QU),N.unchanged++,U=z;continue}throw S}if(!G)q=await yS$($,Z,q);await gS$($,Z,J,j,q.id,K,W),await $.storage.jiraIntegrations.touchLink(q.id,{jiraUpdatedAt:z}),d$(X,q),N.created++}U=z}if(B>=w.total)break}if(U===void 0&&O===0)return{counts:N,watermark:D};return{counts:N,watermark:U}}var QU="jira",bS$=500,Tm4=5,hS$=1e4,Rm4;var SA0=L(()=>{B9();vH();q5();kA0();Rm4={highest:"urgent",high:"high",medium:"medium",low:"low",lowest:"low"}});var uS$={};Q0(uS$,{setJiraSyncRuntime:()=>LZ1,registerJiraSyncWorkflow:()=>wZ1,maybeEnqueueJiraStatusPush:()=>im4,enqueueJiraCommentPush:()=>DZ1});import{DBOS as IQ,SchedulerMode as Sm4}from"@dbos-inc/dbos-sdk";function LZ1($){CA0=$}function Sa(){if(!CA0)throw Error("[jira] sync runtime not initialized \u2014 setJiraSyncRuntime() must run before the workflow fires");return CA0}function YU(){let{db:$,encryptionKey:Z}=Sa();return new Uv($,new GG(Z))}function _m4(){return new RQ(Sa().db)}async function vm4($){try{let{db:Z}=Sa(),X=await YU().getById($);if(!X)return{id:$,error:"integration no longer exists"};if(!X.enabled)return{id:$};let Q=await bK(Z,X.organizationId);if(!Q)return{id:$,error:"organization no longer exists"};let Y=await Su(Q,X);return"error"in Y?{id:$,error:Y.error}:{id:$}}catch(Z){return{id:$,error:Z instanceof Error?Z.message:String(Z)}}}async function xm4($,Z){let X=await IQ.runStep(()=>YU().listEnabledIds(),{name:"loadJiraIntegrations"});for(let Q of X){let Y=await IQ.runStep(()=>vm4(Q),{name:`syncJira:${Q}`});if(Y.error)console.warn(`[jira] sync ${Y.id} failed: ${Y.error}`)}}async function bm4($){let Z=YU();if(!(await Z.getByOrg($.organizationId))?.enabled)return null;let Q=await Z.getLinkByItemId($.taskBoardItemId,$.organizationId);if(!Q)return null;if(await Z.hasCommentLink($.commentId))return null;return{jiraIssueId:Q.jiraIssueId}}async function ym4($){return(await Sa().db.selectFrom("organization").select("slug").where("id","=",$).executeTakeFirst())?.slug??null}async function gm4($,Z,X){let Q=await YU().getByOrg($);if(!Q?.enabled)return null;let G=(await bK(Sa().db,$))?.orgFs;if(!G)return null;let J=new nJ(Q.siteUrl,Q.email,Q.apiToken);return xS$(X,{read:(K)=>G.read(K.volume,K.path).catch((W)=>{if(W instanceof UJ)return null;throw W}),listAttachments:()=>J.listAttachments(Z),upload:(K)=>J.addAttachment(Z,K),mediaIdFor:(K)=>J.resolveMediaId(K)})}async function hm4($,Z,X){let Q=YU(),Y=await Q.getByOrg($.organizationId);if(!Y?.enabled)return null;let G=await Q.getLinkByItemId($.taskBoardItemId,$.organizationId);if(!G)return null;if(await Q.hasCommentLink($.commentId))return null;return(await new nJ(Y.siteUrl,Y.email,Y.apiToken).addComment(G.jiraIssueId,Z,{header:`${$.authorLabel} \xB7 via Studio:`,media:new Map(X)})).id}async function um4($,Z){try{await YU().createCommentLink({commentId:$.commentId,organizationId:$.organizationId,jiraCommentId:Z})}catch(X){if(X.code!=="23505")throw X}}async function cm4($){let Z=$.body.slice(0,fm4),X=await IQ.runStep(()=>bm4($),{name:"resolveCommentTarget",retriesAllowed:!0,maxAttempts:3});if(!X)return;let Q=[],Y=HS$(Z);if(Y.length>0){let J=await IQ.runStep(()=>ym4($.organizationId),{name:"readOrgSlug",retriesAllowed:!0,maxAttempts:3});for(let K of vS$(Y,J??""))try{let W=await IQ.runStep(()=>gm4($.organizationId,X.jiraIssueId,K),{name:`attachCommentImage:${K.name}`,retriesAllowed:!0,maxAttempts:3});if(W)Q.push([K.target,W])}catch(W){if(!tk$(W))throw W;console.warn(`[jira] could not attach ${K.ref.path}:`,W)}}let G=await IQ.runStep(()=>hm4($,Z,Q),{name:"postCommentToJira",retriesAllowed:!1});if(!G)return;await IQ.runStep(()=>um4($,G),{name:"recordCommentLink",retriesAllowed:!0,maxAttempts:4})}async function lm4($){let Z=YU(),X=await Z.getByOrg($.organizationId);if(!X?.enabled)return null;let Q=await Z.getLinkByItemId($.itemId,$.organizationId);if(!Q)return null;let Y=await _m4().getById($.itemId,$.organizationId);if(!Y)return null;if(r91(X.statusMapping,Y.status,Q.jiraStatus))return null;let J=await new nJ(X.siteUrl,X.email,X.apiToken).listTransitions(Q.jiraIssueId),K=ek$({mapping:X.statusMapping,lane:Y.status,currentJiraStatus:Q.jiraStatus,availableTransitions:J.map((H)=>H.to.name)});if(K.kind!=="transition"){if(K.kind==="unreachable")console.warn(`[jira] ${Q.jiraIssueKey} is ${Y.status} on the board, but its workflow offers no transition to ${K.targets.join(" / ")} \u2014 `+"the card will not move on the Jira board");return null}let W=J.find((H)=>H.to.name===K.targetName);if(!W)return null;return{jiraIssueId:Q.jiraIssueId,transitionId:W.id,targetName:K.targetName}}async function dm4($,Z){let X=YU(),Q=await X.getByOrg($.organizationId);if(!Q?.enabled)return;let Y=await X.getLinkByItemId($.itemId,$.organizationId);if(!Y||Y.jiraStatus===Z.targetName)return;let G=new nJ(Q.siteUrl,Q.email,Q.apiToken);if(await G.getStatusName(Z.jiraIssueId)===Z.targetName){await X.touchLink($.itemId,{jiraStatus:Z.targetName});return}await G.transitionIssue(Z.jiraIssueId,Z.transitionId),await X.touchLink($.itemId,{jiraStatus:Z.targetName})}async function mm4($){let Z=await IQ.runStep(()=>lm4($),{name:"resolveStatusTransition",retriesAllowed:!0,maxAttempts:3});if(!Z)return;await IQ.runStep(()=>dm4($,Z),{name:"executeStatusTransition",retriesAllowed:!0,maxAttempts:3})}function im4($,Z){if(Z.updatedBy===QU)return;if(!OZ1||!CA0)return;let X=OZ1;(async()=>{if(!await YU().getLinkByItemId(Z.id,$))return;await IQ.startWorkflow(X,{queueName:VE,workflowID:`jira-status:${Z.id}:${Z.status}:${Date.parse(Z.updatedAt)}`,enqueueOptions:{queuePartitionKey:$}})({organizationId:$,itemId:Z.id})})().catch((Q)=>{console.warn(`[jira] status push enqueue failed for ${Z.id}:`,Q instanceof Error?Q.message:Q)})}async function DZ1($,Z){try{if(!BZ1)return;if(!await $.storage.jiraIntegrations.getLinkByItemId(Z.taskBoardItemId,Z.organizationId))return;await IQ.startWorkflow(BZ1,{queueName:VE,workflowID:`jira-cmt-push:${Z.commentId}`,enqueueOptions:{queuePartitionKey:Z.organizationId}})(Z)}catch(X){console.warn(`[jira] comment push enqueue failed for ${Z.commentId}:`,X instanceof Error?X.message:X)}}function wZ1(){if(UZ1)return;UZ1=IQ.registerWorkflow(xm4,{name:"jiraSyncWorkflow"}),IQ.registerScheduled(UZ1,{name:"jiraSyncWorkflow",crontab:Cm4,mode:Sm4.ExactlyOncePerIntervalWhenActive}),BZ1=IQ.registerWorkflow(cm4,{name:"jiraCommentPushWorkflow"}),OZ1=IQ.registerWorkflow(mm4,{name:"jiraStatusPushWorkflow"})}var Cm4="2-59/10 * * * *",CA0=null,fm4=30000,UZ1=null,BZ1=null,OZ1=null;var _A0=L(()=>{ok$();ZO();ku();PA0();_H();dE();kA0();fS$();GZ1();SA0()});function EZ1($,Z,X,Q){NG({event:$,organizationId:Z,properties:{task_id:X.id,reports_task:KY(X),...Q}})}function d$($,Z){u5.emit($,{id:crypto.randomUUID(),type:oB$,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()}),Promise.resolve().then(() => (_A0(),uS$)).then((X)=>X.maybeEnqueueJiraStatusPush($,Z)).catch((X)=>{console.warn("[jira] status push hook unavailable:",X)})}function cS$($,Z){u5.emit($,{id:crypto.randomUUID(),type:rB$,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function pm4($,Z){return $?[$]:Z}async function Cu($,Z,X){let Q=$.metadata?.runMetadata?.taskBoardItemId,Y=!Q&&X?await $.storage.taskBoard.linkedTaskIds(X,Z):[];return pm4(Q,Y)}async function _u($,Z,X){let Q=$.organization?.id;if(!Q)return;try{for(let Y of await Cu($,Q,X)){let G=await $.storage.taskBoard.getById(Y,Q);if(!G||vA0[Z]<=vA0[G.status])continue;let J=await $.storage.taskBoard.update(Y,Q,{status:Z},$.auth?.user?.id??G.updatedBy);if(await $.storage.taskBoard.recordActivity({taskBoardItemId:Y,action:"status_changed",actorId:null,data:{from:G.status,to:Z}}).catch((K)=>console.error("[task-board] activity log write failed",K)),d$(Q,J),Z==="in_progress"||Z==="in_review")EZ1(Z==="in_progress"?"task_run_started":"task_run_completed",Q,J,{from:G.status,via:"pr_open"})}}catch(Y){console.error("[task-board] run transition failed",Y)}}async function xA0($,Z,X,Q){let Y=$.organization?.id;if(!Y)return;try{let G=jA0(Z);if(!G)return;let J=await Cu($,Y,Q);for(let K of J)await $.storage.taskBoard.linkPr({taskBoardItemId:K,organizationId:Y,url:G.url,prNumber:G.number,repoOwner:G.owner,repoName:G.repo,connectionId:X??null})}catch(G){console.error("[task-board] PR capture failed",G)}}async function vu($,Z,X,Q){try{let Y=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,X);for(let G of Y)d$(X,G),EZ1("task_run_completed",X,G,{from:"in_progress",via:"thread_finish"});for(let G of Y)await $.clearRunRetry(G.id,X).catch(()=>{})}catch(Y){console.error("[task-board] thread-finish transition failed",Y)}await jZ1($,Z,X),await zZ1($,Q,Z,X)}async function jZ1($,Z,X){try{let Q=await $.failedRunInfo(Z,X);if(!Q)return;let Y=ik$(Q);for(let G of await $.linkedTaskIds(Z,X)){let J=await $.getById(G,X);if(!J)continue;if(J.status==="in_review"||J.status==="done")await $.relabelDeliveredFailure(Z,X,om4).catch(()=>{});if(J.status!=="in_progress")continue;if(J.threads.some((H)=>H.hasMessages&&H.status==="in_progress"))continue;let K=J.retryAttempts;if(K<Y){let H=W7(tm4,nm4,K,2,0.5);if(!await $.scheduleRunRetry(G,X,K+1,new Date(Date.now()+H)))continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"in_progress",retry:K+1,of:Y,reason:Q.errorText??Q.kind}}).catch(()=>{});continue}let W=await $.returnToTodoAfterFailure(G,X,J.updatedBy);if(!W)continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q.errorText??Q.kind,retriesSpent:K}}).catch(()=>{}),d$(X,W),EZ1("task_run_failed",X,J,{reason:Q.kind??"error",retries_spent:K})}}catch(Q){console.error("[task-board] failed-run reaction failed",Q)}}async function zZ1($,Z,X,Q){try{for(let Y of await $.linkedTaskIds(X,Q)){let G=await $.getById(Y,Q);if(!G)continue;if(vA0[G.status]>=vA0.in_review)continue;if(G.threads.some((K)=>K.hasMessages&&(K.status===null||!Ia.has(K.status))))continue;if((await $.listPrs(Y,Q)).length>0)continue;await $O$(Z,Q,Y)}}catch(Y){console.error("[task-board] quota refund pass failed",Y)}}async function xH($,Z,X){let Q=Z.organizationId;if(Z.assigneeId!==E8)return!1;try{let Y=await $.storage.taskBoard.unassignSuperAgent(Z.id,Q,Z.updatedBy);if(!Y)return!1;return await O6($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:X}}),console.warn(`[task-board] ${Z.id} handed to a human: ${X}`),d$(Q,Y),!0}catch(Y){return console.error(`[task-board] handing ${Z.id} to a human failed`,Y),!1}}async function fA0($,Z,X){if(!(X instanceof DX))return!1;if(X.reason!=="runs_exhausted")return!1;return await xH($,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 lS$($,Z){let X=$.organization?.id;if(!X)return;try{let Q=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,X);for(let Y of Q)d$(X,Y)}catch(Q){console.error("[task-board] thread-run reopen failed",Q)}}function dS$($){return $.includes("create_pull_request")||$.includes("createPullRequest")}function mS$($){if(rm4.test($))return!0;return am4.test($)&&sm4.test($)}var vA0,nm4=30000,tm4=120000,om4="Run ended after it had already delivered \u2014 the task moved on without it",rm4,am4,sm4;var q5=L(()=>{xJ();f4();_H();Vu();pk$();N4();Ta();B9();qX();vA0={triage:0,todo:1,in_progress:2,in_review:3,done:4,archived:5};rm4=/\bgh\s+pr\s+create\b/,am4=/api\.github\.com\/repos\/[^\s"']+\/pulls\b/,sm4=/(?:-X|--request)\s+POST/});function em4($){if($.status==="completed")return"advance";if($.status==="failed"&&$.messageStorageVersion===2&&($.harnessId==="decopilot"||$.harnessId==="claude-code"))return"nudge";return"none"}function $i4($){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(`
|
|
2740
|
-
`)}async function Zi4($,Z,X){let Q=Z.organizationId,Y=await sZ($,"smart"),G=X.virtual_mcp_id??Gj(Q),J={id:`stall-nudge-${Z.id}-${X.id}`,role:"user",parts:[{type:"text",text:$i4(X.harness_id)}]};await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:X.id,runId:X.id}).emitRequestMessage(J),await GU({threadId:X.id,source:"background-tool",request:{messages:[J],models:{credentialId:Y.credentialId,thinking:{id:Y.modelId,title:Y.modelMeta.title}},agent:{id:G},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:fP0(Z)}},{workflowID:`stall-nudge:${Z.id}:${X.id}`})}async function Xi4($,Z){let X=await $.storage.threads.get(Z);if(!X)return{action:"none",thread:null};return{action:em4({status:X.status,messageStorageVersion:X.message_storage_version,harnessId:X.harness_id}),thread:X}}function Qi4($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return Pa($,Z)}async function Yi4($,Z){let X=[];for(let Q of Z.threads){if(Q.status!=="in_progress")continue;let Y=await $.storage.threads.get(Q.threadId);if(!Y||!Qi4(Y))continue;if(await $.storage.threads.markRunFailed(Q.threadId,PZ1,"abandoned"))X.push(Q.threadId),console.warn(`[task-board] failed never-started thread ${Q.threadId} on ${Z.id}`)}return X}async function iS$($,Z){let X=$.organization?.id;if(!X)return;for(let Q of Z){if(Q.status==="in_progress")try{if((await Yi4($,Q)).length>0)continue}catch(J){console.error(`[task-board] reaping threads for ${Q.id} failed`,J)}let Y;try{Y=Q.repo!=null&&(await $.storage.taskBoard.listPrs(Q.id,X)).length>0}catch(J){console.error(`[task-board] listPrs for ${Q.id} failed`,J);continue}if(!t91(Q,Y))continue;let G=Q.threads.find((J)=>J.hasMessages);if(!G)continue;try{let{action:J,thread:K}=await Xi4($,G.threadId);if(J==="none"||!K)continue;if(J==="advance")await vu($.storage.taskBoard,G.threadId,X,$.storage.organizationBilling);else await Zi4($,Q,K)}catch(J){console.error(`[task-board] stall recovery failed for ${Q.id}`,J)}}}var PZ1="Run never started \u2014 no pod picked it up before the idle window elapsed";var AZ1=L(()=>{Ha();WD();eN();JU();_H();y8();q5()});import{z as Ca}from"zod";var Lv;var TZ1=L(()=>{k0();QY();vK();AZ1();Lv=c({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:Ca.object({}),outputSchema:Ca.object({items:Ca.array(Eu),repos:Ca.array(Ca.string())}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let[Q,{items:Y}]=await Promise.all([Z.storage.taskBoard.list(X),Z.storage.connections.list(X,{slug:"mcp-github"})]),G=eU$(Y);return iS$(Z,Q),{items:Q,repos:G}}})});import{z as AY}from"zod";function Ji4($,Z){let X=[];for(let{field:G,action:J}of Gi4){if(Z[G]===$[G])continue;X.push({action:J,data:{from:$[G],to:Z[G]}})}if(Z.description!==$.description)X.push({action:"description_changed"});let Q=new Set($.tags.map((G)=>G.id));if(Z.tags.length!==$.tags.length||Z.tags.some((G)=>!Q.has(G.id)))X.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return X}function Ki4($,Z){if($!==E8)return!1;if(!Z)return!1;return Z.assigneeId!==E8?!0:Z.status==="todo"}function Hi4($,Z,X){let Q=$!==void 0&&Wi4.has($);return X&&Q&&Z==="in_review"}var Gi4,Wi4,Dv;var RZ1=L(()=>{k0();r51();vK();a51();vH();qX();Zv();q5();Vu();xJ();Gi4=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];Wi4=new Set(["done","archived"]);Dv=c({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:AY.object({id:AY.string(),title:AY.string().min(1).optional(),description:AY.string().nullable().optional(),status:_K.optional(),priority:Xv.optional(),assigneeId:AY.string().nullable().optional(),repo:AY.string().nullable().optional(),dueDate:AY.string().datetime().nullable().optional(),sprint:AY.number().int().min(1).max(vP0).nullable().optional(),sortOrder:AY.number().optional(),tagIds:AY.array(AY.string()).optional(),linkThreadId:AY.string().optional(),prUrl:AY.string().nullable().optional().describe('GitHub pull request URL to link to this task, e.g. https://github.com/owner/repo/pull/123. Pass this with `status: "in_review"` after opening a PR for an existing card.')}),outputSchema:AY.object({item:Eu}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.prUrl?FD($.prUrl):null;if($.prUrl&&!Q)throw Error(`Not a GitHub pull request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>)`);if($.assigneeId)await xP0(Z,X,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,X))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,X)}let Y=$.title!==void 0||$.description!==void 0||$.status!==void 0||$.priority!==void 0||$.assigneeId!==void 0||$.repo!==void 0||$.dueDate!==void 0||$.sprint!==void 0||$.sortOrder!==void 0||$.tagIds!==void 0,G=Y?await Z.storage.taskBoard.getById($.id,X):null;if(Y&&!G)throw Error(`Task board item not found: ${$.id}`);let J=$v.getStore()!==void 0;if(Hi4($.status,G?.status,J))throw Error("This task is In Review \u2014 a run can't move it to Done or Archived. "+"Leave it in in_review 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!==(G?.assigneeId??null),W=Ki4($.assigneeId,G);if(G&&KY(G)){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 xh(Z,G,ML())}if($.tagIds!==void 0){let F=await Z.storage.tags.listOrgTags(X),N=new Set(F.map((U)=>U.id));for(let U of $.tagIds)if(!N.has(U))throw Error(`Tag not found: ${U}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,a0(Z))}let H;if(Y)H=await Z.storage.taskBoard.update($.id,X,{title:$.title,description:$.description,status:W?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId,assignedBy:K?$.assigneeId?a0(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sprint:$.sprint,sortOrder:$.sortOrder},a0(Z));else{let F=await Z.storage.taskBoard.getById($.id,X);if(!F)throw Error(`Task board item not found: ${$.id}`);H=F}if(Q)await Z.storage.taskBoard.linkPr({taskBoardItemId:H.id,organizationId:X,url:Q.url,prNumber:Q.number,repoOwner:Q.owner,repoName:Q.repo,connectionId:null});if(G){let F=a0(Z),N=Ji4(G,H);if(N.length>0)await nk$(Z,N.map((U)=>({taskBoardItemId:H.id,actorId:F,...U,alsoSubscribe:U.action==="assignee_changed"&&H.assigneeId!==E8?[H.assigneeId]:void 0})))}if(G&&H.description!==G.description)await Z.storage.notifications.notifyMentions({taskBoardItemId:H.id,organizationId:X,actorId:a0(Z),body:H.description??"",previousBody:G.description});if(Y||$.linkThreadId||Q)d$(X,H);if(W)await BD(Z,H,{userInitiated:!0});return{item:H}}})});import{z as bA0}from"zod";var wv;var IZ1=L(()=>{k0();q5();wv=c({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:bA0.object({id:bA0.string()}),outputSchema:bA0.object({success:bA0.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,X,a0(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return cS$(X,$.id),{success:!0}}})});function Ev($){if($.length===0)return!1;let Z=new Map;for(let X of $){let Q=`${X.repoOwner}/${X.repoName}`.toLowerCase(),Y=Z.get(Q);if(Y)Y.push(X);else Z.set(Q,[X])}return[...Z.values()].every(Fi4)}function Fi4($){return $.some((Z)=>Z.merged===!0)&&$.every((Z)=>Z.merged===!0||Z.state==="closed")}async function Ni4($,Z,X,Q){let Y=await $.storage.taskBoard.getById(X,Z);if(!Y||Y.status!=="done")return!1;let G=await $.storage.taskBoard.listPrs(X,Z),J=await Promise.all(G.map(async(W)=>({...W,...await Q($,Z,W)})));if(!Ev(J))return!1;let K=await $.storage.taskBoard.update(X,Z,{status:"archived"},Y.updatedBy);return await O6($,{taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:"done",to:"archived",reason:"merged_pr_auto_archive"}}),d$(Z,K),!0}async function pS$($,Z,X,Q=gA0){let Y=0;for(let G of X)try{if(await Ni4($,Z,G,Q))Y+=1}catch(J){console.error(`[task-board-archive] ${G} failed`,J)}return{archived:Y}}function yA0($){let Z=new Map;for(let{id:X,organizationId:Q}of $){let Y=Z.get(Q);if(Y)Y.push(X);else Z.set(Q,[X])}return[...Z].map(([X,Q])=>({organizationId:X,itemIds:Q}))}var xu=L(()=>{qX();tJ();q5()});function Ui4($){let Z=new Map($.map((G)=>[G.id,G])),X=new Map;for(let G of wu($)){let J=nS$(G.owner,G.repo);X.set(J,[...X.get(J)??[],G])}if(X.size!==1)return null;let Q=[...X.values()][0],Y=Q.find((G)=>{let J=Z.get(G.connectionId);return J?Xz(J):!1})??Q[0];return{connectionId:Y.connectionId,owner:Y.owner,name:Y.repo,installationId:Y.installationId,url:`https://github.com/${Y.owner}/${Y.repo}`}}async function hA0($,Z){try{let{items:X}=await $.storage.connections.list(Z,{slug:"mcp-github"}),Q=Ui4(X);if(Q)return{repo:Q};let Y=new Map;for(let J of wu(X)){let K=nS$(J.owner,J.repo);if(!Y.has(K))Y.set(K,{connectionId:J.connectionId,repo:`${J.owner}/${J.repo}`})}let G=Y;if(G.size===0)return console.warn(`[task-board] claude-code skipped for org ${Z}: `+"no importable repos \u2014 running Decopilot"),null;return console.warn(`[task-board] claude-code for org ${Z}: ${G.size} importable repos \u2014 the run picks one with TASK_ADD_REPO`),{choices:[...G.values()]}}catch(X){return console.warn("[task-board] repo lookup for claude-code failed",X),null}}function tS$($,Z,X){let Q=["You've been assigned this task. Complete it and finish with a pull request if it makes sense (like a coding task) or is explicitly requested.","","You are running AUTONOMOUSLY \u2014 no human is watching, so drive this to "+"completion yourself. Make reasonable decisions and move on; do not stop to ask for confirmation.","",`Title: ${$.title}`];if($.description)Q.push("","Description:",$.description);if(Q.push("",Z?`The repository ${Z.owner}/${Z.name} is already cloned at your working directory, on its own branch. \`git\` and \`gh\` are authenticated. ${Zr}`:["Your working directory is EMPTY: this organization has several repositories, so nothing has been cloned yet. FIRST call `mcp__studio__TASK_ADD_REPO` with the connectionId of the repository this task is about. It clones that repository into your working directory and waits for the checkout, so once it returns the repository is there on its own branch and `git` and `gh` are authenticated. Do not read files, run `git`, or run `gh` before it returns; there is nothing there yet.","","Repositories in this organization:",...(X?.repoChoices??[]).map((Y)=>`- ${Y.repo} (connectionId: ${Y.connectionId})`),X?.repoChoices?.length?"Pick the one the task is about. If the task doesn't say and the names don't settle it, take the first.":"Call `mcp__studio__TASK_ADD_REPO` with no arguments to list them."].join(`
|
|
2740
|
+
`)}async function Zi4($,Z,X){let Q=Z.organizationId,Y=await sZ($,"smart"),G=X.virtual_mcp_id??Gj(Q),J={id:`stall-nudge-${Z.id}-${X.id}`,role:"user",parts:[{type:"text",text:$i4(X.harness_id)}]};await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:X.id,runId:X.id}).emitRequestMessage(J),await GU({threadId:X.id,source:"background-tool",request:{messages:[J],models:{credentialId:Y.credentialId,thinking:{id:Y.modelId,title:Y.modelMeta.title}},agent:{id:G},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:fP0(Z)}},{workflowID:`stall-nudge:${Z.id}:${X.id}`})}async function Xi4($,Z){let X=await $.storage.threads.get(Z);if(!X)return{action:"none",thread:null};return{action:em4({status:X.status,messageStorageVersion:X.message_storage_version,harnessId:X.harness_id}),thread:X}}function Qi4($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return Pa($,Z)}async function Yi4($,Z){let X=[];for(let Q of Z.threads){if(Q.status!=="in_progress")continue;let Y=await $.storage.threads.get(Q.threadId);if(!Y||!Qi4(Y))continue;if(await $.storage.threads.markRunFailed(Q.threadId,PZ1,"abandoned"))X.push(Q.threadId),console.warn(`[task-board] failed never-started thread ${Q.threadId} on ${Z.id}`)}return X}async function iS$($,Z){let X=$.organization?.id;if(!X)return;for(let Q of Z){if(Q.status==="in_progress")try{if((await Yi4($,Q)).length>0)continue}catch(J){console.error(`[task-board] reaping threads for ${Q.id} failed`,J)}let Y;try{Y=Q.repo!=null&&(await $.storage.taskBoard.listPrs(Q.id,X)).length>0}catch(J){console.error(`[task-board] listPrs for ${Q.id} failed`,J);continue}if(!t91(Q,Y))continue;let G=Q.threads.find((J)=>J.hasMessages);if(!G)continue;try{let{action:J,thread:K}=await Xi4($,G.threadId);if(J==="none"||!K)continue;if(J==="advance")await vu($.storage.taskBoard,G.threadId,X,$.storage.organizationBilling);else await Zi4($,Q,K)}catch(J){console.error(`[task-board] stall recovery failed for ${Q.id}`,J)}}}var PZ1="Run never started \u2014 no pod picked it up before the idle window elapsed";var AZ1=L(()=>{Ha();WD();eN();JU();_H();y8();q5()});import{z as Ca}from"zod";var Lv;var TZ1=L(()=>{k0();QY();vK();AZ1();Lv=c({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:Ca.object({}),outputSchema:Ca.object({items:Ca.array(Eu),repos:Ca.array(Ca.string())}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let[Q,{items:Y}]=await Promise.all([Z.storage.taskBoard.list(X),Z.storage.connections.list(X,{slug:"mcp-github"})]),G=eU$(Y);return iS$(Z,Q),{items:Q,repos:G}}})});import{z as AY}from"zod";function Ji4($,Z){let X=[];for(let{field:G,action:J}of Gi4){if(Z[G]===$[G])continue;X.push({action:J,data:{from:$[G],to:Z[G]}})}if(Z.description!==$.description)X.push({action:"description_changed"});let Q=new Set($.tags.map((G)=>G.id));if(Z.tags.length!==$.tags.length||Z.tags.some((G)=>!Q.has(G.id)))X.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return X}function Ki4($,Z){if($!==E8)return!1;if(!Z)return!1;return Z.assigneeId!==E8?!0:Z.status==="todo"}function Hi4($,Z,X){let Q=$!==void 0&&Wi4.has($);return X&&Q&&Z==="in_review"}var Gi4,Wi4,Dv;var RZ1=L(()=>{k0();r51();vK();a51();vH();qX();Zv();q5();Vu();xJ();Gi4=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];Wi4=new Set(["done","archived"]);Dv=c({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:AY.object({id:AY.string(),title:AY.string().min(1).optional(),description:AY.string().nullable().optional(),status:_K.optional(),priority:Xv.optional(),assigneeId:AY.string().nullable().optional(),repo:AY.string().nullable().optional(),dueDate:AY.string().datetime().nullable().optional(),sprint:AY.number().int().min(1).max(vP0).nullable().optional(),sortOrder:AY.number().optional(),tagIds:AY.array(AY.string()).max(1000).optional(),linkThreadId:AY.string().optional(),prUrl:AY.string().nullable().optional().describe('GitHub pull request URL to link to this task, e.g. https://github.com/owner/repo/pull/123. Pass this with `status: "in_review"` after opening a PR for an existing card.')}),outputSchema:AY.object({item:Eu}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.prUrl?FD($.prUrl):null;if($.prUrl&&!Q)throw Error(`Not a GitHub pull request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>)`);if($.assigneeId)await xP0(Z,X,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,X))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,X)}let Y=$.title!==void 0||$.description!==void 0||$.status!==void 0||$.priority!==void 0||$.assigneeId!==void 0||$.repo!==void 0||$.dueDate!==void 0||$.sprint!==void 0||$.sortOrder!==void 0||$.tagIds!==void 0,G=Y?await Z.storage.taskBoard.getById($.id,X):null;if(Y&&!G)throw Error(`Task board item not found: ${$.id}`);let J=$v.getStore()!==void 0;if(Hi4($.status,G?.status,J))throw Error("This task is In Review \u2014 a run can't move it to Done or Archived. "+"Leave it in in_review 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!==(G?.assigneeId??null),W=Ki4($.assigneeId,G);if(G&&KY(G)){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 xh(Z,G,ML())}if($.tagIds!==void 0){let F=await Z.storage.tags.listOrgTags(X),N=new Set(F.map((U)=>U.id));for(let U of $.tagIds)if(!N.has(U))throw Error(`Tag not found: ${U}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,a0(Z))}let H;if(Y)H=await Z.storage.taskBoard.update($.id,X,{title:$.title,description:$.description,status:W?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId,assignedBy:K?$.assigneeId?a0(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sprint:$.sprint,sortOrder:$.sortOrder},a0(Z));else{let F=await Z.storage.taskBoard.getById($.id,X);if(!F)throw Error(`Task board item not found: ${$.id}`);H=F}if(Q)await Z.storage.taskBoard.linkPr({taskBoardItemId:H.id,organizationId:X,url:Q.url,prNumber:Q.number,repoOwner:Q.owner,repoName:Q.repo,connectionId:null});if(G){let F=a0(Z),N=Ji4(G,H);if(N.length>0)await nk$(Z,N.map((U)=>({taskBoardItemId:H.id,actorId:F,...U,alsoSubscribe:U.action==="assignee_changed"&&H.assigneeId!==E8?[H.assigneeId]:void 0})))}if(G&&H.description!==G.description)await Z.storage.notifications.notifyMentions({taskBoardItemId:H.id,organizationId:X,actorId:a0(Z),body:H.description??"",previousBody:G.description});if(Y||$.linkThreadId||Q)d$(X,H);if(W)await BD(Z,H,{userInitiated:!0});return{item:H}}})});import{z as bA0}from"zod";var wv;var IZ1=L(()=>{k0();q5();wv=c({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:bA0.object({id:bA0.string()}),outputSchema:bA0.object({success:bA0.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,X,a0(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return cS$(X,$.id),{success:!0}}})});function Ev($){if($.length===0)return!1;let Z=new Map;for(let X of $){let Q=`${X.repoOwner}/${X.repoName}`.toLowerCase(),Y=Z.get(Q);if(Y)Y.push(X);else Z.set(Q,[X])}return[...Z.values()].every(Fi4)}function Fi4($){return $.some((Z)=>Z.merged===!0)&&$.every((Z)=>Z.merged===!0||Z.state==="closed")}async function Ni4($,Z,X,Q){let Y=await $.storage.taskBoard.getById(X,Z);if(!Y||Y.status!=="done")return!1;let G=await $.storage.taskBoard.listPrs(X,Z),J=await Promise.all(G.map(async(W)=>({...W,...await Q($,Z,W)})));if(!Ev(J))return!1;let K=await $.storage.taskBoard.update(X,Z,{status:"archived"},Y.updatedBy);return await O6($,{taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:"done",to:"archived",reason:"merged_pr_auto_archive"}}),d$(Z,K),!0}async function pS$($,Z,X,Q=gA0){let Y=0;for(let G of X)try{if(await Ni4($,Z,G,Q))Y+=1}catch(J){console.error(`[task-board-archive] ${G} failed`,J)}return{archived:Y}}function yA0($){let Z=new Map;for(let{id:X,organizationId:Q}of $){let Y=Z.get(Q);if(Y)Y.push(X);else Z.set(Q,[X])}return[...Z].map(([X,Q])=>({organizationId:X,itemIds:Q}))}var xu=L(()=>{qX();tJ();q5()});function Ui4($){let Z=new Map($.map((G)=>[G.id,G])),X=new Map;for(let G of wu($)){let J=nS$(G.owner,G.repo);X.set(J,[...X.get(J)??[],G])}if(X.size!==1)return null;let Q=[...X.values()][0],Y=Q.find((G)=>{let J=Z.get(G.connectionId);return J?Xz(J):!1})??Q[0];return{connectionId:Y.connectionId,owner:Y.owner,name:Y.repo,installationId:Y.installationId,url:`https://github.com/${Y.owner}/${Y.repo}`}}async function hA0($,Z){try{let{items:X}=await $.storage.connections.list(Z,{slug:"mcp-github"}),Q=Ui4(X);if(Q)return{repo:Q};let Y=new Map;for(let J of wu(X)){let K=nS$(J.owner,J.repo);if(!Y.has(K))Y.set(K,{connectionId:J.connectionId,repo:`${J.owner}/${J.repo}`})}let G=Y;if(G.size===0)return console.warn(`[task-board] claude-code skipped for org ${Z}: `+"no importable repos \u2014 running Decopilot"),null;return console.warn(`[task-board] claude-code for org ${Z}: ${G.size} importable repos \u2014 the run picks one with TASK_ADD_REPO`),{choices:[...G.values()]}}catch(X){return console.warn("[task-board] repo lookup for claude-code failed",X),null}}function tS$($,Z,X){let Q=["You've been assigned this task. Complete it and finish with a pull request if it makes sense (like a coding task) or is explicitly requested.","","You are running AUTONOMOUSLY \u2014 no human is watching, so drive this to "+"completion yourself. Make reasonable decisions and move on; do not stop to ask for confirmation.","",`Title: ${$.title}`];if($.description)Q.push("","Description:",$.description);if(Q.push("",Z?`The repository ${Z.owner}/${Z.name} is already cloned at your working directory, on its own branch. \`git\` and \`gh\` are authenticated. ${Zr}`:["Your working directory is EMPTY: this organization has several repositories, so nothing has been cloned yet. FIRST call `mcp__studio__TASK_ADD_REPO` with the connectionId of the repository this task is about. It clones that repository into your working directory and waits for the checkout, so once it returns the repository is there on its own branch and `git` and `gh` are authenticated. Do not read files, run `git`, or run `gh` before it returns; there is nothing there yet.","","Repositories in this organization:",...(X?.repoChoices??[]).map((Y)=>`- ${Y.repo} (connectionId: ${Y.connectionId})`),X?.repoChoices?.length?"Pick the one the task is about. If the task doesn't say and the names don't settle it, take the first.":"Call `mcp__studio__TASK_ADD_REPO` with no arguments to list them."].join(`
|
|
2741
2741
|
`),""),X?.resolveConflict&&X.pr)Q.push(`Pull request #${X.pr.number} (${X.pr.url}) is approved but has a MERGE CONFLICT with its base branch.`,`Check that branch out (\`gh pr checkout ${X.pr.number}\`), merge or rebase the base branch into it, resolve the conflicts, and push to update the SAME pull request \u2014 do NOT open a new one. Resolve by preserving BOTH sides' intent; never blindly discard either side, and change only what the conflict requires.`,"");else if(X?.feedback)Q.push(X.pr?`A reviewer requested changes on pull request #${X.pr.number} (${X.pr.url}):`:"A reviewer requested changes on your previous work:",X.feedback,X.pr?`Check that branch out (\`gh pr checkout ${X.pr.number}\`) before editing, address the feedback, then push to update the SAME pull request \u2014 do NOT open a new one.`:"Address this feedback.","The reviewer judged the DEPLOYED PREVIEW, not your diff. Reproduce their check there before you push again \u2014 a fix that only looks right in the code comes straight back.","");else if(X?.pr)Q.push(`This task already has an open pull request #${X.pr.number} (${X.pr.url}), and you are already on its branch.`,"Continue that work: commit and push to update the SAME pull request \u2014 do NOT open a new one. If it already does everything the task asks, say so and stop rather than changing it.","");return Q.push("How to finish:","- Make the change, commit it, push the branch, and open a pull request"+(X?.pr?" \u2014 or push to the existing one, per the instruction above.":"."),"- Change only what the task needs. Don't refactor around it.","- The change must be REACHABLE from the surface the task names: edit the component that route actually renders, not one that merely looks like the right place. A change nothing imports is dead code, and it is the most common reason a task comes back rejected.","- Before handing over, VERIFY the task's outcome the way the reviewer will: get the PR's `previewUrl` from `mcp__studio__TASK_BOARD_ITEM_PRS_GET` (give the deploy a minute), open the affected route there, and confirm the behaviour actually happens. A green test suite is not the bar \u2014 the reviewer approves what it can see on the preview.","- As soon as `gh pr create` prints the URL, call `mcp__studio__TASK_BOARD_ITEM_PR_LINK` with that url. Do this even if you also mention the PR in a comment \u2014 the reviewers are dispatched from the linked PR, not from your message.",`- Then move this task to review on the board: call \`mcp__studio__TASK_BOARD_ITEM_UPDATE\` with id "${$.id}" and status "in_review". Pass ONLY the fields you are changing.`,'- If the task turns out to need no code change, do NOT open a PR: explain why in a comment on the task (`mcp__studio__TASK_BOARD_COMMENT_CREATE`) and move it to "done" instead of "in_review". There is nothing for a reviewer to review, so In Review would strand it.',`- Anything a reviewer should know (a decision you made, something you found and deliberately left alone, a question) goes on the task as a comment: \`mcp__studio__TASK_BOARD_COMMENT_CREATE\` with taskBoardItemId "${$.id}". Read what's already there first with \`mcp__studio__TASK_BOARD_COMMENT_LIST\` \u2014 a comment may be addressed to you.`,"",`(task id: ${$.id})`),Q.join(`
|
|
2742
2742
|
`)}var nS$=($,Z)=>`${$}/${Z}`.toLowerCase();var qZ1=L(()=>{CP0();QY();B9()});import{createHmac as Bi4,randomBytes as Oi4,timingSafeEqual as Li4}from"crypto";function Di4(){if(uA0)return uA0;let $;try{let Z=y0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return uA0=$?Buffer.from($):Oi4(32),uA0}function MZ1($,Z,X){return`rtok_${Bi4("sha256",Di4()).update(`${$}:${Z}:${X.toISOString()}`).digest("base64url")}`}function oS$($,Z,X,Q){let Y=Buffer.from($),G=Buffer.from(MZ1(Z,X,Q));return Y.length===G.length&&Li4(Y,G)}var uA0=null;var VZ1=L(()=>{V$()});import{createHash as wi4}from"crypto";function kZ1($,Z){if($.status===null||rS$.has($.status))return!1;return!Pa({updated_at:$.lastActiveAt,last_progress_at:null},Z)}function Pi4($,Z){return Z-$>=zi4}async function cA0($,Z,X){let Q=await $.storage.organizationSettings.get(Z.organizationId),Y=fN(Q?.flags);if(Y.length===0)return;let G=Oh(Q?.flags,"cheap_reviewer_model")?"reviewer":"default",J=await Mi4($,Z),K=new Date(J);await Promise.all(Y.map(async(W)=>{if(Ii4(Z,W,J)){await xH($,Z,`${_h[W]} failed ${SZ1} times on `+"this review \u2014 it will not be retried");return}if(W==="qa"&&X?.previewMatchesHead===!1){if(Pi4(J,Date.now()))await xH($,Z,"the pull request's deploy preview is not showing its latest commit (its checks never went green), so QA cannot verify this change against what the PR actually does");return}if(qi4(Z,W,J))return;let H=Ai4(Z,W,J);await Si4($,Z,W,K,H,G).catch((F)=>console.error(`[task-board] ${W} reviewer enqueue failed`,F))}))}function Ai4($,Z,X,Q=Date.now()){return $.threads.filter((Y)=>vh(Y.title,Z)&&CZ1(Y,Q)&&new Date(Y.createdAt).getTime()>=X).length}function Ti4($,Z){if(!$||!Z||!("choices"in Z))return null;return Z.choices.find((X)=>X.repo===$)?.connectionId??null}function Ri4($,Z,X){let Q=$.threads.filter((Y)=>vh(Y.title,Z)&&Y.status==="completed"&&new Date(Y.createdAt).getTime()<X).map((Y)=>new Date(Y.lastActiveAt).getTime()).filter((Y)=>Number.isFinite(Y));return Q.length===0?0:Math.max(...Q)}function CZ1($,Z){if($.status==="failed")return!0;return $.status!==null&&!rS$.has($.status)&&!kZ1($,Z)}function aS$($,Z,X,Q=Date.now()){return $.threads.filter((Y)=>{if(!vh(Y.title,Z))return!1;return kZ1(Y,Q)||new Date(Y.createdAt).getTime()>=X})}function Ii4($,Z,X,Q=Date.now()){let Y=aS$($,Z,X,Q);return Y.length>0&&Y.every((G)=>CZ1(G,Q))&&Y.length>=SZ1}function qi4($,Z,X,Q=Date.now()){let Y=aS$($,Z,X,Q);if(Y.length===0)return!1;if(Y.some((J)=>kZ1(J,Q)))return!0;let G=Y.filter((J)=>CZ1(J,Q));if(G.length>=SZ1)return!0;return G.length!==Y.length}async function Mi4($,Z){let X=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);return bN(X)}function Vi4($,Z,X,Q){return`review:${$}:${Z}:${X.toISOString()}:${Q}`}function ki4($){return`thrd_${wi4("sha256").update($).digest("hex").slice(0,32)}`}async function Si4($,Z,X,Q,Y,G){let J=Z.organizationId,K=MZ1(Z.id,X,Q),W=await hA0($,J),H=W&&"repo"in W?W.repo:null,F=W!==null,N=Ri4(Z,X,Q.getTime()),U=Ti4(Z.repo,W),B=F?"mcp__studio__TASK_BOARD_ITEM_PRS_GET":"TASK_BOARD_ITEM_PRS_GET",O=F?"mcp__studio__TASK_BOARD_REVIEW_DECISION":"TASK_BOARD_REVIEW_DECISION",D=F?"mcp__studio__TASK_BOARD_COMMENT_CREATE":"TASK_BOARD_COMMENT_CREATE",w=F?"mcp__studio__TASK_BOARD_COMMENT_LIST":"TASK_BOARD_COMMENT_LIST",E=[ji4[X],"","You are running AUTONOMOUSLY \u2014 no human is watching this run. Making the "+'approve / request-changes call IS your job; you are the decision-maker, not an assistant asking a human to decide. NEVER use `user_ask` to ask whether to approve, or to confirm an obvious call ("Approve the PR?"). Reserve `user_ask` for a genuine, unresolvable blocker only a human can clear (e.g. a missing credential, or a requirement so ambiguous you '+"truly cannot judge the outcome) \u2014 that should be rare. When in doubt "+"between asking and deciding, DECIDE.","","Do NOT push commits, merge, or change the code to fix what you find. You "+"are reviewing, not implementing \u2014 the tools that would let you rewrite "+"the checkout are removed from this run on purpose. Report what you find in your decision instead."].join(`
|
|
2743
2743
|
`),j=[...F?[]:[E,""],`Task title: ${Z.title}`,Z.description?`
|
|
@@ -2849,7 +2849,7 @@ ${$.description}
|
|
|
2849
2849
|
`):Z?.feedback?[Z.pr?`A reviewer requested changes on the existing pull request #${Z.pr.number} (${Z.pr.url}):`:"A reviewer requested changes on your previous work:",Z.feedback,Z.pr?`Load the repo, then CHECK OUT that PR's branch (e.g. \`gh pr checkout ${Z.pr.number}\`) before editing, address the feedback, commit, and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch.`:"Address this feedback.",""].join(`
|
|
2850
2850
|
`):Z?.pr?[`This task already has an open pull request #${Z.pr.number} (${Z.pr.url}), and you are already on its branch.`,"Continue that work: commit and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch. If you find it already does everything the task asks, say so and stop rather than changing it.",""].join(`
|
|
2851
2851
|
`):"","How to work:","- First decide whether this task requires changing code in a repository. Some tasks (research, answering a question, planning) don't. If it doesn't, just do the work directly \u2014 don't load a repo or open a PR.",Z?.pr?"- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, make the change, then commit and push to the pull request named above.":"- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, then make the change, commit on a new branch, push, and open a pull request. Only then does a PR apply.","- Prefer the GitHub tool to open the PR. If it errors or targets the wrong repo, fall back to `git push` + the GitHub REST API (the auth token is embedded in the `origin` URL).","- If a dev server is running it hot-reloads your changes \u2014 don't restart it, hunt for its port, or run a full typecheck/build just to verify a small edit.","- Change only what the task needs. Don't trace the definition of a pre-existing symbol that's incidental to your change \u2014 note it in one line and move on. Prefer one or two broad searches over many narrow retries.","- Only if you hit a genuine blocker a human must clear (see above) may you call `user_ask` \u2014 otherwise keep going and finish the task.","",`(task id: ${$.id})`].join(`
|
|
2852
|
-
`)}async function xe4($,Z,X){let Y=(await $.storage.taskBoard.listPrs(Z.id,Z.organizationId).catch(()=>[])).find((G)=>G.number===X);if(!Y)return null;return BC$($,Z.organizationId,Y).catch(()=>null)}async function fe4($,Z){let X=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId).catch(()=>[]);return nB$(X)}function be4($){return $!=="closed"}async function ye4($,Z){let X=await $.storage.taskBoard.listPrs(Z.id,Z.organizationId).catch(()=>[]);for(let Q of X){let{state:Y}=await bu(Z.organizationId,Q);if(be4(Y))return{number:Q.number,url:Q.url}}return}async function yK($,Z,X){let Q=await aB$($,Z,X?.userInitiated?ML():void 0),Y="decopilot";try{let G=y0().taskBoardRerunReusesPrBranch,J=X?.pr??(G?await ye4($,Z):void 0),K=G&&J?await xe4($,Z,J.number):null,W=!X?.feedback&&!X?.resolveConflict,H=J&&W?await fe4($,Z):null,F=J&&J!==X?.pr||H?{...X,...J?{pr:J}:{},...H?{feedback:H}:{}}:X,N=await hA0($,Z.organizationId);if(N){Y="claude-code";let U="repo"in N?N.repo:null;await _a($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},...K?{pinnedRef:K}:{},prompt:tS$(Z,U,{...F,..."choices"in N?{repoChoices:N.choices}:{}}),temperature:0.5,harnessId:"claude-code",...U?{repo:U}:{}})}else await _a($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},prompt:ve4(Z,F),temperature:0.5,...K?{pinnedRef:K}:{}})}catch(G){throw await sB$($.storage.organizationBilling,Z.organizationId,Z.id,Q),G}await $.storage.taskBoard.supersedeFailedThreads(Z.id,Z.organizationId).catch((G)=>console.error("[task-board] superseding failed threads failed",G)),NG({event:"task_run_enqueued",organizationId:Z.organizationId,properties:{task_id:Z.id,reports_task:KY(Z),claim:Q,harness:Y,...X?.runClass?{run_class:X.runClass}:{}}})}var vH=L(()=>{B9();xJ();B9();f4();V$();vZ1();tJ();xa();qZ1()});import{z as iK}from"zod";var Pv;var dZ1=L(()=>{k0();r51();vK();a51();vH();qX();q5();Vu();Pv=c({name:"TASK_BOARD_ITEM_CREATE",description:"Create a new task board item for the organization.",annotations:{title:"Create Task Board Item",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:iK.object({title:iK.string().min(1),description:iK.string().nullable().optional(),status:_K.optional(),priority:Xv.optional(),assigneeId:iK.string().nullable().optional(),repo:iK.string().nullable().optional(),dueDate:iK.string().datetime().nullable().optional(),sprint:iK.number().int().min(1).max(vP0).nullable().optional().describe("Sprint to plan this task into (1-based, counted from the org's sprint cadence). Omit or null to leave it in the backlog."),tagIds:iK.array(iK.string()).optional(),prUrl:iK.string().nullable().optional().describe('GitHub pull request URL to link to the new task, e.g. https://github.com/owner/repo/pull/123. Pass this with `status: "in_review"` right after you open a PR so the card lands on the board with its PR already attached for review.')}),outputSchema:iK.object({item:Eu}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.prUrl?FD($.prUrl):null;if($.prUrl&&!Q)throw Error(`Not a GitHub pull request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>)`);if($.assigneeId)await xP0(Z,X,$.assigneeId);let Y=$.assigneeId===E8;if($.tagIds?.length){let J=await Z.storage.tags.listOrgTags(X),K=new Set(J.map((W)=>W.id));for(let W of $.tagIds)if(!K.has(W))throw Error(`Tag not found: ${W}`)}let G=await Z.storage.taskBoard.create({organizationId:X,title:$.title,description:$.description??null,status:Y?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId??null,assignedBy:$.assigneeId?a0(Z):null,repo:$.repo??null,dueDate:$.dueDate??null,sprint:$.sprint??null,by:a0(Z)});if($.tagIds?.length)await Z.storage.taskBoard.setItemTags(G.id,$.tagIds,a0(Z)),G=await Z.storage.taskBoard.getById(G.id,X);if(Q)await Z.storage.taskBoard.linkPr({taskBoardItemId:G.id,organizationId:X,url:Q.url,prNumber:Q.number,repoOwner:Q.owner,repoName:Q.repo,connectionId:null});return await O6(Z,{taskBoardItemId:G.id,action:"created",actorId:a0(Z),alsoSubscribe:[a0(Z),G.assigneeId===E8?null:G.assigneeId]}),await Z.storage.notifications.notifyMentions({taskBoardItemId:G.id,organizationId:X,actorId:a0(Z),body:G.description??""}),d$(X,G),await BD(Z,G),{item:G}}})});import{z as xv}from"zod";var AX1;var cf$=L(()=>{k0();Vu();q5();Zv();AX1=c({name:"TASK_BOARD_ITEM_PR_LINK",description:"Link the pull request you just opened to this run's task board item. Call this right after `gh pr create` succeeds, with the PR URL it printed. Reviewers (QA, code review) are dispatched from the linked PR, so a task whose PR is not linked never gets reviewed.",annotations:{title:"Link Pull Request to Task",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xv.object({url:xv.string().describe("The pull request URL, e.g. https://github.com/owner/repo/pull/123")}),outputSchema:xv.object({url:xv.string(),prNumber:xv.number(),taskBoardItemIds:xv.array(xv.string())}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z).id,{threadId:Q}=_P0(),Y=FD($.url);if(!Y)throw Error(`Not a GitHub pull request URL: ${$.url} (expected https://github.com/<owner>/<repo>/pull/<number>)`);let G=await Cu(Z,X,Q);for(let J of G)await Z.storage.taskBoard.linkPr({taskBoardItemId:J,organizationId:X,url:Y.url,prNumber:Y.number,repoOwner:Y.owner,repoName:Y.repo}),await Z.storage.taskBoard.clearSweepBudget(J,X);return{url:Y.url,prNumber:Y.number,taskBoardItemIds:G}}})});function df$($){lf$=$}function vT0($){lf$?.broadcast($)}var lf$=null;import{DBOS as xT0}from"@dbos-inc/dbos-sdk";function ge4($,Z){let X=`thread-run:${Z}:`;if(!$.workflowID.startsWith(X))return null;let Q=$.input?.[0],Y=Q?.request;return{workflowId:$.workflowID,messageId:Y?.messageId??$.workflowID.slice(X.length),status:$.status==="PENDING"?"running":"queued",enqueuedAt:$.createdAt,...Q?.source!==void 0?{source:Q.source}:{}}}async function TX1($){return(await xT0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING","ENQUEUED"],loadInput:!0,loadOutput:!1})).map((X)=>ge4(X,$)).filter((X)=>X!==null).sort((X,Q)=>X.enqueuedAt-Q.enqueuedAt)}async function mf$($,Z){if(!Z.startsWith(`thread-run:${$}:`))return!1;return await xT0.cancelWorkflows([Z]),!0}async function au($){let Z=await xT0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING"],loadInput:!1,loadOutput:!1});if(Z.length===0)return;await xT0.cancelWorkflows(Z.map((X)=>X.workflowID))}var fT0=()=>{};function ce4($){return/\b405\b/.test($)&&/not allowed on this repository/i.test($)}function de4($,Z={}){if($==="failing")return!0;if($==="pending")return!Z.allowPendingChecks;return!1}async function me4($,Z,X,Q,Y){if(le4.has(Q))return;let J=(await $.storage.taskBoard.listActivity(X,Z).catch(()=>[])).at(-1);if(J?.action==="merge_failed"&&J.data?.reason===Q)return;await O6($,{taskBoardItemId:X,action:"merge_failed",actorId:null,data:{reason:Q,...Y?{detail:Y}:{}}})}function ie4($){if(!$?.isError)return{kind:"merged"};let Z=JSON.stringify($?.content)??"";if(ce4(Z))return{kind:"method_not_allowed",detail:Z};if(iA0(Z))return{kind:"rate_limited",detail:Z};return{kind:"refused",detail:Z}}async function pe4($,Z,X){let Q=await $.callTool({name:"merge_pull_request",arguments:{owner:Z.repoOwner,repo:Z.repoName,pullNumber:Z.number,merge_method:X}},void 0,{timeout:he4});return ie4(Q)}async function Ys($,Z,X,Q={}){let Y=async(N,U)=>{return await me4($,Z,X,N,U),{merged:!1,reason:N,...U?{detail:U}:{}}},G=await $.storage.taskBoard.listPrs(X,Z),J=await LD($,Z,G);if(!J)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${X}`),Y("no_pr");let K=await FC$($,Z,J);if(de4(K,Q))return console.warn(`[task-board] merge blocked \u2014 checks ${K} on PR #${J.number}`),Y(K==="failing"?"checks_failing":"checks_pending");let W=`${J.repoOwner}/${J.repoName}`,H=await jv($,Z,J.connectionId,{owner:J.repoOwner,name:J.repoName});if(!H)return console.warn("[task-board] merge blocked \u2014 no active GitHub connection for "+`${W} (PR #${J.number})`),Y("no_connection",W);let F=await z5(H,$,!0);try{let N=null;for(let U of ue4){let B=await pe4(F,J,U);if(B.kind==="merged")return YC$(H.id),{merged:!0};if(B.kind==="rate_limited")return console.warn(`[task-board] merge rate-limited on PR #${J.number} \u2014 sweep retries`),Y("rate_limited",B.detail.slice(0,500));if(B.kind==="method_not_allowed"){console.warn(`[task-board] merge method '${U}' not allowed on ${W} \u2014 trying next`),N=B.detail;continue}return console.error(`[task-board] merge refused by GitHub on PR #${J.number}:`,B.detail),Y("refused",B.detail.slice(0,500))}return console.error(`[task-board] no merge method allowed on ${W} (PR #${J.number})`,N),Y("refused",N?.slice(0,500))}catch(N){let U=N instanceof Error?N.message:String(N);if(iA0(N))return Y("rate_limited",U);return console.error("[task-board] merge PR failed",N),Y("error",U)}finally{await F.close().catch(()=>{})}}async function Gs($,Z,X){let Q=await $.storage.organizationSettings.get(Z),Y=fN(Q?.flags),G=await $.storage.taskBoard.listActivity(X,Z);return qL(G,Y,{verifiedOnly:!0})}async function ne4($,Z){let X=await $.storage.organizationSettings.get(Z.organizationId),Q=fN(X?.flags),Y=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);if(!pB$(Y,Q))return;await xH($,Z,"every reviewer approved, but an approval could not be verified \u2014 "+"auto-merge is blocked and no reviewer can be re-dispatched this cycle")}function if$($){return!$.merged&&$.reason==="refused"}function RX1($,Z){if($!==null)return $;if(Z===null||!if$(Z))return null;return(Z.detail??"").toLowerCase().includes("merge conflict")?!0:null}async function te4($,Z,X){if(!if$(X))return;let Q=Z.organizationId,Y=await $.storage.taskBoard.listPrs(Z.id,Q),G=await LD($,Q,Y);if(!G)return;await fu($,Q,Z,{pr:{number:G.number,url:G.url},conflict:RX1(await OD($,Q,G),X)}).catch((J)=>{console.error("[task-board] sweep conflict auto-resolve failed",J)})}async function pf$($,Z){let X=Z.organizationId;if(Z.status!=="in_review")return!1;if((await $.storage.organizationSettings.get(X))?.flags?.auto_merge!==!0)return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;if(!await Gs($,X,Z.id))return await ne4($,Z),!1;let Y=await Ys($,X,Z.id);if(!Y.merged)return await te4($,Z,Y),!1;let G=await $.storage.taskBoard.update(Z.id,X,{status:"done"},Z.updatedBy);return await O6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done"}}),d$(X,G),!0}var he4=15000,ue4,le4;var Js=L(()=>{kN();B9();qX();va();tJ();q5();ue4=["merge","squash","rebase"];le4=new Set(["checks_pending"])});import{z as su}from"zod";function re4($){return $.threads.filter((Z)=>Z.status!==null&&!Ia.has(Z.status)).map((Z)=>Z.threadId)}async function ae4($,Z,X){let Q=(G)=>(J)=>console.error("[task-board] rerun takeover step failed",{threadId:Z,step:G,err:J});await $.storage.threads.setCancelRequested(Z,X).catch(Q("cancel-flag")),await mu(Z).catch(Q("background-jobs")),await au(Z).catch(Q("gate-head"));let Y=await $.storage.threads.getRunFence(Z).catch(()=>null);if(Y)await vv(Z,Y).catch(Q("hosted-harness"));vT0(Z)}function se4($,Z){return $===!0&&xZ1(Z)}async function ee4($,Z,X){let Q=Z.organizationId,Y=await $.storage.taskBoard.listPrs(Z.id,Q).catch(()=>[]),G=await LD($,Q,Y).catch(()=>{return});if(!G)return!1;let J=await OD($,Q,G).catch(()=>null);return se4(J,X)}function Z06($,Z){let X=bN($),Q=0;for(let Y of $){if(Y.action!=="review_approved")continue;let G=new Date(Y.occurredAt).getTime();if(G>=X)Q=Math.max(Q,G)}return Z-Q>=$06}async function X06($,Z){if(Z.status!=="in_review")return;if((await $.storage.organizationSettings.get(Z.organizationId))?.flags?.auto_merge!==!0)return;if(!await Gs($,Z.organizationId,Z.id))return;let Y=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId).catch(()=>[]);if(Z06(Y,Date.now()))return;if(await ee4($,Z,Y))return;throw Error("Every reviewer approved this task and its merge is retrying \u2014 re-running "+"would throw that away and start a new review cycle. Wait for the merge, or use the ship button if the PR needs a nudge.")}var oe4="Superseded by a manual re-run of this task",$06=900000,IX1;var nf$=L(()=>{k0();B9();_H();JU();fT0();iu();qX();q5();vH();Js();tJ();va();xJ();IX1=c({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:su.object({id:su.string().describe("The task board item to re-run.")}),outputSchema:su.object({status:su.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:su.array(su.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==E8)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");await X06(Z,Q),await xh(Z,Q,ML());let Y=[];for(let J of re4(Q)){if(!await Z.storage.threads.failIfNotTerminal(J,oe4,"superseded"))continue;Y.push(J),await ae4(Z,J,X)}let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},a0(Z));return await O6(Z,{taskBoardItemId:$,action:"status_changed",actorId:a0(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),d$(X,G),await yK(Z,G,{userInitiated:!0}),{status:G.status,supersededThreadIds:Y}}})});import{z as Ks}from"zod";var qX1;var tf$=L(()=>{k0();xJ();qX();q5();vH();tJ();qX1=c({name:"TASK_BOARD_RESOLVE_CONFLICT",description:"Hand a task's pull request back to the Super Agent to resolve a merge conflict with its base branch. Use when a reviewed PR can't be shipped because it conflicts. Bounces the task to In Progress and queues a run that checks out the existing PR's branch, merges the base, resolves the conflicts, and pushes to the same PR.",annotations:{title:"Resolve Merge Conflict",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:Ks.object({id:Ks.string().describe("The task board item whose PR conflicts."),prNumber:Ks.number().describe("The conflicting pull request's number, linked to this task.")}),outputSchema:Ks.object({status:Ks.string().describe("The task's lane after the resolution run was queued.")}),handler:async({id:$,prNumber:Z},X)=>{s(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let Y=await X.storage.taskBoard.getById($,Q);if(!Y)throw Error(`Task board item not found: ${$}`);let J=(await X.storage.taskBoard.listPrs($,Q)).find((H)=>H.number===Z);if(!J)throw Error(`Pull request #${Z} is not linked to this task.`);if(await OD(X,Q,J).catch(()=>null)!==!0)throw Error("This pull request no longer has a merge conflict \u2014 refresh and try again.");await xh(X,Y,ML());let W=await X.storage.taskBoard.claimConflictResolution($,Q,a0(X));if(!W)throw Error("Couldn't start conflict resolution \u2014 the task may have moved, been "+"reassigned, or already be resolving. Refresh and try again.");d$(Q,W);try{await yK(X,W,{pr:{number:J.number,url:J.url},resolveConflict:!0,runClass:"retry",userInitiated:!0})}catch(H){throw await X.storage.taskBoard.update(W.id,Q,{status:"in_review"},"system").then((F)=>d$(Q,F)).catch((F)=>console.error("[task-board] resolve-conflict status revert failed",F)),H}return await O6(X,{taskBoardItemId:$,action:"merge_conflict_resolution",actorId:null,data:{prNumber:J.number}}),{status:W.status}}})});import{z as TD}from"zod";function Q06($,Z,X){return $!==null&&$.reviewer===Z&&$.cycleAt.getTime()===X}function Y06($,Z){return o$1($).get(Z)==="changes_requested"}var MX1;var of$=L(()=>{k0();B9();vK();qX();q5();vH();Js();tJ();VZ1();va();xJ();MX1=c({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:TD.object({taskBoardItemId:TD.string(),reviewer:TD.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:TD.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:TD.enum(["approve","request_changes"]),notes:TD.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:TD.object({status:_K,merged:TD.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{s(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let W=X?bN(await G.storage.taskBoard.listActivity($,J)):0,H=!!X&&(oS$(X,$,Z,new Date(W))||Q06(await G.storage.taskBoard.resolveReviewClaimByToken($,X),Z,W));if(Q==="request_changes"){let j=await G.storage.taskBoard.listActivity($,J);if(Y06(j,Z))return{status:K.status,merged:!1};if(tB$(j))return await O6(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H,bounceLimitReached:!0}}),await xH(G,K,`${r$1} review bounces reached \u2014 the reviewer and the `+"Super Agent are not converging"),{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};let z=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await O6(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!z)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};d$(J,z);let A=await G.storage.taskBoard.listPrs($,J),P=await LD(G,J,A);return await yK(G,z,{feedback:`${_h[Z]}: ${Y}`,pr:P?{number:P.number,url:P.url}:void 0}).catch(async(R)=>{if(await fA0(G,z,R)){await G.storage.taskBoard.update(z.id,J,{status:"in_review"},"system").then((M)=>d$(J,M)).catch((M)=>console.error("[task-board] runs-exhausted status revert failed",M));return}if(R instanceof DX)throw R;console.error("[task-board] request_changes re-enqueue failed",R)}),{status:z.status,merged:!1}}if(await O6(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!await Gs(G,J,$)){let j=await G.storage.taskBoard.getById($,J)??K;return d$(J,j),{status:j.status,merged:!1}}let U=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0,B=await G.storage.taskBoard.hasHumanRejectedDone($,J),O=U&&!B,D=O?await Ys(G,J,$):null;if(D?.merged===!0){let j=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await O6(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),d$(J,j),{status:j.status,merged:!0}}let E=await G.storage.taskBoard.getById($,J)??K;if(O){let j=await G.storage.taskBoard.listPrs($,J),z=await LD(G,J,j);if(z?await fu(G,J,E,{pr:{number:z.number,url:z.url},conflict:RX1(await OD(G,J,z),D)}).catch((P)=>{if(P instanceof DX)throw P;return console.error("[task-board] conflict auto-resolve failed",P),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??E).status,merged:!1}}return d$(J,E),{status:E.status,merged:!1}}})});import{z as bT0}from"zod";function G06($,Z,X){if($!=="in_review")return!1;return X.length===0||qL(Z,X)}var VX1;var rf$=L(()=>{k0();B9();vK();qX();q5();Js();VX1=c({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:bT0.object({taskBoardItemId:bT0.string()}),outputSchema:bT0.object({status:_K,merged:bT0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let Y=await Z.storage.organizationSettings.get(X),G=fN(Y?.flags),J=await Z.storage.taskBoard.listActivity($,X);if(!G06(Q.status,J,G))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!(await Ys(Z,X,$,{allowPendingChecks:!0})).merged){let H=await Z.storage.taskBoard.getById($,X)??Q;return d$(X,H),{status:Q.status,merged:!1}}let W=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await O6(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return d$(X,W),{status:W.status,merged:!0}}})});import{z as sJ}from"zod";function af$($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var J06,kX1,SX1;var sf$=L(()=>{k0();J06=sJ.object({externalKey:sJ.string(),dismissedBy:sJ.string(),dismissedAt:sJ.string()});kX1=c({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sJ.object({}),outputSchema:sJ.object({findings:sJ.array(J06)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=af$(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),SX1=c({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sJ.object({externalKeys:sJ.array(sJ.string()).max(1000).optional()}),outputSchema:sJ.object({restored:sJ.number()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=af$(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as s6}from"zod";function yT0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}function W06($,Z,X){return $.replace(K06,(Q,Y,G,J)=>{let K=encodeURIComponent(`${Z}/${G}`);return`${Y}/api/${encodeURIComponent(X)}/fs/outputs/read?path=${K}${J}`})}var CX1,_X1,K06,vX1,xX1,fX1;var ef$=L(()=>{k0();B9();_A0();Zv();CX1=s6.object({id:s6.string(),taskBoardItemId:s6.string(),parentId:s6.string().nullable(),authorId:s6.string(),body:s6.string(),resolved:s6.boolean(),createdAt:s6.string(),updatedAt:s6.string()});_X1=c({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({taskBoardItemId:s6.string()}),outputSchema:s6.object({comments:s6.array(CX1)}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,yT0(Z))}}}),K06=/(!\[[^\]]*\]\()org\/output\/([^)\s]+)(\))/g;vX1=c({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:s6.object({taskBoardItemId:s6.string(),body:s6.string().trim().min(1),parentId:s6.string().nullish()}),outputSchema:s6.object({comment:CX1}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=yT0(Z),Q=$v.getStore(),Y=Z.organization?.slug,G=Q?.threadId&&Y?W06($.body,Q.threadId,Y):$.body,J=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:X,parentId:$.parentId??null,authorId:Q?E8:a0(Z),body:G});if(!J)throw Error("Task board item not found");return await Z.storage.notifications.notify({taskBoardItemId:J.taskBoardItemId,type:"commented",actorId:Q?null:a0(Z),alsoSubscribe:Q?[]:[a0(Z)]}),await Z.storage.notifications.notifyMentions({taskBoardItemId:J.taskBoardItemId,organizationId:X,actorId:Q?null:a0(Z),body:J.body}),await DZ1(Z,{commentId:J.id,taskBoardItemId:J.taskBoardItemId,organizationId:X,authorLabel:Q?"Super Agent":Z.auth?.user?.name??Z.auth?.user?.email??"Studio",body:J.body}),{comment:J}}}),xX1=c({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({id:s6.string(),body:s6.string().trim().min(1).optional(),resolved:s6.boolean().optional()}),outputSchema:s6.object({comment:CX1}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=yT0(Z),Q=$.body!==void 0?await Z.storage.taskBoard.getComment($.id,X):null,Y=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:X,callerId:a0(Z),body:$.body,resolved:$.resolved});if(!Y)throw Error("Comment not found, or you can only edit your own comments");if($.body!==void 0&&Y.body!==Q?.body)await Z.storage.notifications.notifyMentions({taskBoardItemId:Y.taskBoardItemId,organizationId:X,actorId:a0(Z),body:Y.body,previousBody:Q?.body??null});return{comment:Y}}}),fX1=c({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({id:s6.string()}),outputSchema:s6.object({success:s6.boolean()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,yT0(Z),a0(Z))}}})});var $b$=L(()=>{NM$();dZ1();TZ1();RZ1();IZ1();tJ();cf$();nf$();tf$();of$();rf$();qX();sf$();ef$()});function Ws($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}async function bX1($,Z){let X=Ws($);if(!await $.storage.taskBoard.getById(Z,X))throw Error("Task board item not found");return X}import{z as kX}from"zod";var F06,Zb$;var Xb$=L(()=>{k0();LA0();F06=kX.object({id:kX.string(),taskBoardItemId:kX.string(),type:kX.enum(OA0),taskTitle:kX.string(),taskKeySeq:kX.number().nullable(),actorName:kX.string().nullable(),actorImage:kX.string().nullable(),createdAt:kX.string()}),Zb$=c({name:"NOTIFICATION_LIST",description:"List the current user's unread notifications in the current organization, newest first.",annotations:{title:"List Notifications",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:kX.object({cursor:kX.string().optional(),limit:kX.number().int().positive().max(50).optional()}),outputSchema:kX.object({notifications:kX.array(F06),unreadCount:kX.number(),nextCursor:kX.string().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let{notifications:X,unreadCount:Q,nextCursor:Y}=await Z.storage.notifications.listUnread(a0(Z),Ws(Z),{cursor:$.cursor,limit:$.limit});return{notifications:X.map((G)=>({id:G.id,taskBoardItemId:G.taskBoardItemId,type:G.type,taskTitle:G.data.taskTitle,taskKeySeq:G.data.taskKeySeq,actorName:G.data.actorName,actorImage:G.data.actorImage,createdAt:G.createdAt})),unreadCount:Q,nextCursor:Y}}})});import{z as Hs}from"zod";var Qb$;var Yb$=L(()=>{k0();Qb$=c({name:"NOTIFICATION_MARK_READ",description:"Mark notifications read. Omit `ids` to mark all of the current user's unread ones in this organization.",annotations:{title:"Mark Notifications Read",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Hs.object({ids:Hs.array(Hs.string()).max(1000).optional()}),outputSchema:Hs.object({marked:Hs.number()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{marked:await Z.storage.notifications.markRead(a0(Z),Ws(Z),$.ids)}}})});import{z as cH}from"zod";var Gb$,Jb$;var Kb$=L(()=>{k0();Gb$=c({name:"NOTIFICATION_SUBSCRIPTION_SET",description:"Follow or unfollow a task board item.",annotations:{title:"Set Notification Subscription",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cH.object({taskBoardItemId:cH.string(),subscribed:cH.boolean()}),outputSchema:cH.object({subscribed:cH.boolean()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),await bX1(Z,$.taskBoardItemId),await Z.storage.notifications.setSubscribed(a0(Z),$.taskBoardItemId,$.subscribed),{subscribed:$.subscribed}}}),Jb$=c({name:"NOTIFICATION_SUBSCRIPTION_LIST",description:"List the user ids following a task board item.",annotations:{title:"List Notification Subscribers",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cH.object({taskBoardItemId:cH.string()}),outputSchema:cH.object({userIds:cH.array(cH.string())}),handler:async($,Z)=>{return s(Z),await Z.access.check(),await bX1(Z,$.taskBoardItemId),{userIds:await Z.storage.notifications.listSubscribers($.taskBoardItemId)}}})});var Wb$=L(()=>{Xb$();Yb$();Kb$()});import{z as NU}from"zod";var yX1;var Hb$=L(()=>{k0();yX1=c({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:NU.object({}),outputSchema:NU.object({tags:NU.array(NU.object({id:NU.string(),organizationId:NU.string(),name:NU.string(),color:NU.string().nullable(),createdAt:NU.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as lH}from"zod";var gX1;var Fb$=L(()=>{k0();gX1=c({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:lH.object({name:lH.string().min(1).max(50).describe("Tag name"),color:lH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:lH.object({tag:lH.object({id:lH.string(),organizationId:lH.string(),name:lH.string(),color:lH.string().nullable(),createdAt:lH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as gT0}from"zod";var hX1;var Nb$=L(()=>{k0();hX1=c({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:gT0.object({tagId:gT0.string().describe("Tag ID to delete")}),outputSchema:gT0.object({success:gT0.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as dH}from"zod";var uX1;var Ub$=L(()=>{k0();uX1=c({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:dH.object({memberId:dH.string().describe("Member ID")}),outputSchema:dH.object({tags:dH.array(dH.object({id:dH.string(),organizationId:dH.string(),name:dH.string(),color:dH.string().nullable(),createdAt:dH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as eJ}from"zod";var cX1;var Bb$=L(()=>{k0();cX1=c({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eJ.object({memberId:eJ.string().describe("Member ID"),tagIds:eJ.array(eJ.string()).describe("Array of tag IDs to assign")}),outputSchema:eJ.object({success:eJ.boolean(),tags:eJ.array(eJ.object({id:eJ.string(),organizationId:eJ.string(),name:eJ.string(),createdAt:eJ.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var Ob$=L(()=>{Hb$();Fb$();Nb$();Ub$();Bb$()});import{z as Lb$}from"zod";function L06($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).filter(([,Y])=>(M7 in Y)).sort(([,Y],[,G])=>(G[M7]?.createdAt??0)-(Y[M7]?.createdAt??0))[0]?.[0]}var B06,O06,lX1;var Db$=L(()=>{f4();k0();Wv();Ou();A7();DY();B06=Lb$.object({data:Ak$.describe("Data for the new thread (id is auto-generated if not provided)")}),O06=Lb$.object({item:SH.describe("The created thread entity")});lX1=c({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:B06,outputSchema:O06,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??L8("thrd"),K=(await NA0(Z.storage.virtualMcps,Y.virtual_mcp_id,X.id)).metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??L06(K?.sandboxMap,Q)??p30(i30(Z.auth.user));let F=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q,metadata:{runtime:Y.runtime??qP0(K)}});if(F.isNew)h1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:iJ(F)}}})});import{z as dX1}from"zod";var D06,w06,mX1;var wb$=L(()=>{f4();k0();Wv();Ou();D06=dX1.object({id:dX1.string().describe("ID of the thread to update"),data:Tk$.describe("Partial thread data to update")}),w06=dX1.object({item:SH.describe("The updated thread entity")}),mX1=c({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:D06,outputSchema:w06,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0)await NA0(Z.storage.virtualMcps,G.virtual_mcp_id,X.id);if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0){let H=Sh(G.metadata)??{},F=e_(J.metadata?.runtime),N=e_(H.runtime);if(F&&N&&N!==F)throw Error(`Cannot change a thread's runtime (${F} \u2192 ${N}); it is stamped once at creation. Start a new chat instead.`);let U=J.metadata?.sandboxMap;K.metadata={...H,...F?{runtime:F}:{},...U!==void 0?{sandboxMap:U}:{}}}if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)h1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:iJ(W)}}})});var iX1;var Eb$=L(()=>{kJ();Wv();f4();k0();JU();fT0();iu();iX1=c({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:co,outputSchema:lo(SH),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);if(Q.status==="in_progress"){let G=(K)=>(W)=>console.error("[thread] delete-time run cancel step failed",{threadId:$.id,step:K,err:W});await mu($.id).catch(G("background-jobs")),await au($.id).catch(G("gate-head"));let J=await Z.storage.threads.getRunFence($.id).catch(()=>null);if(J)await vv($.id,J).catch(G("hosted-harness"));vT0($.id)}await Z.storage.threads.delete($.id);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:iJ(Q)}}})});var jb$=L(()=>{Db$();v91();x91();wb$();Eb$();f91()});function j06($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function z06($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:j06(Q.text)}}})}function hT0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return z06(Z)}import{z as e6}from"zod";var pX1;var zb$=L(()=>{f4();k0();UX();pX1=c({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:e6.object({name:e6.string().min(1).max(255),virtual_mcp_id:e6.string(),messages:e6.union([e6.string(),e6.array(e6.looseObject({id:e6.string().optional(),role:e6.enum(["user","assistant","system"]),parts:e6.array(e6.record(e6.string(),e6.unknown())),metadata:e6.unknown().optional()}))]),models:e6.object({tier:GL,modelId:e6.string().optional(),credentialId:e6.string().optional()}).loose().default({tier:"smart"}),tools:e6.array(e6.string()).nullable().optional(),maxAgentSteps:e6.number().int().min(1).max(100).nullable().optional(),temperature:e6.number().default(0.5),active:e6.boolean().default(!0)}),outputSchema:e6.object({id:e6.string(),name:e6.string(),active:e6.boolean(),created_at:e6.string()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("Unable to determine user identity");let Y=hT0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,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 h1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as c6}from"zod";var nX1;var Pb$=L(()=>{k0();nX1=c({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:c6.object({id:c6.string()}),outputSchema:c6.object({automation:c6.object({id:c6.string(),name:c6.string(),active:c6.boolean(),created_by:c6.string(),created_at:c6.string(),updated_at:c6.string(),virtual_mcp_id:c6.string(),messages:c6.unknown(),models:c6.unknown(),tools:c6.array(c6.string()).nullable(),maxAgentSteps:c6.number().nullable(),temperature:c6.number(),triggers:c6.array(c6.object({id:c6.string(),type:c6.enum(["cron","event","webhook"]),cron_expression:c6.string().nullable(),connection_id:c6.string().nullable(),event_type:c6.string().nullable(),params:c6.unknown().nullable(),last_run_at:c6.string().nullable(),api_key_id:c6.string().nullable(),created_at:c6.string()}))}).nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as SG}from"zod";var tX1;var Ab$=L(()=>{k0();tX1=c({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:SG.object({virtual_mcp_id:SG.string().optional().nullable()}),outputSchema:SG.object({automations:SG.array(SG.object({id:SG.string(),name:SG.string(),active:SG.boolean(),created_by:SG.string(),created_at:SG.string(),trigger_count:SG.number(),nearest_next_run_at:SG.string().nullable(),virtual_mcp_id:SG.string()}))}),handler:async($,Z)=>{s(Z);let X=a(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function A06($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function Tb$($){return`${$}:context`}function Rb$($,Z,X,Q,Y){let J=JSON.parse($.messages).map((H,F)=>({...H,id:`${X}:${F}`})),K=Z?{...Y,[bP0]:P06}:Y;return{messages:J,models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:A06($.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:X}}var P06="new_task";var Ib$=L(()=>{Fa()});function SX($,Z,X,Q,Y,G,J,K){return SX.fromTZ(SX.tp($,Z,X,Q,Y,G,J),K)}function oX1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function T06($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?SX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):SX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function R06($){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 $3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new $3($.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 Fs($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function I06($){return Fs($)}function q06($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var rX1=32,Ns,kb$,qb$=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 $3(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,Ns),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}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,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){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,X);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]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,F=parseInt(K,10)+X,N=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(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>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 U=H;U<=F;U+=N)this.setPart(Z,U,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[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=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}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[$]|rX1;else if(Z===Ns)this.dayOfWeek[$]=Ns;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|kb$[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},Mb$,UU,$3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,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,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&Ns&&kb$[J-1]&Y)return!0;if(Y&rX1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)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 X=SX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.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>Mb$[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 X=SX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(SX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=Mb$[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let F=Q.dayOfWeek[(K+(W-Y-1))%7];if(F&&F&Ns)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&&!Q.starDOM?H=H||F:H=H&&F}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,UU[Q][0],Z,UU[Q][2]);if(Y>1){let G=Q+1;for(;G<UU.length;)this[UU[G][0]]=-UU[G][2],G++;if(Y===3)return this[UU[Q][1]]++,this[UU[Q][0]]=-UU[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=UU.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,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)):SX.fromTZ(SX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},Vb$=30000,uT0,cT0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(Fs(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Fs(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=R06(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new qb$("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new $3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new qb$($,this.options.timezone),this.name){if(uT0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");uT0.push(this)}return Y!==void 0&&I06(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 X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==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 $3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new $3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=uT0.indexOf(this);$>=0&&uT0.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(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>Vb$&&(Z=Vb$),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&q06(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new $3(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){Fs(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new $3($,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,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&Fs(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new $3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new $3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new $3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new $3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var aX1=L(()=>{SX.fromTZISO=($,Z,X)=>SX.fromTZ(T06($,Z),X);SX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=oX1($.tz,X),Y=new Date(X.getTime()-Q),G=oX1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=oX1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};SX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};SX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});SX.minitz=SX;Ns=31|rX1,kb$=[1,2,4,8,16],Mb$=[31,28,31,30,31,30,31,31,30,31,30,31],UU=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];uT0=[]});function lT0($,Z){try{return new cT0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var sX1=L(()=>{aX1()});import{DBOS as C7,SchedulerMode as M06}from"@dbos-inc/dbos-sdk";async function QQ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
|
|
2852
|
+
`)}async function xe4($,Z,X){let Y=(await $.storage.taskBoard.listPrs(Z.id,Z.organizationId).catch(()=>[])).find((G)=>G.number===X);if(!Y)return null;return BC$($,Z.organizationId,Y).catch(()=>null)}async function fe4($,Z){let X=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId).catch(()=>[]);return nB$(X)}function be4($){return $!=="closed"}async function ye4($,Z){let X=await $.storage.taskBoard.listPrs(Z.id,Z.organizationId).catch(()=>[]);for(let Q of X){let{state:Y}=await bu(Z.organizationId,Q);if(be4(Y))return{number:Q.number,url:Q.url}}return}async function yK($,Z,X){let Q=await aB$($,Z,X?.userInitiated?ML():void 0),Y="decopilot";try{let G=y0().taskBoardRerunReusesPrBranch,J=X?.pr??(G?await ye4($,Z):void 0),K=G&&J?await xe4($,Z,J.number):null,W=!X?.feedback&&!X?.resolveConflict,H=J&&W?await fe4($,Z):null,F=J&&J!==X?.pr||H?{...X,...J?{pr:J}:{},...H?{feedback:H}:{}}:X,N=await hA0($,Z.organizationId);if(N){Y="claude-code";let U="repo"in N?N.repo:null;await _a($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},...K?{pinnedRef:K}:{},prompt:tS$(Z,U,{...F,..."choices"in N?{repoChoices:N.choices}:{}}),temperature:0.5,harnessId:"claude-code",...U?{repo:U}:{}})}else await _a($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},prompt:ve4(Z,F),temperature:0.5,...K?{pinnedRef:K}:{}})}catch(G){throw await sB$($.storage.organizationBilling,Z.organizationId,Z.id,Q),G}await $.storage.taskBoard.supersedeFailedThreads(Z.id,Z.organizationId).catch((G)=>console.error("[task-board] superseding failed threads failed",G)),NG({event:"task_run_enqueued",organizationId:Z.organizationId,properties:{task_id:Z.id,reports_task:KY(Z),claim:Q,harness:Y,...X?.runClass?{run_class:X.runClass}:{}}})}var vH=L(()=>{B9();xJ();B9();f4();V$();vZ1();tJ();xa();qZ1()});import{z as iK}from"zod";var Pv;var dZ1=L(()=>{k0();r51();vK();a51();vH();qX();q5();Vu();Pv=c({name:"TASK_BOARD_ITEM_CREATE",description:"Create a new task board item for the organization.",annotations:{title:"Create Task Board Item",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:iK.object({title:iK.string().min(1),description:iK.string().nullable().optional(),status:_K.optional(),priority:Xv.optional(),assigneeId:iK.string().nullable().optional(),repo:iK.string().nullable().optional(),dueDate:iK.string().datetime().nullable().optional(),sprint:iK.number().int().min(1).max(vP0).nullable().optional().describe("Sprint to plan this task into (1-based, counted from the org's sprint cadence). Omit or null to leave it in the backlog."),tagIds:iK.array(iK.string()).max(1000).optional(),prUrl:iK.string().nullable().optional().describe('GitHub pull request URL to link to the new task, e.g. https://github.com/owner/repo/pull/123. Pass this with `status: "in_review"` right after you open a PR so the card lands on the board with its PR already attached for review.')}),outputSchema:iK.object({item:Eu}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.prUrl?FD($.prUrl):null;if($.prUrl&&!Q)throw Error(`Not a GitHub pull request URL: ${$.prUrl} (expected https://github.com/<owner>/<repo>/pull/<number>)`);if($.assigneeId)await xP0(Z,X,$.assigneeId);let Y=$.assigneeId===E8;if($.tagIds?.length){let J=await Z.storage.tags.listOrgTags(X),K=new Set(J.map((W)=>W.id));for(let W of $.tagIds)if(!K.has(W))throw Error(`Tag not found: ${W}`)}let G=await Z.storage.taskBoard.create({organizationId:X,title:$.title,description:$.description??null,status:Y?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId??null,assignedBy:$.assigneeId?a0(Z):null,repo:$.repo??null,dueDate:$.dueDate??null,sprint:$.sprint??null,by:a0(Z)});if($.tagIds?.length)await Z.storage.taskBoard.setItemTags(G.id,$.tagIds,a0(Z)),G=await Z.storage.taskBoard.getById(G.id,X);if(Q)await Z.storage.taskBoard.linkPr({taskBoardItemId:G.id,organizationId:X,url:Q.url,prNumber:Q.number,repoOwner:Q.owner,repoName:Q.repo,connectionId:null});return await O6(Z,{taskBoardItemId:G.id,action:"created",actorId:a0(Z),alsoSubscribe:[a0(Z),G.assigneeId===E8?null:G.assigneeId]}),await Z.storage.notifications.notifyMentions({taskBoardItemId:G.id,organizationId:X,actorId:a0(Z),body:G.description??""}),d$(X,G),await BD(Z,G),{item:G}}})});import{z as xv}from"zod";var AX1;var cf$=L(()=>{k0();Vu();q5();Zv();AX1=c({name:"TASK_BOARD_ITEM_PR_LINK",description:"Link the pull request you just opened to this run's task board item. Call this right after `gh pr create` succeeds, with the PR URL it printed. Reviewers (QA, code review) are dispatched from the linked PR, so a task whose PR is not linked never gets reviewed.",annotations:{title:"Link Pull Request to Task",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xv.object({url:xv.string().describe("The pull request URL, e.g. https://github.com/owner/repo/pull/123")}),outputSchema:xv.object({url:xv.string(),prNumber:xv.number(),taskBoardItemIds:xv.array(xv.string())}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z).id,{threadId:Q}=_P0(),Y=FD($.url);if(!Y)throw Error(`Not a GitHub pull request URL: ${$.url} (expected https://github.com/<owner>/<repo>/pull/<number>)`);let G=await Cu(Z,X,Q);for(let J of G)await Z.storage.taskBoard.linkPr({taskBoardItemId:J,organizationId:X,url:Y.url,prNumber:Y.number,repoOwner:Y.owner,repoName:Y.repo}),await Z.storage.taskBoard.clearSweepBudget(J,X);return{url:Y.url,prNumber:Y.number,taskBoardItemIds:G}}})});function df$($){lf$=$}function vT0($){lf$?.broadcast($)}var lf$=null;import{DBOS as xT0}from"@dbos-inc/dbos-sdk";function ge4($,Z){let X=`thread-run:${Z}:`;if(!$.workflowID.startsWith(X))return null;let Q=$.input?.[0],Y=Q?.request;return{workflowId:$.workflowID,messageId:Y?.messageId??$.workflowID.slice(X.length),status:$.status==="PENDING"?"running":"queued",enqueuedAt:$.createdAt,...Q?.source!==void 0?{source:Q.source}:{}}}async function TX1($){return(await xT0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING","ENQUEUED"],loadInput:!0,loadOutput:!1})).map((X)=>ge4(X,$)).filter((X)=>X!==null).sort((X,Q)=>X.enqueuedAt-Q.enqueuedAt)}async function mf$($,Z){if(!Z.startsWith(`thread-run:${$}:`))return!1;return await xT0.cancelWorkflows([Z]),!0}async function au($){let Z=await xT0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING"],loadInput:!1,loadOutput:!1});if(Z.length===0)return;await xT0.cancelWorkflows(Z.map((X)=>X.workflowID))}var fT0=()=>{};function ce4($){return/\b405\b/.test($)&&/not allowed on this repository/i.test($)}function de4($,Z={}){if($==="failing")return!0;if($==="pending")return!Z.allowPendingChecks;return!1}async function me4($,Z,X,Q,Y){if(le4.has(Q))return;let J=(await $.storage.taskBoard.listActivity(X,Z).catch(()=>[])).at(-1);if(J?.action==="merge_failed"&&J.data?.reason===Q)return;await O6($,{taskBoardItemId:X,action:"merge_failed",actorId:null,data:{reason:Q,...Y?{detail:Y}:{}}})}function ie4($){if(!$?.isError)return{kind:"merged"};let Z=JSON.stringify($?.content)??"";if(ce4(Z))return{kind:"method_not_allowed",detail:Z};if(iA0(Z))return{kind:"rate_limited",detail:Z};return{kind:"refused",detail:Z}}async function pe4($,Z,X){let Q=await $.callTool({name:"merge_pull_request",arguments:{owner:Z.repoOwner,repo:Z.repoName,pullNumber:Z.number,merge_method:X}},void 0,{timeout:he4});return ie4(Q)}async function Ys($,Z,X,Q={}){let Y=async(N,U)=>{return await me4($,Z,X,N,U),{merged:!1,reason:N,...U?{detail:U}:{}}},G=await $.storage.taskBoard.listPrs(X,Z),J=await LD($,Z,G);if(!J)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${X}`),Y("no_pr");let K=await FC$($,Z,J);if(de4(K,Q))return console.warn(`[task-board] merge blocked \u2014 checks ${K} on PR #${J.number}`),Y(K==="failing"?"checks_failing":"checks_pending");let W=`${J.repoOwner}/${J.repoName}`,H=await jv($,Z,J.connectionId,{owner:J.repoOwner,name:J.repoName});if(!H)return console.warn("[task-board] merge blocked \u2014 no active GitHub connection for "+`${W} (PR #${J.number})`),Y("no_connection",W);let F=await z5(H,$,!0);try{let N=null;for(let U of ue4){let B=await pe4(F,J,U);if(B.kind==="merged")return YC$(H.id),{merged:!0};if(B.kind==="rate_limited")return console.warn(`[task-board] merge rate-limited on PR #${J.number} \u2014 sweep retries`),Y("rate_limited",B.detail.slice(0,500));if(B.kind==="method_not_allowed"){console.warn(`[task-board] merge method '${U}' not allowed on ${W} \u2014 trying next`),N=B.detail;continue}return console.error(`[task-board] merge refused by GitHub on PR #${J.number}:`,B.detail),Y("refused",B.detail.slice(0,500))}return console.error(`[task-board] no merge method allowed on ${W} (PR #${J.number})`,N),Y("refused",N?.slice(0,500))}catch(N){let U=N instanceof Error?N.message:String(N);if(iA0(N))return Y("rate_limited",U);return console.error("[task-board] merge PR failed",N),Y("error",U)}finally{await F.close().catch(()=>{})}}async function Gs($,Z,X){let Q=await $.storage.organizationSettings.get(Z),Y=fN(Q?.flags),G=await $.storage.taskBoard.listActivity(X,Z);return qL(G,Y,{verifiedOnly:!0})}async function ne4($,Z){let X=await $.storage.organizationSettings.get(Z.organizationId),Q=fN(X?.flags),Y=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);if(!pB$(Y,Q))return;await xH($,Z,"every reviewer approved, but an approval could not be verified \u2014 "+"auto-merge is blocked and no reviewer can be re-dispatched this cycle")}function if$($){return!$.merged&&$.reason==="refused"}function RX1($,Z){if($!==null)return $;if(Z===null||!if$(Z))return null;return(Z.detail??"").toLowerCase().includes("merge conflict")?!0:null}async function te4($,Z,X){if(!if$(X))return;let Q=Z.organizationId,Y=await $.storage.taskBoard.listPrs(Z.id,Q),G=await LD($,Q,Y);if(!G)return;await fu($,Q,Z,{pr:{number:G.number,url:G.url},conflict:RX1(await OD($,Q,G),X)}).catch((J)=>{console.error("[task-board] sweep conflict auto-resolve failed",J)})}async function pf$($,Z){let X=Z.organizationId;if(Z.status!=="in_review")return!1;if((await $.storage.organizationSettings.get(X))?.flags?.auto_merge!==!0)return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;if(!await Gs($,X,Z.id))return await ne4($,Z),!1;let Y=await Ys($,X,Z.id);if(!Y.merged)return await te4($,Z,Y),!1;let G=await $.storage.taskBoard.update(Z.id,X,{status:"done"},Z.updatedBy);return await O6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done"}}),d$(X,G),!0}var he4=15000,ue4,le4;var Js=L(()=>{kN();B9();qX();va();tJ();q5();ue4=["merge","squash","rebase"];le4=new Set(["checks_pending"])});import{z as su}from"zod";function re4($){return $.threads.filter((Z)=>Z.status!==null&&!Ia.has(Z.status)).map((Z)=>Z.threadId)}async function ae4($,Z,X){let Q=(G)=>(J)=>console.error("[task-board] rerun takeover step failed",{threadId:Z,step:G,err:J});await $.storage.threads.setCancelRequested(Z,X).catch(Q("cancel-flag")),await mu(Z).catch(Q("background-jobs")),await au(Z).catch(Q("gate-head"));let Y=await $.storage.threads.getRunFence(Z).catch(()=>null);if(Y)await vv(Z,Y).catch(Q("hosted-harness"));vT0(Z)}function se4($,Z){return $===!0&&xZ1(Z)}async function ee4($,Z,X){let Q=Z.organizationId,Y=await $.storage.taskBoard.listPrs(Z.id,Q).catch(()=>[]),G=await LD($,Q,Y).catch(()=>{return});if(!G)return!1;let J=await OD($,Q,G).catch(()=>null);return se4(J,X)}function Z06($,Z){let X=bN($),Q=0;for(let Y of $){if(Y.action!=="review_approved")continue;let G=new Date(Y.occurredAt).getTime();if(G>=X)Q=Math.max(Q,G)}return Z-Q>=$06}async function X06($,Z){if(Z.status!=="in_review")return;if((await $.storage.organizationSettings.get(Z.organizationId))?.flags?.auto_merge!==!0)return;if(!await Gs($,Z.organizationId,Z.id))return;let Y=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId).catch(()=>[]);if(Z06(Y,Date.now()))return;if(await ee4($,Z,Y))return;throw Error("Every reviewer approved this task and its merge is retrying \u2014 re-running "+"would throw that away and start a new review cycle. Wait for the merge, or use the ship button if the PR needs a nudge.")}var oe4="Superseded by a manual re-run of this task",$06=900000,IX1;var nf$=L(()=>{k0();B9();_H();JU();fT0();iu();qX();q5();vH();Js();tJ();va();xJ();IX1=c({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:su.object({id:su.string().describe("The task board item to re-run.")}),outputSchema:su.object({status:su.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:su.array(su.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==E8)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");await X06(Z,Q),await xh(Z,Q,ML());let Y=[];for(let J of re4(Q)){if(!await Z.storage.threads.failIfNotTerminal(J,oe4,"superseded"))continue;Y.push(J),await ae4(Z,J,X)}let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},a0(Z));return await O6(Z,{taskBoardItemId:$,action:"status_changed",actorId:a0(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),d$(X,G),await yK(Z,G,{userInitiated:!0}),{status:G.status,supersededThreadIds:Y}}})});import{z as Ks}from"zod";var qX1;var tf$=L(()=>{k0();xJ();qX();q5();vH();tJ();qX1=c({name:"TASK_BOARD_RESOLVE_CONFLICT",description:"Hand a task's pull request back to the Super Agent to resolve a merge conflict with its base branch. Use when a reviewed PR can't be shipped because it conflicts. Bounces the task to In Progress and queues a run that checks out the existing PR's branch, merges the base, resolves the conflicts, and pushes to the same PR.",annotations:{title:"Resolve Merge Conflict",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:Ks.object({id:Ks.string().describe("The task board item whose PR conflicts."),prNumber:Ks.number().describe("The conflicting pull request's number, linked to this task.")}),outputSchema:Ks.object({status:Ks.string().describe("The task's lane after the resolution run was queued.")}),handler:async({id:$,prNumber:Z},X)=>{s(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let Y=await X.storage.taskBoard.getById($,Q);if(!Y)throw Error(`Task board item not found: ${$}`);let J=(await X.storage.taskBoard.listPrs($,Q)).find((H)=>H.number===Z);if(!J)throw Error(`Pull request #${Z} is not linked to this task.`);if(await OD(X,Q,J).catch(()=>null)!==!0)throw Error("This pull request no longer has a merge conflict \u2014 refresh and try again.");await xh(X,Y,ML());let W=await X.storage.taskBoard.claimConflictResolution($,Q,a0(X));if(!W)throw Error("Couldn't start conflict resolution \u2014 the task may have moved, been "+"reassigned, or already be resolving. Refresh and try again.");d$(Q,W);try{await yK(X,W,{pr:{number:J.number,url:J.url},resolveConflict:!0,runClass:"retry",userInitiated:!0})}catch(H){throw await X.storage.taskBoard.update(W.id,Q,{status:"in_review"},"system").then((F)=>d$(Q,F)).catch((F)=>console.error("[task-board] resolve-conflict status revert failed",F)),H}return await O6(X,{taskBoardItemId:$,action:"merge_conflict_resolution",actorId:null,data:{prNumber:J.number}}),{status:W.status}}})});import{z as TD}from"zod";function Q06($,Z,X){return $!==null&&$.reviewer===Z&&$.cycleAt.getTime()===X}function Y06($,Z){return o$1($).get(Z)==="changes_requested"}var MX1;var of$=L(()=>{k0();B9();vK();qX();q5();vH();Js();tJ();VZ1();va();xJ();MX1=c({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:TD.object({taskBoardItemId:TD.string(),reviewer:TD.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:TD.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:TD.enum(["approve","request_changes"]),notes:TD.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:TD.object({status:_K,merged:TD.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{s(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let W=X?bN(await G.storage.taskBoard.listActivity($,J)):0,H=!!X&&(oS$(X,$,Z,new Date(W))||Q06(await G.storage.taskBoard.resolveReviewClaimByToken($,X),Z,W));if(Q==="request_changes"){let j=await G.storage.taskBoard.listActivity($,J);if(Y06(j,Z))return{status:K.status,merged:!1};if(tB$(j))return await O6(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H,bounceLimitReached:!0}}),await xH(G,K,`${r$1} review bounces reached \u2014 the reviewer and the `+"Super Agent are not converging"),{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};let z=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await O6(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!z)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};d$(J,z);let A=await G.storage.taskBoard.listPrs($,J),P=await LD(G,J,A);return await yK(G,z,{feedback:`${_h[Z]}: ${Y}`,pr:P?{number:P.number,url:P.url}:void 0}).catch(async(R)=>{if(await fA0(G,z,R)){await G.storage.taskBoard.update(z.id,J,{status:"in_review"},"system").then((M)=>d$(J,M)).catch((M)=>console.error("[task-board] runs-exhausted status revert failed",M));return}if(R instanceof DX)throw R;console.error("[task-board] request_changes re-enqueue failed",R)}),{status:z.status,merged:!1}}if(await O6(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:H}}),!await Gs(G,J,$)){let j=await G.storage.taskBoard.getById($,J)??K;return d$(J,j),{status:j.status,merged:!1}}let U=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0,B=await G.storage.taskBoard.hasHumanRejectedDone($,J),O=U&&!B,D=O?await Ys(G,J,$):null;if(D?.merged===!0){let j=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await O6(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),d$(J,j),{status:j.status,merged:!0}}let E=await G.storage.taskBoard.getById($,J)??K;if(O){let j=await G.storage.taskBoard.listPrs($,J),z=await LD(G,J,j);if(z?await fu(G,J,E,{pr:{number:z.number,url:z.url},conflict:RX1(await OD(G,J,z),D)}).catch((P)=>{if(P instanceof DX)throw P;return console.error("[task-board] conflict auto-resolve failed",P),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??E).status,merged:!1}}return d$(J,E),{status:E.status,merged:!1}}})});import{z as bT0}from"zod";function G06($,Z,X){if($!=="in_review")return!1;return X.length===0||qL(Z,X)}var VX1;var rf$=L(()=>{k0();B9();vK();qX();q5();Js();VX1=c({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:bT0.object({taskBoardItemId:bT0.string()}),outputSchema:bT0.object({status:_K,merged:bT0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{s(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let Y=await Z.storage.organizationSettings.get(X),G=fN(Y?.flags),J=await Z.storage.taskBoard.listActivity($,X);if(!G06(Q.status,J,G))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!(await Ys(Z,X,$,{allowPendingChecks:!0})).merged){let H=await Z.storage.taskBoard.getById($,X)??Q;return d$(X,H),{status:Q.status,merged:!1}}let W=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await O6(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return d$(X,W),{status:W.status,merged:!0}}})});import{z as sJ}from"zod";function af$($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var J06,kX1,SX1;var sf$=L(()=>{k0();J06=sJ.object({externalKey:sJ.string(),dismissedBy:sJ.string(),dismissedAt:sJ.string()});kX1=c({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sJ.object({}),outputSchema:sJ.object({findings:sJ.array(J06)}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=af$(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),SX1=c({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sJ.object({externalKeys:sJ.array(sJ.string()).max(1000).optional()}),outputSchema:sJ.object({restored:sJ.number()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=af$(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as s6}from"zod";function yT0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}function W06($,Z,X){return $.replace(K06,(Q,Y,G,J)=>{let K=encodeURIComponent(`${Z}/${G}`);return`${Y}/api/${encodeURIComponent(X)}/fs/outputs/read?path=${K}${J}`})}var CX1,_X1,K06,vX1,xX1,fX1;var ef$=L(()=>{k0();B9();_A0();Zv();CX1=s6.object({id:s6.string(),taskBoardItemId:s6.string(),parentId:s6.string().nullable(),authorId:s6.string(),body:s6.string(),resolved:s6.boolean(),createdAt:s6.string(),updatedAt:s6.string()});_X1=c({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({taskBoardItemId:s6.string()}),outputSchema:s6.object({comments:s6.array(CX1)}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,yT0(Z))}}}),K06=/(!\[[^\]]*\]\()org\/output\/([^)\s]+)(\))/g;vX1=c({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:s6.object({taskBoardItemId:s6.string(),body:s6.string().trim().min(1),parentId:s6.string().nullish()}),outputSchema:s6.object({comment:CX1}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=yT0(Z),Q=$v.getStore(),Y=Z.organization?.slug,G=Q?.threadId&&Y?W06($.body,Q.threadId,Y):$.body,J=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:X,parentId:$.parentId??null,authorId:Q?E8:a0(Z),body:G});if(!J)throw Error("Task board item not found");return await Z.storage.notifications.notify({taskBoardItemId:J.taskBoardItemId,type:"commented",actorId:Q?null:a0(Z),alsoSubscribe:Q?[]:[a0(Z)]}),await Z.storage.notifications.notifyMentions({taskBoardItemId:J.taskBoardItemId,organizationId:X,actorId:Q?null:a0(Z),body:J.body}),await DZ1(Z,{commentId:J.id,taskBoardItemId:J.taskBoardItemId,organizationId:X,authorLabel:Q?"Super Agent":Z.auth?.user?.name??Z.auth?.user?.email??"Studio",body:J.body}),{comment:J}}}),xX1=c({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({id:s6.string(),body:s6.string().trim().min(1).optional(),resolved:s6.boolean().optional()}),outputSchema:s6.object({comment:CX1}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=yT0(Z),Q=$.body!==void 0?await Z.storage.taskBoard.getComment($.id,X):null,Y=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:X,callerId:a0(Z),body:$.body,resolved:$.resolved});if(!Y)throw Error("Comment not found, or you can only edit your own comments");if($.body!==void 0&&Y.body!==Q?.body)await Z.storage.notifications.notifyMentions({taskBoardItemId:Y.taskBoardItemId,organizationId:X,actorId:a0(Z),body:Y.body,previousBody:Q?.body??null});return{comment:Y}}}),fX1=c({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:s6.object({id:s6.string()}),outputSchema:s6.object({success:s6.boolean()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,yT0(Z),a0(Z))}}})});var $b$=L(()=>{NM$();dZ1();TZ1();RZ1();IZ1();tJ();cf$();nf$();tf$();of$();rf$();qX();sf$();ef$()});function Ws($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}async function bX1($,Z){let X=Ws($);if(!await $.storage.taskBoard.getById(Z,X))throw Error("Task board item not found");return X}import{z as kX}from"zod";var F06,Zb$;var Xb$=L(()=>{k0();LA0();F06=kX.object({id:kX.string(),taskBoardItemId:kX.string(),type:kX.enum(OA0),taskTitle:kX.string(),taskKeySeq:kX.number().nullable(),actorName:kX.string().nullable(),actorImage:kX.string().nullable(),createdAt:kX.string()}),Zb$=c({name:"NOTIFICATION_LIST",description:"List the current user's unread notifications in the current organization, newest first.",annotations:{title:"List Notifications",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:kX.object({cursor:kX.string().optional(),limit:kX.number().int().positive().max(50).optional()}),outputSchema:kX.object({notifications:kX.array(F06),unreadCount:kX.number(),nextCursor:kX.string().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let{notifications:X,unreadCount:Q,nextCursor:Y}=await Z.storage.notifications.listUnread(a0(Z),Ws(Z),{cursor:$.cursor,limit:$.limit});return{notifications:X.map((G)=>({id:G.id,taskBoardItemId:G.taskBoardItemId,type:G.type,taskTitle:G.data.taskTitle,taskKeySeq:G.data.taskKeySeq,actorName:G.data.actorName,actorImage:G.data.actorImage,createdAt:G.createdAt})),unreadCount:Q,nextCursor:Y}}})});import{z as Hs}from"zod";var Qb$;var Yb$=L(()=>{k0();Qb$=c({name:"NOTIFICATION_MARK_READ",description:"Mark notifications read. Omit `ids` to mark all of the current user's unread ones in this organization.",annotations:{title:"Mark Notifications Read",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Hs.object({ids:Hs.array(Hs.string()).max(1000).optional()}),outputSchema:Hs.object({marked:Hs.number()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),{marked:await Z.storage.notifications.markRead(a0(Z),Ws(Z),$.ids)}}})});import{z as cH}from"zod";var Gb$,Jb$;var Kb$=L(()=>{k0();Gb$=c({name:"NOTIFICATION_SUBSCRIPTION_SET",description:"Follow or unfollow a task board item.",annotations:{title:"Set Notification Subscription",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cH.object({taskBoardItemId:cH.string(),subscribed:cH.boolean()}),outputSchema:cH.object({subscribed:cH.boolean()}),handler:async($,Z)=>{return s(Z),await Z.access.check(),await bX1(Z,$.taskBoardItemId),await Z.storage.notifications.setSubscribed(a0(Z),$.taskBoardItemId,$.subscribed),{subscribed:$.subscribed}}}),Jb$=c({name:"NOTIFICATION_SUBSCRIPTION_LIST",description:"List the user ids following a task board item.",annotations:{title:"List Notification Subscribers",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cH.object({taskBoardItemId:cH.string()}),outputSchema:cH.object({userIds:cH.array(cH.string())}),handler:async($,Z)=>{return s(Z),await Z.access.check(),await bX1(Z,$.taskBoardItemId),{userIds:await Z.storage.notifications.listSubscribers($.taskBoardItemId)}}})});var Wb$=L(()=>{Xb$();Yb$();Kb$()});import{z as NU}from"zod";var yX1;var Hb$=L(()=>{k0();yX1=c({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:NU.object({}),outputSchema:NU.object({tags:NU.array(NU.object({id:NU.string(),organizationId:NU.string(),name:NU.string(),color:NU.string().nullable(),createdAt:NU.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as lH}from"zod";var gX1;var Fb$=L(()=>{k0();gX1=c({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:lH.object({name:lH.string().min(1).max(50).describe("Tag name"),color:lH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:lH.object({tag:lH.object({id:lH.string(),organizationId:lH.string(),name:lH.string(),color:lH.string().nullable(),createdAt:lH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as gT0}from"zod";var hX1;var Nb$=L(()=>{k0();hX1=c({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:gT0.object({tagId:gT0.string().describe("Tag ID to delete")}),outputSchema:gT0.object({success:gT0.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as dH}from"zod";var uX1;var Ub$=L(()=>{k0();uX1=c({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:dH.object({memberId:dH.string().describe("Member ID")}),outputSchema:dH.object({tags:dH.array(dH.object({id:dH.string(),organizationId:dH.string(),name:dH.string(),color:dH.string().nullable(),createdAt:dH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as eJ}from"zod";var cX1;var Bb$=L(()=>{k0();cX1=c({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eJ.object({memberId:eJ.string().describe("Member ID"),tagIds:eJ.array(eJ.string()).max(1000).describe("Array of tag IDs to assign")}),outputSchema:eJ.object({success:eJ.boolean(),tags:eJ.array(eJ.object({id:eJ.string(),organizationId:eJ.string(),name:eJ.string(),createdAt:eJ.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let X=a(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var Ob$=L(()=>{Hb$();Fb$();Nb$();Ub$();Bb$()});import{z as Lb$}from"zod";function L06($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).filter(([,Y])=>(M7 in Y)).sort(([,Y],[,G])=>(G[M7]?.createdAt??0)-(Y[M7]?.createdAt??0))[0]?.[0]}var B06,O06,lX1;var Db$=L(()=>{f4();k0();Wv();Ou();A7();DY();B06=Lb$.object({data:Ak$.describe("Data for the new thread (id is auto-generated if not provided)")}),O06=Lb$.object({item:SH.describe("The created thread entity")});lX1=c({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:B06,outputSchema:O06,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??L8("thrd"),K=(await NA0(Z.storage.virtualMcps,Y.virtual_mcp_id,X.id)).metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??L06(K?.sandboxMap,Q)??p30(i30(Z.auth.user));let F=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q,metadata:{runtime:Y.runtime??qP0(K)}});if(F.isNew)h1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:iJ(F)}}})});import{z as dX1}from"zod";var D06,w06,mX1;var wb$=L(()=>{f4();k0();Wv();Ou();D06=dX1.object({id:dX1.string().describe("ID of the thread to update"),data:Tk$.describe("Partial thread data to update")}),w06=dX1.object({item:SH.describe("The updated thread entity")}),mX1=c({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:D06,outputSchema:w06,handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0)await NA0(Z.storage.virtualMcps,G.virtual_mcp_id,X.id);if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0){let H=Sh(G.metadata)??{},F=e_(J.metadata?.runtime),N=e_(H.runtime);if(F&&N&&N!==F)throw Error(`Cannot change a thread's runtime (${F} \u2192 ${N}); it is stamped once at creation. Start a new chat instead.`);let U=J.metadata?.sandboxMap;K.metadata={...H,...F?{runtime:F}:{},...U!==void 0?{sandboxMap:U}:{}}}if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)h1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:iJ(W)}}})});var iX1;var Eb$=L(()=>{kJ();Wv();f4();k0();JU();fT0();iu();iX1=c({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:co,outputSchema:lo(SH),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);if(Q.status==="in_progress"){let G=(K)=>(W)=>console.error("[thread] delete-time run cancel step failed",{threadId:$.id,step:K,err:W});await mu($.id).catch(G("background-jobs")),await au($.id).catch(G("gate-head"));let J=await Z.storage.threads.getRunFence($.id).catch(()=>null);if(J)await vv($.id,J).catch(G("hosted-harness"));vT0($.id)}await Z.storage.threads.delete($.id);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:iJ(Q)}}})});var jb$=L(()=>{Db$();v91();x91();wb$();Eb$();f91()});function j06($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function z06($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:j06(Q.text)}}})}function hT0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return z06(Z)}import{z as e6}from"zod";var pX1;var zb$=L(()=>{f4();k0();UX();pX1=c({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:e6.object({name:e6.string().min(1).max(255),virtual_mcp_id:e6.string(),messages:e6.union([e6.string(),e6.array(e6.looseObject({id:e6.string().optional(),role:e6.enum(["user","assistant","system"]),parts:e6.array(e6.record(e6.string(),e6.unknown())),metadata:e6.unknown().optional()}))]),models:e6.object({tier:GL,modelId:e6.string().optional(),credentialId:e6.string().optional()}).loose().default({tier:"smart"}),tools:e6.array(e6.string()).nullable().optional(),maxAgentSteps:e6.number().int().min(1).max(100).nullable().optional(),temperature:e6.number().default(0.5),active:e6.boolean().default(!0)}),outputSchema:e6.object({id:e6.string(),name:e6.string(),active:e6.boolean(),created_at:e6.string()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("Unable to determine user identity");let Y=hT0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,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 h1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as c6}from"zod";var nX1;var Pb$=L(()=>{k0();nX1=c({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:c6.object({id:c6.string()}),outputSchema:c6.object({automation:c6.object({id:c6.string(),name:c6.string(),active:c6.boolean(),created_by:c6.string(),created_at:c6.string(),updated_at:c6.string(),virtual_mcp_id:c6.string(),messages:c6.unknown(),models:c6.unknown(),tools:c6.array(c6.string()).nullable(),maxAgentSteps:c6.number().nullable(),temperature:c6.number(),triggers:c6.array(c6.object({id:c6.string(),type:c6.enum(["cron","event","webhook"]),cron_expression:c6.string().nullable(),connection_id:c6.string().nullable(),event_type:c6.string().nullable(),params:c6.unknown().nullable(),last_run_at:c6.string().nullable(),api_key_id:c6.string().nullable(),created_at:c6.string()}))}).nullable()}),handler:async($,Z)=>{s(Z);let X=a(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as SG}from"zod";var tX1;var Ab$=L(()=>{k0();tX1=c({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:SG.object({virtual_mcp_id:SG.string().optional().nullable()}),outputSchema:SG.object({automations:SG.array(SG.object({id:SG.string(),name:SG.string(),active:SG.boolean(),created_by:SG.string(),created_at:SG.string(),trigger_count:SG.number(),nearest_next_run_at:SG.string().nullable(),virtual_mcp_id:SG.string()}))}),handler:async($,Z)=>{s(Z);let X=a(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function A06($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function Tb$($){return`${$}:context`}function Rb$($,Z,X,Q,Y){let J=JSON.parse($.messages).map((H,F)=>({...H,id:`${X}:${F}`})),K=Z?{...Y,[bP0]:P06}:Y;return{messages:J,models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:A06($.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:X}}var P06="new_task";var Ib$=L(()=>{Fa()});function SX($,Z,X,Q,Y,G,J,K){return SX.fromTZ(SX.tp($,Z,X,Q,Y,G,J),K)}function oX1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function T06($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?SX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):SX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function R06($){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 $3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new $3($.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 Fs($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function I06($){return Fs($)}function q06($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var rX1=32,Ns,kb$,qb$=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 $3(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,Ns),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}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,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){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,X);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]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,F=parseInt(K,10)+X,N=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(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>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 U=H;U<=F;U+=N)this.setPart(Z,U,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[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=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}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[$]|rX1;else if(Z===Ns)this.dayOfWeek[$]=Ns;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|kb$[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},Mb$,UU,$3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,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,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&Ns&&kb$[J-1]&Y)return!0;if(Y&rX1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)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 X=SX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.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>Mb$[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 X=SX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(SX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=Mb$[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let F=Q.dayOfWeek[(K+(W-Y-1))%7];if(F&&F&Ns)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&&!Q.starDOM?H=H||F:H=H&&F}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,UU[Q][0],Z,UU[Q][2]);if(Y>1){let G=Q+1;for(;G<UU.length;)this[UU[G][0]]=-UU[G][2],G++;if(Y===3)return this[UU[Q][1]]++,this[UU[Q][0]]=-UU[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=UU.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,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)):SX.fromTZ(SX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},Vb$=30000,uT0,cT0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(Fs(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Fs(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=R06(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new qb$("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new $3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new qb$($,this.options.timezone),this.name){if(uT0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");uT0.push(this)}return Y!==void 0&&I06(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 X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==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 $3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new $3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=uT0.indexOf(this);$>=0&&uT0.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(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>Vb$&&(Z=Vb$),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&q06(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new $3(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){Fs(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new $3($,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,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&Fs(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new $3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new $3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new $3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new $3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var aX1=L(()=>{SX.fromTZISO=($,Z,X)=>SX.fromTZ(T06($,Z),X);SX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=oX1($.tz,X),Y=new Date(X.getTime()-Q),G=oX1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=oX1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};SX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};SX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});SX.minitz=SX;Ns=31|rX1,kb$=[1,2,4,8,16],Mb$=[31,28,31,30,31,30,31,31,30,31,30,31],UU=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];uT0=[]});function lT0($,Z){try{return new cT0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var sX1=L(()=>{aX1()});import{DBOS as C7,SchedulerMode as M06}from"@dbos-inc/dbos-sdk";async function QQ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
|
|
2853
2853
|
WHERE q.name LIKE $1
|
|
2854
2854
|
AND NOT EXISTS (
|
|
2855
2855
|
SELECT 1 FROM dbos.workflow_status w
|