decocms 2.179.2 → 2.179.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-QngH9BVd.js → AlertCircle-DcuzO-dN.js} +1 -1
- package/dist/client/assets/{AlignLeft-BUW8XsMa.js → AlignLeft-DH6vJ97u.js} +1 -1
- package/dist/client/assets/{ArrowDown-Ba2t7m6d.js → ArrowDown-DrJY3Wf3.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DX2ldnBo.js → ArrowLeft-B0zQkfl0.js} +1 -1
- package/dist/client/assets/{ArrowUp-Wy3Qa9X3.js → ArrowUp-B4DKDJey.js} +1 -1
- package/dist/client/assets/{Building02-DW6RLSwU.js → Building02-B5vUKe4K.js} +1 -1
- package/dist/client/assets/{Check-CLxUgI8Z.js → Check-5nIJP_0B.js} +1 -1
- package/dist/client/assets/{CheckCircle-DDKCxiAn.js → CheckCircle-CPfAK_ok.js} +1 -1
- package/dist/client/assets/{CheckSquare-IgZnioYh.js → CheckSquare-Bd5OlGNx.js} +1 -1
- package/dist/client/assets/{CheckVerified02-Brnp4Z-Q.js → CheckVerified02-BImD45AM.js} +1 -1
- package/dist/client/assets/{ChevronDown-D0b1rvAp.js → ChevronDown-t60R5l2B.js} +1 -1
- package/dist/client/assets/{ChevronLeft-BOF7bp9d.js → ChevronLeft-lVdUD9SW.js} +1 -1
- package/dist/client/assets/{ChevronRight-BEUO8jhU.js → ChevronRight-3uKoJ2yX.js} +1 -1
- package/dist/client/assets/{ChevronUp-BWhuIqS7.js → ChevronUp-l7iXrppT.js} +1 -1
- package/dist/client/assets/{Clock-Aquumu5W.js → Clock-Cu62NiMl.js} +1 -1
- package/dist/client/assets/{Code01-_in0gxFd.js → Code01-DA4cXrzu.js} +1 -1
- package/dist/client/assets/{Container-b65PFshp.js → Container-Cvd3ILsk.js} +1 -1
- package/dist/client/assets/{Copy01-Ds0OKZs5.js → Copy01-DCmX2pvi.js} +1 -1
- package/dist/client/assets/{Dataflow03-CE4IJeUz.js → Dataflow03-SvWKmU9-.js} +1 -1
- package/dist/client/assets/{DotsHorizontal-EK1-V4Yv.js → DotsHorizontal-DE3Ptwny.js} +1 -1
- package/dist/client/assets/{DotsVertical-Bo0fAyx-.js → DotsVertical-CZep1rYf.js} +1 -1
- package/dist/client/assets/{Download01-CN3AkzFm.js → Download01-DOZIvPhC.js} +1 -1
- package/dist/client/assets/{Edit01-BeW3IgwV.js → Edit01-Bh7u1xp-.js} +1 -1
- package/dist/client/assets/{Edit05-DDQmnS5O.js → Edit05-DwDDlBNQ.js} +1 -1
- package/dist/client/assets/{Eye-Cqad01Et.js → Eye-D3Q7o9JY.js} +1 -1
- package/dist/client/assets/{EyeOff-rTYDCZUH.js → EyeOff--TPuyP7J.js} +1 -1
- package/dist/client/assets/{File02-k_9AZvHT.js → File02-6xeEPCuC.js} +1 -1
- package/dist/client/assets/{File06-BAp2UeVQ.js → File06-BocZAjHf.js} +1 -1
- package/dist/client/assets/{FilterLines-BQVg1PzI.js → FilterLines-CUdG83Ae.js} +1 -1
- package/dist/client/assets/{Globe01-sBw0ReRO.js → Globe01-BTdgnOS2.js} +1 -1
- package/dist/client/assets/{Globe02-DlxZmkSI.js → Globe02-X8fGWI0t.js} +1 -1
- package/dist/client/assets/{Grid01-B9zEjFyx.js → Grid01-NkSMXhQ7.js} +1 -1
- package/dist/client/assets/{Home02-DsMimBHw.js → Home02-BmcJp5G2.js} +1 -1
- package/dist/client/assets/{Image01-zSA25K9S.js → Image01-RwxwuRZg.js} +1 -1
- package/dist/client/assets/{Inbox01-Bcon6dDK.js → Inbox01-B7dU6IpS.js} +1 -1
- package/dist/client/assets/{InfoCircle-CA8mfcG6.js → InfoCircle-BO2XWy7v.js} +1 -1
- package/dist/client/assets/{Key01-V3zgT2bk.js → Key01-CjhxaGrC.js} +1 -1
- package/dist/client/assets/{LayersTwo01-D3otbQFN.js → LayersTwo01-DEwkReGL.js} +1 -1
- package/dist/client/assets/{Link01-VlHez4tu.js → Link01-h9aUM7NA.js} +1 -1
- package/dist/client/assets/{LinkExternal01-vs3DKlfq.js → LinkExternal01-CmkQ0Pr-.js} +1 -1
- package/dist/client/assets/{List-D6xZGoxJ.js → List-BbeB05v1.js} +1 -1
- package/dist/client/assets/{Loading01-DQphO9Su.js → Loading01-D0sCOwf7.js} +1 -1
- package/dist/client/assets/{Lock01-Cbqd9PVH.js → Lock01-DFfVnVtc.js} +1 -1
- package/dist/client/assets/{Play-jCDYHrdu.js → Play-hGa2UcUZ.js} +1 -1
- package/dist/client/assets/{Plus-CURSuoDd.js → Plus-Dcf0Y3wA.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-oV1XFIRn.js → RefreshCcw01-BOXuamrY.js} +1 -1
- package/dist/client/assets/{Save01-CpNh-fPw.js → Save01-CA0I32a6.js} +1 -1
- package/dist/client/assets/{SearchMd-C8ADHGFY.js → SearchMd-BSRGE1t4.js} +1 -1
- package/dist/client/assets/{Settings01-B76KnDHb.js → Settings01-CCUkMwLj.js} +1 -1
- package/dist/client/assets/{Shield01-BodC6YjW.js → Shield01-BYpsgCVA.js} +1 -1
- package/dist/client/assets/{Terminal-BHkLJhoR.js → Terminal-ZymOmGb9.js} +1 -1
- package/dist/client/assets/{Tool01-DlbILfZg.js → Tool01-Doogi-IK.js} +1 -1
- package/dist/client/assets/{Trash01-CYMRq_nY.js → Trash01-Cs72bTP6.js} +1 -1
- package/dist/client/assets/{Upload01-BQ7z5iC5.js → Upload01-ByUvmqDm.js} +1 -1
- package/dist/client/assets/{Users03-DEpvReeu.js → Users03-CGvJARf5.js} +1 -1
- package/dist/client/assets/{X-BT_y3J3a.js → X-CD9ZB6hw.js} +1 -1
- package/dist/client/assets/{XClose-C-H07PEn.js → XClose-BxUlnJUs.js} +1 -1
- package/dist/client/assets/{Zap-BY3Hn1l9.js → Zap-0WHKFRes.js} +1 -1
- package/dist/client/assets/{agent-connections-preview-DbwllQSw.js → agent-connections-preview-BEmLqtx5.js} +1 -1
- package/dist/client/assets/agent-detail-jg81y7ZA.js +2 -0
- package/dist/client/assets/agents-PmHD6Xb_.js +1 -0
- package/dist/client/assets/{ai-providers-logos-DGTpC_MW.js → ai-providers-logos-C_voEDmL.js} +1 -1
- package/dist/client/assets/{alert-dialog-BqCiJDa8.js → alert-dialog-qmvoIx9J.js} +3 -3
- package/dist/client/assets/{auth-catchall-DPwCqyhO.js → auth-catchall-ByYcT8WN.js} +1 -1
- package/dist/client/assets/automation-detail-C1-q2EzY.js +1 -0
- package/dist/client/assets/automations-C9eao1B2.js +1 -0
- package/dist/client/assets/avatar-DeGeJRAR.js +1 -0
- package/dist/client/assets/badge-Cjjl_FHP.js +1 -0
- package/dist/client/assets/{binder-CuBUxi11.js → binder-C1eSZFT4.js} +1 -1
- package/dist/client/assets/{breadcrumb-BWfepeob.js → breadcrumb-C8hDXS86.js} +1 -1
- package/dist/client/assets/{card-gfMzoGpr.js → card-CoyaoT6W.js} +1 -1
- package/dist/client/assets/{checkbox-DygphnIU.js → checkbox-D5DFx9da.js} +1 -1
- package/dist/client/assets/{collapsible-BJo6q_NJ.js → collapsible-DcaWkNTt.js} +1 -1
- package/dist/client/assets/{collection-detail-fTigPh-V.js → collection-detail-Dsgpohom.js} +3 -3
- package/dist/client/assets/{collection-display-button-C42ZnuS7.js → collection-display-button-BcIJp1SX.js} +1 -1
- package/dist/client/assets/{collection-search-Dzoe9W56.js → collection-search-nKZEJ_r3.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Bka5CUqj.js → collection-table-wrapper-Bq15EL3p.js} +1 -1
- package/dist/client/assets/{collection-tabs-D9qLvNTu.js → collection-tabs-qLP6ozkD.js} +1 -1
- package/dist/client/assets/{command-D_HBfmpj.js → command-Bk-fXiVb.js} +1 -1
- package/dist/client/assets/connection-card-BYUbg7iO.js +1 -0
- package/dist/client/assets/connection-detail-Zdtj4TKi.js +1 -0
- package/dist/client/assets/connections-CMaQr-QY.js +1 -0
- package/dist/client/assets/{constants-D5QZg84_.js → constants-DclZTqHf.js} +1 -1
- package/dist/client/assets/{context-CGMT963w.js → context-BFi-zuf6.js} +12 -12
- package/dist/client/assets/{create-organization-dialog-CeMf7qju.js → create-organization-dialog-pXQ89_sr.js} +1 -1
- package/dist/client/assets/{create-project-dialog-Bs_mS8aj.js → create-project-dialog-M-dgrV_c.js} +1 -1
- package/dist/client/assets/{danger-gTdMMqBl.js → danger-DqsrtWLB.js} +1 -1
- package/dist/client/assets/{danger-zone-BE94J4G-.js → danger-zone-BhDM5wIc.js} +1 -1
- package/dist/client/assets/{dependencies-DQ9gMDrw.js → dependencies-CPYZFhhf.js} +1 -1
- package/dist/client/assets/dialog-DzGwvQ_K.js +1 -0
- package/dist/client/assets/drawer-CAX2URBi.js +1 -0
- package/dist/client/assets/{dropdown-menu-DE2pKopg.js → dropdown-menu-BcNYk9_F.js} +1 -1
- package/dist/client/assets/dynamic-plugin-layout-D0dkPO22.js +1 -0
- package/dist/client/assets/editable-task-title-BR-xQ-UT.js +16 -0
- package/dist/client/assets/{empty-state-BjCXvoyS.js → empty-state-BuGXY27l.js} +1 -1
- package/dist/client/assets/{empty-state-Bk9Z7Q-U.js → empty-state-CGSu9IQ9.js} +1 -1
- package/dist/client/assets/{env-vars-editor-BjeFjhEe.js → env-vars-editor-VoVbIy9n.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CZxT3XNH.js → extract-connection-data-DhU56Zd0.js} +1 -1
- package/dist/client/assets/{file-browser-C4MCCicp.js → file-browser-DIaRK0us.js} +2 -2
- package/dist/client/assets/{form-tOTNzCZe.js → form-DBjkdSps.js} +1 -1
- package/dist/client/assets/{general-DOjbT8YE.js → general-DCfBGmuh.js} +1 -1
- package/dist/client/assets/{generate-id-kfQDJb0K.js → generate-id-DRuK_WRM.js} +1 -1
- package/dist/client/assets/{grid-view-CM2kDBxz.js → grid-view-DsY2qZrB.js} +1 -1
- package/dist/client/assets/{home-rO4pkzPH.js → home-C52P_wmy.js} +1 -1
- package/dist/client/assets/{index-BLtI6TU9.js → index-BLNBD7Tl.js} +1 -1
- package/dist/client/assets/index-BObCXgKJ.js +1 -0
- package/dist/client/assets/{index-DyL93sTY.js → index-BzPzEjOV.js} +1 -1
- package/dist/client/assets/index-COFAW4F5.js +1 -0
- package/dist/client/assets/index-CubWD7-P.css +1 -0
- package/dist/client/assets/index-DMmNh7jR.js +218 -0
- package/dist/client/assets/index-DYAF-Vgt.js +1 -0
- package/dist/client/assets/index-DiczHAor.js +1 -0
- package/dist/client/assets/{index-DjVQ8cwy.js → index-Dumm3WtY.js} +2 -2
- package/dist/client/assets/{index-Bwlq4qOs.js → index-PFtbLrE4.js} +1 -1
- package/dist/client/assets/{index-DiHcYCxZ.js → index-bHgla3gL.js} +1 -1
- package/dist/client/assets/index-hmkE8HuP.js +1 -0
- package/dist/client/assets/{infiniteQueryObserver-XS4LWR6q.js → infiniteQueryObserver-CZ8w6Ao-.js} +1 -1
- package/dist/client/assets/input-Bt_nejZh.js +1 -0
- package/dist/client/assets/{integration-icon-C9GR_8Ea.js → integration-icon-Dyr7fOYU.js} +1 -1
- package/dist/client/assets/{label-DJvdRQ2A.js → label-DTNkd20e.js} +1 -1
- package/dist/client/assets/layout-Ck4QNb1R.js +1 -0
- package/dist/client/assets/{layout-10Sxtyop.js → layout-VG2uM_nk.js} +1 -1
- package/dist/client/assets/login-x4JJuKeA.js +1 -0
- package/dist/client/assets/{logo-upload-iqCQyRXD.js → logo-upload-7WcycT9q.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-C3qFwvPf.js → mcp-app-renderer-hLmmzHl_.js} +1 -1
- package/dist/client/assets/{mcp-server-card-DCDS8v4f.js → mcp-server-card-CwYAe4vO.js} +1 -1
- package/dist/client/assets/mcp-server-detail-CjZvaa-f.js +2 -0
- package/dist/client/assets/{members-CykhAYWe.js → members-Sgl6kVS6.js} +1 -1
- package/dist/client/assets/{monaco-editor-DQf5JSy_.js → monaco-editor-BS1-hh4n.js} +4 -4
- package/dist/client/assets/monitoring-DWB-fw7M.js +4 -0
- package/dist/client/assets/monitoring-dashboard-edit-DdNrWKBz.js +1 -0
- package/dist/client/assets/{monitoring-dashboard-view-CXCG5P_H.js → monitoring-dashboard-view-BUxqPLpn.js} +2 -2
- package/dist/client/assets/{monitoring-stats-row-BfoeteQX.js → monitoring-stats-row-CiWvBCYV.js} +2 -2
- package/dist/client/assets/{oauth-callback-CXrwzvh_.js → oauth-callback-7ed5Z9Xs.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-bQZvbhnr.js → oauth-callback-ai-provider-qEm-Q5-E.js} +1 -1
- package/dist/client/assets/{org-ai-providers-4gYTufEL.js → org-ai-providers-CUAlOa9f.js} +1 -1
- package/dist/client/assets/page-BQl7Ie3w.js +1 -0
- package/dist/client/assets/page-DfQnSuW1.js +1 -0
- package/dist/client/assets/{plugin-empty-state-cb7GbeKy.js → plugin-empty-state-DUosCqGd.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-CEvZCNFj.js → plugin-empty-state-qFDP0Nr2.js} +1 -1
- package/dist/client/assets/{plugin-header-C4ZfQdcs.js → plugin-header-BeGFVTX4.js} +1 -1
- package/dist/client/assets/{plugin-header-Do_HgCfI.js → plugin-header-CJlxZY-i.js} +1 -1
- package/dist/client/assets/plugins-CzL725OF.js +1 -0
- package/dist/client/assets/popover-CF2iI6mL.js +1 -0
- package/dist/client/assets/project-app-view-lqZ02NJN.js +1 -0
- package/dist/client/assets/project-layout-CBbKmowd.js +1 -0
- package/dist/client/assets/{project-plugins-C18qk0lc.js → project-plugins-DqmH9sWQ.js} +1 -1
- package/dist/client/assets/{projects-list-CtvT2y9h.js → projects-list-Bz_1RhAg.js} +1 -1
- package/dist/client/assets/{registry-layout-Cvu5zKVR.js → registry-layout-6H7s-msc.js} +2 -2
- package/dist/client/assets/{registry-utils-Bx7--rIH.js → registry-utils-DZHZD5gP.js} +1 -1
- package/dist/client/assets/{reset-password-CSswd9M3.js → reset-password-3HgT81EI.js} +1 -1
- package/dist/client/assets/{resizable-B0HQ1vuq.js → resizable-BwEPpKFX.js} +1 -1
- package/dist/client/assets/{save-actions-BxTuQTa4.js → save-actions-Z-_7bu1u.js} +1 -1
- package/dist/client/assets/scroll-area-CwrVaRUF.js +1 -0
- package/dist/client/assets/select-hHfKwVbN.js +1 -0
- package/dist/client/assets/select-virtual-mcp-DsImheli.js +1 -0
- package/dist/client/assets/shell-layout-Bh0wZbL8.js +3 -0
- package/dist/client/assets/{sidebar-settings-pZmI7pGH.js → sidebar-settings-U5rAu7py.js} +1 -1
- package/dist/client/assets/{skeleton-NLo71_Sb.js → skeleton-BvrwcS3X.js} +1 -1
- package/dist/client/assets/spinner-CSLYV8gq.js +1 -0
- package/dist/client/assets/{store-invite-CP9PWG-2.js → store-invite-z_eVOBRF.js} +1 -1
- package/dist/client/assets/switch-CoYIum7D.js +1 -0
- package/dist/client/assets/{table-BK1bAac3.js → table-BSLV9H8I.js} +1 -1
- package/dist/client/assets/tabs-sTqc1_U2.js +1 -0
- package/dist/client/assets/{task-status-DCsPkppQ.js → task-status-CrO2oj_v.js} +37 -37
- package/dist/client/assets/tasks-CazLoC59.js +1 -0
- package/dist/client/assets/tasks-panel-DBJx0hs6.js +1 -0
- package/dist/client/assets/textarea-CgJ5x-hs.js +1 -0
- package/dist/client/assets/{time-range-picker-CEhZhu7c.js → time-range-picker-BCm8UHQI.js} +1 -1
- package/dist/client/assets/toggle-group-C20N8vss.js +1 -0
- package/dist/client/assets/{tools-list-DGVVcYEB.js → tools-list-JehNbMf9.js} +1 -1
- package/dist/client/assets/tooltip-DHJtaI_Z.js +1 -0
- package/dist/client/assets/{topbar-portal-DLbOrsQP.js → topbar-portal-jewy4fLu.js} +1 -1
- package/dist/client/assets/{types-BOmhR0hZ.js → types-BtTmvTe4.js} +1 -1
- package/dist/client/assets/{use-automations-CPlNdxed.js → use-automations-D-X6Oij9.js} +1 -1
- package/dist/client/assets/{use-collections-Le9CzDbY.js → use-collections-DhavVshD.js} +1 -1
- package/dist/client/assets/{use-connection-CNeKPAtP.js → use-connection-CVlyXslk.js} +1 -1
- package/dist/client/assets/{use-copy-CR_0d0zs.js → use-copy-DkDz3lds.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BOxl7MdZ.js → use-create-virtual-mcp-DZAv89rZ.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CbBHKCjw.js → use-infinite-scroll-j2WybGGN.js} +1 -1
- package/dist/client/assets/{use-install-from-registry-Ckutd61H.js → use-install-from-registry-Ch6GOwHv.js} +1 -1
- package/dist/client/assets/{use-list-state-DrSbpG8C.js → use-list-state-Baq-X1EV.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-D4XXlnov.js → use-mcp-prompts-BDRKUj7D.js} +1 -1
- package/dist/client/assets/{use-mcp-resources-BueR0w1E.js → use-mcp-resources-BxIahbOo.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CFyULGGP.js → use-mcp-tools-kv4r4Zvn.js} +1 -1
- package/dist/client/assets/{use-members-Bgz9FSqE.js → use-members-Coq2XO1k.js} +1 -1
- package/dist/client/assets/{use-project-RpN1fut9.js → use-project-XBmxO4XX.js} +1 -1
- package/dist/client/assets/{use-store-discovery-BS96E_Li.js → use-store-discovery-D-xa6Q86.js} +1 -1
- package/dist/client/assets/use-view-mode-CdGajc1j.js +1 -0
- package/dist/client/assets/{use-virtual-mcp-DGT5zflo.js → use-virtual-mcp-DCxXK_bv.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-H-W7n7En.js +1 -0
- package/dist/client/assets/{useMutation-Betr8yis.js → useMutation-DrLoVqQ7.js} +1 -1
- package/dist/client/assets/useQuery-B-AaJTeZ.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-Czq4y4BP.js +1 -0
- package/dist/client/assets/{user-ChA79mrb.js → user-8V0wpye0.js} +1 -1
- package/dist/client/assets/workflow-Bb3JE-XH.js +1 -0
- package/dist/client/index.html +3 -2
- package/dist/server/cli.js +1 -1
- package/dist/server/node_modules/pg-cloudflare/README.md +112 -0
- package/dist/server/node_modules/pg-cloudflare/dist/empty.d.ts +2 -0
- package/dist/server/node_modules/pg-cloudflare/dist/empty.js +6 -0
- package/dist/server/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
- package/dist/server/node_modules/pg-cloudflare/dist/index.d.ts +31 -0
- package/dist/server/node_modules/pg-cloudflare/dist/index.js +152 -0
- package/dist/server/node_modules/pg-cloudflare/dist/index.js.map +1 -0
- package/dist/server/node_modules/pg-cloudflare/esm/index.mjs +3 -0
- package/dist/server/node_modules/pg-cloudflare/package.json +39 -0
- package/dist/server/node_modules/pg-cloudflare/src/empty.ts +3 -0
- package/dist/server/node_modules/pg-cloudflare/src/index.ts +166 -0
- package/dist/server/node_modules/pg-cloudflare/src/types.d.ts +25 -0
- package/dist/server/node_modules/pg-connection-string/LICENSE +21 -0
- package/dist/server/node_modules/pg-connection-string/README.md +105 -0
- package/dist/server/node_modules/pg-connection-string/esm/index.mjs +8 -0
- package/dist/server/node_modules/pg-connection-string/index.d.ts +36 -0
- package/dist/server/node_modules/pg-connection-string/index.js +231 -0
- package/dist/server/node_modules/pg-connection-string/package.json +52 -0
- package/dist/server/node_modules/pg-pool/LICENSE +21 -0
- package/dist/server/node_modules/pg-pool/README.md +357 -0
- package/dist/server/node_modules/pg-pool/esm/index.mjs +5 -0
- package/dist/server/node_modules/pg-pool/index.js +517 -0
- package/dist/server/node_modules/pg-pool/package.json +51 -0
- package/dist/server/node_modules/pg-protocol/LICENSE +21 -0
- package/dist/server/node_modules/pg-protocol/README.md +3 -0
- package/dist/server/node_modules/pg-protocol/dist/b.d.ts +1 -0
- package/dist/server/node_modules/pg-protocol/dist/b.js +23 -0
- package/dist/server/node_modules/pg-protocol/dist/b.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-reader.d.ts +15 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-writer.d.ts +16 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js +81 -0
- package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.d.ts +1 -0
- package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js +530 -0
- package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/index.d.ts +6 -0
- package/dist/server/node_modules/pg-protocol/dist/index.js +15 -0
- package/dist/server/node_modules/pg-protocol/dist/index.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/messages.d.ts +162 -0
- package/dist/server/node_modules/pg-protocol/dist/messages.js +160 -0
- package/dist/server/node_modules/pg-protocol/dist/messages.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts +1 -0
- package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js +252 -0
- package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/parser.d.ts +24 -0
- package/dist/server/node_modules/pg-protocol/dist/parser.js +324 -0
- package/dist/server/node_modules/pg-protocol/dist/parser.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/dist/serializer.d.ts +42 -0
- package/dist/server/node_modules/pg-protocol/dist/serializer.js +189 -0
- package/dist/server/node_modules/pg-protocol/dist/serializer.js.map +1 -0
- package/dist/server/node_modules/pg-protocol/esm/index.js +11 -0
- package/dist/server/node_modules/pg-protocol/package.json +45 -0
- package/dist/server/node_modules/pg-protocol/src/b.ts +25 -0
- package/dist/server/node_modules/pg-protocol/src/buffer-reader.ts +58 -0
- package/dist/server/node_modules/pg-protocol/src/buffer-writer.ts +85 -0
- package/dist/server/node_modules/pg-protocol/src/inbound-parser.test.ts +575 -0
- package/dist/server/node_modules/pg-protocol/src/index.ts +11 -0
- package/dist/server/node_modules/pg-protocol/src/messages.ts +262 -0
- package/dist/server/node_modules/pg-protocol/src/outbound-serializer.test.ts +276 -0
- package/dist/server/node_modules/pg-protocol/src/parser.ts +413 -0
- package/dist/server/node_modules/pg-protocol/src/serializer.ts +274 -0
- package/dist/server/node_modules/pg-protocol/src/testing/buffer-list.ts +67 -0
- package/dist/server/node_modules/pg-protocol/src/testing/test-buffers.ts +166 -0
- package/dist/server/node_modules/pg-protocol/src/types/chunky.d.ts +1 -0
- package/dist/server/node_modules/pg-types/.travis.yml +7 -0
- package/dist/server/node_modules/pg-types/Makefile +14 -0
- package/dist/server/node_modules/pg-types/README.md +75 -0
- package/dist/server/node_modules/pg-types/index.d.ts +137 -0
- package/dist/server/node_modules/pg-types/index.js +47 -0
- package/dist/server/node_modules/pg-types/index.test-d.ts +21 -0
- package/dist/server/node_modules/pg-types/lib/arrayParser.js +11 -0
- package/dist/server/node_modules/pg-types/lib/binaryParsers.js +257 -0
- package/dist/server/node_modules/pg-types/lib/builtins.js +73 -0
- package/dist/server/node_modules/pg-types/lib/textParsers.js +215 -0
- package/dist/server/node_modules/pg-types/package.json +42 -0
- package/dist/server/node_modules/pg-types/test/index.js +24 -0
- package/dist/server/node_modules/pg-types/test/types.js +597 -0
- package/dist/server/node_modules/pgpass/README.md +74 -0
- package/dist/server/node_modules/pgpass/lib/helper.js +233 -0
- package/dist/server/node_modules/pgpass/lib/index.js +23 -0
- package/dist/server/node_modules/pgpass/package.json +41 -0
- package/dist/server/node_modules/postgres-array/index.d.ts +4 -0
- package/dist/server/node_modules/postgres-array/index.js +97 -0
- package/dist/server/node_modules/postgres-array/license +21 -0
- package/dist/server/node_modules/postgres-array/package.json +35 -0
- package/dist/server/node_modules/postgres-array/readme.md +43 -0
- package/dist/server/node_modules/postgres-date/index.js +116 -0
- package/dist/server/node_modules/postgres-date/license +21 -0
- package/dist/server/node_modules/postgres-date/package.json +33 -0
- package/dist/server/node_modules/postgres-date/readme.md +49 -0
- package/dist/server/node_modules/postgres-interval/index.d.ts +20 -0
- package/dist/server/node_modules/postgres-interval/index.js +125 -0
- package/dist/server/node_modules/postgres-interval/license +21 -0
- package/dist/server/node_modules/postgres-interval/package.json +36 -0
- package/dist/server/node_modules/postgres-interval/readme.md +48 -0
- package/dist/server/node_modules/split2/LICENSE +13 -0
- package/dist/server/node_modules/split2/README.md +85 -0
- package/dist/server/node_modules/split2/bench.js +27 -0
- package/dist/server/node_modules/split2/index.js +141 -0
- package/dist/server/node_modules/split2/package.json +39 -0
- package/dist/server/node_modules/split2/test.js +409 -0
- package/dist/server/node_modules/xtend/.jshintrc +30 -0
- package/dist/server/node_modules/xtend/LICENSE +20 -0
- package/dist/server/node_modules/xtend/README.md +32 -0
- package/dist/server/node_modules/xtend/immutable.js +19 -0
- package/dist/server/node_modules/xtend/mutable.js +17 -0
- package/dist/server/node_modules/xtend/package.json +55 -0
- package/dist/server/node_modules/xtend/test.js +103 -0
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/LayoutLeft-CbUmiI7I.js +0 -1
- package/dist/client/assets/agent-detail-DqMa-yjy.js +0 -2
- package/dist/client/assets/agents-DXD0J3OW.js +0 -1
- package/dist/client/assets/automation-detail-bmoX3GK-.js +0 -1
- package/dist/client/assets/automations-Dp1WjxxK.js +0 -1
- package/dist/client/assets/avatar-BoRF-Me1.js +0 -1
- package/dist/client/assets/badge-DIWKuwVU.js +0 -1
- package/dist/client/assets/connection-card-DuHVLZ35.js +0 -1
- package/dist/client/assets/connection-detail-vcbLbssZ.js +0 -1
- package/dist/client/assets/connections-14pDMsUe.js +0 -1
- package/dist/client/assets/dialog-B8WS5FOh.js +0 -1
- package/dist/client/assets/dynamic-plugin-layout-yMvA298P.js +0 -1
- package/dist/client/assets/editable-task-title-oggBOZ_d.js +0 -16
- package/dist/client/assets/index-B09Yemt1.js +0 -1
- package/dist/client/assets/index-CAsAeYNN.css +0 -1
- package/dist/client/assets/index-CMImT9Gt.js +0 -1
- package/dist/client/assets/index-D-6rbOIG.js +0 -1
- package/dist/client/assets/index-DnJ6a24w.js +0 -218
- package/dist/client/assets/index-hCeFdkUk.js +0 -1
- package/dist/client/assets/index-qrpgIqks.js +0 -1
- package/dist/client/assets/input-BBKBJVKe.js +0 -1
- package/dist/client/assets/layout-BjyFY_1R.js +0 -1
- package/dist/client/assets/login-ClPbfjlJ.js +0 -1
- package/dist/client/assets/mcp-server-detail-lOR_wUNJ.js +0 -2
- package/dist/client/assets/monitoring-BPuhRE0m.js +0 -4
- package/dist/client/assets/monitoring-dashboard-edit-BVtLOBNe.js +0 -1
- package/dist/client/assets/page-CCXJyUyN.js +0 -1
- package/dist/client/assets/page-DB3QLlpA.js +0 -1
- package/dist/client/assets/plugins-pEgOY1Nz.js +0 -1
- package/dist/client/assets/popover-vDURg2rv.js +0 -1
- package/dist/client/assets/project-app-view-DfCIvrF7.js +0 -1
- package/dist/client/assets/project-layout-CkMdq05b.js +0 -1
- package/dist/client/assets/scroll-area-dsTSFUPi.js +0 -1
- package/dist/client/assets/select-Bbaj2HCW.js +0 -1
- package/dist/client/assets/select-virtual-mcp-CZJoA7HG.js +0 -1
- package/dist/client/assets/sheet-B_-2ygzJ.js +0 -1
- package/dist/client/assets/shell-layout-Ca5Bbhzi.js +0 -3
- package/dist/client/assets/spinner-EdHFCjIL.js +0 -1
- package/dist/client/assets/switch-bfk4EFAk.js +0 -1
- package/dist/client/assets/tabs-aIY_aIUV.js +0 -1
- package/dist/client/assets/tasks-Dw1i-69W.js +0 -1
- package/dist/client/assets/tasks-panel-CEAgXi7r.js +0 -1
- package/dist/client/assets/textarea-lF0m7xkk.js +0 -1
- package/dist/client/assets/toggle-group-Dak-s1p3.js +0 -1
- package/dist/client/assets/tooltip-Csc3oeTz.js +0 -1
- package/dist/client/assets/use-mobile-Y3tADOOl.js +0 -1
- package/dist/client/assets/use-view-mode-BeRbE5Df.js +0 -1
- package/dist/client/assets/useInfiniteQuery-ChOuKh6v.js +0 -1
- package/dist/client/assets/useQuery-mzOsnjYJ.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DFs2FFlW.js +0 -1
- package/dist/client/assets/workflow-CBDfcQFP.js +0 -1
- package/dist/server/node_modules/pg/README.md +0 -95
- package/dist/server/node_modules/pg/esm/index.mjs +0 -20
- package/dist/server/node_modules/pg/lib/client.js +0 -743
- package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
- package/dist/server/node_modules/pg/lib/connection.js +0 -221
- package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
- package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
- package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
- package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
- package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
- package/dist/server/node_modules/pg/lib/defaults.js +0 -91
- package/dist/server/node_modules/pg/lib/index.js +0 -73
- package/dist/server/node_modules/pg/lib/native/client.js +0 -323
- package/dist/server/node_modules/pg/lib/native/index.js +0 -2
- package/dist/server/node_modules/pg/lib/native/query.js +0 -165
- package/dist/server/node_modules/pg/lib/query.js +0 -252
- package/dist/server/node_modules/pg/lib/result.js +0 -109
- package/dist/server/node_modules/pg/lib/stream.js +0 -83
- package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
- package/dist/server/node_modules/pg/lib/utils.js +0 -217
- package/dist/server/node_modules/pg/package.json +0 -76
- /package/dist/server/node_modules/{pg → pg-cloudflare}/LICENSE +0 -0
package/dist/server/server.js
CHANGED
|
@@ -2553,7 +2553,7 @@ Good examples:
|
|
|
2553
2553
|
|
|
2554
2554
|
Bad (too vague): {"title": "Help with task"}
|
|
2555
2555
|
Bad (too long): {"title": "Investigate and fix the issue where the login button does not respond on mobile devices"}
|
|
2556
|
-
Bad (wrong case): {"title": "Fix Login Button On Mobile"}`;function wJ1(Y){return typeof Y==="string"?Y:Y.toISOString()}class rd{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class od{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??c8("thrd"),G=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=DJ1;let J={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:G,updated_at:G,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let G=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return G?this.threadFromDbRow(G):null}async update(Y,X,G){let W={updated_at:new Date().toISOString()};if(G.title!==void 0)W.title=G.title;if(G.description!==void 0)W.description=G.description;if(G.updated_by!==void 0)W.updated_by=G.updated_by;if(G.hidden!==void 0)W.hidden=G.hidden;if(G.status!==void 0)W.status=G.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let G=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:G}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,G){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)J=J.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(G?.limit)J=J.limit(G.limit);if(G?.offset)J=J.offset(G.offset);let[K,Z]=await Promise.all([J.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,G){if(X.length===0)return{threads:[],total:0};let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(G?.limit)J=J.limit(G.limit);if(G?.offset)J=J.offset(G.offset);let[K,Z]=await Promise.all([J.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let G=new Date().toISOString(),J=Y[0]?.thread_id;if(!J)throw Error("thread_id is required when creating multiple messages");if(!await this.get(J,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==J);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${J}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:J,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??G,updated_at:G}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((U)=>({metadata:U.ref("excluded.metadata"),parts:U.ref("excluded.parts"),role:U.ref("excluded.role"),updated_at:U.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:G}).where("id","=",J).where("organization_id","=",X).execute()})}async listMessages(Y,X,G){if(!await this.get(Y,X))return{messages:[],total:0};let W=G?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(G?.limit)K=K.limit(G.limit);if(G?.offset)K=K.offset(G.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:wJ1(Y.created_at),updated_at:wJ1(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,G;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),X=void 0}try{G=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),G=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:G,role:Y.role,created_at:wJ1(Y.created_at),updated_at:wJ1(Y.updated_at)}}}W51();OW();import{createHash as yU8}from"crypto";function _q6(Y){return yU8("sha256").update(Y).digest("hex")}class Gg1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=c8("aik"),G=await this.vault.encrypt(Y.apiKey),J=_q6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:J,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=c8("aik"),G=await this.vault.encrypt(Y.apiKey),J=_q6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:J,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((J)=>this.rowToKeyInfo(J))}async resolve(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),J=await this.vault.decrypt(G.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(G),apiKey:J}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!G)throw Error("Provider key not found");return this.rowToKeyInfo(G)}}class Jg1{db;constructor(Y){this.db=Y}async create(Y,X,G){let J=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:J,organization_id:X,user_id:G,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),J}async consume(Y,X,G){let J=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",G).returningAll().executeTakeFirst();if(!J)throw Error("Invalid or expired OAuth state token");if((J.expires_at instanceof Date?J.expires_at:new Date(J.expires_at))<new Date)throw Error("OAuth state token has expired");return J.code_verifier}}sN();var kq6="_global";function hU8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function bU8(Y){let X=Y.supported_parameters.includes("tools"),G=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:hU8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...G?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Y.pricing.prompt,output:Y.pricing.completion}}}function vq6(Y){let X=new Map;for(let G of Y){let J={description:G.description,capabilities:G.capabilities,limits:G.limits,costs:G.costs};X.set(G.modelId,J);let W=G.modelId.replace(/\./g,"-");if(W!==G.modelId)X.set(W,J)}return X}async function xU8(Y){if(Y){let X=await Y.get(kq6,"openrouter");if(X)return vq6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:G}=await X.json(),J=G.map(bU8);if(Y)await Y.set(kq6,"openrouter",J);return vq6(J)}catch{return new Map}}function gU8(Y){let X=Y.replace(/\./g,"-"),G=Y.replace(/-\d{8}$/,""),J=G.replace(/\./g,"-");return[...new Set([Y,X,G,J])]}function uU8(Y,X){return Y.map((G)=>{let W=gU8(G.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return G;return{...G,description:G.description??W.description??null,capabilities:G.capabilities.length?G.capabilities:W.capabilities??[],limits:G.limits??W.limits??null,costs:G.costs??W.costs??null}})}class Wg1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:G,apiKey:J}=await this.storage.resolve(Y,X),W=IW[G.providerId];if(!W)throw Error(`Unknown provider: ${G.providerId}`);return W.create(J)}async listModels(Y,X){let{keyInfo:G,apiKey:J}=await this.storage.resolve(Y,X),W=G.providerId;if(this.cache){let U=await this.cache.get(X,W);if(U)return U}let K=IW[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(J).listModels(),H=new Set,$=Q.filter((U)=>{if(H.has(U.modelId))return!1;return H.add(U.modelId),!0});if(W!=="openrouter"){let U=await xU8(this.cache);$=uU8($,U)}let V=$.map((U)=>({...U,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}function mU8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let G={};for(let[J,W]of Object.entries(X))if(typeof W==="string")G[J]=W;return Object.keys(G).length>0?G:void 0}catch{return}}function lU8(Y,X){for(let[G,J]of Object.entries(X)){let W=Y[G];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of J)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of J)if(!W.includes(K))return!1}return!0}function Zg1(Y){let{auth:X,headers:G,role:J,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(J&&ch1.includes(J))return!0;if(W)return lU8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:G,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let U of Object.keys(Q))$[U]=["*"];return(await Z({headers:G,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:G,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:G,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:G,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:G,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:G,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:G,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:G,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:G,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:G,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:G})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:G,body:{keyId:Q}})}}}}async function dU8(Y,X,G){if(ch1.includes(G))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",G).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${G}`);return}}async function cU8(Y,X,G,J=yq6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await J.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await J.measure("auth_query_membership",()=>G.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,U;if(H&&$)U=await J.measure("auth_fetch_role_permissions",()=>dU8(G,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:U,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await J.measure("auth_verify_mesh_jwt",()=>E56(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await J.measure("auth_query_membership",()=>G.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let U=Z.metadata?.organizationName,z=Z.metadata?.organizationSlug;if(U||z)$={id:V,name:U,slug:z};else{let q=await J.measure("auth_query_org_for_mesh_jwt",()=>G.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await J.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await J.measure("auth_query_membership",()=>G.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await J.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await J.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((U)=>U.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}var fq6,SV={set:(Y)=>{fq6=Y},create:async(Y,X)=>{return await fq6(Y,X)}},yq6={measure:async(Y,X)=>{return await X()}},pU8=["x-hub-signature-256"];async function hq6(Y){let X=new yM(Y.encryption.key),G=!!V6.CLICKHOUSE_URL,J=G?"clickhouse":"duckdb",W,K;if(G)W=new nd(V6.CLICKHOUSE_URL),K=new nd(V6.CLICKHOUSE_URL);else{let{engine:q}=await px1({basePath:nV}),{engine:O}=await px1({basePath:gD});W=q,K=O}let{resolve:Z}=await import("path"),Q=Z(nV),H=Z(gD),$=G?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=G?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,U=new od(Y.db),z={connections:new cx(Y.db,X),organizationSettings:new ix1(Y.db),monitoring:new Fb1(W,$,K,V,J),monitoringDashboards:new nx1(Y.db),virtualMcps:new Zb1(Y.db),users:new sx1(Y.db),tags:new ox1(Y.db),projects:new px(Y.db),projectConnections:new ax1(Y.db),projectPluginConfigs:new rx1(Y.db),aiProviderKeys:new Gg1(Y.db,X),oauthPkceStates:new Jg1(Y.db),automations:zJ1(Y.db)};return async(q,O)=>{let L=O?.timings??yq6,M=Kj(),E=q?.headers.get("x-caller-id")??void 0,R=q?await cU8(q,Y.auth,Y.db,L):{user:void 0},C=Zg1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let P=R.organization,j=q?V6.BASE_URL??`${new URL(q.url).origin}`:OQ(),v=new n3(Y.auth,T.user?.id,void 0,C,R.role,"self"),k={...z,threads:new rd(U,P?.id)},g=new Wg1(k.aiProviderKeys,Y.modelListCache),f={timings:L,auth:T,connectionId:E,organization:P,storage:k,vault:X,authInstance:Y.auth,boundAuth:C,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(pU8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:mU8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await Mq6(y,f)},getOrCreateClient:M};return f}}Hj();MC();class bq6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let G=await X.executeTakeFirst();if(G)return this.mapRowToSubscription(G);let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:J,updatedAt:J}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let G=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)G=G.where("connection_id","=",X);return(await G.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let G=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!G)return null;return this.mapRowToSubscription(G)}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((G)=>G.or([G("publisher","is",null),G("publisher","=",Y.source)])).execute()).map((G)=>this.mapRowToSubscription(G))}async createDeliveries(Y,X,G){if(X.length===0)return;let J=new Date().toISOString(),W=G??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),J=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(J.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",J).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,G=20,J=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=G)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let G=X.every((K)=>K.status==="delivered"),J=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(G)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!W)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let G=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async findActiveCronEvent(Y,X,G,J){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",G).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}))}async cancelEvent(Y,X,G){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",G).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let G=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:G}).where("id","in",Y).execute()}async ackDelivery(Y,X,G){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",G).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:G,subscriptions:J}=Y,W=(E,R)=>{return`${E}::${R??""}`},K=await this.listSubscriptions(X,G),Z=new Map;for(let E of K)Z.set(W(E.eventType,E.publisher),E);let Q=new Map;for(let E of J)Q.set(W(E.eventType,E.publisher),E);let H=new Date().toISOString(),$=[],V=[],U=[],z=0;for(let[E,R]of Q){let C=Z.get(E);if(!C)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:G,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=C.filter??null,P=R.filter??null;if(T!==P)V.push({id:C.id,filter:P});else z++}}for(let[E,R]of Z)if(!Q.has(E))U.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((E)=>this.db.updateTable("event_subscriptions").set({filter:E.filter,updated_at:H}).where("id","=",E.id).execute()));if(U.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",U).execute();let q=$.length,O=V.length,L=U.length,M=await this.listSubscriptions(X,G);return{created:q,updated:O,deleted:L,unchanged:z,subscriptions:M}}}function xq6(Y){return new bq6(Y)}mm();class gq6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,G)=>this.localEmit(X,G)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let G=this.listeners.get(Y);if(!G)return;if(G.delete(X)){if(this.totalCount--,G.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let G=this.listeners.get(Y);if(!G||G.size===0)return;for(let J of G.values()){if(J.typePatterns&&!nU8(X.type,J.typePatterns))continue;try{J.push(X)}catch{this.remove(Y,J.id)}}}}function nU8(Y,X){for(let G of X){if(G===Y)return!0;if(G.endsWith(".*")){let J=G.slice(0,-1);if(Y.startsWith(J))return!0}}return!1}var $$=new gq6;function uq6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?iU8(Y.data):void 0,time:Y.time}}function iU8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}mm();var aU8=new Set([401]),rU8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];function mq6(Y){if(typeof Y==="object"&&Y!==null){let J=Y,W=J.status??J.code;if(typeof W==="number"&&aU8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let G=X.toLowerCase();if(/\b401\b/.test(G))return!0;return rU8.some((J)=>G.includes(J))}class sd extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}var MJ1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};oY1();W51();Xu();function oU8(Y){return Y.endsWith("_self")}function sU8(Y){return Y.slice(0,-5)}function lq6(){return async(Y,X)=>{try{if(oU8(Y)&&h_1()){let Z=sU8(Y),Q=await SV.create();if(await rY6(X,{organizationId:Z,connectionId:Y,publish:async(V,U,z,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:U,data:z,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let U={...Q,getOrCreateClient:Kj()},z=await Xg1(V,U);return{callTool:async(q,O,L)=>{let M=await z.callTool(q,O,L);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>z.close()}}}))return{success:!0}}let G=await SV.create(),J=await Xg1(Y,G),K=await DI1.forClient(ad(J)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(G){let J=G instanceof Error?G.message:String(G);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,J),mq6(G))throw new sd(J);return{success:!1,error:J}}}}function dq6(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function tU8(Y){let X=new Map;for(let J of Y){let W=J.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(dq6(J.event))}else X.set(W,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[dq6(J.event)],seenEventIds:new Set([J.event.id])})}let G=new Map;for(let[J,W]of X)G.set(J,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return G}class Qg1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,G){this.storage=Y;this.notifySubscriber=G??lq6(),this.config={...MJ1,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);let X=await this.storage.findOrphanedCronEvents();for(let G of X)await this.scheduleNextCronDelivery(G),console.log(`[EventBus] Recovered orphaned cron event ${G.id} (${G.type}, cron: ${G.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=tU8(Y),G=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof sd){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),J=new Set,W=new Set;for(let K of G)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)J.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of J)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let G=[],J=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)G.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=J.get(H.retryAfter)||[];$.push(Q),J.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)G.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=J.get(X.retryAfter)||[];$.push(Q),J.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(G.length>0)await this.storage.markDeliveriesDelivered(G);for(let[Z,Q]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let G=new mN(Y.cron,{timezone:"UTC"}).nextRun();if(!G){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=G.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}class Kg1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Qg1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,G){if(G.deliverAt&&G.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(G.cron){try{let V=new mN(G.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");J=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,G.type,X,G.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:G.type,source:X,subject:G.subject,time:K,data:G.data,cron:G.cron});$$.emit(Y,uq6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=G.deliverAt??J;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,G){return this.storage.cancelEvent(X,Y,G)}async ackEvent(Y,X,G){return this.storage.ackDelivery(X,Y,G)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}}isRunning(){return this.running}}class Hg1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class $g1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let G of this.sub)try{let J=JSON.parse(X.decode(G.data));if(typeof J?.originId!=="string"||typeof J?.organizationId!=="string"||typeof J?.event?.id!=="string"||typeof J?.event?.type!=="string")continue;if(J.originId===this.originId)continue;this.localEmit?.(J.organizationId,J.event)}catch{}})().catch((G)=>{console.error("[NatsSSEBroadcast] Subscription error:",G)})}broadcast(Y,X){this.localEmit?.(Y,X);let G={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(G)))}catch(J){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",J)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function cq6(...Y){return{async start(X){await Promise.all(Y.map((G)=>G.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((G)=>{console.error("[NotifyStrategy] Error stopping strategy:",G)})))},async notify(X){await Promise.all(Y.map((G)=>G.notify(X).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class Fg1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}function pq6(Y,X,G){let J=xq6(Y.db),W=G?.pollIntervalMs??MJ1.pollIntervalMs,K=cq6(new Fg1(W),new Hg1({getConnection:()=>X.getConnection()})),Z=new $g1({getConnection:()=>X.getConnection()});return $$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new Kg1({storage:J,config:G,notifyStrategy:K})}hq();iW();mO();var eU8={br:".br",zstd:".zst",gzip:".gz"},exY=Object.keys(eU8);lO();$B1();var Vg1="x-hono-disable-ssg",BgY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Vg1]:"true"}})}catch{return null}})();Ae();var{write:egY}=Bun;var Gz8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}};var nq6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[G,J]=X;return async function(K,Z){let Q=await G(K),H=await Y(K,Q,J);if(H)return H;await Z()}}else{let[G,J,W]=X;return(async()=>{let K=await Y(G,J,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var td=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var Jz8=nq6((Y,X)=>{let G=td(Y);if(!G)throw TypeError("env has to include the 2nd argument of fetch.");if(G.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return});var Ug1=(Y)=>{let X=td(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let G=X.requestIP(Y.req.raw);if(!G)return{remote:{}};return{remote:{address:G.address,addressType:G.family==="IPv6"||G.family==="IPv4"?G.family:void 0,port:G.port}}};p5();vA();var iq6={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};iS();var qg1=new xY;qg1.get("/config",async(Y)=>{try{let X=Object.keys($8.socialProviders??{}),G=X.length>0,J=X.map((Z)=>({name:Z,icon:iq6[Z].icon})),W=V6.NODE_ENV!=="production"||V6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:$8.emailAndPassword?.enabled??!1},magicLink:{enabled:$8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:$8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:zG1},socialProviders:{enabled:G,providers:J},sso:$8.ssoConfig?{enabled:!0,providerId:$8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:vP()};return Y.json({success:!0,config:K})}catch(X){let G=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:G},500)}});qg1.post("/local-session",async(Y)=>{if(!vP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=Ug1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:J}=await Promise.resolve().then(() => (iS(),EJ1));await J();let{auth:W}=await Promise.resolve().then(() => (vA(),k$6)),K=await zg1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await PJ1();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(J){return console.error("Failed to create local session:",J),Y.json({success:!1,error:J instanceof Error?J.message:"Failed to create local session"},500)}});var oq6=qg1;B7();iW();h2();B7();function sq6(Y){let X=Y.filter((J)=>J.role==="system"),G=Y.find((J)=>J.role!=="system");return{systemMessages:X,requestMessage:G}}function Lz8(Y){let X=!1,G=Y.map((J)=>{if(J.role!=="assistant")return J;if(!J.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return J;return X=!0,{...J,parts:J.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?G:Y}function Nz8(Y){let[X,G]=Y.reduce((J,W)=>{if(W.role==="system")J[0].push(W);else J[1].push(W);return J},[[],[]]);return{systemMessages:X,messages:G}}async function Bz8(Y,X){return await Y.loadHistory(X)}function Dz8(Y,X){let G=Y.filter((K)=>K.parts&&K.parts.length>0),J=G.findIndex((K)=>K.id===X.id);return J>=0?[...G.slice(0,J),X]:[...G,X]}async function tq6(Y,X,G,J){let W=await Bz8(Y,J),K=Dz8(W,X);return[...G,...K]}async function eq6(Y,X){let G=await Z06({messages:Y}),J=Lz8(G),W=await W06(J,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=Nz8(W),Q=K06({messages:Z,reasoning:"none",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:Q,originalMessages:G}}RX();B7();h2();B7();a1();function YO6(Y){let{toolOutputMap:X}=Y;return $5({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:N0(F.object({tool_call_id:F.string(),pattern:F.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:J})=>{if(!X.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...X.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let W=X.get(G),K;try{K=new RegExp(J)}catch{return{result:`Invalid regex pattern: ${J}`,matchCount:0,totalLines:0}}let Z=W.split(`
|
|
2556
|
+
Bad (wrong case): {"title": "Fix Login Button On Mobile"}`;function wJ1(Y){return typeof Y==="string"?Y:Y.toISOString()}class rd{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class od{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??c8("thrd"),G=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=DJ1;let J={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:G,updated_at:G,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let G=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return G?this.threadFromDbRow(G):null}async update(Y,X,G){let W={updated_at:new Date().toISOString()};if(G.title!==void 0)W.title=G.title;if(G.description!==void 0)W.description=G.description;if(G.updated_by!==void 0)W.updated_by=G.updated_by;if(G.hidden!==void 0)W.hidden=G.hidden;if(G.status!==void 0)W.status=G.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let G=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:G}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,G){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)J=J.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(G?.limit)J=J.limit(G.limit);if(G?.offset)J=J.offset(G.offset);let[K,Z]=await Promise.all([J.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,G){if(X.length===0)return{threads:[],total:0};let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(G?.limit)J=J.limit(G.limit);if(G?.offset)J=J.offset(G.offset);let[K,Z]=await Promise.all([J.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let G=new Date().toISOString(),J=Y[0]?.thread_id;if(!J)throw Error("thread_id is required when creating multiple messages");if(!await this.get(J,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==J);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${J}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:J,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??G,updated_at:G}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((U)=>({metadata:U.ref("excluded.metadata"),parts:U.ref("excluded.parts"),role:U.ref("excluded.role"),updated_at:U.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:G}).where("id","=",J).where("organization_id","=",X).execute()})}async listMessages(Y,X,G){if(!await this.get(Y,X))return{messages:[],total:0};let W=G?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(G?.limit)K=K.limit(G.limit);if(G?.offset)K=K.offset(G.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:wJ1(Y.created_at),updated_at:wJ1(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,G;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),X=void 0}try{G=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),G=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:G,role:Y.role,created_at:wJ1(Y.created_at),updated_at:wJ1(Y.updated_at)}}}W51();OW();import{createHash as yU8}from"crypto";function _q6(Y){return yU8("sha256").update(Y).digest("hex")}class Gg1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=c8("aik"),G=await this.vault.encrypt(Y.apiKey),J=_q6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:J,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=c8("aik"),G=await this.vault.encrypt(Y.apiKey),J=_q6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:J,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((J)=>this.rowToKeyInfo(J))}async resolve(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),J=await this.vault.decrypt(G.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(G),apiKey:J}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!G)throw Error("Provider key not found");return this.rowToKeyInfo(G)}}class Jg1{db;constructor(Y){this.db=Y}async create(Y,X,G){let J=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:J,organization_id:X,user_id:G,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),J}async consume(Y,X,G){let J=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",G).returningAll().executeTakeFirst();if(!J)throw Error("Invalid or expired OAuth state token");if((J.expires_at instanceof Date?J.expires_at:new Date(J.expires_at))<new Date)throw Error("OAuth state token has expired");return J.code_verifier}}sN();var kq6="_global";function hU8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function bU8(Y){let X=Y.supported_parameters.includes("tools"),G=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:hU8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...G?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Y.pricing.prompt,output:Y.pricing.completion}}}function vq6(Y){let X=new Map;for(let G of Y){let J={description:G.description,capabilities:G.capabilities,limits:G.limits,costs:G.costs};X.set(G.modelId,J);let W=G.modelId.replace(/\./g,"-");if(W!==G.modelId)X.set(W,J)}return X}async function xU8(Y){if(Y){let X=await Y.get(kq6,"openrouter");if(X)return vq6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:G}=await X.json(),J=G.map(bU8);if(Y)await Y.set(kq6,"openrouter",J);return vq6(J)}catch{return new Map}}function gU8(Y){let X=Y.replace(/\./g,"-"),G=Y.replace(/-\d{8}$/,""),J=G.replace(/\./g,"-");return[...new Set([Y,X,G,J])]}function uU8(Y,X){return Y.map((G)=>{let W=gU8(G.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return G;return{...G,description:G.description??W.description??null,capabilities:G.capabilities.length?G.capabilities:W.capabilities??[],limits:G.limits??W.limits??null,costs:G.costs??W.costs??null}})}class Wg1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:G,apiKey:J}=await this.storage.resolve(Y,X),W=IW[G.providerId];if(!W)throw Error(`Unknown provider: ${G.providerId}`);return W.create(J)}async listModels(Y,X){let{keyInfo:G,apiKey:J}=await this.storage.resolve(Y,X),W=G.providerId;if(this.cache){let U=await this.cache.get(X,W);if(U)return U}let K=IW[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(J).listModels(),H=new Set,$=Q.filter((U)=>{if(H.has(U.modelId))return!1;return H.add(U.modelId),!0});if(W!=="openrouter"){let U=await xU8(this.cache);$=uU8($,U)}let V=$.map((U)=>({...U,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}function mU8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let G={};for(let[J,W]of Object.entries(X))if(typeof W==="string")G[J]=W;return Object.keys(G).length>0?G:void 0}catch{return}}function lU8(Y,X){for(let[G,J]of Object.entries(X)){let W=Y[G];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of J)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of J)if(!W.includes(K))return!1}return!0}function Zg1(Y){let{auth:X,headers:G,role:J,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(J&&ch1.includes(J))return!0;if(W)return lU8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:G,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let U of Object.keys(Q))$[U]=["*"];return(await Z({headers:G,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:G,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:G,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:G,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:G,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:G,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:G,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:G,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:G,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:G,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:G})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:G,body:{keyId:Q}})}}}}async function dU8(Y,X,G){if(ch1.includes(G))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",G).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${G}`);return}}async function cU8(Y,X,G,J=yq6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await J.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await J.measure("auth_query_membership",()=>G.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,U;if(H&&$)U=await J.measure("auth_fetch_role_permissions",()=>dU8(G,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:U,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await J.measure("auth_verify_mesh_jwt",()=>E56(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await J.measure("auth_query_membership",()=>G.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let U=Z.metadata?.organizationName,z=Z.metadata?.organizationSlug;if(U||z)$={id:V,name:U,slug:z};else{let q=await J.measure("auth_query_org_for_mesh_jwt",()=>G.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await J.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await J.measure("auth_query_membership",()=>G.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await J.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await J.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((U)=>U.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}var fq6,SV={set:(Y)=>{fq6=Y},create:async(Y,X)=>{return await fq6(Y,X)}},yq6={measure:async(Y,X)=>{return await X()}},pU8=["x-hub-signature-256"];async function hq6(Y){let X=new yM(Y.encryption.key),G=!!V6.CLICKHOUSE_URL,J=G?"clickhouse":"duckdb",W,K;if(G)W=new nd(V6.CLICKHOUSE_URL),K=new nd(V6.CLICKHOUSE_URL);else{let{engine:q}=await px1({basePath:nV}),{engine:O}=await px1({basePath:gD});W=q,K=O}let{resolve:Z}=await import("path"),Q=Z(nV),H=Z(gD),$=G?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=G?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,U=new od(Y.db),z={connections:new cx(Y.db,X),organizationSettings:new ix1(Y.db),monitoring:new Fb1(W,$,K,V,J),monitoringDashboards:new nx1(Y.db),virtualMcps:new Zb1(Y.db),users:new sx1(Y.db),tags:new ox1(Y.db),projects:new px(Y.db),projectConnections:new ax1(Y.db),projectPluginConfigs:new rx1(Y.db),aiProviderKeys:new Gg1(Y.db,X),oauthPkceStates:new Jg1(Y.db),automations:zJ1(Y.db)};return async(q,O)=>{let L=O?.timings??yq6,M=Kj(),E=q?.headers.get("x-caller-id")??void 0,R=q?await cU8(q,Y.auth,Y.db,L):{user:void 0},C=Zg1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let P=R.organization,j=q?V6.BASE_URL??`${new URL(q.url).origin}`:OQ(),v=new n3(Y.auth,T.user?.id,void 0,C,R.role,"self"),k={...z,threads:new rd(U,P?.id)},g=new Wg1(k.aiProviderKeys,Y.modelListCache),f={timings:L,auth:T,connectionId:E,organization:P,storage:k,vault:X,authInstance:Y.auth,boundAuth:C,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(pU8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:mU8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await Mq6(y,f)},getOrCreateClient:M};return f}}Hj();MC();class bq6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let G=await X.executeTakeFirst();if(G)return this.mapRowToSubscription(G);let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:J,updatedAt:J}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let G=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)G=G.where("connection_id","=",X);return(await G.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let G=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!G)return null;return this.mapRowToSubscription(G)}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((G)=>G.or([G("publisher","is",null),G("publisher","=",Y.source)])).execute()).map((G)=>this.mapRowToSubscription(G))}async createDeliveries(Y,X,G){if(X.length===0)return;let J=new Date().toISOString(),W=G??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),J=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(J.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",J).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,G=20,J=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=G)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let G=X.every((K)=>K.status==="delivered"),J=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(G)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!W)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let G=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async findActiveCronEvent(Y,X,G,J){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",G).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}))}async cancelEvent(Y,X,G){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",G).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let G=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:G}).where("id","in",Y).execute()}async ackDelivery(Y,X,G){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",G).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:G,subscriptions:J}=Y,W=(E,R)=>{return`${E}::${R??""}`},K=await this.listSubscriptions(X,G),Z=new Map;for(let E of K)Z.set(W(E.eventType,E.publisher),E);let Q=new Map;for(let E of J)Q.set(W(E.eventType,E.publisher),E);let H=new Date().toISOString(),$=[],V=[],U=[],z=0;for(let[E,R]of Q){let C=Z.get(E);if(!C)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:G,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=C.filter??null,P=R.filter??null;if(T!==P)V.push({id:C.id,filter:P});else z++}}for(let[E,R]of Z)if(!Q.has(E))U.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((E)=>this.db.updateTable("event_subscriptions").set({filter:E.filter,updated_at:H}).where("id","=",E.id).execute()));if(U.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",U).execute();let q=$.length,O=V.length,L=U.length,M=await this.listSubscriptions(X,G);return{created:q,updated:O,deleted:L,unchanged:z,subscriptions:M}}}function xq6(Y){return new bq6(Y)}mm();class gq6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,G)=>this.localEmit(X,G)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let G=this.listeners.get(Y);if(!G)return;if(G.delete(X)){if(this.totalCount--,G.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let G=this.listeners.get(Y);if(!G||G.size===0)return;for(let J of G.values()){if(J.typePatterns&&!nU8(X.type,J.typePatterns))continue;try{J.push(X)}catch{this.remove(Y,J.id)}}}}function nU8(Y,X){for(let G of X){if(G===Y)return!0;if(G.endsWith(".*")){let J=G.slice(0,-1);if(Y.startsWith(J))return!0}}return!1}var $$=new gq6;function uq6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?iU8(Y.data):void 0,time:Y.time}}function iU8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}mm();var aU8=new Set([401]),rU8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];function mq6(Y){if(typeof Y==="object"&&Y!==null){let J=Y,W=J.status??J.code;if(typeof W==="number"&&aU8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let G=X.toLowerCase();if(/\b401\b/.test(G))return!0;return rU8.some((J)=>G.includes(J))}class sd extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}var MJ1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};oY1();W51();Xu();function oU8(Y){return Y.endsWith("_self")}function sU8(Y){return Y.slice(0,-5)}function lq6(){return async(Y,X)=>{try{if(oU8(Y)&&h_1()){let Z=sU8(Y),Q=await SV.create();if(await rY6(X,{organizationId:Z,connectionId:Y,publish:async(V,U,z,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:U,data:z,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let U={...Q,getOrCreateClient:Kj()},z=await Xg1(V,U);return{callTool:async(q,O,L)=>{let M=await z.callTool(q,O,L);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>z.close()}}}))return{success:!0}}let G=await SV.create(),J=await Xg1(Y,G),K=await DI1.forClient(ad(J)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(G){let J=G instanceof Error?G.message:String(G);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,J),mq6(G))throw new sd(J);return{success:!1,error:J}}}}function dq6(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function tU8(Y){let X=new Map;for(let J of Y){let W=J.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(dq6(J.event))}else X.set(W,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[dq6(J.event)],seenEventIds:new Set([J.event.id])})}let G=new Map;for(let[J,W]of X)G.set(J,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return G}class Qg1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,G){this.storage=Y;this.notifySubscriber=G??lq6(),this.config={...MJ1,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);let X=await this.storage.findOrphanedCronEvents();for(let G of X)await this.scheduleNextCronDelivery(G),console.log(`[EventBus] Recovered orphaned cron event ${G.id} (${G.type}, cron: ${G.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=tU8(Y),G=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof sd){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),J=new Set,W=new Set;for(let K of G)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)J.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of J)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let G=[],J=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)G.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=J.get(H.retryAfter)||[];$.push(Q),J.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)G.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=J.get(X.retryAfter)||[];$.push(Q),J.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(G.length>0)await this.storage.markDeliveriesDelivered(G);for(let[Z,Q]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let G=new mN(Y.cron,{timezone:"UTC"}).nextRun();if(!G){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=G.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}class Kg1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Qg1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,G){if(G.deliverAt&&G.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(G.cron){try{let V=new mN(G.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");J=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,G.type,X,G.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:G.type,source:X,subject:G.subject,time:K,data:G.data,cron:G.cron});$$.emit(Y,uq6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=G.deliverAt??J;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,G){return this.storage.cancelEvent(X,Y,G)}async ackEvent(Y,X,G){return this.storage.ackDelivery(X,Y,G)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}}isRunning(){return this.running}}class Hg1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class $g1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let G of this.sub)try{let J=JSON.parse(X.decode(G.data));if(typeof J?.originId!=="string"||typeof J?.organizationId!=="string"||typeof J?.event?.id!=="string"||typeof J?.event?.type!=="string")continue;if(J.originId===this.originId)continue;this.localEmit?.(J.organizationId,J.event)}catch{}})().catch((G)=>{console.error("[NatsSSEBroadcast] Subscription error:",G)})}broadcast(Y,X){this.localEmit?.(Y,X);let G={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(G)))}catch(J){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",J)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function cq6(...Y){return{async start(X){await Promise.all(Y.map((G)=>G.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((G)=>{console.error("[NotifyStrategy] Error stopping strategy:",G)})))},async notify(X){await Promise.all(Y.map((G)=>G.notify(X).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class Fg1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}function pq6(Y,X,G){let J=xq6(Y.db),W=G?.pollIntervalMs??MJ1.pollIntervalMs,K=cq6(new Fg1(W),new Hg1({getConnection:()=>X.getConnection()})),Z=new $g1({getConnection:()=>X.getConnection()});return $$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new Kg1({storage:J,config:G,notifyStrategy:K})}hq();iW();mO();var eU8={br:".br",zstd:".zst",gzip:".gz"},exY=Object.keys(eU8);lO();$B1();var Vg1="x-hono-disable-ssg",BgY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Vg1]:"true"}})}catch{return null}})();Ae();var{write:egY}=Bun;var Gz8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}};var nq6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[G,J]=X;return async function(K,Z){let Q=await G(K),H=await Y(K,Q,J);if(H)return H;await Z()}}else{let[G,J,W]=X;return(async()=>{let K=await Y(G,J,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var td=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var Jz8=nq6((Y,X)=>{let G=td(Y);if(!G)throw TypeError("env has to include the 2nd argument of fetch.");if(G.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return});var Ug1=(Y)=>{let X=td(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let G=X.requestIP(Y.req.raw);if(!G)return{remote:{}};return{remote:{address:G.address,addressType:G.family==="IPv6"||G.family==="IPv4"?G.family:void 0,port:G.port}}};p5();vA();var iq6={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};iS();var qg1=new xY;qg1.get("/config",async(Y)=>{try{let X=Object.keys($8.socialProviders??{}),G=X.length>0,J=X.map((Z)=>({name:Z,icon:iq6[Z].icon})),W=V6.NODE_ENV!=="production"||V6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:$8.emailAndPassword?.enabled??!1},magicLink:{enabled:$8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:$8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:zG1},socialProviders:{enabled:G,providers:J},sso:$8.ssoConfig?{enabled:!0,providerId:$8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:vP()};return Y.json({success:!0,config:K})}catch(X){let G=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:G},500)}});qg1.post("/local-session",async(Y)=>{if(!vP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=Ug1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:J}=await Promise.resolve().then(() => (iS(),EJ1));await J();let{auth:W}=await Promise.resolve().then(() => (vA(),k$6)),K=await zg1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await PJ1();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(J){return console.error("Failed to create local session:",J),Y.json({success:!1,error:J instanceof Error?J.message:"Failed to create local session"},500)}});var oq6=qg1;B7();iW();h2();B7();function sq6(Y){let X=Y.filter((J)=>J.role==="system"),G=Y.find((J)=>J.role!=="system");return{systemMessages:X,requestMessage:G}}function Lz8(Y){let X=!1,G=Y.map((J)=>{if(J.role!=="assistant")return J;if(!J.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return J;return X=!0,{...J,parts:J.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?G:Y}function Nz8(Y){let[X,G]=Y.reduce((J,W)=>{if(W.role==="system")J[0].push(W);else J[1].push(W);return J},[[],[]]);return{systemMessages:X,messages:G}}async function Bz8(Y,X){return await Y.loadHistory(X)}function Dz8(Y,X){let G=Y.filter((K)=>K.parts&&K.parts.length>0),J=G.findIndex((K)=>K.id===X.id);return J>=0?[...G.slice(0,J),X]:[...G,X]}async function tq6(Y,X,G,J){let W=await Bz8(Y,J),K=Dz8(W,X);return[...G,...K]}async function eq6(Y,X){let G=await Z06({messages:Y}),J=Lz8(G),W=await W06(J,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=Nz8(W),Q=K06({messages:Z,reasoning:"all",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:Q,originalMessages:G}}RX();B7();h2();B7();a1();function YO6(Y){let{toolOutputMap:X}=Y;return $5({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:N0(F.object({tool_call_id:F.string(),pattern:F.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:J})=>{if(!X.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...X.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let W=X.get(G),K;try{K=new RegExp(J)}catch{return{result:`Invalid regex pattern: ${J}`,matchCount:0,totalLines:0}}let Z=W.split(`
|
|
2557
2557
|
`),Q=Z.filter((V)=>K.test(V)),H=Q.join(`
|
|
2558
2558
|
`),$=Aq(H);if($>wq){let V=Mq(H);return{result:`Output is still too long (${$} tokens), use a more specific pattern to reduce output.
|
|
2559
2559
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t}from"./index-DnJ6a24w.js";const a=({size:e=24,color:r="currentColor",...o})=>t.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:r,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...o},t.createElement("path",{d:"M9 3v18M7.8 3h8.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C21 5.28 21 6.12 21 7.8v8.4c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V7.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C5.28 3 6.12 3 7.8 3Z"}));a.displayName="LayoutLeft";export{a as i};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as S,c as O,D as Q,j as t,B as Z,E as fe,ad as Qe,u as de,V as Xe,n as et,v as ce,e as tt,g as st,O as Ge,t as lt,q as ot,Q as nt,U as Be}from"./index-DnJ6a24w.js";import{u as rt}from"./context-CGMT963w.js";import{E as it}from"./empty-state-BjCXvoyS.js";import{I as Ie}from"./input-BBKBJVKe.js";import{P as at,a as ct,b as dt}from"./popover-vDURg2rv.js";import{S as mt}from"./scroll-area-dsTSFUPi.js";import{n as ut}from"./Container-b65PFshp.js";import{i as ft}from"./Edit05-DDQmnS5O.js";import{i as xt}from"./Link01-VlHez4tu.js";import{s as pt}from"./XClose-C-H07PEn.js";import{I as Oe}from"./integration-icon-C9GR_8Ea.js";import{a as ht}from"./index-B09Yemt1.js";import{B as $e}from"./badge-DIWKuwVU.js";import{C as gt,a as jt}from"./collapsible-BJo6q_NJ.js";import{S as bt}from"./switch-bfk4EFAk.js";import{T as Nt}from"./textarea-lF0m7xkk.js";import{a as xe,c as ve,T as pe,b as he}from"./tooltip-Csc3oeTz.js";import{b as vt,u as yt}from"./use-connection-CNeKPAtP.js";import{u as Ct,a as _t}from"./use-virtual-mcp-DGT5zflo.js";import{i as Ue}from"./ChevronRight-BEUO8jhU.js";import{n as St}from"./ChevronUp-BWhuIqS7.js";import{i as De}from"./File02-k_9AZvHT.js";import{i as ze}from"./Loading01-DQphO9Su.js";import{i as kt}from"./Play-jCDYHrdu.js";import{s as Ve}from"./Plus-CURSuoDd.js";import{a as Le}from"./Tool01-DlbILfZg.js";import{t as wt}from"./Users03-DEpvReeu.js";import{B as Tt,a as Et,b as Fe,d as It,e as At,c as Ot}from"./breadcrumb-BWfepeob.js";import{a as $t,V as Dt}from"./layout-10Sxtyop.js";import{S as zt}from"./save-actions-BxTuQTa4.js";import{C as Lt}from"./collection-search-Dzoe9W56.js";import{T as Pt}from"./tools-list-DGVVcYEB.js";import{C as Pe}from"./checkbox-DygphnIU.js";import{e as Rt,a as He,D as Ke,b as Mt,c as Bt}from"./dialog-B8WS5FOh.js";import{T as ye,a as Vt,b as Ce,c as Ft}from"./tabs-aIY_aIUV.js";import{u as ge,a as Gt}from"./constants-D5QZg84_.js";import{c as Ut}from"./use-mcp-tools-CFyULGGP.js";import{a as Ht}from"./use-mcp-resources-BueR0w1E.js";import{u as Kt}from"./use-mcp-prompts-D4XXlnov.js";import{s as We}from"./slugify-CEUa2lfQ.js";import{I as Wt,R as Yt,a as Zt}from"./index-D-6rbOIG.js";import{k as qt}from"./dropdown-menu-DE2pKopg.js";import{i as je}from"./Check-CLxUgI8Z.js";import{i as Jt}from"./Code01-_in0gxFd.js";import{a as Re}from"./Copy01-Ds0OKZs5.js";import{i as _e}from"./InfoCircle-CA8mfcG6.js";import{i as Qt}from"./Key01-V3zgT2bk.js";import{A as Xt}from"./agent-connections-preview-DbwllQSw.js";import"./decopilot-events-Brt4gAR6.js";import"./index-Bwlq4qOs.js";import"./useQuery-mzOsnjYJ.js";import"./useMutation-Betr8yis.js";import"./index-CMImT9Gt.js";import"./index-hCeFdkUk.js";import"./use-collections-Le9CzDbY.js";import"./Save01-CpNh-fPw.js";import"./SearchMd-C8ADHGFY.js";import"./collection-display-button-C42ZnuS7.js";import"./ArrowDown-Ba2t7m6d.js";import"./ArrowUp-Wy3Qa9X3.js";import"./Grid01-B9zEjFyx.js";import"./List-D6xZGoxJ.js";import"./collection-table-wrapper-Bka5CUqj.js";import"./table-BK1bAac3.js";import"./card-gfMzoGpr.js";import"./types-BOmhR0hZ.js";import"./Eye-Cqad01Et.js";import"./Globe02-DlxZmkSI.js";import"./LayersTwo01-D3otbQFN.js";import"./X-BT_y3J3a.js";const Ye=({size:o=24,color:e="currentColor",...s})=>S.createElement("svg",{viewBox:"0 0 24 24",width:o,height:o,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},S.createElement("path",{d:"M4 7h11m0 0-4 4m4-4-4-4M4 17h16m0 0-4 4m4-4-4-4"}));Ye.displayName="ArrowsRight";const be=({size:o=24,color:e="currentColor",...s})=>S.createElement("svg",{viewBox:"0 0 24 24",width:o,height:o,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},S.createElement("path",{d:"m9.75 20.75 1.473.818c.284.158.425.237.576.268.133.027.27.027.402 0 .15-.031.292-.11.576-.268l1.473-.818m-9-2.5-1.427-.793c-.3-.166-.45-.25-.558-.368a1 1 0 0 1-.215-.364C3 16.573 3 16.401 3 16.06V14.5m0-5V7.942c0-.343 0-.514.05-.667a1 1 0 0 1 .215-.364c.109-.119.258-.202.558-.368L5.25 5.75m4.5-2.5 1.473-.818c.284-.158.425-.237.576-.267a1 1 0 0 1 .402 0c.15.03.292.11.576.267l1.473.818m4.5 2.5 1.427.793c.3.166.45.25.558.368a1 1 0 0 1 .215.364c.05.153.05.324.05.667V9.5m0 5v1.559c0 .342 0 .514-.05.666a.999.999 0 0 1-.215.364c-.109.119-.258.202-.558.368l-1.427.793m-9-7.5L12 12m0 0 2.25-1.25M12 12v2.5M3 7l2.25 1.25m13.5 0L21 7m-9 12.5V22"}));be.displayName="CubeOutline";const Ze=({size:o=24,color:e="currentColor",...s})=>S.createElement("svg",{viewBox:"0 0 24 24",width:o,height:o,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},S.createElement("path",{d:"M10 17.659V20a2 2 0 1 0 4 0v-2.341M12 2v1m-9 9H2m3.5-6.5-.6-.6m13.6.6.6-.6M22 12h-1m-3 0a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z"}));Ze.displayName="Lightbulb02";const qe=({size:o=24,color:e="currentColor",...s})=>S.createElement("svg",{viewBox:"0 0 24 24",width:o,height:o,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},S.createElement("path",{d:"m12 5.5-4.638 6.747c-.28.406-.42.609-.41.778a.5.5 0 0 0 .195.373c.135.102.38.102.874.102H12v5l4.638-6.747c.28-.406.42-.609.41-.778a.5.5 0 0 0-.195-.373c-.135-.102-.38-.102-.874-.102H12v-5Z"}),S.createElement("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z"}));qe.displayName="ZapCircle";const es=0,ts=38;function ss(){const o=[];for(let e=es;e<=ts;e++)o.push(`/icons/capy-${e}.png`);return o}const ls={sm:"h-8 w-8",md:"h-12 w-12",lg:"h-16 w-16"},os=ss();function ns(o){const e=O.c(53),{value:s,onChange:n,name:l,size:r,className:d,fallbackIcon:c}=o,a=r===void 0?"lg":r,[i,u]=S.useState(""),[g,x]=S.useState(!1);let h;e[0]!==n?(h=E=>{n(E),x(!1),u("")},e[0]=n,e[1]=h):h=e[1];const p=h;let f;e[2]!==i||e[3]!==n?(f=()=>{const E=i.trim();E&&(n(E),x(!1),u(""))},e[2]=i,e[3]=n,e[4]=f):f=e[4];const b=f;let m;e[5]!==n?(m=()=>{n(null),x(!1),u("")},e[5]=n,e[6]=m):m=e[6];const j=m,v=ls[a];let C;e[7]!==d||e[8]!==v?(C=Q("relative group rounded-lg border border-border shrink-0 overflow-hidden cursor-pointer",v,d),e[7]=d,e[8]=v,e[9]=C):C=e[9];const y=s??"no-icon";let P;e[10]!==c||e[11]!==l||e[12]!==y||e[13]!==s?(P=t.jsx(is,{icon:s,name:l,fallbackIcon:c},y),e[10]=c,e[11]=l,e[12]=y,e[13]=s,e[14]=P):P=e[14];let R;e[15]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity",children:t.jsx(ft,{size:16,className:"text-white"})}),e[15]=R):R=e[15];let k;e[16]!==C||e[17]!==P?(k=t.jsx(at,{asChild:!0,children:t.jsxs("button",{type:"button",className:C,children:[P,R]})}),e[16]=C,e[17]=P,e[18]=k):k=e[18];let z;e[19]===Symbol.for("react.memo_cache_sentinel")?(z=t.jsx("span",{className:"text-sm font-medium",children:"Choose icon"}),e[19]=z):z=e[19];let _;e[20]!==j||e[21]!==s?(_=s&&t.jsxs(Z,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs text-muted-foreground",onClick:j,children:[t.jsx(pt,{size:12}),"Remove"]}),e[20]=j,e[21]=s,e[22]=_):_=e[22];let w;e[23]!==_?(w=t.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-border",children:[z,_]}),e[23]=_,e[24]=w):w=e[24];let $;e[25]!==p||e[26]!==s?($=os.map(E=>t.jsx("button",{type:"button",onClick:()=>p(E),className:Q("h-9 w-9 rounded-md overflow-hidden border transition-colors hover:border-primary cursor-pointer",s===E?"border-primary ring-1 ring-primary":"border-transparent"),children:t.jsx("img",{src:E,alt:"",className:"h-full w-full object-cover",loading:"lazy"})},E)),e[25]=p,e[26]=s,e[27]=$):$=e[27];let A;e[28]!==$?(A=t.jsx(mt,{className:"h-48",children:t.jsx("div",{className:"grid grid-cols-7 gap-1 p-2",children:$})}),e[28]=$,e[29]=A):A=e[29];let D;e[30]===Symbol.for("react.memo_cache_sentinel")?(D=t.jsx(xt,{size:14,className:"text-muted-foreground shrink-0"}),e[30]=D):D=e[30];let L;e[31]===Symbol.for("react.memo_cache_sentinel")?(L=E=>u(E.target.value),e[31]=L):L=e[31];let I;e[32]!==b?(I=E=>{E.key==="Enter"&&(E.preventDefault(),b())},e[32]=b,e[33]=I):I=e[33];let T;e[34]!==i||e[35]!==I?(T=t.jsx(Ie,{value:i,onChange:L,placeholder:"Paste image URL...",className:"h-7 text-xs",onKeyDown:I}),e[34]=i,e[35]=I,e[36]=T):T=e[36];let M;e[37]!==i?(M=i.trim(),e[37]=i,e[38]=M):M=e[38];const B=!M;let F;e[39]!==b||e[40]!==B?(F=t.jsx(Z,{variant:"outline",size:"sm",className:"h-7 px-2 text-xs shrink-0",onClick:b,disabled:B,children:"Apply"}),e[39]=b,e[40]=B,e[41]=F):F=e[41];let V;e[42]!==T||e[43]!==F?(V=t.jsxs("div",{className:"flex items-center gap-1.5 p-2 border-t border-border",children:[D,T,F]}),e[42]=T,e[43]=F,e[44]=V):V=e[44];let G;e[45]!==w||e[46]!==A||e[47]!==V?(G=t.jsx(ct,{align:"start",className:"w-80 p-0",onOpenAutoFocus:rs,children:t.jsxs("div",{className:"flex flex-col",children:[w,A,V]})}),e[45]=w,e[46]=A,e[47]=V,e[48]=G):G=e[48];let U;return e[49]!==g||e[50]!==k||e[51]!==G?(U=t.jsxs(dt,{open:g,onOpenChange:x,children:[k,G]}),e[49]=g,e[50]=k,e[51]=G,e[52]=U):U=e[52],U}function rs(o){return o.preventDefault()}function is(o){const e=O.c(8),{icon:s,name:n,fallbackIcon:l}=o,[r,d]=S.useState(!1);if(!s||r){let i;e[0]!==l?(i=l??t.jsx(ut,{size:24,className:"text-muted-foreground"}),e[0]=l,e[1]=i):i=e[1];let u;return e[2]!==i?(u=t.jsx("div",{className:"h-full w-full flex items-center justify-center bg-muted/20",children:i}),e[2]=i,e[3]=u):u=e[3],u}let c;e[4]===Symbol.for("react.memo_cache_sentinel")?(c=()=>d(!0),e[4]=c):c=e[4];let a;return e[5]!==s||e[6]!==n?(a=t.jsx("img",{src:s,alt:n,className:"h-full w-full object-cover",onError:c}),e[5]=s,e[6]=n,e[7]=a):a=e[7],a}function Se(o){return o===null?"all":o?.length??0}function as(o,e){const s=o[e];if(!s)return"";const n=[];return s.tools===null?n.push("all tools"):s.tools&&s.tools.length>0&&n.push(`${s.tools.length} tools`),s.resources===null?n.push("all resources"):s.resources&&s.resources.length>0&&n.push(`${s.resources.length} resources`),s.prompts===null?n.push("all prompts"):s.prompts&&s.prompts.length>0&&n.push(`${s.prompts.length} prompts`),n.join(", ")}function cs(o,e){const s=o[e];return s?!((s.tools===void 0||s.tools!==null&&s.tools.length===0)&&(s.resources===void 0||s.resources!==null&&s.resources.length===0)&&(s.prompts===void 0||s.prompts!==null&&s.prompts.length===0)):!1}const ds={tools:null,resources:null,prompts:null};function ke(){const o=O.c(1);let e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx("div",{className:"flex items-center justify-center h-32",children:t.jsx(ze,{className:"animate-spin text-muted-foreground",size:24})}),o[0]=e):e=o[0],e}function we(o){return({error:e})=>e?.message?.includes("Method not found")||e?.code===-32601?t.jsx("div",{className:"flex-1 overflow-auto px-4 py-3 space-y-1",children:t.jsx("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:o})}):t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center h-full p-6 text-center space-y-4",children:[t.jsx("div",{className:"bg-destructive/10 p-3 rounded-full",children:t.jsx(Qe,{className:"h-6 w-6 text-destructive"})}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("h3",{className:"text-lg font-medium",children:"Something went wrong"}),t.jsx("p",{className:"text-sm text-muted-foreground max-w-xs mx-auto",children:e?.message?e.message.length>200?`${e.message.slice(0,200)}...`:e.message:"An unexpected error occurred"})]})]})}function ms(o){const e=O.c(23),{item:s,isSelected:n,onToggle:l,disabled:r}=o,d=r?"cursor-not-allowed opacity-50":"cursor-pointer",c=n?"bg-accent/25":"hover:bg-muted/50";let a;e[0]!==d||e[1]!==c?(a=Q("flex items-start gap-3 p-4 rounded-lg transition-colors",d,c),e[0]=d,e[1]=c,e[2]=a):a=e[2];let i;e[3]!==s.name?(i=t.jsx("p",{className:"text-sm font-medium leading-none truncate",children:s.name}),e[3]=s.name,e[4]=i):i=e[4];let u;e[5]!==s.tags?(u=s.tags&&t.jsx("span",{className:"shrink-0",children:s.tags}),e[5]=s.tags,e[6]=u):u=e[6];let g;e[7]!==i||e[8]!==u?(g=t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[i,u]}),e[7]=i,e[8]=u,e[9]=g):g=e[9];let x;e[10]!==s.description?(x=s.description&&t.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2",children:s.description}),e[10]=s.description,e[11]=x):x=e[11];let h;e[12]!==g||e[13]!==x?(h=t.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[g,x]}),e[12]=g,e[13]=x,e[14]=h):h=e[14];let p;e[15]!==r||e[16]!==n||e[17]!==l?(p=t.jsx(Pe,{checked:n,onCheckedChange:l,disabled:r,className:"mt-0.5"}),e[15]=r,e[16]=n,e[17]=l,e[18]=p):p=e[18];let f;return e[19]!==a||e[20]!==h||e[21]!==p?(f=t.jsxs("label",{className:a,children:[h,p]}),e[19]=a,e[20]=h,e[21]=p,e[22]=f):f=e[22],f}function Me(o){const e=O.c(32),{items:s,selections:n,onToggle:l,onToggleAll:r,emptyMessage:d,disabled:c}=o;let a,i,u,g,x;if(e[0]!==c||e[1]!==d||e[2]!==s||e[3]!==l||e[4]!==r||e[5]!==n){x=Symbol.for("react.early_return_sentinel");e:{const f=s.map(us);if(s.length===0){let y;e[11]!==d?(y=t.jsx("div",{className:"flex-1 overflow-auto px-4 py-3 space-y-1",children:t.jsx("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:d})}),e[11]=d,e[12]=y):y=e[12],x=y;break e}u="flex flex-col h-full";const b=c?"cursor-not-allowed opacity-50":"cursor-pointer";let m;e[13]!==b?(m=Q("flex items-start gap-3 p-4",b),e[13]=b,e[14]=m):m=e[14];let j;e[15]!==s.length?(j=t.jsx("div",{className:"flex-1 min-w-0",children:t.jsxs("span",{className:"text-sm font-medium",children:["Select All (",s.length,")"]})}),e[15]=s.length,e[16]=j):j=e[16];const v=n===null;let C;e[17]!==c||e[18]!==r||e[19]!==v?(C=t.jsx(Pe,{checked:v,onCheckedChange:r,disabled:c,className:"mt-0.5"}),e[17]=c,e[18]=r,e[19]=v,e[20]=C):C=e[20],e[21]!==C||e[22]!==m||e[23]!==j?(g=t.jsx("div",{className:"px-4 border-b border-border shrink-0",children:t.jsxs("label",{className:m,children:[j,C]})}),e[21]=C,e[22]=m,e[23]=j,e[24]=g):g=e[24],a="flex-1 overflow-auto px-4 py-3 space-y-1",i=s.map(y=>t.jsx(ms,{item:y,isSelected:n===null||n?.includes(y.id),onToggle:()=>l(y.id,f),disabled:c},y.id))}e[0]=c,e[1]=d,e[2]=s,e[3]=l,e[4]=r,e[5]=n,e[6]=a,e[7]=i,e[8]=u,e[9]=g,e[10]=x}else a=e[6],i=e[7],u=e[8],g=e[9],x=e[10];if(x!==Symbol.for("react.early_return_sentinel"))return x;let h;e[25]!==a||e[26]!==i?(h=t.jsx("div",{className:a,children:i}),e[25]=a,e[26]=i,e[27]=h):h=e[27];let p;return e[28]!==u||e[29]!==g||e[30]!==h?(p=t.jsxs("div",{className:u,children:[g,h]}),e[28]=u,e[29]=g,e[30]=h,e[31]=p):p=e[31],p}function us(o){return o.id}function fs(o){const e=O.c(13),{connectionId:s,selections:n,onToggle:l,onToggleAll:r,disabled:d}=o,{org:c}=de();let a;e[0]!==s||e[1]!==c.id?(a={connectionId:s,orgId:c.id},e[0]=s,e[1]=c.id,e[2]=a):a=e[2];const i=ge(a);let u;e[3]!==i?(u={client:i},e[3]=i,e[4]=u):u=e[4];const{data:g}=Ut(u);let x;e[5]!==g.tools?(x=g.tools.map(xs),e[5]=g.tools,e[6]=x):x=e[6];const h=x;let p;return e[7]!==d||e[8]!==h||e[9]!==l||e[10]!==r||e[11]!==n?(p=t.jsx(Me,{items:h,selections:n,onToggle:l,onToggleAll:r,emptyMessage:"No tools available",disabled:d}),e[7]=d,e[8]=h,e[9]=l,e[10]=r,e[11]=n,e[12]=p):p=e[12],p}function xs(o){return{id:o.name,name:o.name,description:o.description,tags:t.jsx(Pt,{annotations:o.annotations,_meta:o._meta})}}function ps(o){const e=O.c(13),{connectionId:s,selections:n,onToggle:l,onToggleAll:r,disabled:d}=o,{org:c}=de();let a;e[0]!==s||e[1]!==c.id?(a={connectionId:s,orgId:c.id},e[0]=s,e[1]=c.id,e[2]=a):a=e[2];const i=ge(a);let u;e[3]!==i?(u={client:i},e[3]=i,e[4]=u):u=e[4];const{data:g}=Ht(u);let x;e[5]!==g.resources?(x=g.resources.map(hs),e[5]=g.resources,e[6]=x):x=e[6];const h=x;let p;return e[7]!==d||e[8]!==h||e[9]!==l||e[10]!==r||e[11]!==n?(p=t.jsx(Me,{items:h,selections:n,onToggle:l,onToggleAll:r,emptyMessage:"No resources available",disabled:d}),e[7]=d,e[8]=h,e[9]=l,e[10]=r,e[11]=n,e[12]=p):p=e[12],p}function hs(o){return{id:o.name||o.uri,name:o.name||o.uri,description:o.description}}function gs(o){const e=O.c(13),{connectionId:s,selections:n,onToggle:l,onToggleAll:r,disabled:d}=o,{org:c}=de();let a;e[0]!==s||e[1]!==c.id?(a={connectionId:s,orgId:c.id},e[0]=s,e[1]=c.id,e[2]=a):a=e[2];const i=ge(a);let u;e[3]!==i?(u={client:i},e[3]=i,e[4]=u):u=e[4];const{data:g}=Kt(u);let x;e[5]!==g.prompts?(x=g.prompts.map(js),e[5]=g.prompts,e[6]=x):x=e[6];const h=x;let p;return e[7]!==d||e[8]!==h||e[9]!==l||e[10]!==r||e[11]!==n?(p=t.jsx(Me,{items:h,selections:n,onToggle:l,onToggleAll:r,emptyMessage:"No prompts available",disabled:d}),e[7]=d,e[8]=h,e[9]=l,e[10]=r,e[11]=n,e[12]=p):p=e[12],p}function js(o){return{id:o.name,name:o.name,description:o.description}}function bs(o){const e=O.c(24),{connection:s,isSelected:n,hasSelections:l,summary:r,onClick:d,onToggleAll:c,disabled:a}=o,i=a?"cursor-not-allowed opacity-50":"cursor-pointer",u=n?"bg-accent":"hover:bg-muted/50";let g;e[0]!==i||e[1]!==u?(g=Q("flex items-center gap-2 p-2 h-12 rounded-lg transition-colors",i,u),e[0]=i,e[1]=u,e[2]=g):g=e[2];const x=a?void 0:d;let h;e[3]!==s.icon||e[4]!==s.title?(h=t.jsx(Oe,{icon:s.icon,name:s.title,size:"xs",className:"shrink-0"}),e[3]=s.icon,e[4]=s.title,e[5]=h):h=e[5];let p;e[6]!==s.title?(p=t.jsx("p",{className:"text-sm font-medium text-foreground truncate",children:s.title}),e[6]=s.title,e[7]=p):p=e[7];let f;e[8]!==l||e[9]!==r?(f=l&&r&&t.jsx("p",{className:"text-xs text-muted-foreground truncate",children:r}),e[8]=l,e[9]=r,e[10]=f):f=e[10];let b;e[11]!==p||e[12]!==f?(b=t.jsxs("div",{className:"flex-1 min-w-0 flex flex-col justify-center",children:[p,f]}),e[11]=p,e[12]=f,e[13]=b):b=e[13];let m;e[14]!==a||e[15]!==l||e[16]!==c?(m=t.jsx(Pe,{checked:l,onCheckedChange:c,onClick:Ns,disabled:a,className:"shrink-0"}),e[14]=a,e[15]=l,e[16]=c,e[17]=m):m=e[17];let j;return e[18]!==g||e[19]!==x||e[20]!==h||e[21]!==b||e[22]!==m?(j=t.jsxs("div",{className:g,onClick:x,children:[h,b,m]}),e[18]=g,e[19]=x,e[20]=h,e[21]=b,e[22]=m,e[23]=j):j=e[23],j}function Ns(o){return o.stopPropagation()}function vs(o){const e=O.c(22),{allConnections:s,searchTerm:n,selectedId:l,hasSelections:r,getSelectionSummary:d,onConnectionClick:c,onToggleAll:a,disabled:i}=o;let u;e[0]!==s||e[1]!==n?(u=n?s.filter(p=>p.title.toLowerCase().includes(n.toLowerCase())||p.description?.toLowerCase().includes(n.toLowerCase())):s,e[0]=s,e[1]=n,e[2]=u):u=e[2];const g=u;if(g.length===0){const p=n?"No connections found":"No connections available";let f;return e[3]!==p?(f=t.jsx("div",{className:"flex items-center justify-center h-full text-sm text-muted-foreground p-4",children:p}),e[3]=p,e[4]=f):f=e[4],f}let x;if(e[5]!==i||e[6]!==g||e[7]!==d||e[8]!==r||e[9]!==c||e[10]!==a||e[11]!==l){let p;e[13]!==i||e[14]!==d||e[15]!==r||e[16]!==c||e[17]!==a||e[18]!==l?(p=f=>t.jsx(bs,{connection:f,isSelected:l===f.id,hasSelections:r(f.id),summary:d(f.id),onClick:()=>c(f.id),onToggleAll:()=>a(f.id),disabled:i},f.id),e[13]=i,e[14]=d,e[15]=r,e[16]=c,e[17]=a,e[18]=l,e[19]=p):p=e[19],x=g.map(p),e[5]=i,e[6]=g,e[7]=d,e[8]=r,e[9]=c,e[10]=a,e[11]=l,e[12]=x}else x=e[12];let h;return e[20]!==x?(h=t.jsx("div",{className:"flex flex-col gap-0.5",children:x}),e[20]=x,e[21]=h):h=e[21],h}function ys(o){const e=O.c(75),{currentConnection:s,activeTab:n,selectedId:l,formData:r,toggleTool:d,toggleResource:c,togglePrompt:a,toggleAllTools:i,toggleAllResources:u,toggleAllPrompts:g,onTabChange:x}=o;let h;e[0]!==s.icon||e[1]!==s.title?(h=t.jsx(Oe,{icon:s.icon,name:s.title,size:"md",className:"shrink-0"}),e[0]=s.icon,e[1]=s.title,e[2]=h):h=e[2];let p;e[3]!==s.title?(p=t.jsx("h2",{className:"text-lg font-semibold truncate",children:s.title}),e[3]=s.title,e[4]=p):p=e[4];let f;e[5]!==s.description?(f=s.description&&t.jsx("p",{className:"text-sm text-muted-foreground truncate",children:s.description}),e[5]=s.description,e[6]=f):f=e[6];let b;e[7]!==p||e[8]!==f?(b=t.jsxs("div",{className:"flex-1 min-w-0",children:[p,f]}),e[7]=p,e[8]=f,e[9]=b):b=e[9];let m;e[10]!==h||e[11]!==b?(m=t.jsx("div",{className:"p-6 border-b border-border shrink-0",children:t.jsxs("div",{className:"flex items-center gap-3",children:[h,b]})}),e[10]=h,e[11]=b,e[12]=m):m=e[12];let j;e[13]!==x?(j=K=>x(K),e[13]=x,e[14]=j):j=e[14];let v;e[15]===Symbol.for("react.memo_cache_sentinel")?(v=t.jsxs(ye,{value:"tools",variant:"underline",className:"gap-2",children:[t.jsx(Le,{size:16}),"Tools"]}),e[15]=v):v=e[15];let C;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsxs(ye,{value:"resources",variant:"underline",className:"gap-2",children:[t.jsx(be,{size:16}),"Resources"]}),e[16]=C):C=e[16];let y;e[17]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsxs(Vt,{variant:"underline",className:"shrink-0 px-6",children:[v,C,t.jsxs(ye,{value:"prompts",variant:"underline",className:"gap-2",children:[t.jsx(De,{size:16}),"Prompts"]})]}),e[17]=y):y=e[17];let P;e[18]===Symbol.for("react.memo_cache_sentinel")?(P=we("Tools not supported by this server"),e[18]=P):P=e[18];let R;e[19]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx(ke,{}),e[19]=R):R=e[19];let k;e[20]!==r||e[21]!==l?(k=r[l]?r[l].tools:[],e[20]=r,e[21]=l,e[22]=k):k=e[22];let z;e[23]!==l||e[24]!==d?(z=(K,q)=>d(l,K,q),e[23]=l,e[24]=d,e[25]=z):z=e[25];let _;e[26]!==l||e[27]!==i?(_=()=>i(l),e[26]=l,e[27]=i,e[28]=_):_=e[28];let w;e[29]!==l||e[30]!==k||e[31]!==z||e[32]!==_?(w=t.jsx(Ce,{value:"tools",className:"flex-1 overflow-hidden mt-0",children:t.jsx(fe,{fallback:P,children:t.jsx(S.Suspense,{fallback:R,children:t.jsx(fs,{connectionId:l,selections:k,onToggle:z,onToggleAll:_})})})}),e[29]=l,e[30]=k,e[31]=z,e[32]=_,e[33]=w):w=e[33];let $;e[34]===Symbol.for("react.memo_cache_sentinel")?($=we("Resources not supported by this server"),e[34]=$):$=e[34];let A;e[35]===Symbol.for("react.memo_cache_sentinel")?(A=t.jsx(ke,{}),e[35]=A):A=e[35];let D;e[36]!==r||e[37]!==l?(D=r[l]?r[l].resources:[],e[36]=r,e[37]=l,e[38]=D):D=e[38];let L;e[39]!==l||e[40]!==c?(L=(K,q)=>c(l,K,q),e[39]=l,e[40]=c,e[41]=L):L=e[41];let I;e[42]!==l||e[43]!==u?(I=()=>u(l),e[42]=l,e[43]=u,e[44]=I):I=e[44];let T;e[45]!==l||e[46]!==D||e[47]!==L||e[48]!==I?(T=t.jsx(Ce,{value:"resources",className:"flex-1 overflow-hidden mt-0",children:t.jsx(fe,{fallback:$,children:t.jsx(S.Suspense,{fallback:A,children:t.jsx(ps,{connectionId:l,selections:D,onToggle:L,onToggleAll:I})})})}),e[45]=l,e[46]=D,e[47]=L,e[48]=I,e[49]=T):T=e[49];let M;e[50]===Symbol.for("react.memo_cache_sentinel")?(M=we("Prompts not supported by this server"),e[50]=M):M=e[50];let B;e[51]===Symbol.for("react.memo_cache_sentinel")?(B=t.jsx(ke,{}),e[51]=B):B=e[51];let F;e[52]!==r||e[53]!==l?(F=r[l]?r[l].prompts:[],e[52]=r,e[53]=l,e[54]=F):F=e[54];let V;e[55]!==l||e[56]!==a?(V=(K,q)=>a(l,K,q),e[55]=l,e[56]=a,e[57]=V):V=e[57];let G;e[58]!==l||e[59]!==g?(G=()=>g(l),e[58]=l,e[59]=g,e[60]=G):G=e[60];let U;e[61]!==l||e[62]!==F||e[63]!==V||e[64]!==G?(U=t.jsx(Ce,{value:"prompts",className:"flex-1 overflow-hidden mt-0",children:t.jsx(fe,{fallback:M,children:t.jsx(S.Suspense,{fallback:B,children:t.jsx(gs,{connectionId:l,selections:F,onToggle:V,onToggleAll:G})})})}),e[61]=l,e[62]=F,e[63]=V,e[64]=G,e[65]=U):U=e[65];let E;e[66]!==n||e[67]!==w||e[68]!==T||e[69]!==U||e[70]!==j?(E=t.jsx("div",{className:"flex-1 flex flex-col overflow-hidden",children:t.jsxs(Ft,{value:n,onValueChange:j,variant:"underline",className:"flex-1 flex flex-col overflow-hidden",children:[y,w,T,U]})}),e[66]=n,e[67]=w,e[68]=T,e[69]=U,e[70]=j,e[71]=E):E=e[71];let J;return e[72]!==E||e[73]!==m?(J=t.jsxs(t.Fragment,{children:[m,E]}),e[72]=E,e[73]=m,e[74]=J):J=e[74],J}function Cs(o){const e={};for(const s of o)e[s.connection_id]={tools:s.selected_tools,resources:s.selected_resources??null,prompts:s.selected_prompts??null};return e}function Te(o){return Object.entries(o).map(([e,s])=>({connection_id:e,selected_tools:s.tools,selected_resources:s.resources,selected_prompts:s.prompts}))}function _s(o,e){switch(e.type){case"SET_SEARCH_TERM":return{...o,searchTerm:e.payload};case"SET_SELECTED":return{...o,selectedId:e.payload};case"SET_ACTIVE_TAB":return{...o,activeTab:e.payload};case"RESET":return{searchTerm:"",selectedId:e.payload.selectedId??e.payload.firstConnectionId??null,activeTab:"tools"};case"SELECT_CONNECTION":return{...o,selectedId:e.payload,activeTab:"tools"};default:return o}}const Ss=(o,e)=>o.find(s=>s.id===e)??o[0];function ks(o){const e=O.c(77),{open:s,onOpenChange:n,selectedId:l,form:r,connections:d}=o;let c;e[0]!==l?(c={activeTab:"tools",searchTerm:"",selectedId:l},e[0]=l,e[1]=c):c=e[1];const[a,i]=S.useReducer(_s,c),u=S.useDeferredValue(a.searchTerm);let g;e[2]!==u?(g={searchTerm:u},e[2]=u,e[3]=g):g=e[3];const x=vt(g);let h;e[4]!==d?(h=d??[],e[4]=d,e[5]=h):h=e[5];let p;e[6]!==h?(p=Cs(h),e[6]=h,e[7]=p):p=e[7];const f=p;let b;e[8]!==x||e[9]!==a.selectedId?(b=Ss(x,a.selectedId),e[8]=x,e[9]=a.selectedId,e[10]=b):b=e[10];const m=b,j=m?.id??null;let v;e[11]!==f?(v=N=>cs(f,N),e[11]=f,e[12]=v):v=e[12];const C=v;let y;e[13]!==f?(y=N=>as(f,N),e[13]=f,e[14]=y):y=e[14];const P=y;let R;e[15]!==r||e[16]!==f?(R=(N,H,W,X)=>{const ie=f[N]?.[H];let Y;ie===null?Y=X.filter(Ne=>Ne!==W):ie?.includes(W)?Y=ie.filter(Ne=>Ne!==W):(Y=[...ie??[],W],Y.length===X.length&&(Y=null));const ae={...f};ae[N]?ae[N]={...ae[N]}:ae[N]={tools:null,resources:null,prompts:null},ae[N][H]=Y,r.setValue("connections",Te(ae),{shouldDirty:!0,shouldTouch:!0})},e[15]=r,e[16]=f,e[17]=R):R=e[17];const k=R;let z;e[18]!==r||e[19]!==f?(z=(N,H)=>{const ie=f[N]?.[H]===null?[]:null,Y={...f};Y[N]?Y[N]={...Y[N]}:Y[N]={tools:null,resources:null,prompts:null},Y[N][H]=ie,r.setValue("connections",Te(Y),{shouldDirty:!0,shouldTouch:!0})},e[18]=r,e[19]=f,e[20]=z):z=e[20];const _=z;let w;e[21]!==k?(w=(N,H,W)=>k(N,"tools",H,W),e[21]=k,e[22]=w):w=e[22];const $=w;let A;e[23]!==k?(A=(N,H,W)=>k(N,"resources",H,W),e[23]=k,e[24]=A):A=e[24];const D=A;let L;e[25]!==k?(L=(N,H,W)=>k(N,"prompts",H,W),e[25]=k,e[26]=L):L=e[26];const I=L;let T;e[27]!==_?(T=N=>_(N,"tools"),e[27]=_,e[28]=T):T=e[28];const M=T;let B;e[29]!==_?(B=N=>_(N,"resources"),e[29]=_,e[30]=B):B=e[30];const F=B;let V;e[31]!==_?(V=N=>_(N,"prompts"),e[31]=_,e[32]=V):V=e[32];const G=V;let U;e[33]!==r||e[34]!==f?(U=N=>{const H=f[N],W=H&&H.tools===null&&H.resources===null&&H.prompts===null,X={...f};W?delete X[N]:X[N]=ds,r.setValue("connections",Te(X),{shouldDirty:!0,shouldTouch:!0})},e[33]=r,e[34]=f,e[35]=U):U=e[35];const E=U;let J;e[36]!==x||e[37]!==n||e[38]!==l?(J=N=>{N&&i({type:"RESET",payload:{selectedId:l,firstConnectionId:x[0]?.id??null}}),n(N)},e[36]=x,e[37]=n,e[38]=l,e[39]=J):J=e[39];const K=J;let q;e[40]===Symbol.for("react.memo_cache_sentinel")?(q=N=>{i({type:"SELECT_CONNECTION",payload:N})},e[40]=q):q=e[40];const Je=q;let me;e[41]===Symbol.for("react.memo_cache_sentinel")?(me=N=>i({type:"SET_SEARCH_TERM",payload:N}),e[41]=me):me=e[41];let ee;e[42]!==a.searchTerm?(ee=t.jsx(Lt,{value:a.searchTerm,onChange:me,placeholder:"Search connections..."}),e[42]=a.searchTerm,e[43]=ee):ee=e[43];let te;e[44]!==x||e[45]!==a.searchTerm||e[46]!==j||e[47]!==P||e[48]!==C||e[49]!==E?(te=t.jsx("div",{className:"flex-1 overflow-auto p-2",children:t.jsx(vs,{allConnections:x,searchTerm:a.searchTerm,selectedId:j,hasSelections:C,getSelectionSummary:P,onConnectionClick:Je,onToggleAll:E})}),e[44]=x,e[45]=a.searchTerm,e[46]=j,e[47]=P,e[48]=C,e[49]=E,e[50]=te):te=e[50];let se;e[51]!==ee||e[52]!==te?(se=t.jsxs("div",{className:"w-full sm:w-72 sm:border-r border-b sm:border-b-0 border-border flex flex-col bg-background sm:h-full max-h-[40vh] sm:max-h-full",children:[ee,te]}),e[51]=ee,e[52]=te,e[53]=se):se=e[53];let le;e[54]!==m||e[55]!==a.activeTab||e[56]!==j||e[57]!==f||e[58]!==G||e[59]!==F||e[60]!==M||e[61]!==I||e[62]!==D||e[63]!==$?(le=t.jsx("div",{className:"flex-1 flex flex-col overflow-hidden",children:m&&j?t.jsx(ys,{currentConnection:m,activeTab:a.activeTab,selectedId:j,formData:f,toggleTool:$,toggleResource:D,togglePrompt:I,toggleAllTools:M,toggleAllResources:F,toggleAllPrompts:G,onTabChange:N=>i({type:"SET_ACTIVE_TAB",payload:N})},j):t.jsx("div",{className:"flex-1 flex items-center justify-center text-sm text-muted-foreground",children:"Select a connection to view its tools, resources, and prompts"})}),e[54]=m,e[55]=a.activeTab,e[56]=j,e[57]=f,e[58]=G,e[59]=F,e[60]=M,e[61]=I,e[62]=D,e[63]=$,e[64]=le):le=e[64];let oe;e[65]!==se||e[66]!==le?(oe=t.jsxs("div",{className:"flex-1 flex overflow-hidden min-h-0 flex-col sm:flex-row",children:[se,le]}),e[65]=se,e[66]=le,e[67]=oe):oe=e[67];let ne;e[68]!==K?(ne=t.jsx(Rt,{className:"px-6 py-4 border-t border-border shrink-0",children:t.jsx(Z,{variant:"outline",onClick:()=>K(!1),children:"Done"})}),e[68]=K,e[69]=ne):ne=e[69];let re;e[70]!==oe||e[71]!==ne?(re=t.jsxs(He,{className:"sm:max-w-5xl h-[80vh] max-h-[80vh] flex flex-col p-0 gap-0 overflow-hidden w-[95vw]",children:[oe,ne]}),e[70]=oe,e[71]=ne,e[72]=re):re=e[72];let ue;return e[73]!==K||e[74]!==s||e[75]!==re?(ue=t.jsx(Ke,{open:s,onOpenChange:K,children:re}),e[73]=K,e[74]=s,e[75]=re,e[76]=ue):ue=e[76],ue}const ws=Xe.pick({title:!0,description:!0,icon:!0,status:!0,metadata:!0,connections:!0}).extend({title:et().min(1,"Name is required").max(255)});function Ts(o){const e=O.c(8);let s,n;e[0]!==o?({className:s,...n}=o,e[0]=o,e[1]=s,e[2]=n):(s=e[1],n=e[2]);let l;e[3]!==s?(l=Q("grid gap-3",s),e[3]=s,e[4]=l):l=e[4];let r;return e[5]!==n||e[6]!==l?(r=t.jsx(Yt,{"data-slot":"radio-group",className:l,...n}),e[5]=n,e[6]=l,e[7]=r):r=e[7],r}function Ee(o){const e=O.c(9);let s,n;e[0]!==o?({className:s,...n}=o,e[0]=o,e[1]=s,e[2]=n):(s=e[1],n=e[2]);let l;e[3]!==s?(l=Q("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),e[3]=s,e[4]=l):l=e[4];let r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx(Zt,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:t.jsx(qt,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})}),e[5]=r):r=e[5];let d;return e[6]!==n||e[7]!==l?(d=t.jsx(Wt,{"data-slot":"radio-group-item",className:l,...n,children:r}),e[6]=n,e[7]=l,e[8]=d):d=e[8],d}function Es(o){const s=new TextEncoder().encode(o),n=Array.from(s,l=>String.fromCharCode(l)).join("");return btoa(n)}function Is(o){const e=O.c(10),{url:s}=o,[n,l]=S.useState(!1);let r;e[0]!==s?(r=async()=>{await navigator.clipboard.writeText(s),l(!0),ce.success("Agent URL copied to clipboard"),setTimeout(()=>l(!1),2e3)},e[0]=s,e[1]=r):r=e[1];const d=r;let c;e[2]!==n?(c=n?t.jsx(je,{size:20,className:"text-green-600"}):t.jsx(Re,{size:20}),e[2]=n,e[3]=c):c=e[3];const a=n?"Copied!":"Copy URL";let i;e[4]!==a?(i=t.jsx("span",{className:"text-xs font-medium",children:a}),e[4]=a,e[5]=i):i=e[5];let u;return e[6]!==d||e[7]!==c||e[8]!==i?(u=t.jsxs(Z,{type:"button",variant:"outline",onClick:d,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[c,i]}),e[6]=d,e[7]=c,e[8]=i,e[9]=u):u=e[9],u}function As(o){const e=O.c(7),{url:s,serverName:n}=o;let l;e[0]!==n||e[1]!==s?(l=()=>{const i=We(n),g=Es(JSON.stringify({type:"http",url:s,headers:{"x-mesh-client":"Cursor"}},null,2)),x=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(i)}&config=${encodeURIComponent(g)}`;window.open(x,"_blank"),ce.success("Opening Cursor...")},e[0]=n,e[1]=s,e[2]=l):l=e[2];const r=l;let d,c;e[3]===Symbol.for("react.memo_cache_sentinel")?(d=t.jsx("img",{src:"/logos/cursor.svg",alt:"Cursor",className:"h-5 w-5",style:{filter:"brightness(0) saturate(100%) invert(11%) sepia(8%) saturate(785%) hue-rotate(1deg) brightness(95%) contrast(89%)"}}),c=t.jsx("span",{className:"text-xs font-medium",children:"Install on Cursor"}),e[3]=d,e[4]=c):(d=e[3],c=e[4]);let a;return e[5]!==r?(a=t.jsxs(Z,{type:"button",variant:"outline",onClick:r,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[d,c]}),e[5]=r,e[6]=a):a=e[6],a}function Os(o){const e=O.c(11),{url:s,serverName:n}=o,[l,r]=S.useState(!1);let d;e[0]!==n||e[1]!==s?(d=async()=>{const x=We(n),p=JSON.stringify({type:"http",url:s,headers:{"x-mesh-client":"Claude Code"}},null,2),f=`claude mcp add-json "${x}" '${p.replace(/'/g,"'\\''")}'`;await navigator.clipboard.writeText(f),r(!0),ce.success("Claude Code command copied to clipboard"),setTimeout(()=>r(!1),2e3)},e[0]=n,e[1]=s,e[2]=d):d=e[2];const c=d;let a;e[3]!==l?(a=l?t.jsx(je,{size:20,className:"text-green-600"}):t.jsx("img",{src:"/logos/Claude Code.svg",alt:"Claude Code",className:"h-5 w-5",style:{filter:"brightness(0) saturate(100%) invert(55%) sepia(31%) saturate(1264%) hue-rotate(331deg) brightness(92%) contrast(86%)"}}),e[3]=l,e[4]=a):a=e[4];const i=l?"Copied!":"Install on Claude";let u;e[5]!==i?(u=t.jsx("span",{className:"text-xs font-medium",children:i}),e[5]=i,e[6]=u):u=e[6];let g;return e[7]!==c||e[8]!==a||e[9]!==u?(g=t.jsxs(Z,{type:"button",variant:"outline",onClick:c,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[a,u]}),e[7]=c,e[8]=a,e[9]=u,e[10]=g):g=e[10],g}function $s({virtualMcp:o}){const{org:e}=de(),s=ge({connectionId:Gt,orgId:e.id}),[n,l]=S.useState(null),[r,d]=S.useState(!1),[c,a]=S.useState(!1),i=o.id,u=o.title||`agent-${i.slice(0,8)}`,g=n?`bunx @decocms/typegen@latest --mcp ${i} --key ${n} --output client.ts`:`bunx @decocms/typegen@latest --mcp ${i} --key <api-key> --output client.ts`,x=async()=>{d(!0);try{const f=(await s.callTool({name:"API_KEY_CREATE",arguments:{name:`typegen-${u}`,permissions:{[i]:["*"]}}})).structuredContent?.key;if(!f)throw new Error("No key in response");l(f)}catch{ce.error("Failed to generate API key")}finally{d(!1)}},h=async()=>{await navigator.clipboard.writeText(g),a(!0),ce.success("Command copied to clipboard"),setTimeout(()=>a(!1),2e3)};return t.jsxs("div",{className:"flex min-w-0 flex-col gap-3",children:[t.jsxs("div",{className:"flex items-start justify-between gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-0.5",children:[t.jsx("h4",{className:"text-sm font-medium text-foreground",children:"Generate typed client"}),t.jsxs("p",{className:"text-xs text-muted-foreground",children:["Introspects this agent and writes a typed"," ",t.jsx("code",{className:"font-mono",children:"client.ts"})," you can import directly."]})]}),!n&&t.jsxs(Z,{type:"button",variant:"outline",size:"sm",className:"shrink-0 gap-1.5",onClick:x,disabled:r,children:[r?t.jsx(ze,{size:14,className:"animate-spin"}):t.jsx(Qt,{size:14}),t.jsx("span",{children:r?"Generating…":"Generate API key"})]})]}),n&&t.jsx("p",{className:"rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700",children:"Store this key securely — it won't be shown again."}),t.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Generate client"}),t.jsx("div",{className:"rounded-md border border-input bg-muted/50 px-3 py-2.5",children:t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx("code",{className:"min-w-0 flex-1 break-all font-mono text-xs text-muted-foreground",children:g}),t.jsx(Z,{type:"button",variant:"ghost",size:"icon",className:"size-6 shrink-0",onClick:h,children:c?t.jsx(je,{size:12,className:"text-green-600"}):t.jsx(Re,{size:12})})]})}),t.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Runtime variables"}),t.jsx(Ds,{apiKey:n})]})}function Ds(o){const e=O.c(19),{apiKey:s}=o,[n,l]=S.useState(!1),r=window.location.origin,d=s?`MESH_API_KEY=${s}`:"MESH_API_KEY=<api-key>",c=`MESH_BASE_URL=${r}`,a=`${d}
|
|
2
|
-
${c}`;let i;e[0]!==a?(i=async()=>{await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3)},e[0]=a,e[1]=i):i=e[1];const u=i,g=!s;let x;e[2]!==g?(x=Q({"opacity-50":g}),e[2]=g,e[3]=x):x=e[3];let h;e[4]!==d||e[5]!==x?(h=t.jsx("span",{className:x,children:d}),e[4]=d,e[5]=x,e[6]=h):h=e[6];let p,f;e[7]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("br",{}),f=t.jsx("span",{children:c}),e[7]=p,e[8]=f):(p=e[7],f=e[8]);let b;e[9]!==h?(b=t.jsxs("code",{className:"min-w-0 flex-1 font-mono text-xs text-muted-foreground",children:[h,p,f]}),e[9]=h,e[10]=b):b=e[10];let m;e[11]!==n?(m=n?t.jsx(je,{size:12,className:"text-green-600"}):t.jsx(Re,{size:12}),e[11]=n,e[12]=m):m=e[12];let j;e[13]!==u||e[14]!==m?(j=t.jsx(Z,{type:"button",variant:"ghost",size:"icon",className:"size-6 shrink-0",onClick:u,children:m}),e[13]=u,e[14]=m,e[15]=j):j=e[15];let v;return e[16]!==b||e[17]!==j?(v=t.jsx("div",{className:"rounded-md border border-input bg-muted/50 px-3 py-2.5",children:t.jsxs("div",{className:"flex items-start gap-2",children:[b,j]})}),e[16]=b,e[17]=j,e[18]=v):v=e[18],v}function zs(o){const e=O.c(3),{virtualMcp:s}=o;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=t.jsx("div",{className:"h-20 animate-pulse rounded-md bg-muted"}),e[0]=n):n=e[0];let l;return e[1]!==s?(l=t.jsx(S.Suspense,{fallback:n,children:t.jsx($s,{virtualMcp:s})}),e[1]=s,e[2]=l):l=e[2],l}function Ls(o){const e=O.c(44),{open:s,onOpenChange:n,virtualMcp:l}=o,[r,d]=S.useState("code_execution");let c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=B=>{(B==="passthrough"||B==="smart_tool_selection"||B==="code_execution")&&d(B)},e[0]=c):c=e[0];const a=c;let i;e[1]!==r||e[2]!==l.id?(i=new URL(`/mcp/virtual-mcp/${l.id}`,window.location.origin),i.searchParams.set("mode",r),e[1]=r,e[2]=l.id,e[3]=i):i=e[3];let u;e[4]!==l.id||e[5]!==l.title?(u=l.title||`agent-${l.id?.slice(0,8)??"default"}`,e[4]=l.id,e[5]=l.title,e[6]=u):u=e[6];const g=u;let x;e[7]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx(Mt,{children:t.jsx(Bt,{children:"Connect"})}),e[7]=x):x=e[7];let h;e[8]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx("div",{children:t.jsx("h4",{className:"text-sm font-medium text-foreground mt-1",children:"How should this agent work?"})}),e[8]=h):h=e[8];let p;e[9]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(Ye,{className:"size-5 text-muted-foreground"})}),e[9]=p):p=e[9];let f;e[10]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Direct access"}),e[10]=f):f=e[10];let b;e[11]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(xe,{asChild:!0,children:t.jsx(_e,{className:"size-3.5 text-muted-foreground"})}),e[11]=b):b=e[11];let m;e[12]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsxs("label",{htmlFor:"mode-passthrough",className:"flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[p,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[f,t.jsx(ve,{children:t.jsxs(pe,{children:[b,t.jsx(he,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"All tools are exposed directly via tools/list. Best for small tool surfaces with deterministic behavior."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Best for small teams or when you need predictable behavior"})]}),t.jsx(Ee,{id:"mode-passthrough",value:"passthrough"})]}),e[12]=m):m=e[12];let j;e[13]===Symbol.for("react.memo_cache_sentinel")?(j=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(Ze,{className:"size-5 text-muted-foreground"})}),e[13]=j):j=e[13];let v;e[14]===Symbol.for("react.memo_cache_sentinel")?(v=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Smart discovery"}),e[14]=v):v=e[14];let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx(xe,{asChild:!0,children:t.jsx(_e,{className:"size-3.5 text-muted-foreground"})}),e[15]=C):C=e[15];let y;e[16]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsxs("label",{htmlFor:"mode-smart",className:"flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[j,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[v,t.jsx(ve,{children:t.jsxs(pe,{children:[C,t.jsx(he,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"Uses meta-tools (GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS, GATEWAY_CALL_TOOL) to keep the tool list small and request details on demand."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Ideal for large teams with many tools - AI finds what it needs"})]}),t.jsx(Ee,{id:"mode-smart",value:"smart_tool_selection"})]}),e[16]=y):y=e[16];let P;e[17]===Symbol.for("react.memo_cache_sentinel")?(P=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(Jt,{className:"size-5 text-muted-foreground"})}),e[17]=P):P=e[17];let R;e[18]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Smart execution"}),e[18]=R):R=e[18];let k;e[19]===Symbol.for("react.memo_cache_sentinel")?(k=t.jsx(xe,{asChild:!0,children:t.jsx(_e,{className:"size-3.5 text-muted-foreground"})}),e[19]=k):k=e[19];let z;e[20]===Symbol.for("react.memo_cache_sentinel")?(z=t.jsxs("label",{htmlFor:"mode-code",className:"relative flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[P,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[R,t.jsx(ve,{children:t.jsxs(pe,{children:[k,t.jsx(he,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"Exposes meta-tools for discovery + sandboxed execution (GATEWAY_RUN_CODE). Reduces overhead on large surfaces by shifting work into a controlled runtime."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Maximum flexibility - AI can write code to orchestrate tools"})]}),t.jsx(Ee,{id:"mode-code",value:"code_execution"}),t.jsx($e,{variant:"outline",className:"absolute -top-2.5 left-1/2 -translate-x-1/2 bg-background z-10",children:"Recommended"})]}),e[20]=z):z=e[20];let _;e[21]!==r?(_=t.jsxs("div",{className:"flex flex-col gap-3",children:[h,t.jsxs(Ts,{value:r,onValueChange:a,className:"flex flex-col gap-4.5",children:[m,y,z]})]}),e[21]=r,e[22]=_):_=e[22];let w;e[23]!==i.href?(w=t.jsx(Is,{url:i.href}),e[23]=i.href,e[24]=w):w=e[24];let $,A;e[25]!==g||e[26]!==i.href?($=t.jsx(As,{url:i.href,serverName:g}),A=t.jsx(Os,{url:i.href,serverName:g}),e[25]=g,e[26]=i.href,e[27]=$,e[28]=A):($=e[27],A=e[28]);let D;e[29]!==w||e[30]!==$||e[31]!==A?(D=t.jsx("div",{className:"flex flex-col gap-3 pt-2",children:t.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[w,$,A]})}),e[29]=w,e[30]=$,e[31]=A,e[32]=D):D=e[32];let L;e[33]===Symbol.for("react.memo_cache_sentinel")?(L=t.jsx("div",{className:"border-t border-border"}),e[33]=L):L=e[33];let I;e[34]!==l?(I=t.jsx(zs,{virtualMcp:l}),e[34]=l,e[35]=I):I=e[35];let T;e[36]!==_||e[37]!==D||e[38]!==I?(T=t.jsxs(He,{className:"max-h-[80vh] overflow-y-auto sm:max-w-2xl",children:[x,t.jsxs("div",{className:"flex flex-col gap-6",children:[_,D,L,I]})]}),e[36]=_,e[37]=D,e[38]=I,e[39]=T):T=e[39];let M;return e[40]!==n||e[41]!==s||e[42]!==T?(M=t.jsx(Ke,{open:s,onOpenChange:n,children:T}),e[40]=n,e[41]=s,e[42]=T,e[43]=M):M=e[43],M}function Ps(o,e){switch(e.type){case"SET_SHARE_DIALOG_OPEN":return{...o,shareDialogOpen:e.payload};case"SET_CONNECTION_DIALOG_OPEN":return{...o,connectionDialogOpen:e.payload};case"SET_EDITING_CONNECTION_ID":return{...o,editingConnectionId:e.payload};case"SET_SKILLS_OPEN":return{...o,skillsOpen:e.payload};default:return o}}function Ae(o){const e=O.c(27),{connection_id:s,selected_tools:n,selected_resources:l,selected_prompts:r,onClick:d}=o,c=yt(s);if(!c)return null;let a;e[0]!==n?(a=Se(n),e[0]=n,e[1]=a):a=e[1];const i=a;let u;e[2]!==l?(u=Se(l),e[2]=l,e[3]=u):u=e[3];const g=u;let x;e[4]!==r?(x=Se(r),e[4]=r,e[5]=x):x=e[5];const h=x;let p;e[6]!==c.icon||e[7]!==c.title?(p=t.jsx(Oe,{icon:c.icon,name:c.title,size:"xs"}),e[6]=c.icon,e[7]=c.title,e[8]=p):p=e[8];let f;e[9]!==c.title?(f=t.jsx("p",{className:"flex-1 text-sm font-normal text-foreground truncate",children:c.title}),e[9]=c.title,e[10]=f):f=e[10];let b;e[11]!==i?(b=i!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:i==="all"?"all":i}),t.jsx(Le,{size:12})]}),e[11]=i,e[12]=b):b=e[12];let m;e[13]!==g?(m=g!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:g==="all"?"all":g}),t.jsx(be,{size:12})]}),e[13]=g,e[14]=m):m=e[14];let j;e[15]!==h?(j=h!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:h==="all"?"all":h}),t.jsx(De,{size:12})]}),e[15]=h,e[16]=j):j=e[16];let v;e[17]!==b||e[18]!==m||e[19]!==j?(v=t.jsxs($e,{variant:"secondary",className:"bg-muted h-5 gap-2 px-1.5 py-1 flex items-center",children:[b,m,j]}),e[17]=b,e[18]=m,e[19]=j,e[20]=v):v=e[20];let C;e[21]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx(Ue,{size:16,className:"text-muted-foreground shrink-0"}),e[21]=C):C=e[21];let y;return e[22]!==d||e[23]!==p||e[24]!==f||e[25]!==v?(y=t.jsxs("div",{onClick:d,className:"w-full h-12 flex items-center gap-2 px-3 rounded-lg border border-border hover:bg-accent/50 transition-colors cursor-pointer",children:[p,f,v,C]}),e[22]=d,e[23]=p,e[24]=f,e[25]=v,e[26]=y):y=e[26],y}Ae.Fallback=function(){return t.jsxs("div",{className:"w-full h-12 flex items-center gap-2 px-3 rounded-lg border border-border",children:[t.jsx("div",{className:"size-5 rounded bg-muted animate-pulse shrink-0"}),t.jsx("div",{className:"flex-1 h-4 rounded bg-muted animate-pulse"}),t.jsxs($e,{variant:"secondary",className:"bg-muted h-5 gap-2 px-1.5 py-1 flex items-center",children:[t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx(Le,{size:12})]}),t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx(be,{size:12})]}),t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx(De,{size:12})]})]}),t.jsx(Ue,{size:16,className:"text-muted-foreground shrink-0"})]})};function Rs({virtualMcp:o}){const{org:e}=de(),s=_t(),n=lt({resolver:ot(ws),defaultValues:o}),l=n.watch("connections"),[r,d]=S.useReducer(Ps,{shareDialogOpen:!1,connectionDialogOpen:!1,editingConnectionId:null,skillsOpen:!1}),[,c]=ht(),{setVirtualMcpId:a}=rt();S.useEffect(()=>{c(!0),a(o.id)},[o.id]);const i=()=>{a(o.id),c(!0)},u=n.formState.isDirty,g=async()=>{const m=n.getValues(),j=await s.update.mutateAsync({id:o.id,data:m});n.reset(j)},x=()=>{n.reset(o)},h=()=>{d({type:"SET_EDITING_CONNECTION_ID",payload:null}),d({type:"SET_CONNECTION_DIALOG_OPEN",payload:!0})},p=m=>{d({type:"SET_EDITING_CONNECTION_ID",payload:m}),d({type:"SET_CONNECTION_DIALOG_OPEN",payload:!0})},f=s.update.isPending,b=t.jsx(Tt,{children:t.jsxs(Et,{children:[t.jsx(Fe,{children:t.jsx(It,{asChild:!0,children:t.jsx(nt,{to:"/$org/$project/agents",params:{org:e.slug,project:Ge},children:"Agents"})})}),t.jsx(At,{}),t.jsx(Fe,{children:t.jsx(Ot,{children:o.title})})]})});return t.jsxs($t,{breadcrumb:b,children:[t.jsxs(Dt,{children:[t.jsx(zt,{onSave:g,onUndo:x,isDirty:u,isSaving:f}),t.jsxs(pe,{delayDuration:0,children:[t.jsx(xe,{asChild:!0,children:t.jsx("span",{className:"inline-block",children:t.jsxs(Z,{variant:"outline",size:"sm",className:"h-7 gap-1.5 px-2 border border-input",onClick:i,"aria-label":"Test Agent",children:[t.jsx(kt,{size:14}),"Test Agent"]})})}),t.jsx(he,{side:"bottom",children:"Test this agent in chat"})]}),t.jsxs(Z,{variant:"outline",size:"sm",className:"h-7 gap-1.5 px-2 border border-input",onClick:()=>d({type:"SET_SHARE_DIALOG_OPEN",payload:!0}),children:[t.jsx(qe,{size:14}),"Connect"]})]}),t.jsx("div",{className:"flex h-full w-full bg-background overflow-auto",children:t.jsxs("div",{className:"flex flex-col w-full",children:[t.jsxs("div",{className:"flex items-start justify-between gap-4 p-6 shrink-0",children:[t.jsxs("div",{className:"flex items-start gap-4 flex-1 min-w-0",children:[t.jsx(Be,{control:n.control,name:"icon",render:({field:m})=>t.jsx(ns,{value:m.value,onChange:m.onChange,name:n.watch("title")||"Agent",size:"lg",className:"shrink-0 shadow-sm",fallbackIcon:t.jsx(wt,{})})}),t.jsxs("div",{className:"flex flex-col flex-1 min-w-0",children:[t.jsx(Ie,{...n.register("title"),className:"h-auto py-0.5 text-lg! font-medium leading-7 px-1 -mx-1 border-transparent hover:bg-input/25 focus:border-input bg-transparent transition-all",placeholder:"Agent Name"}),t.jsx(Ie,{...n.register("description"),className:"h-auto py-0.5 text-base text-muted-foreground leading-6 px-1 -mx-1 border-transparent hover:bg-input/25 focus:border-input bg-transparent transition-all",placeholder:"Add a description..."})]})]}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(bt,{checked:n.watch("status")==="active",onCheckedChange:m=>n.setValue("status",m?"active":"inactive",{shouldDirty:!0})})})]}),t.jsxs(gt,{open:r.skillsOpen,onOpenChange:m=>d({type:"SET_SKILLS_OPEN",payload:m}),className:"border-t border-border shrink-0 max-h-[400px] overflow-hidden flex flex-col",children:[l.length===0?t.jsxs("div",{className:"px-6 py-4 flex flex-col gap-3",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"Connections"}),t.jsxs("button",{type:"button",onClick:h,className:"flex items-center gap-3 px-3 py-2.5 rounded-lg border border-border hover:bg-accent/50 transition-colors w-full text-left cursor-pointer overflow-hidden",children:[t.jsxs("div",{className:"relative flex items-center justify-center size-8 rounded-md text-muted-foreground/75 shrink-0",children:[t.jsxs("svg",{className:"absolute inset-0 size-full overflow-hidden",fill:"none",viewBox:"0 0 32 32",children:[t.jsx("defs",{children:t.jsxs("linearGradient",{id:"agent-detail-border-gradient",gradientUnits:"userSpaceOnUse",x1:"0",y1:"0",x2:"32",y2:"32",children:[t.jsx("animateTransform",{attributeName:"gradientTransform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"6s",repeatCount:"indefinite"}),t.jsx("stop",{offset:"0%",stopColor:"var(--chart-1)"}),t.jsx("stop",{offset:"100%",stopColor:"var(--chart-4)"})]})}),t.jsx("rect",{x:"0.5",y:"0.5",width:"31",height:"31",rx:"5.5",stroke:"url(#agent-detail-border-gradient)",strokeWidth:"1",strokeDasharray:"3 3"})]}),t.jsx(Ve,{size:16})]}),t.jsx("span",{className:"text-sm text-muted-foreground truncate",children:"No connections yet. Add one to get started."})]})]}):t.jsx(jt,{asChild:!0,children:t.jsxs("button",{type:"button",className:"w-full flex items-center justify-between px-6 py-4 hover:bg-muted/50 transition-colors cursor-pointer",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"Connections"}),t.jsxs("div",{className:"flex items-center",children:[t.jsx("div",{className:"ease-(--ease-out-expo)",style:{width:r.skillsOpen?0:"auto",marginRight:r.skillsOpen?0:4,opacity:r.skillsOpen?0:1,pointerEvents:r.skillsOpen?"none":"auto",transitionProperty:"all",transitionDuration:r.skillsOpen?"0ms":"200ms"},children:t.jsx(Xt,{connectionIds:l.map(m=>m.connection_id),maxVisibleIcons:2})}),t.jsxs("div",{role:"button",tabIndex:0,className:"h-7 inline-flex items-center justify-center rounded-md text-sm text-muted-foreground overflow-hidden transition-all duration-200 ease-(--ease-out-expo) hover:bg-accent hover:text-accent-foreground",style:{width:r.skillsOpen?"auto":28,paddingLeft:r.skillsOpen?8:0,paddingRight:r.skillsOpen?8:0,gap:r.skillsOpen?4:0},onPointerDown:m=>{m.stopPropagation()},onClick:m=>{m.stopPropagation(),m.preventDefault(),h()},onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.stopPropagation(),m.preventDefault(),h())},children:[t.jsx(Ve,{size:14,className:"shrink-0"}),t.jsx("span",{className:"overflow-hidden whitespace-nowrap transition-all duration-200 ease-(--ease-out-expo)",style:{width:r.skillsOpen?"auto":0,opacity:r.skillsOpen?1:0},children:"Add"})]}),t.jsx("div",{className:"h-7 inline-flex items-center justify-center overflow-hidden transition-all duration-200 ease-(--ease-out-expo)",style:{width:r.skillsOpen?28:0,opacity:r.skillsOpen?1:0},children:t.jsx(St,{size:16,className:"shrink-0"})})]})]})}),t.jsx("div",{className:"grid overflow-hidden transition-[grid-template-rows] duration-200 ease-(--ease-out-expo)",style:{gridTemplateRows:r.skillsOpen?"1fr":"0fr"},children:t.jsx("div",{className:"min-h-0 overflow-hidden",children:t.jsx("div",{className:"overflow-y-auto max-h-[300px] mask-[linear-gradient(to_bottom,black_calc(100%-40px),transparent_100%)]",children:t.jsx("div",{className:"flex flex-col gap-2 px-6 pb-4 pt-2",children:l.map(m=>t.jsx(S.Suspense,{fallback:t.jsx(Ae.Fallback,{}),children:t.jsx(Ae,{connection_id:m.connection_id,selected_tools:m.selected_tools,selected_resources:m.selected_resources,selected_prompts:m.selected_prompts,onClick:()=>p(m.connection_id)})},m.connection_id))})})})})]}),t.jsxs("div",{className:"flex flex-col flex-1 p-6 border-t border-border overflow-auto",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground mb-2",children:"Instructions"}),t.jsx(Be,{name:"metadata.instructions",control:n.control,render:({field:m})=>t.jsx(Nt,{...m,value:m.value??"",placeholder:"Write instructions here...",className:"min-h-[200px] resize-none text-sm placeholder:text-muted-foreground/50 leading-relaxed border-0 rounded-none shadow-none px-0 focus-visible:ring-0 focus-visible:ring-offset-0 focus:border-0 bg-transparent"})})]})]})}),t.jsx(ks,{open:r.connectionDialogOpen,onOpenChange:m=>d({type:"SET_CONNECTION_DIALOG_OPEN",payload:m}),selectedId:r.editingConnectionId,form:n,connections:l}),t.jsx(Ls,{open:r.shareDialogOpen,onOpenChange:m=>d({type:"SET_SHARE_DIALOG_OPEN",payload:m}),virtualMcp:o})]})}function Ms(){const o=O.c(6),e=tt();let s;o[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org/$project/agents/$agentId"},o[0]=s):s=o[0];const n=st(s),{org:l,agentId:r}=n,d=Ct(r);if(!d){let a;return o[1]!==e||o[2]!==l?(a=t.jsx("div",{className:"flex h-full w-full bg-background",children:t.jsx(it,{title:"Agent not found",description:"This Agent may have been deleted or you may not have access.",actions:t.jsx(Z,{variant:"outline",onClick:()=>e({to:"/$org/$project/agents",params:{org:l,project:Ge}}),children:"Back to agents"})})}),o[1]=e,o[2]=l,o[3]=a):a=o[3],a}let c;return o[4]!==d?(c=t.jsx(Rs,{virtualMcp:d}),o[4]=d,o[5]=c):c=o[5],c}function so(){const o=O.c(1);let e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(fe,{children:t.jsx(S.Suspense,{fallback:t.jsx("div",{className:"flex h-full items-center justify-center bg-background",children:t.jsx(ze,{size:32,className:"animate-spin text-muted-foreground"})}),children:t.jsx(Ms,{})})}),o[0]=e):e=o[0],e}export{so as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as ve,j as s,E as Nt,r as Q,u as Ct,e as yt,B as U,D as X,v as wt,O as St}from"./index-DnJ6a24w.js";import{C as kt}from"./collection-display-button-C42ZnuS7.js";import{C as _t}from"./collection-search-Dzoe9W56.js";import{P as Ce}from"./index-B09Yemt1.js";import{B as Dt,a as zt,b as At,c as Mt}from"./breadcrumb-BWfepeob.js";import{C as gt}from"./connection-card-DuHVLZ35.js";import{B as be}from"./badge-DIWKuwVU.js";import{i as $t}from"./AlertCircle-QngH9BVd.js";import{i as Tt}from"./CheckCircle-DDKCxiAn.js";import{E as lt}from"./empty-state-BjCXvoyS.js";import{I as Ue}from"./integration-icon-C9GR_8Ea.js";import{u as Pt}from"./use-list-state-DrSbpG8C.js";import{u as It}from"./use-create-virtual-mcp-BOxl7MdZ.js";import{i as ye}from"./constants-D5QZg84_.js";import{b as Ot,a as Bt}from"./use-virtual-mcp-DGT5zflo.js";import{c as at,b as rt,d as ot,A as ct,e as dt,h as mt,a as ft,f as ut}from"./alert-dialog-BqCiJDa8.js";import{C as Fe}from"./checkbox-DygphnIU.js";import{c as Lt,d as Et,b as Rt,a as Kt,D as Vt}from"./dialog-B8WS5FOh.js";import{c as Gt,a as Ut,b as Ge,e as te,d as Ft,T as Ht}from"./table-BK1bAac3.js";import{D as et,a as tt,b as st,c as je}from"./dropdown-menu-DE2pKopg.js";import{n as qt}from"./ArrowDown-Ba2t7m6d.js";import{i as Jt}from"./ArrowUp-Wy3Qa9X3.js";import{i as Qt}from"./CheckSquare-IgZnioYh.js";import{t as Wt}from"./ChevronDown-D0b1rvAp.js";import{i as nt}from"./DotsVertical-Bo0fAyx-.js";import{s as it}from"./Eye-Cqad01Et.js";import{i as Xt}from"./Loading01-DQphO9Su.js";import{s as ht}from"./Plus-CURSuoDd.js";import{s as He}from"./Trash01-CYMRq_nY.js";import{t as se}from"./Users03-DEpvReeu.js";import{s as jt}from"./XClose-C-H07PEn.js";import{U as we}from"./user-ChA79mrb.js";import{A as xt}from"./agent-connections-preview-DbwllQSw.js";import{f as Se}from"./format-time-CMKyl-GC.js";import"./Check-CLxUgI8Z.js";import"./Grid01-B9zEjFyx.js";import"./List-D6xZGoxJ.js";import"./tooltip-Csc3oeTz.js";import"./index-hCeFdkUk.js";import"./SearchMd-C8ADHGFY.js";import"./input-BBKBJVKe.js";import"./useQuery-mzOsnjYJ.js";import"./useMutation-Betr8yis.js";import"./ChevronRight-BEUO8jhU.js";import"./card-gfMzoGpr.js";import"./Container-b65PFshp.js";import"./use-view-mode-BeRbE5Df.js";import"./use-mobile-Y3tADOOl.js";import"./use-collections-Le9CzDbY.js";import"./X-BT_y3J3a.js";import"./avatar-BoRF-Me1.js";import"./use-connection-CNeKPAtP.js";import"./differenceInSeconds-NQ4PDo0z.js";function qe(t){const e=ve.c(3),{status:n}=t;if(n==="active"){let i;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsxs(be,{variant:"success",className:"gap-1.5 text-success border-success/40 bg-background",children:[s.jsx(Tt,{size:12}),"Active"]}),e[0]=i):i=e[0],i}if(n==="error"){let i;return e[1]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsxs(be,{variant:"outline",className:"gap-1.5 text-destructive border-destructive/40 bg-background",children:[s.jsx($t,{size:12}),"Error"]}),e[1]=i):i=e[1],i}let o;return e[2]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(be,{variant:"outline",className:"text-muted-foreground",children:"Inactive"}),e[2]=o):o=e[2],o}function pt(t){return t.title.trim().replace(/\s+\(\d+\)$/,"")}function Yt(t){const e=new Map;for(const i of t){const a=pt(i),l=e.get(a);l?l.push(i):e.set(a,[i])}const n=[],o=new Set;for(const i of t){const a=pt(i);if(o.has(a))continue;o.add(a);const l=e.get(a),f=l[0];l.length===1?n.push({type:"single",agent:f}):n.push({type:"group",key:a,icon:f.icon,title:f.title.replace(/\s*\(\d+\)\s*$/,""),agents:l})}return n}function bt(t){const e=new Set,n=[];for(const o of t)o.created_by&&!e.has(o.created_by)&&(e.add(o.created_by),n.push(o.created_by));return n}function Zt(t,e){switch(e.type){case"delete":return{mode:"deleting",virtualMcp:e.virtualMcp};case"close":return{mode:"idle"}}}function es(t){const e=ve.c(107),{group:n,onNavigate:o,onDelete:i,selectionMode:a,selectedIds:l,onToggleSelect:f}=t,[j,g]=Q.useState(!1);let w;if(e[0]!==n.agents||e[1]!==l){let y;e[3]!==l?(y=_=>l.has(_.id),e[3]=l,e[4]=y):y=e[4],w=n.agents.every(y),e[0]=n.agents,e[1]=l,e[2]=w}else w=e[2];const m=w;let D;if(e[5]!==n.agents||e[6]!==l){let y;e[8]!==l?(y=_=>l.has(_.id),e[8]=l,e[9]=y):y=e[9],D=n.agents.some(y),e[5]=n.agents,e[6]=l,e[7]=D}else D=e[7];const c=D;let O,S,d,C,z,P,k,I,A,u,b;if(e[10]!==m||e[11]!==n.agents||e[12]!==n.icon||e[13]!==n.title||e[14]!==f||e[15]!==l||e[16]!==a||e[17]!==c){const y=bt(n.agents),_=n.agents.reduce(is,n.agents[0]),W=_.updated_at??_.created_at;O=gt;const Y=`${n.agents.length} instances`;e[29]!==n.icon||e[30]!==n.title||e[31]!==Y?(A={title:n.title,icon:n.icon,description:Y},e[29]=n.icon,e[30]=n.title,e[31]=Y,e[32]=A):A=e[32],e[33]!==m||e[34]!==n.agents||e[35]!==f||e[36]!==l||e[37]!==a?(u=()=>a?(()=>{for(const E of n.agents)m?l.has(E.id)&&f(E.id):l.has(E.id)||f(E.id)})():g(!0),e[33]=m,e[34]=n.agents,e[35]=f,e[36]=l,e[37]=a,e[38]=u):u=e[38];const q=a&&m&&"ring-2 ring-primary",Z=a&&c&&!m&&"ring-1 ring-primary/50";e[39]!==q||e[40]!==Z?(b=X(q,Z),e[39]=q,e[40]=Z,e[41]=b):b=e[41],e[42]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(se,{}),e[42]=S):S=e[42],e[43]!==m||e[44]!==n.agents||e[45]!==f||e[46]!==l||e[47]!==a||e[48]!==c?(d=a?s.jsx(Fe,{checked:m?!0:c?"indeterminate":!1,onCheckedChange:()=>{for(const E of n.agents)m?l.has(E.id)&&f(E.id):l.has(E.id)||f(E.id)}}):s.jsxs(be,{variant:"secondary",className:"text-xs tabular-nums",children:["x",n.agents.length]}),e[43]=m,e[44]=n.agents,e[45]=f,e[46]=l,e[47]=a,e[48]=c,e[49]=d):d=e[49];let J;e[50]!==n.agents?(J=n.agents.slice(0,6).map(ns),e[50]=n.agents,e[51]=J):J=e[51],e[52]!==J?(C=s.jsx("div",{className:"flex items-center gap-1",children:J}),e[52]=J,e[53]=C):C=e[53],k="flex items-center justify-between text-xs text-muted-foreground w-full min-w-0";const ee=y.map(E=>s.jsx(we,{id:E,size:"3xs",avatarOnly:y.length>1},E));e[54]!==ee?(I=s.jsx("div",{className:"flex items-center -space-x-1.5",children:ee}),e[54]=ee,e[55]=I):I=e[55],z="shrink-0 ml-2",P=W?Se(new Date(W)):"—",e[10]=m,e[11]=n.agents,e[12]=n.icon,e[13]=n.title,e[14]=f,e[15]=l,e[16]=a,e[17]=c,e[18]=O,e[19]=S,e[20]=d,e[21]=C,e[22]=z,e[23]=P,e[24]=k,e[25]=I,e[26]=A,e[27]=u,e[28]=b}else O=e[18],S=e[19],d=e[20],C=e[21],z=e[22],P=e[23],k=e[24],I=e[25],A=e[26],u=e[27],b=e[28];let p;e[56]!==z||e[57]!==P?(p=s.jsx("span",{className:z,children:P}),e[56]=z,e[57]=P,e[58]=p):p=e[58];let M;e[59]!==p||e[60]!==k||e[61]!==I?(M=s.jsxs("div",{className:k,children:[I,p]}),e[59]=p,e[60]=k,e[61]=I,e[62]=M):M=e[62];let $;e[63]!==O||e[64]!==S||e[65]!==d||e[66]!==C||e[67]!==M||e[68]!==A||e[69]!==u||e[70]!==b?($=s.jsx(O,{connection:A,onClick:u,className:b,fallbackIcon:S,headerActions:d,body:C,footer:M}),e[63]=O,e[64]=S,e[65]=d,e[66]=C,e[67]=M,e[68]=A,e[69]=u,e[70]=b,e[71]=$):$=e[71];let B;e[72]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx(se,{}),e[72]=B):B=e[72];let T;e[73]!==n.icon||e[74]!==n.title?(T=s.jsx(Ue,{icon:n.icon,name:n.title,size:"md",className:"shrink-0 shadow-sm",fallbackIcon:B}),e[73]=n.icon,e[74]=n.title,e[75]=T):T=e[75];let L;e[76]!==n.agents.length?(L=s.jsxs(be,{variant:"secondary",className:"ml-2 text-xs tabular-nums",children:["x",n.agents.length]}),e[76]=n.agents.length,e[77]=L):L=e[77];let r;e[78]!==n.title||e[79]!==L?(r=s.jsxs(Lt,{children:[n.title,L]}),e[78]=n.title,e[79]=L,e[80]=r):r=e[80];let h;e[81]!==n.agents.length?(h=s.jsxs(Et,{children:[n.agents.length," instances"]}),e[81]=n.agents.length,e[82]=h):h=e[82];let v;e[83]!==r||e[84]!==h?(v=s.jsxs("div",{children:[r,h]}),e[83]=r,e[84]=h,e[85]=v):v=e[85];let K;e[86]!==T||e[87]!==v?(K=s.jsx(Rt,{className:"px-6 pt-6 pb-4",children:s.jsxs("div",{className:"flex items-center gap-3",children:[T,v]})}),e[86]=T,e[87]=v,e[88]=K):K=e[88];let V;if(e[89]!==n.agents||e[90]!==i||e[91]!==o){let y;e[93]!==i||e[94]!==o?(y=_=>s.jsxs("div",{className:"flex items-center gap-3 px-6 py-3 hover:bg-muted/30 cursor-pointer transition-colors",onClick:()=>{g(!1),o(_.id)},children:[s.jsx(Ue,{icon:_.icon,name:_.title,size:"sm",className:"shrink-0",fallbackIcon:s.jsx(se,{})}),s.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[s.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:_.title}),s.jsx(qe,{status:_.status})]}),s.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground shrink-0",children:[s.jsx(we,{id:_.created_by,size:"3xs"}),s.jsx("span",{children:_.created_at?Se(new Date(_.created_at)):"—"})]}),s.jsxs(et,{children:[s.jsx(tt,{asChild:!0,children:s.jsx(U,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:ss,children:s.jsx(nt,{size:16})})}),s.jsxs(st,{align:"end",onClick:ts,children:[s.jsxs(je,{onClick:()=>{g(!1),o(_.id)},children:[s.jsx(it,{size:16}),"Open"]}),!ye(_.id)&&s.jsxs(je,{variant:"destructive",onClick:()=>i(_),children:[s.jsx(He,{size:16}),"Delete"]})]})]})]},_.id),e[93]=i,e[94]=o,e[95]=y):y=e[95],V=n.agents.map(y),e[89]=n.agents,e[90]=i,e[91]=o,e[92]=V}else V=e[92];let F;e[96]!==V?(F=s.jsx("div",{className:"divide-y max-h-80 overflow-auto",children:V}),e[96]=V,e[97]=F):F=e[97];let R;e[98]!==K||e[99]!==F?(R=s.jsxs(Kt,{className:"sm:max-w-lg p-0 gap-0",children:[K,F]}),e[98]=K,e[99]=F,e[100]=R):R=e[100];let G;e[101]!==j||e[102]!==R?(G=s.jsx(Vt,{open:j,onOpenChange:g,children:R}),e[101]=j,e[102]=R,e[103]=G):G=e[103];let H;return e[104]!==$||e[105]!==G?(H=s.jsxs(s.Fragment,{children:[$,G]}),e[104]=$,e[105]=G,e[106]=H):H=e[106],H}function ts(t){return t.stopPropagation()}function ss(t){return t.stopPropagation()}function ns(t){return s.jsx(qe,{status:t.status},t.id)}function is(t,e){const n=e.updated_at??e.created_at,o=t.updated_at??t.created_at;return n?o?new Date(n)>new Date(o)?e:t:e:t}function ls(t){const e=ve.c(21),{count:n,total:o,onSelectAll:i,onDeselectAll:a,onDelete:l,onCancel:f}=t;if(n===0)return null;let j;e[0]!==n?(j=s.jsxs("span",{className:"text-sm font-medium tabular-nums",children:[n," selected"]}),e[0]=n,e[1]=j):j=e[1];let g;e[2]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx("div",{className:"h-4 w-px bg-border"}),e[2]=g):g=e[2];let w;e[3]!==n||e[4]!==a||e[5]!==i||e[6]!==o?(w=n<o?s.jsxs(U,{variant:"ghost",size:"sm",onClick:i,children:["Select all (",o,")"]}):s.jsx(U,{variant:"ghost",size:"sm",onClick:a,children:"Clear selection"}),e[3]=n,e[4]=a,e[5]=i,e[6]=o,e[7]=w):w=e[7];let m;e[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"h-4 w-px bg-border"}),e[8]=m):m=e[8];let D;e[9]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(He,{size:14}),e[9]=D):D=e[9];let c;e[10]!==l?(c=s.jsxs(U,{variant:"ghost",size:"sm",className:"text-destructive hover:text-destructive",onClick:l,children:[D,"Delete"]}),e[10]=l,e[11]=c):c=e[11];let O;e[12]===Symbol.for("react.memo_cache_sentinel")?(O=s.jsx("div",{className:"h-4 w-px bg-border"}),e[12]=O):O=e[12];let S;e[13]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(jt,{size:14}),e[13]=S):S=e[13];let d;e[14]!==f?(d=s.jsxs(U,{variant:"ghost",size:"sm",onClick:f,children:[S,"Cancel"]}),e[14]=f,e[15]=d):d=e[15];let C;return e[16]!==j||e[17]!==w||e[18]!==c||e[19]!==d?(C=s.jsxs("div",{className:"fixed bottom-4 left-1/2 z-50 -translate-x-1/2 flex items-center gap-3 rounded-xl border border-border bg-background/95 backdrop-blur px-4 py-2.5 shadow-lg",children:[j,g,w,m,c,O,d]}),e[16]=j,e[17]=w,e[18]=c,e[19]=d,e[20]=C):C=e[20],C}function as(t){const e=ve.c(37),{columns:n,grouped:o,sortKey:i,sortDirection:a,onSort:l,onRowClick:f,selectionMode:j,selectedIds:g,onToggleSelect:w,emptyState:m}=t;let D;e[0]===Symbol.for("react.memo_cache_sentinel")?(D=new Set,e[0]=D):D=e[0];const[c,O]=Q.useState(D);let S;e[1]===Symbol.for("react.memo_cache_sentinel")?(S=u=>{O(b=>{const p=new Set(b);return p.has(u)?p.delete(u):p.add(u),p})},e[1]=S):S=e[1];const d=S;if(o.length===0&&m){let u;return e[2]!==m?(u=s.jsx("div",{className:"flex items-center justify-center h-full",children:m}),e[2]=m,e[3]=u):u=e[3],u}const C=n.length;let z;if(e[4]!==C||e[5]!==n||e[6]!==l||e[7]!==a||e[8]!==i){let u;e[10]!==C||e[11]!==l||e[12]!==a||e[13]!==i?(u=(b,p)=>{const M=i===b.id,$=p===C-1;return s.jsx(Gt,{className:X("px-4 py-2 text-left font-mono font-normal text-muted-foreground text-[11px] h-9 uppercase tracking-wider",$&&"w-8","group transition-colors select-none",b.sortable&&"hover:bg-accent cursor-pointer",b.cellClassName),onClick:b.sortable&&l?()=>l(b.id):void 0,children:s.jsxs("span",{className:"flex items-center gap-1",children:[b.header,b.sortable&&s.jsx("span",{className:"w-4 flex items-center justify-center",children:M&&a&&(a==="asc"?s.jsx(Jt,{size:16,className:"text-muted-foreground"}):s.jsx(qt,{size:16,className:"text-muted-foreground"}))})]})},b.id)},e[10]=C,e[11]=l,e[12]=a,e[13]=i,e[14]=u):u=e[14],z=n.map(u),e[4]=C,e[5]=n,e[6]=l,e[7]=a,e[8]=i,e[9]=z}else z=e[9];let P;e[15]!==z?(P=s.jsx(Ut,{className:"border-b-0",children:s.jsx(Ge,{className:"h-9 hover:bg-transparent border-b border-border",children:z})}),e[15]=z,e[16]=P):P=e[16];let k;if(e[17]!==n||e[18]!==c||e[19]!==o||e[20]!==f||e[21]!==w||e[22]!==g||e[23]!==j){let u;e[25]!==n||e[26]!==c||e[27]!==f||e[28]!==w||e[29]!==g||e[30]!==j?(u=b=>{if(b.type==="single"){const r=b.agent;return s.jsx(Ge,{className:X("group/data-row transition-colors border-b-0 hover:bg-accent/50 cursor-pointer",j&&g.has(r.id)&&"bg-primary/5"),onClick:()=>f(r),children:n.map(h=>s.jsx(te,{className:X("px-5 py-4 h-16 align-middle text-sm text-foreground",h.cellClassName),children:s.jsx("div",{className:"min-w-0 w-full truncate overflow-hidden whitespace-nowrap",children:h.render?h.render(r):null})},h.id))},r.id)}const p=b,M=c.has(p.key),$=p.agents.every(r=>g.has(r.id)),B=p.agents.some(r=>g.has(r.id)),T=bt(p.agents),L=p.agents.reduce(os,p.agents[0]);return s.jsxs(Q.Fragment,{children:[s.jsx(Ge,{className:"border-b-0 hover:bg-accent/50 cursor-pointer transition-colors",onClick:()=>d(p.key),children:n.map(r=>{const h=X("px-5 py-3 h-14 align-middle text-sm",r.cellClassName);if(r.id==="select")return s.jsx(te,{className:h,children:s.jsx(Fe,{checked:$?!0:B?"indeterminate":!1,onCheckedChange:()=>{for(const v of p.agents)$?g.has(v.id)&&w(v.id):g.has(v.id)||w(v.id)},onClick:rs})},r.id);if(r.id==="title")return s.jsx(te,{className:h,children:s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.jsx(Ue,{icon:p.icon,name:p.title,size:"sm",className:"shrink-0 shadow-sm",fallbackIcon:s.jsx(se,{size:16})}),s.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:p.title}),s.jsxs(be,{variant:"secondary",className:"text-xs tabular-nums",children:["x",p.agents.length]})]})},r.id);if(r.id==="updated_by")return s.jsx(te,{className:h,children:s.jsx("div",{className:"flex items-center -space-x-1.5",children:T.map(v=>s.jsx(we,{id:v,size:"3xs",avatarOnly:T.length>1},v))})},r.id);if(r.id==="updated_at"){const v=L.updated_at??L.created_at;return s.jsx(te,{className:h,children:s.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:v?Se(new Date(v)):"—"})},r.id)}return r.id==="actions"?s.jsx(te,{className:h,children:s.jsx(Wt,{size:16,className:X("text-muted-foreground transition-transform",M&&"rotate-180")})},r.id):s.jsx(te,{className:h},r.id)})}),M&&p.agents.map(r=>s.jsx(Ge,{className:X("group/data-row transition-colors border-b-0 hover:bg-accent/50 cursor-pointer bg-muted/20",j&&g.has(r.id)&&"bg-primary/5"),onClick:()=>f(r),children:n.map(h=>s.jsx(te,{className:X("px-5 py-3 h-14 align-middle text-sm text-foreground",h.cellClassName,h.id==="title"&&"pl-12"),children:s.jsx("div",{className:"min-w-0 w-full truncate overflow-hidden whitespace-nowrap",children:h.render?h.render(r):null})},h.id))},r.id))]},p.key)},e[25]=n,e[26]=c,e[27]=f,e[28]=w,e[29]=g,e[30]=j,e[31]=u):u=e[31],k=o.map(u),e[17]=n,e[18]=c,e[19]=o,e[20]=f,e[21]=w,e[22]=g,e[23]=j,e[24]=k}else k=e[24];let I;e[32]!==k?(I=s.jsx(Ft,{children:k}),e[32]=k,e[33]=I):I=e[33];let A;return e[34]!==P||e[35]!==I?(A=s.jsx("div",{className:"flex-1 overflow-auto",children:s.jsxs(Ht,{className:"w-full border-collapse",children:[P,I]})}),e[34]=P,e[35]=I,e[36]=A):A=e[36],A}function rs(t){return t.stopPropagation()}function os(t,e){const n=e.updated_at??e.created_at,o=t.updated_at??t.created_at;return n?o?new Date(n)>new Date(o)?e:t:e:t}function cs(){const t=ve.c(138),{org:e}=Ct(),n=yt();let o;t[0]!==e.slug?(o={namespace:e.slug,resource:"agents"},t[0]=e.slug,t[1]=o):o=t[1];const i=Pt(o),a=Ot(i);let l;t[2]===Symbol.for("react.memo_cache_sentinel")?(l={navigateOnCreate:!0},t[2]=l):l=t[2];const{createVirtualMCP:f,isCreating:j}=It(l),g=Bt();let w;t[3]===Symbol.for("react.memo_cache_sentinel")?(w={mode:"idle"},t[3]=w):w=t[3];const[m,D]=Q.useReducer(Zt,w),[c,O]=Q.useState(!1);let S;t[4]===Symbol.for("react.memo_cache_sentinel")?(S=new Set,t[4]=S):S=t[4];const[d,C]=Q.useState(S),[z,P]=Q.useState(!1),[k,I]=Q.useState("ALL");let A;t[5]===Symbol.for("react.memo_cache_sentinel")?(A=R=>{C(G=>{const H=new Set(G);return H.has(R)?H.delete(R):H.add(R),H})},t[5]=A):A=t[5];const u=A;let b;t[6]===Symbol.for("react.memo_cache_sentinel")?(b=()=>{O(!1),C(new Set)},t[6]=b):b=t[6];const p=b;let M,$,B,T,L,r,h,v;if(t[7]!==g||t[8]!==z||t[9]!==f||t[10]!==m.mode||t[11]!==m.virtualMcp||t[12]!==j||t[13]!==i||t[14]!==n||t[15]!==e.slug||t[16]!==d||t[17]!==c||t[18]!==k||t[19]!==a){let R;t[28]!==k?(R=x=>!(k!=="ALL"&&x.status!==k),t[28]=k,t[29]=R):R=t[29],B=a.filter(R);const G=Yt(B),H=a.length;let y;t[30]!==a?(y=a.filter(ws),t[30]=a,t[31]=y):y=t[31];const _=y.length;let W;t[32]!==a?(W=a.filter(ys),t[32]=a,t[33]=W):W=t[33];let Y;t[34]!==y.length||t[35]!==W.length||t[36]!==a.length?(Y={total:H,active:_,inactive:W.length},t[34]=y.length,t[35]=W.length,t[36]=a.length,t[37]=Y):Y=t[37];const q=Y;let Z;t[38]!==g||t[39]!==m.mode||t[40]!==m.virtualMcp?(Z=async()=>{if(m.mode!=="deleting")return;const x=m.virtualMcp.id;if(D({type:"close"}),!(!x||ye(x)))try{await g.delete.mutateAsync(x)}catch{}},t[38]=g,t[39]=m.mode,t[40]=m.virtualMcp,t[41]=Z):Z=t[41];const J=Z;let ee;t[42]!==g||t[43]!==d?(ee=async()=>{P(!1);let x=0;for(const N of d)if(!ye(N))try{await g.delete.mutateAsync(N),x++}catch{}wt.success(`Deleted ${x} agent${x!==1?"s":""}`),p()},t[42]=g,t[43]=d,t[44]=ee):ee=t[44];const E=ee;let ke;t[45]!==n||t[46]!==e.slug||t[47]!==c?(ke=x=>{if(c){u(x);return}n({to:"/$org/$project/agents/$agentId",params:{org:e.slug,project:St,agentId:x}})},t[45]=n,t[46]=e.slug,t[47]=c,t[48]=ke):ke=t[48];const ne=ke;let ie;t[49]!==d||t[50]!==c?(ie=c?[{id:"select",header:"",render:x=>s.jsx(Fe,{checked:d.has(x.id),onCheckedChange:()=>u(x.id),onClick:Cs}),cellClassName:"w-10 shrink-0"}]:[],t[49]=d,t[50]=c,t[51]=ie):ie=t[51];let _e,De,ze,Ae,Me,$e;t[52]===Symbol.for("react.memo_cache_sentinel")?(_e={id:"title",header:"Name",render:Ns,cellClassName:"w-48 min-w-0 shrink-0",sortable:!0},De={id:"description",header:"Description",render:vs,cellClassName:"flex-1 min-w-0",wrap:!0,sortable:!0},ze={id:"connections",header:"Connections",render:js,cellClassName:"w-28 shrink-0"},Ae={id:"status",header:"Status",render:gs,cellClassName:"w-24 shrink-0"},Me={id:"updated_by",header:"Updated by",render:ps,cellClassName:"w-32 shrink-0",sortable:!0},$e={id:"updated_at",header:"Updated",render:xs,cellClassName:"max-w-24 w-24 shrink-0",sortable:!0},t[52]=_e,t[53]=De,t[54]=ze,t[55]=Ae,t[56]=Me,t[57]=$e):(_e=t[52],De=t[53],ze=t[54],Ae=t[55],Me=t[56],$e=t[57]);let le;t[58]!==ne?(le={id:"actions",header:"",render:x=>s.jsxs(et,{children:[s.jsx(tt,{asChild:!0,children:s.jsx(U,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:hs,children:s.jsx(nt,{size:20})})}),s.jsxs(st,{align:"end",onClick:us,children:[s.jsxs(je,{onClick:N=>{N.stopPropagation(),ne(x.id)},children:[s.jsx(it,{size:16}),"Open"]}),!ye(x.id)&&s.jsxs(je,{variant:"destructive",onClick:N=>{N.stopPropagation(),D({type:"delete",virtualMcp:x})},children:[s.jsx(He,{size:16}),"Delete"]})]})]}),cellClassName:"w-12 shrink-0"},t[58]=ne,t[59]=le):le=t[59];let Te;t[60]!==ie||t[61]!==le?(Te=[...ie,_e,De,ze,Ae,Me,$e,le],t[60]=ie,t[61]=le,t[62]=Te):Te=t[62];const vt=Te;let Pe;t[63]!==f||t[64]!==j||t[65]!==c?(Pe=s.jsx("div",{className:"flex items-center gap-2",children:c?s.jsxs(U,{variant:"ghost",size:"sm",className:"h-7 px-3 rounded-lg text-sm font-medium",onClick:p,children:[s.jsx(jt,{size:14}),"Cancel"]}):s.jsxs(s.Fragment,{children:[s.jsxs(U,{variant:"outline",size:"sm",className:"h-7 px-3 rounded-lg text-sm font-medium",onClick:()=>O(!0),children:[s.jsx(Qt,{size:14}),"Select"]}),s.jsx(U,{onClick:f,size:"sm",className:"h-7 px-3 rounded-lg text-sm font-medium",disabled:j,children:j?"Creating...":"Create Agent"})]})}),t[63]=f,t[64]=j,t[65]=c,t[66]=Pe):Pe=t[66];const Je=Pe;$=Ce;const Qe=m.mode==="deleting";let Ie;t[67]===Symbol.for("react.memo_cache_sentinel")?(Ie=x=>!x&&D({type:"close"}),t[67]=Ie):Ie=t[67];let Oe;t[68]===Symbol.for("react.memo_cache_sentinel")?(Oe=s.jsx(at,{children:"Delete Agent?"}),t[68]=Oe):Oe=t[68];const We=m.mode==="deleting"&&m.virtualMcp.title;let ae;t[69]!==We?(ae=s.jsxs(rt,{children:[Oe,s.jsxs(ot,{children:["This action cannot be undone. This will permanently delete"," ",s.jsx("span",{className:"font-medium text-foreground",children:We}),"."]})]}),t[69]=We,t[70]=ae):ae=t[70];let Be;t[71]===Symbol.for("react.memo_cache_sentinel")?(Be=s.jsx(ct,{children:"Cancel"}),t[71]=Be):Be=t[71];let re;t[72]!==J?(re=s.jsxs(dt,{children:[Be,s.jsx(mt,{onClick:J,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]}),t[72]=J,t[73]=re):re=t[73];let oe;t[74]!==ae||t[75]!==re?(oe=s.jsxs(ft,{children:[ae,re]}),t[74]=ae,t[75]=re,t[76]=oe):oe=t[76],t[77]!==Qe||t[78]!==oe?(r=s.jsx(ut,{open:Qe,onOpenChange:Ie,children:oe}),t[77]=Qe,t[78]=oe,t[79]=r):r=t[79];const Xe=d.size!==1?"s":"";let ce;t[80]!==d.size||t[81]!==Xe?(ce=s.jsxs(at,{children:["Delete ",d.size," agent",Xe,"?"]}),t[80]=d.size,t[81]=Xe,t[82]=ce):ce=t[82];let Le;t[83]===Symbol.for("react.memo_cache_sentinel")?(Le=s.jsx(ot,{children:"This action cannot be undone. This will permanently delete the selected agents."}),t[83]=Le):Le=t[83];let de;t[84]!==ce?(de=s.jsxs(rt,{children:[ce,Le]}),t[84]=ce,t[85]=de):de=t[85];let Ee;t[86]===Symbol.for("react.memo_cache_sentinel")?(Ee=s.jsx(ct,{children:"Cancel"}),t[86]=Ee):Ee=t[86];let me;t[87]!==E?(me=s.jsxs(dt,{children:[Ee,s.jsx(mt,{onClick:E,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]}),t[87]=E,t[88]=me):me=t[88];let fe;t[89]!==de||t[90]!==me?(fe=s.jsxs(ft,{children:[de,me]}),t[89]=de,t[90]=me,t[91]=fe):fe=t[91],t[92]!==z||t[93]!==fe?(h=s.jsx(ut,{open:z,onOpenChange:P,children:fe}),t[92]=z,t[93]=fe,t[94]=h):h=t[94];const Ye=q.active>0&&` · ${q.active} active`,Ze=q.inactive>0&&` · ${q.inactive} inactive`;let ue;t[95]!==q.total||t[96]!==Ye||t[97]!==Ze?(ue=s.jsx(Ce.Header.Left,{children:s.jsx(Dt,{children:s.jsx(zt,{children:s.jsx(At,{children:s.jsxs(Mt,{className:"flex items-center gap-2",children:["Agents",s.jsxs("span",{className:"text-xs font-normal text-muted-foreground tabular-nums",children:[q.total," total",Ye,Ze]})]})})})})}),t[95]=q.total,t[96]=Ye,t[97]=Ze,t[98]=ue):ue=t[98];let Re;t[99]===Symbol.for("react.memo_cache_sentinel")?(Re=[{id:"title",label:"Name"},{id:"description",label:"Description"},{id:"updated_by",label:"Updated by"},{id:"updated_at",label:"Updated"}],t[99]=Re):Re=t[99];let Ke,Ve;t[100]===Symbol.for("react.memo_cache_sentinel")?(Ke=x=>I(x||"ALL"),Ve=[{id:"ALL",label:"All"},{id:"active",label:"Active"},{id:"inactive",label:"Inactive"}],t[100]=Ke,t[101]=Ve):(Ke=t[100],Ve=t[101]);let he;t[102]!==k?(he=[{label:"Status",value:k,onChange:Ke,options:Ve}],t[102]=k,t[103]=he):he=t[103];let xe;t[104]!==i.handleSort||t[105]!==i.setViewMode||t[106]!==i.sortDirection||t[107]!==i.sortKey||t[108]!==i.viewMode||t[109]!==he?(xe=s.jsx(kt,{viewMode:i.viewMode,onViewModeChange:i.setViewMode,sortKey:i.sortKey,sortDirection:i.sortDirection,onSort:i.handleSort,sortOptions:Re,filters:he}),t[104]=i.handleSort,t[105]=i.setViewMode,t[106]=i.sortDirection,t[107]=i.sortKey,t[108]=i.viewMode,t[109]=he,t[110]=xe):xe=t[110];let pe;t[111]!==Je||t[112]!==xe?(pe=s.jsxs(Ce.Header.Right,{children:[xe,Je]}),t[111]=Je,t[112]=xe,t[113]=pe):pe=t[113],t[114]!==ue||t[115]!==pe?(v=s.jsxs(Ce.Header,{children:[ue,pe]}),t[114]=ue,t[115]=pe,t[116]=v):v=t[116];let ge;t[117]!==i?(ge=x=>{x.key==="Escape"&&(i.setSearch(""),x.target.blur())},t[117]=i,t[118]=ge):ge=t[118],t[119]!==i.search||t[120]!==i.setSearch||t[121]!==ge?(T=s.jsx("div",{className:"flex items-center gap-3 px-5 pb-0",children:s.jsx("div",{className:"flex-1",children:s.jsx(_t,{value:i.search,onChange:i.setSearch,placeholder:"Search for an agent...",onKeyDown:ge})})}),t[119]=i.search,t[120]=i.setSearch,t[121]=ge,t[122]=T):T=t[122],M=Ce.Content,L=i.viewMode==="cards"?s.jsx("div",{className:"flex-1 overflow-auto p-5",children:B.length===0?s.jsx("div",{className:"flex items-center h-full",children:s.jsx(lt,{image:s.jsx(se,{size:48,className:"text-muted-foreground"}),title:i.search?"No agents found":"No agents yet",description:i.search?`No agents match "${i.search}"`:"Create an agent to aggregate tools from multiple Connections.",actions:!i.search&&s.jsxs(U,{size:"sm",onClick:f,disabled:j,children:[s.jsx(ht,{size:14}),j?"Creating...":"Create Agent"]})})}):s.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:G.map(x=>{if(x.type==="group")return s.jsx(es,{group:x,onNavigate:ne,onDelete:Ne=>D({type:"delete",virtualMcp:Ne}),selectionMode:c,selectedIds:d,onToggleSelect:u},x.key);const N=x.agent;return s.jsxs("div",{className:"relative",children:[c&&s.jsx("div",{className:"absolute top-3 left-3 z-10",children:s.jsx(Fe,{checked:d.has(N.id),onCheckedChange:()=>u(N.id)})}),s.jsx(gt,{connection:{id:N.id??"",title:N.title,description:N.description,icon:N.icon,status:N.status},fallbackIcon:s.jsx(se,{}),onClick:()=>ne(N.id),className:X(c&&d.has(N.id)&&"ring-2 ring-primary"),body:s.jsx(qe,{status:N.status}),footer:s.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground w-full min-w-0",children:[s.jsx("div",{className:"flex-1 min-w-0",children:s.jsx(we,{id:N.updated_by??N.created_by,size:"3xs"})}),s.jsx("span",{className:"shrink-0 ml-2",children:N.updated_at?Se(new Date(N.updated_at)):"—"})]}),headerActions:c?void 0:s.jsxs(et,{children:[s.jsx(tt,{asChild:!0,children:s.jsx(U,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:fs,children:s.jsx(nt,{size:20})})}),s.jsxs(st,{align:"end",onClick:ms,children:[s.jsxs(je,{onClick:Ne=>{Ne.stopPropagation(),ne(N.id)},children:[s.jsx(it,{size:16}),"Open"]}),!ye(N.id)&&s.jsxs(je,{variant:"destructive",onClick:Ne=>{Ne.stopPropagation(),D({type:"delete",virtualMcp:N})},children:[s.jsx(He,{size:16}),"Delete"]})]})]})})]},N.id)})})}):s.jsx("div",{className:"h-full flex flex-col overflow-hidden",children:s.jsx("div",{className:"flex-1 overflow-auto min-w-0",children:G.length===0?s.jsx("div",{className:"flex items-center h-full",children:s.jsx(lt,{image:s.jsx(se,{size:48,className:"text-muted-foreground"}),title:i.search?"No agents found":"No agents yet",description:i.search?`No agents match "${i.search}"`:"Create an agent to aggregate tools from multiple Connections.",actions:!i.search&&s.jsxs(U,{size:"sm",onClick:f,disabled:j,children:[s.jsx(ht,{size:14}),j?"Creating...":"Create Agent"]})})}):s.jsx("div",{className:"min-w-[1000px]",children:s.jsx(as,{columns:vt,grouped:G,sortKey:i.sortKey,sortDirection:i.sortDirection,onSort:i.handleSort,onRowClick:x=>ne(x.id),selectionMode:c,selectedIds:d,onToggleSelect:u})})})}),t[7]=g,t[8]=z,t[9]=f,t[10]=m.mode,t[11]=m.virtualMcp,t[12]=j,t[13]=i,t[14]=n,t[15]=e.slug,t[16]=d,t[17]=c,t[18]=k,t[19]=a,t[20]=M,t[21]=$,t[22]=B,t[23]=T,t[24]=L,t[25]=r,t[26]=h,t[27]=v}else M=t[20],$=t[21],B=t[22],T=t[23],L=t[24],r=t[25],h=t[26],v=t[27];let K;t[123]!==M||t[124]!==L?(K=s.jsx(M,{children:L}),t[123]=M,t[124]=L,t[125]=K):K=t[125];let V;t[126]!==B||t[127]!==d.size||t[128]!==c?(V=c&&s.jsx(ls,{count:d.size,total:B.length,onSelectAll:()=>C(new Set(B.map(ds))),onDeselectAll:()=>C(new Set),onDelete:()=>P(!0),onCancel:p}),t[126]=B,t[127]=d.size,t[128]=c,t[129]=V):V=t[129];let F;return t[130]!==$||t[131]!==T||t[132]!==K||t[133]!==V||t[134]!==r||t[135]!==h||t[136]!==v?(F=s.jsxs($,{children:[r,h,v,T,K,V]}),t[130]=$,t[131]=T,t[132]=K,t[133]=V,t[134]=r,t[135]=h,t[136]=v,t[137]=F):F=t[137],F}function ds(t){return t.id}function ms(t){return t.stopPropagation()}function fs(t){return t.stopPropagation()}function us(t){return t.stopPropagation()}function hs(t){return t.stopPropagation()}function xs(t){return s.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:t.updated_at?Se(new Date(t.updated_at)):"—"})}function ps(t){return s.jsx(we,{id:t.updated_by??t.created_by,size:"3xs"})}function gs(t){return s.jsx(qe,{status:t.status})}function js(t){return s.jsx(Q.Suspense,{fallback:s.jsx(xt.Fallback,{}),children:s.jsx(xt,{connectionIds:t.connections.map(bs),maxVisibleIcons:2})})}function bs(t){return t.connection_id}function vs(t){return s.jsx("span",{className:"text-sm text-foreground line-clamp-2",children:t.description||"—"})}function Ns(t){return s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.jsx(Ue,{icon:t.icon,name:t.title,size:"sm",className:"shrink-0 shadow-sm",fallbackIcon:s.jsx(se,{size:16})}),s.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:t.title})]})}function Cs(t){return t.stopPropagation()}function ys(t){return t.status==="inactive"}function ws(t){return t.status==="active"}function Sn(){const t=ve.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=s.jsx(Nt,{children:s.jsx(Q.Suspense,{fallback:s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsx(Xt,{size:32,className:"animate-spin text-muted-foreground"})}),children:s.jsx(cs,{})})}),t[0]=e):e=t[0],e}export{Sn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,g as ve,e as be,u as ae,r as T,j as t,Q as _e,O as X,v as I,B as U,t as Ce,U as Ne,w as Se,K as q}from"./index-DnJ6a24w.js";import{E as le}from"./empty-state-BjCXvoyS.js";import{V as ce,a as we}from"./layout-10Sxtyop.js";import{S as ke}from"./save-actions-BxTuQTa4.js";import{u as De}from"./ai-providers-logos-DGTpC_MW.js";import{T as Ae,a as Te,M as Ie,S as Z}from"./task-status-DCsPkppQ.js";import{V as ee}from"./select-virtual-mcp-CZJoA7HG.js";import{I as Me}from"./integration-icon-C9GR_8Ea.js";import{U as Ee}from"./user-ChA79mrb.js";import{c as $e,b as ze,d as Oe,e as G,f as Re}from"./use-automations-CPlNdxed.js";import{a as de}from"./index-B09Yemt1.js";import{b as me,d as ue,c as pe,A as fe,e as xe,h as he,a as ge,f as ye}from"./alert-dialog-BqCiJDa8.js";import{b as te,d as Pe,c as Ve,e as Fe,B as Le,a as Ue}from"./breadcrumb-BWfepeob.js";import{I as Be}from"./input-BBKBJVKe.js";import{c as se,a as He,d as Ke,e as Qe,f as We,b as qe,D as Ge}from"./dropdown-menu-DE2pKopg.js";import{P as re,a as ne,b as oe}from"./popover-vDURg2rv.js";import{S as Je}from"./switch-bfk4EFAk.js";import{T as Ye,a as Xe,b as Ze}from"./tooltip-Csc3oeTz.js";import{u as et}from"./useQuery-mzOsnjYJ.js";import{i as tt,u as st,a as rt}from"./constants-D5QZg84_.js";import{b as nt}from"./use-virtual-mcp-DGT5zflo.js";import{i as ot}from"./ArrowUp-Wy3Qa9X3.js";import{s as H}from"./Clock-Aquumu5W.js";import{i as it}from"./Edit01-BeW3IgwV.js";import{i as Q}from"./Loading01-DQphO9Su.js";import{s as at}from"./Plus-CURSuoDd.js";import{s as lt}from"./Trash01-CYMRq_nY.js";import{t as ie}from"./Users03-DEpvReeu.js";import{s as J}from"./XClose-C-H07PEn.js";import{a as je,t as ct,b as dt}from"./context-CGMT963w.js";import{f as mt}from"./formatDistanceToNow-Cb2QZZJn.js";import"./Save01-CpNh-fPw.js";import"./skeleton-NLo71_Sb.js";import"./spinner-EdHFCjIL.js";import"./use-mcp-prompts-D4XXlnov.js";import"./dialog-B8WS5FOh.js";import"./X-BT_y3J3a.js";import"./form-tOTNzCZe.js";import"./label-DJvdRQ2A.js";import"./index-BLtI6TU9.js";import"./usage-BW6ztpN6.js";import"./ChevronDown-D0b1rvAp.js";import"./Lock01-Cbqd9PVH.js";import"./use-copy-CR_0d0zs.js";import"./AlertCircle-QngH9BVd.js";import"./select-Bbaj2HCW.js";import"./ChevronUp-BWhuIqS7.js";import"./index-hCeFdkUk.js";import"./Check-CLxUgI8Z.js";import"./org-ai-providers-4gYTufEL.js";import"./useMutation-Betr8yis.js";import"./EyeOff-rTYDCZUH.js";import"./Eye-Cqad01Et.js";import"./Key01-V3zgT2bk.js";import"./card-gfMzoGpr.js";import"./toggle-group-Dak-s1p3.js";import"./avatar-BoRF-Me1.js";import"./ArrowLeft-DX2ldnBo.js";import"./tabs-aIY_aIUV.js";import"./checkbox-DygphnIU.js";import"./AlignLeft-BUW8XsMa.js";import"./Image01-zSA25K9S.js";import"./RefreshCcw01-oV1XFIRn.js";import"./SearchMd-C8ADHGFY.js";import"./Settings01-B76KnDHb.js";import"./Tool01-DlbILfZg.js";import"./use-mcp-resources-BueR0w1E.js";import"./ChevronRight-BEUO8jhU.js";import"./Copy01-Ds0OKZs5.js";import"./collapsible-BJo6q_NJ.js";import"./index-CMImT9Gt.js";import"./marked.esm-BaswSlok.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-C3qFwvPf.js";import"./types-BOmhR0hZ.js";import"./Globe02-DlxZmkSI.js";import"./LayersTwo01-D3otbQFN.js";import"./use-collections-Le9CzDbY.js";import"./useSuspenseInfiniteQuery-DFs2FFlW.js";import"./infiniteQueryObserver-XS4LWR6q.js";import"./CheckCircle-DDKCxiAn.js";import"./use-create-virtual-mcp-BOxl7MdZ.js";import"./Container-b65PFshp.js";import"./decopilot-events-Brt4gAR6.js";import"./index-Bwlq4qOs.js";import"./differenceInSeconds-NQ4PDo0z.js";function K(s){const e=s.trim().split(/\s+/);return e.length!==5?!1:e.every(r=>/^[\d*/,\-]+$/.test(r))}function ut(s){if(!s)return"Unknown schedule";const e=s.trim();if(e==="* * * * *")return"Every minute";if(e==="0 * * * *")return"Every hour";if(e==="0 0 * * *")return"Every day";if(e==="0 0 * * 1")return"Every week";const r=e.match(/^\*\/(\d+)\s+\*\s+\*\s+\*\s+\*$/);if(r)return`Every ${r[1]} minutes`;const n=e.match(/^0\s+\*\/(\d+)\s+\*\s+\*\s+\*$/);if(n)return`Every ${n[1]} hours`;const o=e.match(/^0\s+0\s+\*\/(\d+)\s+\*\s+\*$/);if(o){const f=parseInt(o[1]??"1");return f%7===0?`Every ${f/7} weeks`:`Every ${f} days`}const a=e.match(/^(\d+)\s+(\d+)\s+\*\s+\*\s+\*$/);if(a){const f=(a[2]??"0").padStart(2,"0"),d=(a[1]??"0").padStart(2,"0");return`Every day at ${f}:${d} UTC`}const x=e.match(/^(\d+)\s+(\d+)\s+\*\s+\*\s+(\d)$/);if(x){const d=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][parseInt(x[3]??"0")]??"day",l=(x[2]??"0").padStart(2,"0"),y=(x[1]??"0").padStart(2,"0");return`Every ${d} at ${l}:${y} UTC`}return s}function pt(s,e){const r=Math.max(1,s);switch(e){case"minutes":return r===1?"* * * * *":`*/${r} * * * *`;case"hours":return r===1?"0 * * * *":`0 */${r} * * *`;case"days":return r===1?"0 0 * * *":`0 0 */${r} * *`;case"weeks":return r===1?"0 0 * * 1":`0 0 */${r*7} * *`}}function ft(s){const e=s.trim();if(e==="* * * * *")return{count:1,unit:"minutes"};if(e==="0 * * * *")return{count:1,unit:"hours"};if(e==="0 0 * * *")return{count:1,unit:"days"};if(e==="0 0 * * 1")return{count:1,unit:"weeks"};const r=e.match(/^\*\/(\d+)\s+\*\s+\*\s+\*\s+\*$/);if(r)return{count:parseInt(r[1]),unit:"minutes"};const n=e.match(/^0\s+\*\/(\d+)\s+\*\s+\*\s+\*$/);if(n)return{count:parseInt(n[1]),unit:"hours"};const o=e.match(/^0\s+0\s+\*\/(\d+)\s+\*\s+\*$/);if(o){const a=parseInt(o[1]);return a%7===0?{count:a/7,unit:"weeks"}:{count:a,unit:"days"}}return null}function xt(s,e){return e===1?{minutes:"minute",hours:"hour",days:"day",weeks:"week"}[s]??s:s}const ht=[{label:"Minute",cron:"* * * * *"},{label:"Hour",cron:"0 * * * *"},{label:"Day",cron:"0 0 * * *"},{label:"Week",cron:"0 0 * * 1"}];function gt(s){const e=B.c(26),{automationId:r,open:n,onOpenChange:o,onCustomSelect:a}=s,x=G(),[f,d]=T.useState(!1),l=n??f;let y;e[0]!==o?(y=N=>{o?o(N):d(N)},e[0]=o,e[1]=y):y=e[1];const m=y;let j;e[2]!==x||e[3]!==r||e[4]!==m?(j=async N=>{try{await x.mutateAsync({automation_id:r,type:"cron",cron_expression:N}),I.success("Starter added"),m(!1)}catch(D){const A=D,g=A instanceof Error?A.message:"Failed to add starter";I.error(g)}},e[2]=x,e[3]=r,e[4]=m,e[5]=j):j=e[5];const S=j;let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx(He,{asChild:!0,children:t.jsxs(U,{variant:"outline",size:"sm",children:[t.jsx(at,{size:14}),"Add Starter"]})}),e[6]=p):p=e[6];let _;e[7]===Symbol.for("react.memo_cache_sentinel")?(_=t.jsxs(Ke,{className:"gap-2.5",children:[t.jsx(H,{size:14,className:"text-muted-foreground shrink-0"}),"Every..."]}),e[7]=_):_=e[7];let v;e[8]!==x||e[9]!==S?(v=ht.map(N=>t.jsxs(se,{className:"gap-2.5",onSelect:()=>S(N.cron),disabled:x.isPending,children:[t.jsx(H,{size:14,className:"text-muted-foreground shrink-0"}),"Every ",N.label]},N.cron)),e[8]=x,e[9]=S,e[10]=v):v=e[10];let i;e[11]!==v?(i=t.jsxs(Qe,{children:[_,t.jsx(We,{className:"w-[160px]",children:v})]}),e[11]=v,e[12]=i):i=e[12];let u;e[13]!==m||e[14]!==a?(u=()=>{m(!1),a?.()},e[13]=m,e[14]=a,e[15]=u):u=e[15];let b;e[16]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(H,{size:14,className:"text-muted-foreground shrink-0"}),e[16]=b):b=e[16];let h;e[17]!==u?(h=t.jsxs(se,{className:"gap-2.5",onSelect:u,children:[b,"Custom (cron)"]}),e[17]=u,e[18]=h):h=e[18];let C;e[19]!==i||e[20]!==h?(C=t.jsxs(qe,{align:"end",className:"w-[200px]",children:[i,h]}),e[19]=i,e[20]=h,e[21]=C):C=e[21];let w;return e[22]!==m||e[23]!==l||e[24]!==C?(w=t.jsxs(Ge,{open:l,onOpenChange:m,children:[p,C]}),e[22]=m,e[23]=l,e[24]=C,e[25]=w):w=e[25],w}function yt(s){const e=B.c(56),{trigger:r,automationId:n}=s,o=Re(),a=G(),[x,f]=T.useState(!1);let d;e[0]!==r.cron_expression?(d=r.cron_expression?ft(r.cron_expression):null,e[0]=r.cron_expression,e[1]=d):d=e[1];const l=d,[y,m]=T.useState(l?.count??1),[j,S]=T.useState(!1),[p,_]=T.useState(r.cron_expression??""),v=o.isPending||a.isPending,i=r.type==="cron";let u;e[2]!==n||e[3]!==o||e[4]!==r.id?(u=async()=>{try{await o.mutateAsync({trigger_id:r.id,automation_id:n}),I.success("Starter removed")}catch{I.error("Failed to remove starter")}f(!1)},e[2]=n,e[3]=o,e[4]=r.id,e[5]=u):u=e[5];const b=u;let h;e[6]!==a||e[7]!==n||e[8]!==p||e[9]!==o||e[10]!==r.cron_expression||e[11]!==r.id?(h=async()=>{const k=p.trim();if(!k||!K(k)||k===r.cron_expression){S(!1),_(r.cron_expression??"");return}try{await a.mutateAsync({automation_id:n,type:"cron",cron_expression:k}),await o.mutateAsync({trigger_id:r.id,automation_id:n}),S(!1)}catch{I.error("Failed to update starter"),_(r.cron_expression??""),S(!1)}},e[6]=a,e[7]=n,e[8]=p,e[9]=o,e[10]=r.cron_expression,e[11]=r.id,e[12]=h):h=e[12];const C=h;let w;e[13]!==a||e[14]!==n||e[15]!==l||e[16]!==o||e[17]!==r.cron_expression||e[18]!==r.id?(w=async k=>{if(!l)return;const W=Math.max(1,k),c=pt(W,l.unit);if(c!==r.cron_expression)try{await a.mutateAsync({automation_id:n,type:"cron",cron_expression:c}),await o.mutateAsync({trigger_id:r.id,automation_id:n})}catch{I.error("Failed to update starter"),m(l.count)}},e[13]=a,e[14]=n,e[15]=l,e[16]=o,e[17]=r.cron_expression,e[18]=r.id,e[19]=w):w=e[19];const N=w;let D;e[20]===Symbol.for("react.memo_cache_sentinel")?(D=t.jsx(H,{size:14,className:"text-muted-foreground shrink-0"}),e[20]=D):D=e[20];let A;e[21]!==y||e[22]!==p||e[23]!==N||e[24]!==C||e[25]!==l||e[26]!==i||e[27]!==j||e[28]!==v||e[29]!==r.cron_expression||e[30]!==r.event_type?(A=l&&i?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-sm text-muted-foreground",children:"Every"}),t.jsx("input",{type:"number",min:1,value:y,onChange:k=>m(parseInt(k.target.value)||1),onBlur:()=>N(y),onKeyDown:k=>{k.key==="Enter"&&k.target.blur(),k.key==="Escape"&&m(l.count)},disabled:v,className:"w-12 text-center text-sm h-7 border border-border rounded-md bg-background px-1 focus:outline-none focus:ring-1 focus:ring-ring"}),t.jsx("span",{className:"text-sm",children:xt(l.unit,y)})]}):i&&j?t.jsxs(t.Fragment,{children:[t.jsx("input",{type:"text",value:p,onChange:k=>_(k.target.value),onBlur:C,onKeyDown:k=>{k.key==="Enter"&&k.target.blur(),k.key==="Escape"&&(S(!1),_(r.cron_expression??""))},className:"flex-1 text-sm font-mono bg-transparent outline-none",autoFocus:!0}),p&&!K(p)&&t.jsx("span",{className:"text-xs text-muted-foreground/60 shrink-0",children:"invalid"})]}):t.jsx("span",{className:"text-sm flex-1 font-mono text-xs text-muted-foreground",children:i?ut(r.cron_expression??""):`${r.event_type} event`}),e[21]=y,e[22]=p,e[23]=N,e[24]=C,e[25]=l,e[26]=i,e[27]=j,e[28]=v,e[29]=r.cron_expression,e[30]=r.event_type,e[31]=A):A=e[31];let g;e[32]!==v?(g=v&&t.jsx(Q,{size:13,className:"animate-spin text-muted-foreground"}),e[32]=v,e[33]=g):g=e[33];let z;e[34]!==l||e[35]!==i||e[36]!==j||e[37]!==r.cron_expression?(z=i&&!l&&!j&&t.jsx(U,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>{_(r.cron_expression??""),S(!0)},children:t.jsx(it,{size:13,className:"text-muted-foreground"})}),e[34]=l,e[35]=i,e[36]=j,e[37]=r.cron_expression,e[38]=z):z=e[38];let R;e[39]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx(U,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>f(!0),children:t.jsx(J,{size:13,className:"text-muted-foreground"})}),e[39]=R):R=e[39];let M;e[40]!==g||e[41]!==z?(M=t.jsxs("div",{className:"ml-auto flex items-center gap-1",children:[g,z,R]}),e[40]=g,e[41]=z,e[42]=M):M=e[42];let O;e[43]!==M||e[44]!==A?(O=t.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-border bg-background group",children:[D,A,M]}),e[43]=M,e[44]=A,e[45]=O):O=e[45];let P;e[46]===Symbol.for("react.memo_cache_sentinel")?(P=t.jsxs(me,{children:[t.jsx(pe,{children:"Remove Starter"}),t.jsx(ue,{children:"Are you sure you want to remove this starter?"})]}),e[46]=P):P=e[46];let V;e[47]===Symbol.for("react.memo_cache_sentinel")?(V=t.jsx(fe,{children:"Cancel"}),e[47]=V):V=e[47];let E;e[48]!==b?(E=t.jsxs(ge,{children:[P,t.jsxs(xe,{children:[V,t.jsx(he,{onClick:b,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Remove"})]})]}),e[48]=b,e[49]=E):E=e[49];let $;e[50]!==x||e[51]!==E?($=t.jsx(ye,{open:x,onOpenChange:f,children:E}),e[50]=x,e[51]=E,e[52]=$):$=e[52];let F;return e[53]!==O||e[54]!==$?(F=t.jsxs(t.Fragment,{children:[O,$]}),e[53]=O,e[54]=$,e[55]=F):F=e[55],F}function jt(s){const e=B.c(41),{selectedId:r,onChange:n}=s,[o,a]=T.useState(!1),x=nt();let f,d;e[0]!==x||e[1]!==r?(d=x.filter(vt),f=r?d.find(p=>p.id===r):null,e[0]=x,e[1]=r,e[2]=f,e[3]=d):(f=e[2],d=e[3]);const l=f;if(l){let p;e[4]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx(ie,{size:16}),e[4]=p):p=e[4];let _;e[5]!==l.icon||e[6]!==l.title?(_=t.jsx(Me,{icon:l.icon,name:l.title,size:"sm",fallbackIcon:p,className:"rounded-md shrink-0"}),e[5]=l.icon,e[6]=l.title,e[7]=_):_=e[7];let v;e[8]!==l.title?(v=t.jsx("span",{className:"text-sm font-medium truncate",children:l.title}),e[8]=l.title,e[9]=v):v=e[9];let i;e[10]!==_||e[11]!==v?(i=t.jsx(re,{asChild:!0,children:t.jsxs("button",{type:"button",className:"flex items-center gap-3 flex-1 min-w-0 text-left cursor-pointer",children:[_,v]})}),e[10]=_,e[11]=v,e[12]=i):i=e[12];let u;e[13]!==n?(u=A=>{n(A),a(!1)},e[13]=n,e[14]=u):u=e[14];let b;e[15]!==r||e[16]!==u||e[17]!==d?(b=t.jsx(ne,{className:"w-[550px] p-0 overflow-hidden",align:"start",sideOffset:8,children:t.jsx(ee,{virtualMcps:d,selectedVirtualMcpId:r,onVirtualMcpChange:u})}),e[15]=r,e[16]=u,e[17]=d,e[18]=b):b=e[18];let h;e[19]!==o||e[20]!==i||e[21]!==b?(h=t.jsxs(oe,{open:o,onOpenChange:a,children:[i,b]}),e[19]=o,e[20]=i,e[21]=b,e[22]=h):h=e[22];let C;e[23]!==n?(C=()=>n(null),e[23]=n,e[24]=C):C=e[24];let w;e[25]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx(J,{size:13}),e[25]=w):w=e[25];let N;e[26]!==C?(N=t.jsx(U,{type:"button",variant:"ghost",size:"icon",className:"shrink-0 size-7 text-muted-foreground hover:text-foreground",onClick:C,title:"Remove agent",children:w}),e[26]=C,e[27]=N):N=e[27];let D;return e[28]!==N||e[29]!==h?(D=t.jsxs("div",{className:"flex items-center gap-3 px-3 py-2.5 rounded-lg border border-border bg-background hover:bg-accent/50 transition-colors",children:[h,N]}),e[28]=N,e[29]=h,e[30]=D):D=e[30],D}let y;e[31]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsx(re,{asChild:!0,children:t.jsxs("button",{type:"button",className:"flex items-center gap-3 px-3 py-2.5 rounded-lg border border-border hover:bg-accent/50 transition-colors w-full text-left cursor-pointer",children:[t.jsxs("div",{className:"relative flex items-center justify-center size-8 rounded-md text-muted-foreground/75 shrink-0",children:[t.jsxs("svg",{className:"absolute inset-0 size-full",fill:"none",children:[t.jsx("defs",{children:t.jsxs("linearGradient",{id:"agent-picker-border-gradient",gradientUnits:"userSpaceOnUse",x1:"0",y1:"0",x2:"32",y2:"32",children:[t.jsx("animateTransform",{attributeName:"gradientTransform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"6s",repeatCount:"indefinite"}),t.jsx("stop",{offset:"0%",stopColor:"var(--chart-1)"}),t.jsx("stop",{offset:"100%",stopColor:"var(--chart-4)"})]})}),t.jsx("rect",{x:"0.5",y:"0.5",width:"31",height:"31",rx:"5.5",stroke:"url(#agent-picker-border-gradient)",strokeWidth:"1",strokeDasharray:"3 3"})]}),t.jsx(ie,{size:16})]}),t.jsx("span",{className:"text-sm text-muted-foreground",children:"No agent selected. All connections available."})]})}),e[31]=y):y=e[31];let m;e[32]!==n?(m=p=>{n(p),a(!1)},e[32]=n,e[33]=m):m=e[33];let j;e[34]!==r||e[35]!==m||e[36]!==d?(j=t.jsx(ne,{className:"w-[550px] p-0 overflow-hidden",align:"start",sideOffset:8,children:t.jsx(ee,{virtualMcps:d,selectedVirtualMcpId:r,onVirtualMcpChange:m})}),e[34]=r,e[35]=m,e[36]=d,e[37]=j):j=e[37];let S;return e[38]!==o||e[39]!==j?(S=t.jsxs(oe,{open:o,onOpenChange:a,children:[y,j]}),e[38]=o,e[39]=j,e[40]=S):S=e[40],S}function vt(s){return!s.id||!tt(s.id)}function bt({automationId:s,automation:e}){const r=Oe(),{createTask:n,setVirtualMcpId:o,setSelectedModel:a,sendMessage:x,credentialId:f,model:d}=je(),[,l]=de(),y=e.messages?.[0]?.metadata?.tiptapDoc??void 0,[m,j]=T.useState(y),[S,p]=T.useState(y),[_,v]=T.useState(!1),[i,u]=T.useState(!1),[b,h]=T.useState(""),C=G(),w=T.useRef(!1),N=c=>{j(c),w.current||(w.current=!0,y||p(c))},D=e.models?.credentialId||f||"",A=e.models?.thinking?.id||d?.modelId||"",g=Ce({defaultValues:{name:e.name,active:e.active,agent_id:e.agent?.id??"",credential_id:D,model_id:A}}),z=g.watch("active"),R=g.watch("agent_id"),M=g.watch("credential_id"),O=g.watch("model_id"),{models:P,isLoading:V}=De(M||void 0),E=P.find(c=>c.modelId===O)??null,$=async()=>{const c=g.getValues();try{const L=c.credential_id&&c.model_id?c.credential_id:"",Y=c.credential_id&&c.model_id?c.model_id:"";return await r.mutateAsync({id:s,name:c.name,active:c.active,agent:{id:c.agent_id},models:{credentialId:L,thinking:{id:Y}},messages:ct(m),temperature:0}),g.reset({...c,credential_id:L,model_id:Y}),p(m),I.success("Automation saved"),!0}catch{return I.error("Failed to save automation"),!1}},F=()=>{g.reset(),N(S)},k=g.formState.isDirty||JSON.stringify(m??null)!==JSON.stringify(S??null),W=async()=>{if(k&&!await $())return;if(!m){I.error("No instructions configured for this automation");return}const c=g.getValues();o(c.agent_id||null),E&&M&&a({...E,keyId:M}),l(!0),n(),setTimeout(()=>{x(m,{toolApprovalLevel:"yolo"})},0)};return t.jsxs(t.Fragment,{children:[t.jsx(ce,{children:t.jsx(ke,{onSave:async()=>{await $()},onUndo:F,isDirty:k,isSaving:r.isPending})}),t.jsxs("div",{className:"max-w-2xl mx-auto w-full px-6 py-6 flex flex-col gap-8",children:[t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx(Be,{...g.register("name"),placeholder:"Automation name",className:"border border-transparent shadow-none px-0 text-2xl md:text-2xl font-semibold h-auto focus-visible:ring-0 focus-visible:border-border bg-transparent"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Ne,{control:g.control,name:"active",render:({field:c})=>t.jsx(Je,{checked:c.value,onCheckedChange:c.onChange,className:"cursor-pointer"})}),t.jsx("span",{className:"text-sm text-muted-foreground",children:z?"Active":"Inactive"}),t.jsx("span",{className:"text-muted-foreground/50 text-sm",children:"·"}),t.jsx(Ee,{id:e.created_by,size:"2xs",className:"text-sm text-muted-foreground"})]})]}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-xs font-semibold text-muted-foreground/60",children:"Starter"}),t.jsx(gt,{automationId:s,open:_,onOpenChange:v,onCustomSelect:()=>{u(!0),h("")}})]}),e.triggers.length===0&&!i?t.jsx("div",{className:"rounded-lg border border-dashed border-border px-4 py-6 text-center",children:t.jsxs("p",{className:"text-sm text-muted-foreground",children:["When should this automation run?"," ",t.jsx("button",{type:"button",className:"text-foreground underline underline-offset-2 cursor-pointer hover:text-foreground/80 transition-colors",onClick:()=>v(!0),children:"Add a starter"})," ","to get going."]})}):t.jsx("div",{className:"flex flex-col gap-2",children:e.triggers.map(c=>t.jsx(yt,{trigger:c,automationId:s},c.id))}),i&&t.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-border bg-background group",children:[t.jsx(H,{size:14,className:"text-muted-foreground shrink-0"}),t.jsx("input",{type:"text",value:b,onChange:c=>h(c.target.value),onBlur:async()=>{const c=b.trim();if(!(!c||!K(c)))try{await C.mutateAsync({automation_id:s,type:"cron",cron_expression:c}),I.success("Starter added"),u(!1),h("")}catch{I.error("Failed to add starter")}},onKeyDown:async c=>{const L=b.trim();c.key==="Enter"&&L&&K(L)&&c.target.blur(),c.key==="Escape"&&(u(!1),h(""))},placeholder:"0 9 * * 1-5",className:"flex-1 text-sm font-mono bg-transparent outline-none placeholder:text-muted-foreground/40",autoFocus:!0}),b&&!K(b)&&t.jsx("span",{className:"text-xs text-muted-foreground/60 shrink-0",children:"invalid"}),C.isPending&&t.jsx(Q,{size:13,className:"animate-spin text-muted-foreground shrink-0"}),t.jsx("button",{type:"button",className:"shrink-0 p-0.5 rounded text-muted-foreground opacity-0 group-hover:opacity-100 hover:text-foreground transition-opacity",onClick:()=>{u(!1),h("")},children:t.jsx(J,{size:13})})]})]}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[t.jsx("span",{className:"text-xs font-semibold text-muted-foreground/60",children:"Agent"}),t.jsx(jt,{selectedId:R||null,onChange:c=>g.setValue("agent_id",c??"",{shouldDirty:!0})})]}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[t.jsx("span",{className:"text-xs font-semibold text-muted-foreground/60",children:"Instructions"}),t.jsx(Ae,{tiptapDoc:m,setTiptapDoc:N,placeholder:"What should this automation do?",children:t.jsxs("div",{className:"rounded-xl border border-border min-h-[120px] flex flex-col",children:[t.jsx(Te,{virtualMcpId:R||null}),t.jsxs("div",{className:"flex items-center justify-end gap-1.5 p-2.5",children:[t.jsx(Ie,{model:E,isLoading:V,credentialId:M||null,onCredentialChange:c=>{g.setValue("credential_id",c??"",{shouldDirty:!0}),g.setValue("model_id","",{shouldDirty:!0})},onModelChange:c=>g.setValue("model_id",c.modelId,{shouldDirty:!0}),placeholder:"Model"}),t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsxs(U,{type:"button",variant:"default",className:"h-8 gap-1.5 rounded-md px-3 text-sm font-medium",onClick:W,children:[t.jsx(ot,{size:16}),"Test"]})}),t.jsx(Ze,{children:"Test Automation"})]})]})]})})]}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[t.jsx("span",{className:"text-xs font-semibold text-muted-foreground/60",children:"Run History"}),t.jsx(Ct,{automationId:s,triggerIds:e.triggers.map(c=>c.id)})]})]})]})}function _t(s,e,r){const n=B.c(13);let o;n[0]!==s?(o={connectionId:rt,orgId:s},n[0]=s,n[1]=o):o=n[1];const a=st(o);let x;n[2]!==e||n[3]!==s||n[4]!==r?(x=q.automationRuns(s,e,r),n[2]=e,n[3]=s,n[4]=r,n[5]=x):x=n[5];let f;n[6]!==a||n[7]!==r?(f=async()=>{if(!a)throw new Error("MCP client not available");const y=await a.callTool({name:"COLLECTION_THREADS_LIST",arguments:{where:{trigger_ids:r},limit:20}});return(y.structuredContent??y).items??[]},n[6]=a,n[7]=r,n[8]=f):f=n[8];const d=r.length>0;let l;return n[9]!==x||n[10]!==f||n[11]!==d?(l={queryKey:x,queryFn:f,enabled:d},n[9]=x,n[10]=f,n[11]=d,n[12]=l):l=n[12],et(l)}function Ct(s){const e=B.c(22),{automationId:r,triggerIds:n}=s,{org:o}=ae(),{switchToTask:a}=je(),[,x]=de(),f=Se(),{data:d,isLoading:l}=_t(o.id,r,n),y=n.length>0;let m;e[0]!==r||e[1]!==o.id||e[2]!==f||e[3]!==d||e[4]!==n?(m=i=>{const u=i.subject,b=d??[];b.find(C=>C.id===u)?f.setQueryData(q.automationRuns(o.id,r,n),b.map(C=>C.id===u?{...C,status:i.data.status,updated_at:new Date().toISOString()}:C)):f.invalidateQueries({queryKey:q.automationRuns(o.id,r,n)})},e[0]=r,e[1]=o.id,e[2]=f,e[3]=d,e[4]=n,e[5]=m):m=e[5];let j;if(e[6]!==o.id||e[7]!==y||e[8]!==m?(j={orgId:o.id,enabled:y,onTaskStatus:m},e[6]=o.id,e[7]=y,e[8]=m,e[9]=j):j=e[9],dt(j),l){let i;return e[10]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx("div",{className:"flex items-center justify-center py-8",children:t.jsx(Q,{size:18,className:"animate-spin text-muted-foreground"})}),e[10]=i):i=e[10],i}if(!d||d.length===0){let i;return e[11]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(le,{image:null,className:"mt-6",title:"No run history",description:"Run history will appear here when the automation has been triggered."}),e[11]=i):i=e[11],i}let S;e[12]!==x||e[13]!==a?(S=async i=>{await a(i),x(!0)},e[12]=x,e[13]=a,e[14]=S):S=e[14];const p=S;let _;if(e[15]!==p||e[16]!==d){let i;e[18]!==p?(i=u=>{const b=Z[u.status]??Z.completed,h=b.icon;return t.jsxs("button",{type:"button",className:"flex items-center gap-3 px-1 py-2.5 text-left hover:bg-accent/50 transition-colors cursor-pointer rounded-sm",onClick:()=>p(u.id),children:[t.jsx(h,{size:16,className:b.iconClassName}),t.jsx("span",{className:"flex-1 min-w-0 text-sm truncate",children:u.title}),t.jsx("span",{className:"text-xs text-muted-foreground shrink-0",children:mt(new Date(u.updated_at),{addSuffix:!0})})]},u.id)},e[18]=p,e[19]=i):i=e[19],_=d.map(i),e[15]=p,e[16]=d,e[17]=_}else _=e[17];let v;return e[20]!==_?(v=t.jsx("div",{className:"flex flex-col divide-y divide-border",children:_}),e[20]=_,e[21]=v):v=e[21],v}function sr(){const s=B.c(36);let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e={strict:!1},s[0]=e):e=s[0];const{automationId:r}=ve(e),n=be(),{org:o}=ae(),{data:a,isLoading:x}=$e(r),f=ze(),[d,l]=T.useState(!1);let y;s[1]!==r||s[2]!==f||s[3]!==n||s[4]!==o?(y=async()=>{try{await f.mutateAsync(r),I.success("Automation deleted"),n({to:"/$org/$project/automations",params:{org:o.slug,project:X}})}catch{I.error("Failed to delete automation")}l(!1)},s[1]=r,s[2]=f,s[3]=n,s[4]=o,s[5]=y):y=s[5];const m=y;if(x){let g;return s[6]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx("div",{className:"flex items-center justify-center h-full",children:t.jsx(Q,{size:24,className:"animate-spin text-muted-foreground"})}),s[6]=g):g=s[6],g}if(!a){let g;return s[7]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx(le,{title:"Automation not found",description:"This automation may have been deleted."}),s[7]=g):g=s[7],g}let j;s[8]!==o.slug?(j=t.jsx(te,{children:t.jsx(Pe,{asChild:!0,children:t.jsx(_e,{to:"/$org/$project/automations",params:{org:o.slug,project:X},children:"Automations"})})}),s[8]=o.slug,s[9]=j):j=s[9];let S;s[10]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(Fe,{}),s[10]=S):S=s[10];let p;s[11]!==a.name?(p=t.jsx(te,{children:t.jsx(Ve,{children:a.name})}),s[11]=a.name,s[12]=p):p=s[12];let _;s[13]!==j||s[14]!==p?(_=t.jsx(Le,{children:t.jsxs(Ue,{children:[j,S,p]})}),s[13]=j,s[14]=p,s[15]=_):_=s[15];const v=_;let i;s[16]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(ce,{children:t.jsxs(U,{variant:"ghost",size:"sm",className:"h-7 text-destructive hover:text-destructive",onClick:()=>l(!0),children:[t.jsx(lt,{size:14}),"Delete"]})}),s[16]=i):i=s[16];let u;s[17]!==a||s[18]!==r?(u=t.jsx(bt,{automationId:r,automation:a},r),s[17]=a,s[18]=r,s[19]=u):u=s[19];let b;s[20]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(pe,{children:"Delete Automation"}),s[20]=b):b=s[20];let h;s[21]!==a.name?(h=t.jsxs(me,{children:[b,t.jsxs(ue,{children:['Are you sure you want to delete "',a.name,'"? This action cannot be undone.']})]}),s[21]=a.name,s[22]=h):h=s[22];let C;s[23]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx(fe,{children:"Cancel"}),s[23]=C):C=s[23];let w;s[24]!==m?(w=t.jsxs(xe,{children:[C,t.jsx(he,{onClick:m,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]}),s[24]=m,s[25]=w):w=s[25];let N;s[26]!==w||s[27]!==h?(N=t.jsxs(ge,{children:[h,w]}),s[26]=w,s[27]=h,s[28]=N):N=s[28];let D;s[29]!==d||s[30]!==N?(D=t.jsx(ye,{open:d,onOpenChange:l,children:N}),s[29]=d,s[30]=N,s[31]=D):D=s[31];let A;return s[32]!==v||s[33]!==D||s[34]!==u?(A=t.jsxs(we,{breadcrumb:v,children:[i,u,D]}),s[32]=v,s[33]=D,s[34]=u,s[35]=A):A=s[35],A}export{sr as default};
|