@hotmeshio/long-tail 0.4.5 → 0.4.6
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/build/api/files.js +8 -0
- package/build/api/topics.d.ts +5 -0
- package/build/api/topics.js +20 -0
- package/build/routes/topics.js +12 -0
- package/build/services/agent/trigger-registry.d.ts +9 -0
- package/build/services/agent/trigger-registry.js +25 -2
- package/dashboard/dist/assets/AdminDashboard-qZYNzvw8.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-ntLz5Pro.js.map → AdminDashboard-qZYNzvw8.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-_SMbioNp.js +16 -0
- package/dashboard/dist/assets/AgentConfigPage-_SMbioNp.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-Cf_SRtbT.js +4 -0
- package/dashboard/dist/assets/{AgentDetailPage-Cm2KFR4O.js.map → AgentDetailPage-Cf_SRtbT.js.map} +1 -1
- package/dashboard/dist/assets/AgentsPage-q53C1Xk_.js +2 -0
- package/dashboard/dist/assets/{AgentsPage-_ptA-0YO.js.map → AgentsPage-q53C1Xk_.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-DHWciaKb.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-bdPqEzbx.js.map → AvailableEscalationsPage-DHWciaKb.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-638n5Jaz.js +2 -0
- package/dashboard/dist/assets/{BotPicker-CYfFMpkY.js.map → BotPicker-638n5Jaz.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-PmgEhPl8.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-M7-ZTFNV.js.map → CapabilitiesPage-PmgEhPl8.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-BEZoI6NU.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-DU5KAtQ-.js.map → CollapsibleSection-BEZoI6NU.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-_hW5Vc05.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-D0SQ39nR.js +2 -0
- package/dashboard/dist/assets/{CopyableId-DiWqv41D.js.map → CopyableId-D0SQ39nR.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-Dl15oW3U.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-CmbwypSF.js.map → CredentialsPage-Dl15oW3U.js.map} +1 -1
- package/dashboard/dist/assets/CronLabel-Dg8U0s5a.js +2 -0
- package/dashboard/dist/assets/{CronLabel-nycfAefc.js.map → CronLabel-Dg8U0s5a.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-BCbVMr-4.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-gNZRBaHg.js.map → CustomDurationPicker-BCbVMr-4.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-D9yuBv0w.js +2 -0
- package/dashboard/dist/assets/{DataTable-DGerT2ZM.js.map → DataTable-D9yuBv0w.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-lw2wmqty.js +2 -0
- package/dashboard/dist/assets/{DropZone-vNcqMd05.js.map → DropZone-lw2wmqty.js.map} +1 -1
- package/dashboard/dist/assets/ElapsedCell-fuG5wRDw.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-CdvQbtve.js.map → ElapsedCell-fuG5wRDw.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
- package/dashboard/dist/assets/{EmptyState-DMldv8c5.js.map → EmptyState-BcsfPq9T.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-nYOZczYx.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-BNENCL_2.js.map → EscalationsOverview-nYOZczYx.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-Cm0Ql46x.js +2 -0
- package/dashboard/dist/assets/{EventTable-BqDAyXyc.js.map → EventTable-Cm0Ql46x.js.map} +1 -1
- package/dashboard/dist/assets/EventTopicPill-RaASGdZz.js +2 -0
- package/dashboard/dist/assets/{EventTopicPill-CnHFBglc.js.map → EventTopicPill-RaASGdZz.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/{FilterBar-TYiTtUgv.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-Cx6pvCFX.js +2 -0
- package/dashboard/dist/assets/{HomePage-fterfLKH.js.map → HomePage-Cx6pvCFX.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-YHesiWwN.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-BO5Igi6v.js.map → ListToolbar-YHesiWwN.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-BWsaxVKL.js +2 -0
- package/dashboard/dist/assets/{McpOverview-BQokGg0z.js.map → McpOverview-BWsaxVKL.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CQk3YpR-.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CQk3YpR-.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-Uf5DKujM.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-DUey_h9J.js.map → McpQueryPage-Uf5DKujM.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-D9GU27cS.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-Cv4qyr91.js.map → McpRunDetailPage-D9GU27cS.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-5dVAu25-.js +2 -0
- package/dashboard/dist/assets/{McpRunsPage-B3R6KZ61.js.map → McpRunsPage-5dVAu25-.js.map} +1 -1
- package/dashboard/dist/assets/Modal-DEODGeqx.js +2 -0
- package/dashboard/dist/assets/{Modal-Qe8lW7gQ.js.map → Modal-DEODGeqx.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-DNJtUDxl.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-dldvzjcg.js.map → OperatorDashboard-DNJtUDxl.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-B4w-LDUF.js +2 -0
- package/dashboard/dist/assets/{PageHeader-DF4BeEm4.js.map → PageHeader-B4w-LDUF.js.map} +1 -1
- package/dashboard/dist/assets/PageHeaderWithStats-DQmNXYcG.js +2 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-BQZw6BgA.js.map → PageHeaderWithStats-DQmNXYcG.js.map} +1 -1
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DMyB3WLZ.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-BPsvlG0E.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-Beo-QVL-.js.map → ProcessDetailPage-BPsvlG0E.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-CnuCtHSP.js +2 -0
- package/dashboard/dist/assets/{ProcessesListPage-C_ars8gp.js.map → ProcessesListPage-CnuCtHSP.js.map} +1 -1
- package/dashboard/dist/assets/RolePill-Dk-YUxCm.js +2 -0
- package/dashboard/dist/assets/{RolePill-DrBZ7JJj.js.map → RolePill-Dk-YUxCm.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-BGJMx2S2.js +2 -0
- package/dashboard/dist/assets/{RolesPage-DgSXFFGL.js.map → RolesPage-BGJMx2S2.js.map} +1 -1
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
- package/dashboard/dist/assets/{RowActions-QcakGbVA.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CcNnj5AF.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-CYMeZwrM.js.map → RunAsSelector-CcNnj5AF.js.map} +1 -1
- package/dashboard/dist/assets/ServerName-BXSm_14r.js +2 -0
- package/dashboard/dist/assets/{ServerName-D5NKD06M.js.map → ServerName-BXSm_14r.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/{StatCard-PZQmmCHK.js.map → StatCard-DlgF0CJC.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +2 -0
- package/dashboard/dist/assets/{StatusBadge-ME2R6a7K.js.map → StatusBadge-XQlNFwmH.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-CDDVahOz.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-BWhFSr2d.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-Ddy93Q5I.js.map → StickyPagination-BWhFSr2d.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-fWiYlTQw.js +2 -0
- package/dashboard/dist/assets/{SwimlaneTimeline-CYYA8nd9.js.map → SwimlaneTimeline-fWiYlTQw.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-CYh3PFNq.js +2 -0
- package/dashboard/dist/assets/{TagInput-B45Dm3IW.js.map → TagInput-CYh3PFNq.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-Byz19B5I.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-Byz19B5I.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BSFLiBcf.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-BJRUjVDv.js.map → TaskQueuePill-BSFLiBcf.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-pe1Opw6s.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-Czu08px3.js.map → TasksListPage-pe1Opw6s.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-8aYUlXT9.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-CJ56IUy6.js.map → TimeAgo-8aYUlXT9.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-_1fW34op.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-QtcYZ9Jx.js.map → TimestampCell-_1fW34op.js.map} +1 -1
- package/dashboard/dist/assets/ToolPill-CcKNnnrK.js +2 -0
- package/dashboard/dist/assets/{ToolPill-DpDv3FwI.js.map → ToolPill-CcKNnnrK.js.map} +1 -1
- package/dashboard/dist/assets/ToolTestPanel-BD7ZkPeM.js +2 -0
- package/dashboard/dist/assets/{ToolTestPanel-BzFOwzd_.js.map → ToolTestPanel-BD7ZkPeM.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-DL6QarSi.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-DL6QarSi.js.map +1 -0
- package/dashboard/dist/assets/TopicsPage-JYAk0csl.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-DKXlpZl_.js.map → TopicsPage-JYAk0csl.js.map} +1 -1
- package/dashboard/dist/assets/UserName-Dcn8reNm.js +2 -0
- package/dashboard/dist/assets/{UserName-zlR1so37.js.map → UserName-Dcn8reNm.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DPie2xiD.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-BMNIxeJB.js.map → WorkflowExecutionPage-DPie2xiD.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-BkfIn8N3.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-B5B3yGlh.js.map → WorkflowPill-BkfIn8N3.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-BRKurUye.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-BlAPZbQZ.js.map → WorkflowsDashboard-BRKurUye.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsOverview-C9Wob38P.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-NnPi6rwS.js.map → WorkflowsOverview-C9Wob38P.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BoKSRpKN.js +2 -0
- package/dashboard/dist/assets/{YamlWorkflowsPage-C4mZum6x.js.map → YamlWorkflowsPage-BoKSRpKN.js.map} +1 -1
- package/dashboard/dist/assets/{agents-B5wvILeV.js → agents-CpLOugsY.js} +2 -2
- package/dashboard/dist/assets/{agents-B5wvILeV.js.map → agents-CpLOugsY.js.map} +1 -1
- package/dashboard/dist/assets/{bots-BPlouRDm.js → bots-DRrquJqC.js} +2 -2
- package/dashboard/dist/assets/{bots-BPlouRDm.js.map → bots-DRrquJqC.js.map} +1 -1
- package/dashboard/dist/assets/capabilities-xbHvOXKc.js +2 -0
- package/dashboard/dist/assets/{capabilities-DkvRG09b.js.map → capabilities-xbHvOXKc.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-0m_rA-UW.js → controlplane-FilVp8jI.js} +2 -2
- package/dashboard/dist/assets/{controlplane-0m_rA-UW.js.map → controlplane-FilVp8jI.js.map} +1 -1
- package/dashboard/dist/assets/escalation-SGea3mBy.js +2 -0
- package/dashboard/dist/assets/{escalation-CfIAIUg2.js.map → escalation-SGea3mBy.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-C6sLGnSX.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-CLIdxlbe.js.map → escalation-columns-C6sLGnSX.js.map} +1 -1
- package/dashboard/dist/assets/helpers-wHzG3Maf.js +2 -0
- package/dashboard/dist/assets/{helpers-prGqC38M.js.map → helpers-wHzG3Maf.js.map} +1 -1
- package/dashboard/dist/assets/index-90jmsIHz.js +6 -0
- package/dashboard/dist/assets/{index-CFoddJDr.js.map → index-90jmsIHz.js.map} +1 -1
- package/dashboard/dist/assets/index-B7Vxutyl.js +63 -0
- package/dashboard/dist/assets/index-B7Vxutyl.js.map +1 -0
- package/dashboard/dist/assets/index-BS3KIrQL.js +2 -0
- package/dashboard/dist/assets/{index-P9huxx3-.js.map → index-BS3KIrQL.js.map} +1 -1
- package/dashboard/dist/assets/index-Bu2EEWNN.js +2 -0
- package/dashboard/dist/assets/{index-C0sDEKdo.js.map → index-Bu2EEWNN.js.map} +1 -1
- package/dashboard/dist/assets/index-C7k3xfpt.js +2 -0
- package/dashboard/dist/assets/{index-CuY5hPYB.js.map → index-C7k3xfpt.js.map} +1 -1
- package/dashboard/dist/assets/index-C8xDd-Ys.js +2 -0
- package/dashboard/dist/assets/{index-DqeLbz6j.js.map → index-C8xDd-Ys.js.map} +1 -1
- package/dashboard/dist/assets/index-CkYNpw4d.js +2 -0
- package/dashboard/dist/assets/{index-BR3SwTNI.js.map → index-CkYNpw4d.js.map} +1 -1
- package/dashboard/dist/assets/index-DVxBi47d.js +2 -0
- package/dashboard/dist/assets/{index-C2MJzu6J.js.map → index-DVxBi47d.js.map} +1 -1
- package/dashboard/dist/assets/{index-BPxglOYm.css → index-DZI2L4ag.css} +1 -1
- package/dashboard/dist/assets/index-Dr8WJAGM.js +6 -0
- package/dashboard/dist/assets/index-Dr8WJAGM.js.map +1 -0
- package/dashboard/dist/assets/index-DzgixtgL.js +2 -0
- package/dashboard/dist/assets/{index-DeL84Cag.js.map → index-DzgixtgL.js.map} +1 -1
- package/dashboard/dist/assets/index-E1i1ADY1.js +15 -0
- package/dashboard/dist/assets/{index-BgVuyWhi.js.map → index-E1i1ADY1.js.map} +1 -1
- package/dashboard/dist/assets/index-H2tN256i.js +2 -0
- package/dashboard/dist/assets/{index-CwkJBn87.js.map → index-H2tN256i.js.map} +1 -1
- package/dashboard/dist/assets/index-WwUcAoas.js +2 -0
- package/dashboard/dist/assets/{index-BWKIigEk.js.map → index-WwUcAoas.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-CUZxyRCO.js → knowledge-CQWNz28-.js} +2 -2
- package/dashboard/dist/assets/{knowledge-CUZxyRCO.js.map → knowledge-CQWNz28-.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B5VQPoF3.js → mcp-J_cDlKuA.js} +2 -2
- package/dashboard/dist/assets/{mcp-B5VQPoF3.js.map → mcp-J_cDlKuA.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-Ba5Zj3yg.js → mcp-query-C1zyeRvo.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-Ba5Zj3yg.js.map → mcp-query-C1zyeRvo.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-CAiEr5Fc.js → mcp-runs-BR4fvXXw.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-CAiEr5Fc.js.map → mcp-runs-BR4fvXXw.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-XOr9_XCV.js +2 -0
- package/dashboard/dist/assets/{namespaces-sVr5scma.js.map → namespaces-XOr9_XCV.js.map} +1 -1
- package/dashboard/dist/assets/{roles-E_bA4e0f.js → roles-yuxJgQBf.js} +2 -2
- package/dashboard/dist/assets/{roles-E_bA4e0f.js.map → roles-yuxJgQBf.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CL6Gv8jB.js → tasks-CI3qsHdP.js} +2 -2
- package/dashboard/dist/assets/{tasks-CL6Gv8jB.js.map → tasks-CI3qsHdP.js.map} +1 -1
- package/dashboard/dist/assets/topics-lm2GYKuv.js +2 -0
- package/dashboard/dist/assets/{topics-DbtPHERP.js.map → topics-lm2GYKuv.js.map} +1 -1
- package/dashboard/dist/assets/{useCollapsedSections-CGNA5oKV.js → useCollapsedSections-BU5HULGs.js} +2 -2
- package/dashboard/dist/assets/{useCollapsedSections-CGNA5oKV.js.map → useCollapsedSections-BU5HULGs.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-C6c618cj.js → useEventHooks-DpvfSw9p.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-C6c618cj.js.map → useEventHooks-DpvfSw9p.js.map} +1 -1
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js → useExpandedRows-CkcEntB-.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js.map → useExpandedRows-CkcEntB-.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js → useFilterParams-DZCAaBC7.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js.map → useFilterParams-DZCAaBC7.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-eK7kIUdh.js → useYamlActivityEvents-D-zuU9Ts.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-eK7kIUdh.js.map → useYamlActivityEvents-D-zuU9Ts.js.map} +1 -1
- package/dashboard/dist/assets/{users-CCHSIAxt.js → users-DRkulG9o.js} +2 -2
- package/dashboard/dist/assets/{users-CCHSIAxt.js.map → users-DRkulG9o.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-D8-ZINAH.js → vendor-icons-5gSix3t2.js} +107 -102
- package/dashboard/dist/assets/vendor-icons-5gSix3t2.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +22 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +1 -0
- package/dashboard/dist/assets/{workflows-BNbocg_9.js → workflows-dhvM792w.js} +2 -2
- package/dashboard/dist/assets/{workflows-BNbocg_9.js.map → workflows-dhvM792w.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Cu1FUwrc.js → yaml-workflows-DqbGpE2x.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Cu1FUwrc.js.map → yaml-workflows-DqbGpE2x.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/package.json +1 -1
- package/dashboard/dist/assets/AdminDashboard-ntLz5Pro.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-D27vWOI6.js +0 -16
- package/dashboard/dist/assets/AgentConfigPage-D27vWOI6.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-Cm2KFR4O.js +0 -4
- package/dashboard/dist/assets/AgentsPage-_ptA-0YO.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-bdPqEzbx.js +0 -2
- package/dashboard/dist/assets/BotPicker-CYfFMpkY.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-M7-ZTFNV.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-DU5KAtQ-.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-_hW5Vc05.js +0 -2
- package/dashboard/dist/assets/CopyableId-DiWqv41D.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CmbwypSF.js +0 -2
- package/dashboard/dist/assets/CronLabel-nycfAefc.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-gNZRBaHg.js +0 -2
- package/dashboard/dist/assets/DataTable-DGerT2ZM.js +0 -2
- package/dashboard/dist/assets/DropZone-vNcqMd05.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-CdvQbtve.js +0 -2
- package/dashboard/dist/assets/EmptyState-DMldv8c5.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-BNENCL_2.js +0 -2
- package/dashboard/dist/assets/EventTable-BqDAyXyc.js +0 -2
- package/dashboard/dist/assets/EventTopicPill-CnHFBglc.js +0 -2
- package/dashboard/dist/assets/FilterBar-TYiTtUgv.js +0 -2
- package/dashboard/dist/assets/HomePage-fterfLKH.js +0 -2
- package/dashboard/dist/assets/ListToolbar-BO5Igi6v.js +0 -2
- package/dashboard/dist/assets/McpOverview-BQokGg0z.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-0WOp2n_j.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-0WOp2n_j.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-DUey_h9J.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-Cv4qyr91.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-B3R6KZ61.js +0 -2
- package/dashboard/dist/assets/Modal-Qe8lW7gQ.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-dldvzjcg.js +0 -2
- package/dashboard/dist/assets/PageHeader-DF4BeEm4.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-BQZw6BgA.js +0 -2
- package/dashboard/dist/assets/PriorityBadge-DMyB3WLZ.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-Beo-QVL-.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-C_ars8gp.js +0 -2
- package/dashboard/dist/assets/RolePill-DrBZ7JJj.js +0 -2
- package/dashboard/dist/assets/RolesPage-DgSXFFGL.js +0 -2
- package/dashboard/dist/assets/RowActions-QcakGbVA.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CYMeZwrM.js +0 -2
- package/dashboard/dist/assets/ServerName-D5NKD06M.js +0 -2
- package/dashboard/dist/assets/StatCard-PZQmmCHK.js +0 -2
- package/dashboard/dist/assets/StatusBadge-ME2R6a7K.js +0 -2
- package/dashboard/dist/assets/StepIndicator-CDDVahOz.js +0 -2
- package/dashboard/dist/assets/StickyPagination-Ddy93Q5I.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-CYYA8nd9.js +0 -2
- package/dashboard/dist/assets/TagInput-B45Dm3IW.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-BJRUjVDv.js +0 -2
- package/dashboard/dist/assets/TasksListPage-Czu08px3.js +0 -2
- package/dashboard/dist/assets/TimeAgo-CJ56IUy6.js +0 -2
- package/dashboard/dist/assets/TimestampCell-QtcYZ9Jx.js +0 -2
- package/dashboard/dist/assets/ToolPill-DpDv3FwI.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-BzFOwzd_.js +0 -2
- package/dashboard/dist/assets/TopicDetailPage-DwShZbh9.js +0 -9
- package/dashboard/dist/assets/TopicDetailPage-DwShZbh9.js.map +0 -1
- package/dashboard/dist/assets/TopicsPage-DKXlpZl_.js +0 -2
- package/dashboard/dist/assets/UserName-zlR1so37.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-BMNIxeJB.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-B5B3yGlh.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BlAPZbQZ.js +0 -2
- package/dashboard/dist/assets/WorkflowsOverview-NnPi6rwS.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-C4mZum6x.js +0 -2
- package/dashboard/dist/assets/capabilities-DkvRG09b.js +0 -2
- package/dashboard/dist/assets/escalation-CfIAIUg2.js +0 -2
- package/dashboard/dist/assets/escalation-columns-CLIdxlbe.js +0 -2
- package/dashboard/dist/assets/helpers-prGqC38M.js +0 -2
- package/dashboard/dist/assets/index-4T7Z_gQ4.js +0 -281
- package/dashboard/dist/assets/index-4T7Z_gQ4.js.map +0 -1
- package/dashboard/dist/assets/index-BR3SwTNI.js +0 -2
- package/dashboard/dist/assets/index-BWKIigEk.js +0 -2
- package/dashboard/dist/assets/index-BgVuyWhi.js +0 -15
- package/dashboard/dist/assets/index-C0sDEKdo.js +0 -2
- package/dashboard/dist/assets/index-C2MJzu6J.js +0 -2
- package/dashboard/dist/assets/index-CFoddJDr.js +0 -6
- package/dashboard/dist/assets/index-CrMxD5Ib.js +0 -6
- package/dashboard/dist/assets/index-CrMxD5Ib.js.map +0 -1
- package/dashboard/dist/assets/index-CuY5hPYB.js +0 -2
- package/dashboard/dist/assets/index-CwkJBn87.js +0 -2
- package/dashboard/dist/assets/index-DeL84Cag.js +0 -2
- package/dashboard/dist/assets/index-DqeLbz6j.js +0 -2
- package/dashboard/dist/assets/index-P9huxx3-.js +0 -2
- package/dashboard/dist/assets/namespaces-sVr5scma.js +0 -2
- package/dashboard/dist/assets/topics-DbtPHERP.js +0 -2
- package/dashboard/dist/assets/vendor-icons-D8-ZINAH.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +0 -26
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,C as M,c as Ve,J as je}from"./index-4T7Z_gQ4.js";import{a as i}from"./vendor-query-DLp59M9_.js";import{P as De}from"./PageHeaderWithStats-BQZw6BgA.js";import{F as ye,b as we}from"./FilterBar-TYiTtUgv.js";import{u as ke}from"./useFilterParams-CGRYFw_A.js";import{u as te,a as ae,b as Qe,c as Se,d as $e}from"./controlplane-0m_rA-UW.js";import{M as Pe}from"./Modal-Qe8lW7gQ.js";import{H as Z,an as J,P as Te,ao as Y,ap as B,m as se,I as Fe,A as _e,a4 as Me,R as Re,S as Ae,aq as Le,E as We,Z as Oe,ar as Ie}from"./vendor-icons-D8-ZINAH.js";import{C as I}from"./CollapsibleSection-DU5KAtQ-.js";import{T as Be}from"./TaskQueuePill-BJRUjVDv.js";import{D as ze}from"./DataTable-DGerT2ZM.js";import{R as Je,a as X}from"./RowActions-QcakGbVA.js";import{f as He}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-DMldv8c5.js";const Ue=[{label:"15m",value:"15m"},{label:"30m",value:"30m"},{label:"1h",value:"1h"},{label:"1d",value:"1d"},{label:"7d",value:"7d"}],re={pong:"text-status-success",ping:"text-accent",throttle:"text-status-warning",job:"text-purple-400",work:"text-text-secondary",activate:"text-status-error",cron:"text-text-tertiary",user:"text-text-secondary"},qe={pong:"roll call",ping:"ping",throttle:"throttle",job:"job",work:"work",activate:"activate",cron:"cron",user:"user"},Ge=250;function F(t){return!!t.worker_topic}function _(t){return typeof t.throttle=="number"&&t.throttle!==0}function H(t){return t===void 0||t===0?"Normal":t===-1?"Paused":t>=864e5?`${(t/864e5).toFixed(0)}d`:t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${(t/1e3).toFixed(1)}s`:`${t}ms`}function Ke(t){if(!t)return null;const a=t.match(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d+)$/);if(a){const[,r,s,n,c,o,x,m]=a;return new Date(`${r}-${s}-${n}T${c}:${o}:${x}.${m}Z`)}const l=new Date(t);return isNaN(l.getTime())?null:l}function Ze(t){const a=Ke(t);if(!a)return"--";const l=Date.now()-a.getTime();if(l<0||isNaN(l))return"--";const r=Math.floor(l/1e3);if(r<60)return`${r}s`;const s=Math.floor(r/60);if(s<60)return`${s}m`;const n=Math.floor(s/60);return n<24?`${n}h ${s%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function ne(t){return t.replace(/^hmsh:[^:]+:x:/,"")||"(engine)"}function A(t){const a=t.match(/^([^:]+)::(.+?)-[A-Za-z0-9_]{10,}$/);return a?a[2]:t.length>20?t.slice(0,20)+"...":t}function Ye(t){const a=t.match(/^([^:]+)::/);return(a==null?void 0:a[1])||""}const le=[{key:"pong",label:"Roll Call",description:"Node health check responses"},{key:"ping",label:"Ping",description:"Health check broadcasts"},{key:"throttle",label:"Throttle",description:"Throttle commands"},{key:"job",label:"Job",description:"Job lifecycle events"},{key:"work",label:"Work",description:"Worker dispatch events"},{key:"activate",label:"Activate",description:"Worker activation"},{key:"cron",label:"Cron",description:"Cron schedule triggers"},{key:"user",label:"User",description:"User-defined messages"}];function L(t){return`${t.engine_id}-${t.worker_topic||"engine"}`}function Xe(t){const a=new Map;for(const l of t){if(!l.worker_topic)continue;const r=l.worker_topic;a.has(r)||a.set(r,[]),a.get(r).push(l)}return a}function $(t){let a=0,l=0,r=0;for(const s of t)if(s.counts)for(const[n,c]of Object.entries(s.counts))a+=c,n==="200"?l+=c:n==="500"&&(r+=c);return{total:a,success:l,errors:r}}function et(t){let a=0;for(const l of t)typeof l.stream_depth=="number"&&(a+=l.stream_depth);return a}function tt(t){if(t.length===0)return"healthy";if(t.every(r=>r.throttle===-1))return"paused";const{errors:l}=$(t);return l>0||t.some(_)?"degraded":"healthy"}function at({activeAppId:t,allProfiles:a,profiles:l}){const r=te(),[s,n]=i.useState(new Set),[c,o]=i.useState(!1),[x,m]=i.useState([]);i.useEffect(()=>{n(new Set)},[t]);const E=i.useCallback(p=>{n(y=>{const f=new Set(y),w=L(p);return f.has(w)?f.delete(w):f.add(w),f})},[]),N=i.useCallback(()=>{s.size===l.length?n(new Set):n(new Set(l.map(L)))},[l,s.size]),v=i.useMemo(()=>{const p=l.filter(V=>s.has(L(V)));if(p.length===0)return[];if(p.length===a.length)return[{label:"Entire Mesh"}];const y=p.filter(V=>!F(V)),f=p.filter(F),w=[];for(const V of y)w.push({label:`Engine ${V.engine_id}`,guid:V.engine_id,scope:"engines"});const P=new Map;for(const V of f){const Q=V.worker_topic;P.has(Q)||P.set(Q,[]),P.get(Q).push(V)}for(const[V,Q]of P){const W=a.filter(T=>T.worker_topic===V);if(Q.length===W.length)w.push({label:V,topic:V});else for(const T of Q)w.push({label:`${V} ${T.engine_id}`,guid:T.engine_id})}return w},[l,a,s]);return{selectedIds:s,setSelectedIds:n,toggleCheckbox:E,toggleAll:N,throttleModalOpen:c,throttleTargets:x,selectedThrottleTargets:v,throttleMutation:r,handleBulkThrottle:p=>{const y=x.length>0?x:v;for(const f of y)r.mutate({appId:t,throttle:p,...f.topic?{topic:f.topic}:{},...f.guid?{guid:f.guid}:{},...f.scope?{scope:f.scope}:{}});o(!1),m([])},handleRowClick:(p,y)=>{const f=F(p)?`${p.worker_topic} ${p.engine_id}`:`Engine ${p.engine_id}`;m([{label:f,guid:p.engine_id,scope:y||(F(p)?"workers":"engines")}]),o(!0)},handleBulkThrottleOpen:()=>{m(v),o(!0)},handleResumeThrottle:(p,y)=>{const f=y||(F(p)?"workers":"engines");r.mutate({appId:t,throttle:0,guid:p.engine_id,scope:f})},handleResumeQueue:p=>{r.mutate({appId:t,throttle:0,topic:p})},handleQueueThrottle:p=>{m([{label:p,topic:p}]),o(!0)},closeThrottleModal:()=>{o(!1),m([])}}}const st=[{label:"Resume",ms:0},{label:"0.5s",ms:500},{label:"1s",ms:1e3},{label:"5s",ms:5e3},{label:"30s",ms:3e4},{label:"Pause",ms:-1}];function rt({target:t}){const a=t.label==="Entire Mesh",l=t.label==="All Engines"||t.label.startsWith("Engine "),r=a?"bg-status-error/10 text-status-error":l?"bg-blue-500/10 text-blue-500":"bg-accent/[0.06] text-text-secondary",s=t.scope==="engines"?"engine only":t.scope==="workers"?"worker only":t.guid?"guid":t.topic?"topic":"mesh";return e.jsxDEV("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[10px] font-medium rounded-lg ${r}`,children:[t.label,e.jsxDEV("span",{className:"text-[8px] opacity-50",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:37,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:35,columnNumber:5},this)}function nt({open:t,onClose:a,targets:l,onApply:r,isPending:s}){const[n,c]=i.useState("");return e.jsxDEV(Pe,{open:t,onClose:a,title:"Adjust Throttle",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Targets"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:49,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:l.map((o,x)=>e.jsxDEV(rt,{target:o},o.guid||o.topic||x,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:52,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:50,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:48,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Presets"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:58,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-2",children:st.map(o=>e.jsxDEV("button",{onClick:()=>r(o.ms),disabled:s,className:`px-3 py-1.5 text-xs rounded transition-colors ${o.ms===-1?"bg-status-error/10 text-status-error hover:bg-status-error/20":o.ms===0?"bg-status-success/10 text-status-success hover:bg-status-success/20":"bg-surface-sunken text-text-secondary hover:bg-surface-hover"} disabled:opacity-50`,children:o.label},o.label,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:61,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:57,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Custom delay (seconds)"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:80,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("input",{type:"number",step:"0.1",min:"0",value:n,onChange:o=>c(o.target.value),placeholder:"e.g. 2.5",className:"input text-xs py-1.5 px-3 w-28"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:84,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>{const o=parseFloat(n);isNaN(o)||o<0||r(Math.round(o*1e3))},disabled:s,className:"btn-primary text-xs py-1.5 px-4 disabled:opacity-50",children:"Apply"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:93,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:83,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:79,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:47,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:46,columnNumber:5},this)}function lt(){const{data:t}=ae(),a=te(),[l,r]=i.useState(null),[s,n]=i.useState(!1),c=(t==null?void 0:t.apps)??[],o=i.useCallback(async(m,E="all")=>{if(c.length===0)return;n(!0);const N=await Promise.allSettled(c.map(C=>a.mutateAsync({appId:C.appId,throttle:m,...E!=="all"?{scope:E}:{}}))),v=N.filter(C=>C.status==="rejected").length;v>0&&console.error(`Emergency throttle: ${v}/${N.length} apps failed`),n(!1),r(null)},[c,a]),x=m=>m==="engines"?"engines":m==="workers"?"workers":"everything";return l?e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-xs text-status-error",children:["Pause ",x(l.scope),"?"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:42,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>o(l.ms,l.scope),disabled:s,className:"px-2.5 py-1 text-xs rounded-md bg-status-error text-white hover:bg-status-error/90 transition-colors disabled:opacity-50",children:s?e.jsxDEV(Z,{className:"w-3.5 h-3.5 animate-spin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:50,columnNumber:23},this):"Confirm"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:45,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>r(null),disabled:s,className:"px-2.5 py-1 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:52,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:41,columnNumber:7},this):e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("button",{onClick:()=>r({ms:-1,scope:"all"}),disabled:s,className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-error/80 hover:text-status-error hover:bg-status-error/10 transition-colors disabled:opacity-50",title:"Pause all engines and workers",children:[e.jsxDEV(J,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:71,columnNumber:9},this),"Pause All"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:65,columnNumber:7},this),e.jsxDEV("button",{onClick:()=>o(0),disabled:s,className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-success/80 hover:text-status-success hover:bg-status-success/10 transition-colors disabled:opacity-50",title:"Resume all engines and workers",children:[s?e.jsxDEV(Z,{className:"w-3.5 h-3.5 animate-spin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:80,columnNumber:21},this):e.jsxDEV(Te,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:80,columnNumber:72},this),"Resume All"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:74,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:64,columnNumber:5},this)}function ot({byStream:t,onNodeFilter:a}){const[l,r]=i.useState(!1);if(i.useEffect(()=>{r(!1);const m=requestAnimationFrame(()=>r(!0));return()=>cancelAnimationFrame(m)},[t]),t.length===0)return e.jsxDEV("p",{className:"text-xs text-text-tertiary py-4 text-center",children:"No activity in this period"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:26,columnNumber:12},this);const s=t.filter(m=>m.stream_type==="engine"),n=t.filter(m=>m.stream_type==="worker"),c=Math.max(...t.map(m=>m.count)),o=m=>{const E=c>0?m.count/c*100:0,N=m.stream_type==="engine",v=N?"(all engines)":ne(m.stream_name),C=N?"bg-blue-500/70":"bg-accent/60",D=N?"text-blue-500":"text-text-tertiary";return e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:`text-[9px] font-mono ${D} w-36 truncate text-right shrink-0`,title:m.stream_name,children:v},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 h-4 bg-surface-sunken rounded overflow-hidden",children:e.jsxDEV("div",{className:`h-full ${C} rounded transition-all duration-500 ease-out`,style:{width:l?`${E}%`:"0%"}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:48,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:47,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] font-mono tabular-nums text-text-secondary w-12 text-right shrink-0",children:m.count.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:53,columnNumber:9},this)]},`${m.stream_type}-${m.stream_name}`,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:40,columnNumber:7},this)},x="text-[9px] uppercase tracking-widest font-semibold mb-1 cursor-pointer hover:underline";return e.jsxDEV("div",{className:"space-y-1.5",children:[s.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:`${x} text-blue-500/70 hover:text-blue-500`,onClick:()=>a==null?void 0:a("engines"),children:"Engine Stream"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:66,columnNumber:11},this),s.map(o),n.length>0&&e.jsxDEV("div",{className:"h-2"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:73,columnNumber:40},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:65,columnNumber:9},this),n.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:`${x} text-accent/70 hover:text-accent`,onClick:()=>a==null?void 0:a("workers"),children:"Worker Streams"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:78,columnNumber:11},this),n.map(o)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:63,columnNumber:5},this)}function it({queue:t,workers:a,expanded:l,onToggle:r,onWorkerClick:s,onResumeThrottle:n,onQueueThrottle:c,onResumeQueue:o,byStream:x,activeDuration:m}){const E=i.useMemo(()=>{const d=x.find(b=>b.stream_type==="worker"&&ne(b.stream_name)===t);return(d==null?void 0:d.count)??0},[x,t]),N=i.useMemo(()=>tt(a),[a]),v=i.useMemo(()=>et(a),[a]),{errors:C}=i.useMemo(()=>$(a),[a]),D=N==="paused"?"bg-status-error":N==="degraded"?"bg-status-warning":"bg-status-success",u=i.useMemo(()=>[...a].sort((d,b)=>$([b]).total-$([d]).total),[a]),g=i.useMemo(()=>[{key:"engine_id",label:"Router",render:d=>{var p;const b=d.engine_id.replace(/^[^:]+::/,"").replace(/-[A-Za-z0-9_]{10,}$/,"")||d.engine_id,k=((p=d.engine_id.match(/^([^:]+)::/))==null?void 0:p[1])||"";return e.jsxDEV("div",{className:"flex items-center gap-2",title:d.engine_id,children:[e.jsxDEV("span",{className:"text-xs text-text-secondary truncate max-w-[180px]",children:b},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:74,columnNumber:13},this),k&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary/50",children:k},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:75,columnNumber:24},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:73,columnNumber:11},this)}},{key:"processed",label:"Processed",render:d=>{const b=$([d]);return e.jsxDEV("span",{className:"text-xs font-mono tabular-nums text-text-tertiary",children:b.total>0?b.total.toLocaleString():"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:85,columnNumber:16},this)},className:"w-24"},{key:"throttle",label:"Throttle",render:d=>{const b=d.throttle;return b===-1?e.jsxDEV("span",{className:"text-xs text-status-error font-medium",children:"Paused"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:94,columnNumber:30},this):b&&b>0?e.jsxDEV("span",{className:"text-xs text-status-warning font-medium",children:H(b)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:95,columnNumber:32},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:96,columnNumber:16},this)},className:"w-24"},{key:"actions",label:"",render:d=>e.jsxDEV(Je,{children:[_(d)&&e.jsxDEV(X,{icon:Y,title:"Resume (remove throttle)",onClick:()=>n(d),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:106,columnNumber:13},this),e.jsxDEV(X,{icon:B,title:"Adjust throttle",onClick:()=>s(d)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:113,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:104,columnNumber:9},this),className:"w-16"}],[s,n]);return e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>r(t),className:"group/row relative flex items-center gap-3 w-full py-2 hover:bg-surface-hover transition-colors text-left rounded",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full shrink-0 ${D}`,title:N},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:130,columnNumber:9},this),e.jsxDEV(se,{className:`w-3.5 h-3.5 text-text-tertiary/50 transition-transform duration-200 ${l?"rotate-90":""}`,strokeWidth:2},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:131,columnNumber:9},this),e.jsxDEV(Be,{queue:t,size:"sm"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:135,columnNumber:9},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:137,columnNumber:9},this),C>0&&e.jsxDEV("span",{className:"text-[10px] text-status-error font-medium mr-2",children:[C," errors"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:140,columnNumber:11},this),v>0&&e.jsxDEV("span",{className:"flex items-center gap-1 text-[10px] text-status-warning w-20",children:[e.jsxDEV(Fe,{className:"w-3 h-3 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:147,columnNumber:13},this),e.jsxDEV("span",{className:"font-mono tabular-nums",children:v.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:148,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:146,columnNumber:11},this),e.jsxDEV("span",{className:`flex items-center gap-1 text-xs w-24 ${a.some(_)?"text-status-warning":"text-text-tertiary"}`,children:[e.jsxDEV(_e,{className:"w-3 h-3 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:153,columnNumber:11},this),e.jsxDEV("span",{className:"font-mono tabular-nums",children:a.length},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:154,columnNumber:11},this),e.jsxDEV("span",{children:"workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:155,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:152,columnNumber:9},this),e.jsxDEV("span",{className:"flex items-center gap-1 text-xs font-mono text-text-tertiary w-28 justify-end mr-16",children:E>0?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Me,{className:"w-3 h-3 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:161,columnNumber:15},this),E.toLocaleString()," in ",m]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:160,columnNumber:13},this):e.jsxDEV("span",{className:"text-text-tertiary/40",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:165,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:158,columnNumber:9},this),e.jsxDEV("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 opacity-0 group-hover/row:opacity-100 transition-opacity flex items-center gap-2",children:[a.some(_)&&e.jsxDEV(Y,{className:"w-4 h-4 text-text-tertiary hover:text-status-success",strokeWidth:1.5,onClick:d=>{d.stopPropagation(),o(t)}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:171,columnNumber:13},this),e.jsxDEV(B,{className:"w-4 h-4 text-text-tertiary hover:text-accent",strokeWidth:1.5,onClick:d=>{d.stopPropagation(),c(t)}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:180,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:169,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:126,columnNumber:7},this),e.jsxDEV(M,{open:l,children:e.jsxDEV("div",{className:"ml-6",children:e.jsxDEV(ze,{columns:g,data:u,keyFn:L,onRowClick:s,emptyMessage:"No workers",inline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:193,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:192,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:191,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:125,columnNumber:5},this)}let mt=0;function ct(t){const a=t.data||{},l=a.topic?String(a.topic):"",r=a.guid?String(a.guid).slice(0,8):"";switch(t.type){case"pong":return l?`Worker ${r}... on "${l}" responded`:`Engine ${r}... responded`;case"ping":return"Roll call broadcast";case"throttle":{const s=a.throttle,n=l?`queue "${l}"`:r?`node ${r}...`:"all nodes";return`${H(s)} applied to ${n}`}case"job":return`Job ${r?r+"...":""} ${a.status||"updated"}`;case"work":return`Dispatched to "${l||"worker"}" ${r?"("+r+"...)":""}`;case"activate":return`Worker "${l||"unknown"}" activated`;case"cron":return`Cron triggered ${l?'"'+l+'"':""}`;default:return l||r||t.type}}function dt(t){const a=[];let l=0;for(;l<t.length;){const r=t[l];if(r.type==="pong"){let s=l+1;for(;s<t.length&&t[s].type==="pong";)s++;const n=t.slice(l,s);if(n.length>=3)a.push({kind:"group",type:"pong",count:n.length,firstTimestamp:n[n.length-1].timestamp,lastTimestamp:n[0].timestamp,events:n});else for(const c of n)a.push({kind:"single",event:c});l=s}else a.push({kind:"single",event:r}),l++}return a}function oe({event:t}){const[a,l]=i.useState(!1);return e.jsxDEV("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxDEV("button",{onClick:()=>l(!a),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsxDEV("span",{className:"text-[9px] font-mono text-text-tertiary whitespace-nowrap tabular-nums shrink-0",children:new Date(t.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:110,columnNumber:9},this),e.jsxDEV("span",{className:`text-[9px] font-medium px-1 py-0.5 rounded ${re[t.type]||"text-text-tertiary"} bg-surface-sunken whitespace-nowrap shrink-0`,children:qe[t.type]||t.type},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:113,columnNumber:9},this),e.jsxDEV("span",{className:"text-[9px] text-text-secondary flex-1 min-w-0 truncate",children:ct(t)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:116,columnNumber:9},this),e.jsxDEV("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${a?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:123,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:119,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:106,columnNumber:7},this),e.jsxDEV(M,{open:a,children:e.jsxDEV("div",{className:"pb-2",children:e.jsxDEV(je,{data:t.data},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:128,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:127,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:126,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:105,columnNumber:5},this)}function ut({group:t}){const[a,l]=i.useState(!1),r=t.events.filter(n=>{var c;return!((c=n.data)!=null&&c.topic)}).length,s=t.count-r;return e.jsxDEV("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxDEV("button",{onClick:()=>l(!a),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsxDEV("span",{className:"text-[9px] font-mono text-text-tertiary whitespace-nowrap tabular-nums shrink-0",children:new Date(t.lastTimestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:147,columnNumber:9},this),e.jsxDEV("span",{className:`text-[9px] font-medium px-1 py-0.5 rounded ${re.pong} bg-surface-sunken whitespace-nowrap shrink-0`,children:"roll call"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:150,columnNumber:9},this),e.jsxDEV("span",{className:"text-[9px] text-text-secondary flex-1 min-w-0 truncate",children:[t.count," nodes responded",r>0&&s>0?` (${r} engine${r!==1?"s":""}, ${s} worker${s!==1?"s":""})`:r>0?` (${r} engine${r!==1?"s":""})`:` (${s} worker${s!==1?"s":""})`]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:153,columnNumber:9},this),e.jsxDEV("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${a?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:161,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:143,columnNumber:7},this),e.jsxDEV(M,{open:a,children:e.jsxDEV("div",{className:"ml-4",children:t.events.map(n=>e.jsxDEV(oe,{event:n},n.id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:171,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:169,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:168,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:142,columnNumber:5},this)}function pt({channels:t,onToggle:a,customFilter:l,onCustomFilterChange:r}){return e.jsxDEV("div",{className:"space-y-3 pb-3 border-b border-surface-border mb-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Channels"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:192,columnNumber:9},this),e.jsxDEV("p",{className:"text-[9px] text-text-tertiary",children:"Unchecked channels are dropped before buffering"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:195,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:191,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-1",children:le.map(s=>e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer py-0.5",children:[e.jsxDEV("input",{type:"checkbox",checked:t.has(s.key),onChange:()=>a(s.key),className:"w-3 h-3 rounded border-border accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:202,columnNumber:13},this),e.jsxDEV("span",{className:"text-[10px] text-text-secondary",title:s.description,children:s.label},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:208,columnNumber:13},this)]},s.key,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:201,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:199,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Text Filter"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:215,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:l,onChange:s=>r(s.target.value),placeholder:"pong",className:"input text-[10px] font-mono py-1 px-2 w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:218,columnNumber:9},this),e.jsxDEV("p",{className:"text-[9px] text-text-tertiary mt-1",children:["Filter by event type, e.g. ",e.jsxDEV("span",{className:"font-mono",children:"pong"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:226,columnNumber:38},this),", ",e.jsxDEV("span",{className:"font-mono",children:"throttle"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:226,columnNumber:79},this),", or any text in the event data."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:214,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:190,columnNumber:5},this)}function ht({bridgeActive:t}){const[a,l]=i.useState(!1),[r,s]=i.useState(!1),[n,c]=i.useState([]),[o,x]=i.useState(()=>new Set(le.map(u=>u.key))),[m,E]=i.useState(""),N=i.useRef(o);i.useEffect(()=>{N.current=o},[o]);const v=i.useRef(m);i.useEffect(()=>{v.current=m},[m]);const C=u=>{x(g=>{const d=new Set(g);return d.has(u)?d.delete(u):d.add(u),d})};Ve("lt.events.mesh.>",i.useCallback(u=>{var b;const g=((b=u.type)==null?void 0:b.replace("mesh.",""))||"unknown";if(!N.current.has(g))return;const d=v.current;d&&!`${g} ${JSON.stringify(u.data||u)}`.toLowerCase().includes(d.toLowerCase())||c(k=>[{id:++mt,type:g,timestamp:u.timestamp||new Date().toISOString(),data:u.data||u},...k].slice(0,Ge))},[]));const D=()=>c([]);return e.jsxDEV("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px] sticky top-14 self-start max-h-[calc(100vh-8rem)] flex flex-col",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Event Stream"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:294,columnNumber:9},this),e.jsxDEV(Re,{className:`w-3 h-3 ${t?"text-status-success animate-pulse":"text-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:297,columnNumber:9},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:t?"Live":"..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:298,columnNumber:9},this),e.jsxDEV("span",{className:"ml-auto flex items-center gap-1",children:[e.jsxDEV("button",{onClick:()=>{l(u=>!u),s(!1)},className:`p-1 rounded transition-colors ${a?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"Configure channels",children:e.jsxDEV(Ae,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:308,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:303,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{s(u=>!u),l(!1)},className:`p-1 rounded transition-colors ${r?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"View raw JSON",children:e.jsxDEV(Le,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:315,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:310,columnNumber:11},this),n.length>0&&e.jsxDEV("button",{onClick:D,className:"p-1 rounded text-text-tertiary hover:text-text-primary transition-colors",title:"Clear events",children:e.jsxDEV(We,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:323,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:318,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:302,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:293,columnNumber:7},this),e.jsxDEV(M,{open:a,children:e.jsxDEV(pt,{channels:o,onToggle:C,customFilter:m,onCustomFilterChange:E},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:331,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:330,columnNumber:7},this),e.jsxDEV(M,{open:r,children:e.jsxDEV("div",{className:"pb-3 border-b border-surface-border mb-3",children:e.jsxDEV("pre",{className:"text-[9px] font-mono text-text-tertiary bg-surface-sunken rounded-lg p-3 max-h-[50vh] overflow-auto whitespace-pre-wrap",children:JSON.stringify(n.slice(0,50),null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:342,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:341,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:340,columnNumber:7},this),n.length>0&&e.jsxDEV("p",{className:"text-[9px] text-text-tertiary mb-2",children:[n.length," events"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:350,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto",children:n.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary py-6 text-center",children:t?"Waiting for events...":"Subscribing..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:358,columnNumber:11},this):dt(n).map((u,g)=>u.kind==="group"?e.jsxDEV(ut,{group:u},`grp-${g}`,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:364,columnNumber:15},this):e.jsxDEV(oe,{event:u.event},u.event.id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:366,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:356,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:291,columnNumber:5},this)}function bt(t){const a=[],l=[],r=[];for(const s of t)_(s)?r.push(s):s.is_scout||$([s]).total>0?a.push(s):l.push(s);return a.sort((s,n)=>s.is_scout&&!n.is_scout?-1:!s.is_scout&&n.is_scout?1:$([n]).total-$([s]).total),l.sort((s,n)=>A(s.engine_id).localeCompare(A(n.engine_id))),r.sort((s,n)=>A(s.engine_id).localeCompare(A(n.engine_id))),{active:a,idle:l,paused:r}}function z({engine:t,isFirst:a,onThrottle:l}){const r=A(t.engine_id),s=Ye(t.engine_id),n=$([t]),c=t.stream_depth??0,o=_(t);return e.jsxDEV("div",{className:"group/row flex items-center gap-3 py-2 hover:bg-surface-hover/50 transition-colors rounded px-1",children:[o?e.jsxDEV(J,{className:"w-3.5 h-3.5 text-status-warning shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:55,columnNumber:9},this):e.jsxDEV(Oe,{className:`w-3.5 h-3.5 shrink-0 ${n.total>0||t.is_scout?"text-status-success":"text-text-tertiary/30"}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:57,columnNumber:9},this),e.jsxDEV("span",{className:`${a?"text-base font-medium":"text-xs"} text-text-primary truncate max-w-[180px]`,title:t.engine_id,children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:60,columnNumber:7},this),s&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary/50",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:63,columnNumber:18},this),t.is_scout&&e.jsxDEV("span",{className:"text-[9px] text-amber-500 uppercase tracking-widest",children:"scout"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:66,columnNumber:9},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:69,columnNumber:7},this),o&&e.jsxDEV("span",{className:"text-[10px] text-status-warning",children:t.throttle===-1?"Paused":H(t.throttle)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:72,columnNumber:9},this),n.total>0&&e.jsxDEV("span",{className:"text-[10px] font-mono tabular-nums text-text-tertiary w-16 text-right",children:n.total.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:76,columnNumber:9},this),c>0&&e.jsxDEV("span",{className:`text-[10px] font-mono tabular-nums w-14 text-right ${c>100?"text-status-warning":"text-text-tertiary/50"}`,children:[c.toLocaleString()," q"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:80,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] font-mono text-text-tertiary/40 w-12 text-right",children:Ze(t.inited)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:83,columnNumber:7},this),e.jsxDEV("span",{className:"opacity-0 group-hover/row:opacity-100 transition-opacity",children:e.jsxDEV("button",{onClick:x=>{x.stopPropagation(),l(t)},className:"text-text-tertiary hover:text-accent transition-colors",title:o?"Resume / adjust throttle":"Pause / throttle",children:e.jsxDEV(B,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:91,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:86,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:85,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:53,columnNumber:5},this)}function ee({label:t,engines:a,onThrottle:l}){const[r,s]=i.useState(!1);return a.length===0?null:e.jsxDEV("div",{className:"mt-1",children:[e.jsxDEV("button",{onClick:()=>s(!r),className:"flex items-center gap-1.5 text-[10px] text-text-tertiary hover:text-text-secondary transition-colors py-1",children:[e.jsxDEV(se,{className:`w-3 h-3 transition-transform duration-200 ${r?"rotate-90":""}`,strokeWidth:2},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:112,columnNumber:9},this),a.length," ",t]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:108,columnNumber:7},this),e.jsxDEV(M,{open:r,children:e.jsxDEV("div",{className:"ml-1",children:a.map(n=>e.jsxDEV(z,{engine:n,onThrottle:l},n.engine_id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:118,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:116,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:115,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:107,columnNumber:5},this)}function xt({engines:t,onThrottle:a,isLoading:l}){const{active:r,idle:s,paused:n}=i.useMemo(()=>bt(t),[t]);return l?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Discovering engines..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:130,columnNumber:12},this):t.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"No engines found."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:134,columnNumber:12},this):r.length===0&&s.length===0?e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center gap-3 py-2",children:[e.jsxDEV(J,{className:"w-4 h-4 text-status-error shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:142,columnNumber:11},this),e.jsxDEV("span",{className:"text-base text-status-error font-medium",children:["All ",t.length," engines paused"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:143,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:141,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary ml-7",children:"Messages are accumulating. Resume at least one engine to restore processing."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:145,columnNumber:9},this),e.jsxDEV("div",{className:"ml-1 mt-2",children:n.map(c=>e.jsxDEV(z,{engine:c,onThrottle:a},c.engine_id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:148,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:146,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:140,columnNumber:7},this):e.jsxDEV("div",{children:[r.map((c,o)=>e.jsxDEV(z,{engine:c,isFirst:o===0,onThrottle:a},c.engine_id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:159,columnNumber:9},this)),e.jsxDEV(ee,{label:"idle",engines:s,onThrottle:a},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:163,columnNumber:7},this),e.jsxDEV(ee,{label:"paused",engines:n,onThrottle:a},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EngineCluster.tsx",lineNumber:156,columnNumber:5},this)}function Nt({collapsed:t,toggleSection:a,activeDuration:l,streamStats:r,isLoading:s,queueMap:n,expandedQueues:c,toggleQueue:o,allQueuesExpanded:x,toggleAllQueues:m,handleRowClick:E,handleResumeThrottle:N,handleQueueThrottle:v,handleResumeQueue:C,engines:D,bridgeActive:u}){return e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_340px] gap-6",children:[e.jsxDEV("div",{className:"flex flex-col gap-12 mt-10",children:[e.jsxDEV(I,{title:`Message Volume (${l})`,sectionKey:"volume",isCollapsed:!!t.volume,onToggle:a,contentClassName:"mt-4 ml-7",children:e.jsxDEV(ot,{byStream:(r==null?void 0:r.byStream)??[],onNodeFilter:()=>{},onQueueFilter:()=>{}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:56,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV(I,{title:`Engine Routers (${D.length})`,sectionKey:"engines",isCollapsed:!!t.engines,onToggle:a,contentClassName:"mt-4 ml-7",children:e.jsxDEV(xt,{engines:D,onThrottle:E,isLoading:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:71,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:64,columnNumber:9},this),e.jsxDEV(I,{title:"Worker Routers",sectionKey:"queues",isCollapsed:!!t.queues,onToggle:a,contentClassName:"mt-4 ml-7 flex flex-col gap-0",children:s?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Discovering mesh nodes..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:87,columnNumber:13},this):n.size===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:'No worker routers found. Click "Roll Call" to discover.'},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:89,columnNumber:13},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex justify-end mb-2",children:e.jsxDEV("button",{onClick:m,className:"text-[10px] text-accent hover:underline",children:x?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:93,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:92,columnNumber:15},this),[...n.entries()].sort(([g],[d])=>g.localeCompare(d)).map(([g,d])=>e.jsxDEV(it,{queue:g,workers:d,expanded:c.has(g),onToggle:o,onWorkerClick:E,onResumeThrottle:N,onQueueThrottle:v,onResumeQueue:C,byStream:(r==null?void 0:r.byStream)??[],activeDuration:l},g,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:100,columnNumber:19},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:91,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:79,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV(ht,{bridgeActive:u},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:119,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:46,columnNumber:5},this)}function Pt(){var G;const{data:t}=ae(),a=(t==null?void 0:t.apps)??[],{filters:l,setFilter:r}=ke({filters:{app_id:"",duration:"1h"}}),s=((G=a[0])==null?void 0:G.appId)??"durable",n=l.app_id||s,c=l.duration||"1h",o=Qe(),x=6e4,{data:m,isLoading:E,error:N,refetch:v,isFetching:C}=Se(n,x),{data:D}=$e(n,c,void 0,x),u=i.useMemo(()=>[...(m==null?void 0:m.profiles)??[]].sort((j,S)=>{const O=j.worker_topic||j.stream||"",R=S.worker_topic||S.stream||"";return!j.worker_topic&&S.worker_topic?-1:j.worker_topic&&!S.worker_topic?1:O.localeCompare(R)}),[m==null?void 0:m.profiles]),g=i.useMemo(()=>u.filter(h=>!F(h)),[u]),d=i.useMemo(()=>u.filter(F),[u]),b=i.useMemo(()=>Xe(u),[u]),k=u.filter(_).length,p=i.useMemo(()=>{const h=new Set(a.map(j=>j.appId));return n&&h.add(n),[...h].sort().map(j=>({value:j,label:j}))},[a,n]),[y]=He(),f=y.get("queue"),[w,P]=i.useState(()=>f?new Set([f]):new Set),V=i.useCallback(h=>{P(j=>{const S=j.has(h),O=S?new Set:new Set([h]),R=new URLSearchParams(window.location.search);S?R.delete("queue"):R.set("queue",h);const K=R.toString();return window.history.pushState(null,"",K?`?${K}`:window.location.pathname),O})},[]),Q=b.size>0&&[...b.keys()].every(h=>w.has(h)),W=i.useCallback(()=>{P(Q?new Set:new Set(b.keys()))},[Q,b]),T="lt:controlplane:collapsed",[ie,me]=i.useState(()=>{try{const h=JSON.parse(localStorage.getItem(T)||"{}");return f&&(h.queues=!1),h}catch{return{}}}),ce=i.useCallback(h=>{me(j=>{const S={...j,[h]:!j[h]};return localStorage.setItem(T,JSON.stringify(S)),S})},[]),{throttleModalOpen:de,throttleTargets:U,selectedThrottleTargets:ue,throttleMutation:pe,handleBulkThrottle:he,handleRowClick:be,handleResumeThrottle:xe,handleResumeQueue:Ne,handleQueueThrottle:fe,closeThrottleModal:ge}=at({activeAppId:n,allProfiles:u,profiles:u}),ve=i.useMemo(()=>{const h=[{label:"Engines",value:g.length,dotClass:"bg-blue-500"},{label:"Workers",value:d.length,dotClass:"bg-text-secondary"},{label:"Topics",value:b.size}];return k>0&&h.push({label:"Throttled",value:k,dotClass:"bg-status-warning"}),h},[g.length,d.length,b.size,k]),[q,Ee]=i.useState(!1),Ce=i.useCallback(()=>{o.mutate({appId:n},{onSuccess:()=>Ee(!0)})},[n,o]);return i.useEffect(()=>{!q&&n&&Ce()},[n]),e.jsxDEV("div",{children:[e.jsxDEV(De,{title:"Routers",docsHash:"#docs:dashboard.md:task-queues",stats:ve,actions:e.jsxDEV(lt,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:164,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:160,columnNumber:7},this),e.jsxDEV(ye,{actions:e.jsxDEV("div",{className:"flex items-center gap-1",children:Ue.map(h=>e.jsxDEV("button",{onClick:()=>r("duration",h.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${c===h.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:h.label},h.value,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:171,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:169,columnNumber:11},this),children:[e.jsxDEV(we,{label:"Application",value:l.app_id,onChange:h=>r("app_id",h),options:p},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:186,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>v(),disabled:C,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:[e.jsxDEV(Ie,{className:`w-3.5 h-3.5 ${C?"animate-spin":""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:197,columnNumber:11},this),"Roll Call"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:192,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:167,columnNumber:7},this),N&&e.jsxDEV("div",{className:"mb-6 px-4 py-3 rounded bg-status-error/10 border border-status-error/20",children:e.jsxDEV("p",{className:"text-xs text-status-error font-medium",children:N.message==="Session expired"?"Session expired — please log in again.":`Failed to load mesh data: ${N.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:205,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:204,columnNumber:9},this),e.jsxDEV(Nt,{collapsed:ie,toggleSection:ce,activeDuration:c,streamStats:D,isLoading:E,queueMap:b,expandedQueues:w,toggleQueue:V,allQueuesExpanded:Q,toggleAllQueues:W,handleRowClick:be,handleResumeThrottle:xe,handleQueueThrottle:fe,handleResumeQueue:Ne,engines:g,bridgeActive:q},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:213,columnNumber:7},this),e.jsxDEV(nt,{open:de,onClose:ge,targets:U.length>0?U:ue,onApply:he,isPending:pe.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:232,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:159,columnNumber:5},this)}export{Pt as ControlPlanePage};
|
|
2
|
-
//# sourceMappingURL=index-BR3SwTNI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as N,j as e}from"./index-4T7Z_gQ4.js";import{c as V,u as M,b as J,a as d}from"./vendor-query-DLp59M9_.js";import{P as A}from"./PageHeader-DF4BeEm4.js";import{M as R}from"./Modal-Qe8lW7gQ.js";import{R as x,C as y}from"./constants-BHkpVaqx.js";import{am as w,ag as k,aa as O,a7 as f,n as F,a4 as W}from"./vendor-icons-D8-ZINAH.js";import"./vendor-react-Co3Y8ikm.js";function I(){return M({queryKey:["maintenance"],queryFn:()=>N("/config/maintenance")})}function $(){const a=J();return V({mutationFn:s=>N("/config/maintenance",{method:"PUT",body:JSON.stringify(s)}),onSuccess:()=>{a.invalidateQueries({queryKey:["maintenance"]})}})}function _(){return V({mutationFn:a=>N("/dba/prune",{method:"POST",body:JSON.stringify(a)})})}function S({checked:a,onToggle:s,label:t,hint:n,safety:i,value:l,onChange:m}){const r=i==="safe"?O:i==="moderate"?w:k,c=i==="safe"?"text-status-success":i==="moderate"?"text-status-warning":"text-status-error",b=i==="safe"?"Safe":i==="moderate"?"Careful":"Permanent";return e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("label",{className:"flex items-center gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsxDEV("input",{type:"checkbox",checked:a,onChange:o=>s(o.target.checked),className:"w-4 h-4 rounded border-border accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:30,columnNumber:13},this),e.jsxDEV("span",{className:`flex items-center gap-0.5 text-[9px] ${c}`,children:[e.jsxDEV(r,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:32,columnNumber:15},this),b]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:31,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:29,columnNumber:11},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:36,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:28,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:21,columnNumber:7},this),e.jsxDEV("select",{value:l,onChange:o=>m(o.target.value),disabled:!a,className:`select text-xs w-36 transition-opacity ${a?"":"opacity-40 cursor-not-allowed"}`,children:x.map(o=>e.jsxDEV("option",{value:o.value,children:o.label},o.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:46,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:39,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:20,columnNumber:5},this)}function q(){return e.jsxDEV("div",{className:"flex items-start gap-2 mt-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsxDEV(f,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:93,columnNumber:7},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary leading-relaxed",children:"Stripping preserves workflow results and timeline data needed for the execution detail view. Transient jobs are internal bookkeeping that accumulates over time."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:94,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:92,columnNumber:5},this)}const g={pruneJobs:!0,expire:"30 days",engineStreams:!0,engineStreamsExpire:"1 day",workerStreams:!0,workerStreamsExpire:"90 days",stripAttributes:!1,pruneTransient:!1};function E(a){return a.pruneJobs||a.engineStreams||a.workerStreams||a.stripAttributes||a.pruneTransient}function P({fields:a,onChange:s}){const t=(n,i)=>s({...a,[n]:i});return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Stream Messages"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:143,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mb-4",children:"Processed routing messages. Already consumed — safe to remove after a short retention window."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:146,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV(S,{checked:a.engineStreams,onToggle:n=>t("engineStreams",n),label:"Engine messages",hint:"Internal orchestration signals",safety:"safe",value:a.engineStreamsExpire,onChange:n=>t("engineStreamsExpire",n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:150,columnNumber:11},this),e.jsxDEV(S,{checked:a.workerStreams,onToggle:n=>t("workerStreams",n),label:"Worker messages",hint:"Activity dispatch and response payloads",safety:"safe",value:a.workerStreamsExpire,onChange:n=>t("workerStreamsExpire",n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:156,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:149,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:142,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Completed Workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:167,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mb-4",children:"Choose how to handle completed workflow records. Reducing strips step-level detail but keeps the workflow and its results. Deleting removes the record entirely."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:170,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("label",{className:"flex items-start gap-2.5 cursor-pointer",children:[e.jsxDEV("input",{type:"radio",name:"workflow-cleanup",checked:!a.stripAttributes&&!a.pruneJobs,onChange:()=>s({...a,stripAttributes:!1,pruneJobs:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:176,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:"Keep as-is"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:184,columnNumber:15},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:"No changes to completed workflow records."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:185,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:183,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:175,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-start gap-2.5",children:[e.jsxDEV("label",{className:"flex items-start gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsxDEV("input",{type:"radio",name:"workflow-cleanup",checked:a.stripAttributes&&!a.pruneJobs,onChange:()=>s({...a,stripAttributes:!0,pruneJobs:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:191,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:"Reduce completed workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:200,columnNumber:19},this),e.jsxDEV("span",{className:"flex items-center gap-0.5 text-[9px] text-status-warning",children:[e.jsxDEV(w,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:202,columnNumber:21},this),"Careful"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:201,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:199,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:"Strips step-level execution detail (activity inputs/outputs, internal state). Workflow results and timeline are preserved."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:206,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:198,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:190,columnNumber:13},this),e.jsxDEV("select",{value:a.expire,onChange:n=>t("expire",n.target.value),disabled:!a.stripAttributes||a.pruneJobs,className:`select text-xs w-36 transition-opacity mt-0.5 ${!a.stripAttributes||a.pruneJobs?"opacity-40 cursor-not-allowed":""}`,children:x.map(n=>e.jsxDEV("option",{value:n.value,children:n.label},n.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:219,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:212,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:189,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-start gap-2.5",children:[e.jsxDEV("label",{className:"flex items-start gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsxDEV("input",{type:"radio",name:"workflow-cleanup",checked:a.pruneJobs,onChange:()=>s({...a,pruneJobs:!0,stripAttributes:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:226,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:"Delete completed workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:235,columnNumber:19},this),e.jsxDEV("span",{className:"flex items-center gap-0.5 text-[9px] text-status-error",children:[e.jsxDEV(k,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:237,columnNumber:21},this),"Permanent"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:236,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:234,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:"Permanently removes workflow records. Results, timeline, and all execution data are deleted and cannot be recovered."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:241,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:233,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:225,columnNumber:13},this),e.jsxDEV("select",{value:a.expire,onChange:n=>t("expire",n.target.value),disabled:!a.pruneJobs,className:`select text-xs w-36 transition-opacity mt-0.5 ${a.pruneJobs?"":"opacity-40 cursor-not-allowed"}`,children:x.map(n=>e.jsxDEV("option",{value:n.value,children:n.label},n.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:254,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:247,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:224,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:174,columnNumber:9},this),e.jsxDEV(q,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:259,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:140,columnNumber:5},this)}function p({label:a,value:s}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-lg font-light text-text-primary",children:s.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:9,columnNumber:7},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:10,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:8,columnNumber:5},this)}function L(){const a=_(),[s,t]=d.useState(g),[n,i]=d.useState(null),[l,m]=d.useState(!1),r=()=>{i(null),a.mutate({expire:s.expire,jobs:s.pruneJobs,engineStreams:s.engineStreams,engineStreamsExpire:s.engineStreamsExpire,workerStreams:s.workerStreams,workerStreamsExpire:s.workerStreamsExpire,attributes:s.stripAttributes,pruneTransient:s.pruneTransient},{onSuccess:c=>{i(c),m(!1)}})};return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV(P,{fields:s,onChange:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:45,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:E(s)?"This action permanently deletes data and cannot be undone.":"Select at least one operation to enable pruning."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>m(!0),disabled:!E(s)||a.isPending,className:"bg-status-error text-white px-4 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity disabled:opacity-40 shrink-0",children:a.isPending?"Pruning...":"Prune Now"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:48,columnNumber:7},this),n&&e.jsxDEV("div",{className:"bg-surface-sunken rounded-md px-4 py-3",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Results"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:66,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-6",children:[n.jobs!=null&&n.jobs>0&&e.jsxDEV(p,{label:"Jobs deleted",value:n.jobs},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:70,columnNumber:56},this),n.engineStreams!=null&&n.engineStreams>0&&e.jsxDEV(p,{label:"Engine streams",value:n.engineStreams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:71,columnNumber:74},this),n.workerStreams!=null&&n.workerStreams>0&&e.jsxDEV(p,{label:"Worker streams",value:n.workerStreams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:72,columnNumber:74},this),n.streams!=null&&n.engineStreams==null&&n.streams>0&&e.jsxDEV(p,{label:"Streams",value:n.streams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:73,columnNumber:94},this),n.attributes!=null&&n.attributes>0&&e.jsxDEV(p,{label:"Artifacts stripped",value:n.attributes},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:74,columnNumber:68},this),n.transient!=null&&n.transient>0&&e.jsxDEV(p,{label:"Transient deleted",value:n.transient},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:75,columnNumber:66},this),n.marked!=null&&n.marked>0&&e.jsxDEV(p,{label:"Marked pruned",value:n.marked},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:76,columnNumber:60},this),Object.values(n).every(c=>!c||c===0)&&e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Nothing to prune within the selected retention windows."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:78,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:65,columnNumber:9},this),a.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:a.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:85,columnNumber:9},this),e.jsxDEV(R,{open:l,onClose:()=>m(!1),title:"Confirm Prune",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"This will permanently delete data. This action cannot be undone."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:91,columnNumber:11},this),e.jsxDEV("ul",{className:"text-xs text-text-secondary space-y-1 list-disc list-inside",children:[s.pruneJobs&&e.jsxDEV("li",{children:["Delete jobs older than ",s.expire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:95,columnNumber:34},this),s.engineStreams&&e.jsxDEV("li",{children:["Delete engine streams older than ",s.engineStreamsExpire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:96,columnNumber:38},this),s.workerStreams&&e.jsxDEV("li",{children:["Delete worker streams older than ",s.workerStreamsExpire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:97,columnNumber:38},this),s.stripAttributes&&e.jsxDEV("li",{children:"Strip execution artifacts from completed jobs"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:98,columnNumber:40},this),s.pruneTransient&&e.jsxDEV("li",{children:"Delete transient (entity-less) jobs"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:99,columnNumber:39},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:94,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:()=>m(!1),className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:102,columnNumber:13},this),e.jsxDEV("button",{onClick:r,className:"bg-status-error text-white px-3 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity",disabled:a.isPending,children:a.isPending?"Pruning...":"Confirm Prune"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:103,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:90,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:89,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:44,columnNumber:5},this)}function j(a){var m;if(!((m=a==null?void 0:a.rules)!=null&&m.length))return g;const s=a.rules,t=s.find(r=>r.target==="streams"&&r.action==="delete"),n=s.find(r=>r.target==="jobs"&&r.action==="delete"&&r.hasEntity===!1),i=s.find(r=>r.target==="jobs"&&r.action==="prune"&&r.hasEntity===!0),l=s.find(r=>r.target==="jobs"&&r.action==="delete"&&r.pruned===!0);return{pruneJobs:!!l,expire:(l==null?void 0:l.olderThan)??"180 days",engineStreams:!!t,engineStreamsExpire:(t==null?void 0:t.olderThan)??"1 day",workerStreams:!!t,workerStreamsExpire:(t==null?void 0:t.olderThan)??"90 days",stripAttributes:!!i,pruneTransient:!!n}}function U(a){const s=[];return a.engineStreams&&s.push({target:"streams",action:"delete",olderThan:a.engineStreamsExpire}),a.workerStreams&&a.workerStreamsExpire!==a.engineStreamsExpire&&s.push({target:"streams",action:"delete",olderThan:a.workerStreamsExpire}),a.pruneTransient&&s.push({target:"jobs",action:"delete",olderThan:a.expire,hasEntity:!1}),a.stripAttributes&&s.push({target:"jobs",action:"prune",olderThan:a.expire,hasEntity:!0}),a.pruneJobs&&s.push({target:"jobs",action:"delete",olderThan:a.expire,pruned:!0}),s}function D(a){var s;return((s=y.find(t=>t.value===a))==null?void 0:s.label)??""}function H(){const{data:a,isLoading:s}=I(),t=$(),[n,i]=d.useState(""),[l,m]=d.useState(g),[r,c]=d.useState(""),b=d.useCallback(()=>{a!=null&&a.config&&(i(a.config.schedule),m(j(a.config)),c(JSON.stringify({schedule:a.config.schedule,fields:j(a.config)})))},[a]);d.useEffect(()=>{b()},[b]);const o=JSON.stringify({schedule:n,fields:l}),v=r!==""&&o!==r,h=(a==null?void 0:a.active)??!1,C=()=>{const u=U(l);t.mutate({schedule:n,rules:u},{onSuccess:()=>{c(JSON.stringify({schedule:n,fields:l}))}})},T=()=>{b()};return s?e.jsxDEV("div",{className:"animate-pulse h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:99,columnNumber:12},this):e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_auto] gap-10",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:107,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-end gap-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] text-text-tertiary mb-1",children:"Cron Expression"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:112,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:n,onChange:u=>i(u.target.value),placeholder:"0 2 * * *",className:"input text-xs font-mono w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:113,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("div",{children:e.jsxDEV("div",{className:"flex items-center gap-1.5 h-8",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full ${h?"bg-status-success":"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:123,columnNumber:17},this),e.jsxDEV("span",{className:`text-xs ${h?"text-status-success":"text-text-tertiary"}`,children:h?"Active":"Inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:124,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:122,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:121,columnNumber:13},this),D(n)&&e.jsxDEV("p",{className:"text-xs text-text-tertiary h-8 flex items-center",children:D(n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:130,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:110,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-3",children:y.map(u=>e.jsxDEV("button",{type:"button",onClick:()=>i(u.value),className:`px-2.5 py-1 text-[10px] rounded-full transition-colors ${n===u.value?"bg-accent/10 text-accent font-medium":"bg-surface-sunken text-text-tertiary hover:text-text-secondary"}`,children:u.label},u.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:137,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:135,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"lg:w-72",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"How It Works"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:154,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-start gap-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsxDEV(f,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:158,columnNumber:13},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary leading-relaxed",children:"Rules execute sequentially on each cron cycle. Engine streams can be pruned aggressively since they only contain internal routing data. Worker streams should be retained longer to preserve execution playback and input enrichment."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:153,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:105,columnNumber:7},this),e.jsxDEV(P,{fields:l,onChange:m},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:169,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[v&&e.jsxDEV("button",{onClick:T,className:"text-[10px] text-text-tertiary hover:text-text-primary transition-colors",children:"Revert changes"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:175,columnNumber:13},this),t.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:t.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:183,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:173,columnNumber:9},this),e.jsxDEV("button",{onClick:C,disabled:!v||!n.trim()||t.isPending,className:"btn-primary text-xs disabled:opacity-40 shrink-0",children:t.isPending?"Saving...":"Save Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:186,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:172,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:103,columnNumber:5},this)}function K({mode:a,onChange:s}){const t=(n,i,l)=>e.jsxDEV("button",{onClick:()=>s(n),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${a===n?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[i,l]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:11,columnNumber:5},this);return e.jsxDEV("div",{className:"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[t("prune",e.jsxDEV(F,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:26,columnNumber:21},this),"Prune Now"),t("schedule",e.jsxDEV(W,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:27,columnNumber:24},this),"Schedule")]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:25,columnNumber:5},this)}function ee(){const[a,s]=d.useState("schedule");return e.jsxDEV("div",{children:[e.jsxDEV(A,{title:"DB Maintenance",docsHash:"#docs:dashboard.md:db-maintenance",actions:e.jsxDEV(K,{mode:a,onChange:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:40,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:37,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-start gap-2 px-4 py-3 mb-8 rounded-md bg-accent/5 border border-accent/10",children:[e.jsxDEV(f,{className:"w-4 h-4 text-accent shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:44,columnNumber:9},this),e.jsxDEV("p",{className:"text-xs text-text-secondary leading-relaxed",children:"Workflow data grows as jobs complete. Operations are ordered safest-first: stream messages are always safe to prune, workflow reduction preserves results, and deletion is permanent."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:45,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:43,columnNumber:7},this),a==="prune"?e.jsxDEV(L,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:51,columnNumber:27},this):e.jsxDEV(H,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:51,columnNumber:46},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:36,columnNumber:5},this)}export{ee as MaintenancePage};
|
|
2
|
-
//# sourceMappingURL=index-BWKIigEk.js.map
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-4T7Z_gQ4.js";import{a as u}from"./vendor-query-DLp59M9_.js";import{e as Z,i as ee,u as J,j as se,b as re}from"./workflows-BNbocg_9.js";import{D as oe}from"./DataTable-DGerT2ZM.js";import{C as ae}from"./ConfirmDeleteModal-_hW5Vc05.js";import{F as te,b as _}from"./FilterBar-TYiTtUgv.js";import{R as ie,a as S}from"./RowActions-QcakGbVA.js";import{u as le}from"./useFilterParams-CGRYFw_A.js";import{P as M}from"./PageHeader-DF4BeEm4.js";import{R as I}from"./RolePill-DrBZ7JJj.js";import{T as ne}from"./TaskQueuePill-BJRUjVDv.js";import{W as ce}from"./WorkflowPill-B5B3yGlh.js";import{aa as q,S as me,ac as T,ae as de,P as ue,af as fe,ag as pe,U as L,X as B,i as Q,K as H,c as O}from"./vendor-icons-D8-ZINAH.js";import{c as K,e as he,f as Ne}from"./vendor-react-Co3Y8ikm.js";import{S as be}from"./StepIndicator-CDDVahOz.js";import{u as ge}from"./roles-E_bA4e0f.js";import{B as we}from"./BotPicker-CYfFMpkY.js";import"./EmptyState-DMldv8c5.js";import"./Modal-Qe8lW7gQ.js";import"./bots-BPlouRDm.js";function xe(s,o){const l=o.toLowerCase();return s.workflow_type.toLowerCase().includes(l)||(s.description??"").toLowerCase().includes(l)}function He(){const s=K(),{data:o,isLoading:l}=Z(),d=ee(),{filters:a,setFilter:n}=le({filters:{search:"",queue:"",role:"",tier:""}}),[m,v]=u.useState(a.search),[p,y]=u.useState(null);u.useEffect(()=>{if(m===a.search)return;const r=setTimeout(()=>n("search",m),300);return()=>clearTimeout(r)},[m,n,a.search]);const i=o??[],f=u.useMemo(()=>[...new Set(i.map(r=>r.task_queue).filter(Boolean))].sort(),[i]),c=u.useMemo(()=>[...new Set(i.flatMap(r=>r.roles??[]))].sort(),[i]),t=u.useMemo(()=>{let r=i;return a.search&&(r=r.filter(N=>xe(N,a.search))),a.queue&&(r=r.filter(N=>N.task_queue===a.queue)),a.role&&(r=r.filter(N=>(N.roles??[]).includes(a.role))),a.tier&&(r=r.filter(N=>N.tier===a.tier)),r},[i,a]),C=[{key:"workflow_type",label:"Workflow",className:"max-w-xs",render:r=>e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV(ce,{type:r.workflow_type,size:"md",variant:r.tier==="certified"?"certified":r.tier==="configured"?"configured":"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:78,columnNumber:11},this),r.description&&e.jsxDEV("p",{className:"text-[10px] leading-tight text-text-quaternary mt-0.5",children:r.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:80,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:77,columnNumber:9},this)},{key:"task_queue",label:"Queue",render:r=>r.task_queue?e.jsxDEV(ne,{queue:r.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:88,columnNumber:41},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:88,columnNumber:84},this),className:"whitespace-nowrap"},{key:"tier",label:"Tier",render:r=>r.tier==="certified"?e.jsxDEV("span",{className:"inline-flex items-center gap-1 text-[10px] font-medium text-text-secondary",children:[e.jsxDEV(q,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:95,columnNumber:139},this),"Certified"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:95,columnNumber:46},this):r.tier==="configured"?e.jsxDEV("span",{className:"inline-flex items-center gap-1 text-[10px] font-medium text-text-secondary",children:[e.jsxDEV(me,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:96,columnNumber:140},this),"Configured"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:96,columnNumber:47},this):e.jsxDEV("span",{className:"inline-flex items-center gap-1 text-[10px] font-medium text-text-secondary",children:[e.jsxDEV(T,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:97,columnNumber:109},this),"Durable"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:97,columnNumber:16},this),className:"whitespace-nowrap"},{key:"roles",label:"Access",render:r=>{if(!r.registered)return e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:105,columnNumber:37},this);const N=r.roles??[],b=r.invocation_roles??[];return!N.length&&!b.length?e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:108,columnNumber:61},this):e.jsxDEV("div",{className:"space-y-1.5",children:[N.length>0&&e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{title:"Escalation roles",children:e.jsxDEV(q,{className:"w-3 h-3 text-text-quaternary shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:113,columnNumber:48},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:113,columnNumber:17},this),e.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:N.map(D=>e.jsxDEV(I,{role:D},`e-${D}`,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:114,columnNumber:76},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:114,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:112,columnNumber:15},this),b.length>0&&e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{title:"Invocation roles",children:e.jsxDEV(de,{className:"w-3 h-3 text-text-quaternary shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:119,columnNumber:48},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:119,columnNumber:17},this),e.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:b.map(D=>e.jsxDEV(I,{role:D},`i-${D}`,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:120,columnNumber:79},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:120,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:118,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:110,columnNumber:11},this)}},{key:"actions",label:"",render:r=>e.jsxDEV(ie,{children:[r.invocable&&e.jsxDEV(S,{icon:ue,title:"Invoke workflow",onClick:()=>s(`/workflows/start?type=${encodeURIComponent(r.workflow_type)}&mode=now`),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:133,columnNumber:13},this),r.tier==="durable"&&e.jsxDEV(S,{icon:T,title:"Configure workflow",onClick:()=>s(`/workflows/registry/new?workflow_type=${encodeURIComponent(r.workflow_type)}&task_queue=${encodeURIComponent(r.task_queue??"")}`),colorClass:"text-text-tertiary hover:text-status-info"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:141,columnNumber:13},this),r.tier==="configured"&&e.jsxDEV(S,{icon:fe,title:"Certify workflow",onClick:()=>s(`/workflows/registry/${encodeURIComponent(r.workflow_type)}`),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:149,columnNumber:13},this),r.registered&&e.jsxDEV(S,{icon:pe,title:"Remove configuration",onClick:()=>y(r.workflow_type),colorClass:"text-text-tertiary hover:text-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:157,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:131,columnNumber:9},this),className:"w-16 text-right"}],V=()=>{p&&d.mutate(p,{onSuccess:()=>y(null)})},E=r=>{r.registered?s(`/workflows/registry/${encodeURIComponent(r.workflow_type)}`):s(`/workflows/registry/new?workflow_type=${encodeURIComponent(r.workflow_type)}&task_queue=${encodeURIComponent(r.task_queue??"")}`)};return e.jsxDEV("div",{children:[e.jsxDEV(M,{title:"Workflow Registry",docsHash:"#docs:dashboard.md:workflow-registry",actions:e.jsxDEV("button",{onClick:()=>s("/workflows/registry/new"),className:"btn-primary text-xs",children:"Register Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:191,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:187,columnNumber:7},this),e.jsxDEV(te,{children:[e.jsxDEV("input",{type:"text",placeholder:"Search workflow type...",value:m,onChange:r=>v(r.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:201,columnNumber:9},this),e.jsxDEV(_,{label:"Queue",value:a.queue,onChange:r=>n("queue",r),options:f.map(r=>({value:r,label:r}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:208,columnNumber:9},this),e.jsxDEV(_,{label:"Tier",value:a.tier,onChange:r=>n("tier",r),options:[{value:"certified",label:"Certified"},{value:"configured",label:"Configured"},{value:"durable",label:"Durable"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:214,columnNumber:9},this),e.jsxDEV(_,{label:"Role",value:a.role,onChange:r=>n("role",r),options:c.map(r=>({value:r,label:r}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:224,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:200,columnNumber:7},this),e.jsxDEV(oe,{columns:C,data:t,keyFn:r=>r.workflow_type,onRowClick:E,isLoading:l,emptyMessage:"No workflows found"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:232,columnNumber:7},this),e.jsxDEV(ae,{open:!!p,onClose:()=>y(null),onConfirm:V,title:"De-certify Workflow",description:e.jsxDEV(e.Fragment,{children:["Remove certification from ",e.jsxDEV("span",{className:"font-mono font-medium text-text-primary",children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:247,columnNumber:50},this),"? This removes interceptor guarantees, escalation chains, and invocation role constraints. The workflow will continue running as a standard durable workflow."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:247,columnNumber:22},this),isPending:d.isPending,error:d.error},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:242,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigsPage.tsx",lineNumber:186,columnNumber:5},this)}function j(s){return s.split(",").map(o=>o.trim()).filter(Boolean)}const R={workflow_type:"",description:"",task_queue:"",default_role:"reviewer",invocable:!1,roles:"",invocation_roles:"",consumes:"",envelope_schema:"",resolver_schema:"",cron_schedule:"",execute_as:"",certified:!1};function ke(s){const o=(s.roles??[]).join(", "),l=(s.consumes??[]).join(", ");return{workflow_type:s.workflow_type,description:s.description??"",task_queue:s.task_queue??"",default_role:s.default_role,invocable:s.invocable,roles:o,invocation_roles:(s.invocation_roles??[]).join(", "),consumes:l,envelope_schema:s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):"",resolver_schema:s.resolver_schema?JSON.stringify(s.resolver_schema,null,2):"",cron_schedule:s.cron_schedule??"",execute_as:s.execute_as??"",certified:!!(o||l)}}const F=["Identity","Invocation","Advanced"];function W(s){if(!s.trim())return!0;try{return JSON.parse(s),!0}catch{return!1}}function $(s,o){return s===1?!!o.workflow_type.trim():s===2?W(o.envelope_schema):s===3?W(o.resolver_schema):!0}const k="label",w="hint",Y="input-json w-full";function A({selected:s,onChange:o,single:l,placeholder:d}){const{data:a}=ge(),n=(a==null?void 0:a.roles)??[],[m,v]=u.useState(!1),p=u.useRef(null);u.useEffect(()=>{const c=t=>{p.current&&!p.current.contains(t.target)&&v(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[]);const y=c=>{l?(o(s.includes(c)?[]:[c]),v(!1)):o(s.includes(c)?s.filter(t=>t!==c):[...s,c])},i=c=>{o(s.filter(t=>t!==c))},f=d??(l?"Select role...":"Add roles...");return e.jsxDEV("div",{ref:p,className:"relative",children:[e.jsxDEV("button",{type:"button",onClick:()=>v(!m),className:"flex flex-wrap items-center gap-1.5 w-full min-h-[34px] px-2 py-1.5 bg-surface-sunken border border-surface-border rounded-md text-left cursor-pointer hover:border-accent/40 transition-colors focus:ring-1 focus:ring-accent focus:outline-none",children:[s.length===0&&e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:f},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:55,columnNumber:11},this),s.map(c=>e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-lg bg-accent/[0.08] text-text-secondary text-[11px]",children:[e.jsxDEV(L,{className:"w-2.5 h-2.5 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:62,columnNumber:13},this),c,e.jsxDEV("span",{role:"button",onClick:t=>{t.stopPropagation(),i(c)},className:"ml-0.5 hover:text-status-error transition-colors",children:e.jsxDEV(B,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:69,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:64,columnNumber:13},this)]},c,!0,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:58,columnNumber:11},this)),e.jsxDEV(Q,{className:`w-3.5 h-3.5 ml-auto shrink-0 text-text-tertiary transition-transform ${m?"rotate-180":""}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:49,columnNumber:7},this),m&&e.jsxDEV("div",{className:"absolute z-20 mt-1 w-full bg-white border border-surface-border rounded-md shadow-lg max-h-48 overflow-y-auto",children:n.length===0?e.jsxDEV("p",{className:"px-3 py-2 text-xs text-text-tertiary",children:"No roles defined"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:80,columnNumber:13},this):n.map(c=>{const t=s.includes(c);return e.jsxDEV("button",{type:"button",onClick:()=>y(c),className:`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs transition-colors ${t?"bg-accent/[0.06] text-accent":"text-text-primary hover:bg-surface-sunken"}`,children:[e.jsxDEV(L,{className:"w-3 h-3 shrink-0 text-accent/60"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:95,columnNumber:19},this),e.jsxDEV("span",{className:"flex-1",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:96,columnNumber:19},this),t&&e.jsxDEV(H,{className:"w-3 h-3 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:97,columnNumber:34},this)]},c,!0,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:85,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:78,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RolePicker.tsx",lineNumber:47,columnNumber:5},this)}function ve({options:s,selected:o,onChange:l,placeholder:d}){const[a,n]=u.useState(!1),m=u.useRef(null);u.useEffect(()=>{const i=f=>{m.current&&!m.current.contains(f.target)&&n(!1)};return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[]);const v=i=>{l(o.includes(i)?o.filter(f=>f!==i):[...o,i])},p=i=>{l(o.filter(f=>f!==i))},y=d??"Add workflows...";return e.jsxDEV("div",{ref:m,className:"relative",children:[e.jsxDEV("button",{type:"button",onClick:()=>n(!a),className:"flex flex-wrap items-center gap-1.5 w-full min-h-[34px] px-2 py-1.5 bg-surface-sunken border border-surface-border rounded-md text-left cursor-pointer hover:border-accent/40 transition-colors focus:ring-1 focus:ring-accent focus:outline-none",children:[o.length===0&&e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:y},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:45,columnNumber:11},this),o.map(i=>e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-lg bg-accent/[0.08] text-text-secondary text-[11px] font-mono",children:[e.jsxDEV(O,{className:"w-2.5 h-2.5 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:52,columnNumber:13},this),i,e.jsxDEV("span",{role:"button",onClick:f=>{f.stopPropagation(),p(i)},className:"ml-0.5 hover:text-status-error transition-colors",children:e.jsxDEV(B,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:59,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:54,columnNumber:13},this)]},i,!0,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:48,columnNumber:11},this)),e.jsxDEV(Q,{className:`w-3.5 h-3.5 ml-auto shrink-0 text-text-tertiary transition-transform ${a?"rotate-180":""}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:39,columnNumber:7},this),a&&e.jsxDEV("div",{className:"absolute z-20 mt-1 w-full bg-white border border-surface-border rounded-md shadow-lg max-h-48 overflow-y-auto",children:s.length===0?e.jsxDEV("p",{className:"px-3 py-2 text-xs text-text-tertiary",children:"No registered workflows"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:69,columnNumber:13},this):s.map(i=>{const f=o.includes(i);return e.jsxDEV("button",{type:"button",onClick:()=>v(i),className:`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs font-mono transition-colors ${f?"bg-accent/[0.06] text-accent":"text-text-primary hover:bg-surface-sunken"}`,children:[e.jsxDEV(O,{className:"w-3 h-3 shrink-0 text-accent/60"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:84,columnNumber:19},this),e.jsxDEV("span",{className:"flex-1",children:i},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:85,columnNumber:19},this),f&&e.jsxDEV(H,{className:"w-3 h-3 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:86,columnNumber:34},this)]},i,!0,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:74,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/WorkflowPicker.tsx",lineNumber:38,columnNumber:5},this)}function z(s){return j(s)}function U(s){return s.join(", ")}function ye({form:s,set:o}){const{data:l}=J(),d=(l??[]).map(a=>a.workflow_type).filter(a=>a!==s.workflow_type);return e.jsxDEV("div",{className:"space-y-5",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Resolver Schema"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:31,columnNumber:9},this),e.jsxDEV("textarea",{value:s.resolver_schema,onChange:a=>o("resolver_schema",a.target.value),placeholder:`{
|
|
2
|
-
"properties": {
|
|
3
|
-
"approved": { "type": "boolean", "default": false, "description": "Approve?" },
|
|
4
|
-
"notes": { "type": "string", "default": "", "description": "Reviewer notes" }
|
|
5
|
-
}
|
|
6
|
-
}`,className:Y,rows:8,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:32,columnNumber:9},this),e.jsxDEV("p",{className:w,children:["Default form template for resolving escalations from this workflow. Use ",e.jsxDEV("span",{className:"font-mono",children:"properties"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:15},this)," with ",e.jsxDEV("span",{className:"font-mono",children:"type"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:66},this),", ",e.jsxDEV("span",{className:"font-mono",children:"default"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:107},this),", ",e.jsxDEV("span",{className:"font-mono",children:"description"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:151},this),", ",e.jsxDEV("span",{className:"font-mono",children:"enum"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:199},this),", and ",e.jsxDEV("span",{className:"font-mono",children:"format"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:42,columnNumber:244},this)," for typed form fields."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:40,columnNumber:9},this),s.resolver_schema.trim()&&!W(s.resolver_schema)&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-1",children:"Invalid JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:30,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-6 pt-1",children:e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:s.certified,onChange:a=>o("certified",a.target.checked),className:"w-4 h-4 rounded border-border accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:52,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-medium",children:"Certify for HITL Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:58,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:51,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:50,columnNumber:7},this),e.jsxDEV("p",{className:w,children:"Certified workflows use the interceptor to wrap executions — failures escalate to human reviewers instead of throwing."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:61,columnNumber:7},this),s.certified?e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Default Escalation Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:70,columnNumber:13},this),e.jsxDEV(A,{selected:z(s.default_role),onChange:a=>o("default_role",a[0]??""),single:!0,placeholder:"Select escalation role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:71,columnNumber:13},this),e.jsxDEV("p",{className:w,children:"When this workflow escalates, assign to users with this role"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:77,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:69,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Escalation Roles"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:84,columnNumber:13},this),e.jsxDEV(A,{selected:z(s.roles),onChange:a=>o("roles",U(a)),placeholder:"Select who can resolve escalations..."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:85,columnNumber:13},this),e.jsxDEV("p",{className:w,children:"Users with any of these roles can claim and resolve escalations from this workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:90,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:83,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Consumes"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:97,columnNumber:13},this),e.jsxDEV(ve,{options:d,selected:z(s.consumes),onChange:a=>o("consumes",U(a)),placeholder:"Select workflow dependencies..."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:98,columnNumber:13},this),e.jsxDEV("p",{className:w,children:"Output from these upstream workflows will be injected into the input envelope for this workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:104,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:96,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:67,columnNumber:9},this):e.jsxDEV("div",{className:"py-4 px-4 bg-surface-sunken/50 rounded-md text-center",children:e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:["This workflow will run as standard durable without the interceptor. Enable"," ",e.jsxDEV("span",{className:"font-medium text-text-secondary",children:"Certify for HITL Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:114,columnNumber:13},this)," ","to add automatic escalation routing and role-based resolution."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:111,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:110,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/AdvancedStep.tsx",lineNumber:28,columnNumber:5},this)}function De(s){return j(s)}function Ce(s){return s.join(", ")}function Ee({form:s,set:o,editing:l,durableTypes:d=[]}){const a=!l&&d.length>0;return e.jsxDEV("div",{className:"space-y-5",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Workflow Type"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:36,columnNumber:9},this),a&&!s.workflow_type?e.jsxDEV("div",{className:"space-y-2",children:[e.jsxDEV("p",{className:"text-xs text-text-secondary",children:"Select a durable workflow to register:"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:39,columnNumber:13},this),e.jsxDEV("div",{className:"grid gap-1",children:d.map(n=>e.jsxDEV("button",{onClick:()=>o("workflow_type",n),className:"flex items-center gap-2 px-3 py-2 text-left text-xs font-mono rounded-md border border-surface-border hover:border-accent/50 hover:bg-accent/[0.04] transition-colors",children:n},n,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:44,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:42,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center gap-2 pt-1",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"or"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:54,columnNumber:15},this),e.jsxDEV("input",{type:"text",onChange:n=>o("workflow_type",n.target.value),placeholder:"Enter a workflow type manually",className:"input font-mono flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:55,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:38,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("input",{type:"text",value:s.workflow_type,onChange:n=>o("workflow_type",n.target.value),disabled:l,placeholder:"reviewContent",className:"input font-mono w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:65,columnNumber:13},this),!l&&s.workflow_type&&d.length>0&&e.jsxDEV("button",{onClick:()=>o("workflow_type",""),className:"text-[10px] text-accent hover:underline mt-1",children:"Choose from durable workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:74,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:64,columnNumber:11},this),e.jsxDEV("p",{className:w,children:"Register a workflow to configure invocation schemas and dashboard visibility. Certification for HITL escalation is optional (step 3)."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:83,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:35,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:89,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.description,onChange:n=>o("description",n.target.value),placeholder:"AI-powered content moderation with human escalation",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:90,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:88,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Task Queue"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:100,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.task_queue,onChange:n=>o("task_queue",n.target.value),placeholder:"lt-review",className:"input font-mono w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:101,columnNumber:9},this),e.jsxDEV("p",{className:w,children:"Durable task queue this workflow listens on"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:99,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:34,columnNumber:5},this)}function je({form:s,set:o}){return e.jsxDEV("div",{className:"space-y-5",children:[e.jsxDEV("div",{className:"flex gap-6 pt-1",children:e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:s.invocable,onChange:l=>o("invocable",l.target.checked),className:"w-4 h-4 rounded border-border accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:124,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-medium",children:"Invocable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:130,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:123,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:122,columnNumber:7},this),e.jsxDEV("p",{className:w,children:"Allow this workflow to be started from the dashboard or API."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:133,columnNumber:7},this),s.invocable&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Run As"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:141,columnNumber:13},this),e.jsxDEV(we,{selected:s.execute_as,onChange:l=>o("execute_as",l)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:142,columnNumber:13},this),e.jsxDEV("p",{className:w,children:"Choose a bot to execute this workflow under its identity and credentials. Default runs as the invoking user."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:146,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:140,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Invocation Roles"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV(A,{selected:De(s.invocation_roles),onChange:l=>o("invocation_roles",Ce(l)),placeholder:"Select who can start this workflow..."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:155,columnNumber:13},this),e.jsxDEV("p",{className:w,children:"Only users with these roles can start this workflow. Leave empty to allow all authenticated users."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:160,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:153,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:k,children:"Envelope Schema"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:168,columnNumber:13},this),e.jsxDEV("textarea",{value:s.envelope_schema,onChange:l=>o("envelope_schema",l.target.value),placeholder:`{
|
|
7
|
-
"data": {
|
|
8
|
-
"contentId": "example-123",
|
|
9
|
-
"content": "Text to review"
|
|
10
|
-
},
|
|
11
|
-
"metadata": {
|
|
12
|
-
"source": "dashboard"
|
|
13
|
-
}
|
|
14
|
-
}`,className:Y,rows:8,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:169,columnNumber:13},this),e.jsxDEV("p",{className:w,children:["Pre-fills the JSON editor when invoking this workflow. Should include ",e.jsxDEV("span",{className:"font-mono",children:"data"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:179,columnNumber:30},this)," (workflow input) and optional ",e.jsxDEV("span",{className:"font-mono",children:"metadata"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:179,columnNumber:100},this)," (context)."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:177,columnNumber:13},this),s.envelope_schema.trim()&&!W(s.envelope_schema)&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-1",children:"Invalid JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:182,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:167,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:138,columnNumber:9},this),!s.invocable&&e.jsxDEV("div",{className:"py-4 px-4 bg-surface-sunken/50 rounded-md text-center",children:e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:["Enable ",e.jsxDEV("span",{className:"font-medium text-text-secondary",children:"Invocable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:191,columnNumber:20},this)," above to configure who can start this workflow and set an input template."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:190,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:189,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/ConfigWizardSteps.tsx",lineNumber:120,columnNumber:5},this)}function Ke(){const{workflowType:s}=he(),o=!s,l=K(),{data:d,isLoading:a}=J(),n=se(),m=(d==null?void 0:d.find(h=>h.workflow_type===s))??null,v=new Set(["mcpQuery","mcpDeterministic","mcpQueryRouter","mcpTriage","mcpTriageRouter","mcpTriageDeterministic","insightQuery"]),{data:p}=re({limit:500}),y=u.useMemo(()=>{const h=new Set((d??[]).map(g=>g.workflow_type));return[...new Set(((p==null?void 0:p.jobs)??[]).map(g=>g.entity))].filter(g=>!h.has(g)&&!v.has(g)).sort()},[d,p]),[i,f]=Ne(),c=u.useMemo(()=>{if(!o)return R;const h=i.get("workflow_type")??"",x=i.get("task_queue")??"";return!h&&!x?R:{...R,workflow_type:h,task_queue:x}},[o,i]),[t,C]=u.useState(c),[V,E]=u.useState(""),[r,N]=u.useState(!1),b=parseInt(i.get("step")||"1",10),D=u.useCallback(h=>{f(x=>{const g=new URLSearchParams(x);return g.set("step",String(h)),g},{replace:!1})},[f]);u.useEffect(()=>{if(!r){if(o){C(c),N(!0);return}m&&(C(ke(m)),N(!0))}},[m,o,r,c]);const P=(h,x)=>C(g=>({...g,[h]:x})),G=()=>{if(!t.workflow_type.trim())return;E("");let h=null,x=null;try{t.envelope_schema.trim()&&(h=JSON.parse(t.envelope_schema))}catch{E("Invalid JSON in Envelope Schema");return}try{t.resolver_schema.trim()&&(x=JSON.parse(t.resolver_schema))}catch{E("Invalid JSON in Resolver Schema");return}n.mutate({workflow_type:t.workflow_type.trim(),description:t.description.trim()||null,task_queue:t.task_queue.trim()||null,default_role:t.default_role.trim()||"reviewer",invocable:t.invocable,roles:j(t.roles),invocation_roles:j(t.invocation_roles),consumes:j(t.consumes),envelope_schema:h,resolver_schema:x,cron_schedule:t.cron_schedule.trim()||null,execute_as:t.execute_as.trim()||null},{onSuccess:()=>{l("/workflows/registry")}})};if(a)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:132,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:133,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:131,columnNumber:7},this);if(!o&&!m)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Config not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:139,columnNumber:12},this);const X=b===F.length;return e.jsxDEV("div",{children:[e.jsxDEV(M,{title:o?"Register Workflow":(m==null?void 0:m.workflow_type)??""},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:147,columnNumber:7},this),e.jsxDEV("div",{className:"max-w-3xl",children:[e.jsxDEV(be,{steps:F,currentStep:b-1,onStepClick:h=>D(h+1)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:150,columnNumber:11},this),e.jsxDEV("div",{className:"min-h-[360px] py-2",children:[b===1&&e.jsxDEV(Ee,{form:t,set:P,editing:!!m,durableTypes:y},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:153,columnNumber:28},this),b===2&&e.jsxDEV(je,{form:t,set:P},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:154,columnNumber:28},this),b===3&&e.jsxDEV(ye,{form:t,set:P},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:155,columnNumber:28},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:152,columnNumber:11},this),(V||n.error)&&e.jsxDEV("p",{className:"text-xs text-status-error mt-4",children:V||n.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:159,columnNumber:13},this),e.jsxDEV("div",{className:"flex justify-between items-center pt-4 border-t border-surface-border mt-4",children:[e.jsxDEV("div",{children:b>1&&e.jsxDEV("button",{onClick:()=>D(b-1),className:"btn-secondary text-xs",children:"Back"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:168,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:166,columnNumber:13},this),e.jsxDEV("div",{className:"flex gap-3",children:[e.jsxDEV("button",{onClick:()=>l("/workflows/registry"),className:"btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:177,columnNumber:15},this),X?e.jsxDEV("button",{onClick:G,disabled:!$(b,t)||n.isPending,className:"btn-primary text-xs",children:n.isPending?"Saving...":m?"Save":"Create"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:181,columnNumber:17},this):e.jsxDEV("button",{onClick:()=>D(b+1),disabled:!$(b,t),className:"btn-primary text-xs",children:"Next"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:189,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:176,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:165,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:149,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/registry/WorkflowConfigDetailPage.tsx",lineNumber:146,columnNumber:5},this)}export{Ke as WorkflowConfigDetailPage,He as WorkflowConfigsPage};
|
|
15
|
-
//# sourceMappingURL=index-BgVuyWhi.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-4T7Z_gQ4.js";import{a as l}from"./vendor-query-DLp59M9_.js";import{P as oe}from"./PageHeader-DF4BeEm4.js";import{F as ie,a as de}from"./FilterBar-TYiTtUgv.js";import{L as me}from"./ListToolbar-BO5Igi6v.js";import{S as ce}from"./StickyPagination-Ddy93Q5I.js";import{E as Q}from"./EmptyState-DMldv8c5.js";import{D as ue}from"./DropZone-vNcqMd05.js";import{T as B}from"./TimeAgo-CJ56IUy6.js";import{u as pe,a as ge,b as ne,c as be,d as he,e as le,f as Ne}from"./knowledge-CUZxyRCO.js";import{T as xe}from"./TagInput-B45Dm3IW.js";import{n as fe,X as we,Y as Z,d as X,m as ee,D as ae,aB as se}from"./vendor-icons-D8-ZINAH.js";import{a as Ee,f as ve}from"./vendor-react-Co3Y8ikm.js";function ye(t){return t==null?"":typeof t=="string"?t:JSON.stringify(t,null,2)}function te(t){const r=t.trim();if(!r)return{value:"",looksLikeJson:!1,parsedOk:!1};const o=r.startsWith("{")||r.startsWith("[");try{return{value:JSON.parse(r),looksLikeJson:o,parsedOk:!0}}catch{return{value:r,looksLikeJson:o,parsedOk:!1}}}function re(t){if(typeof t=="string"){const r=t.trim();return!(r.startsWith("{")&&r.endsWith("}")||r.startsWith("[")&&r.endsWith("]"))}return typeof t=="number"||typeof t=="boolean"||t===null}function q({value:t,onChange:r,onKeyDown:o,placeholder:i,mono:m}){const c=l.useRef(null);return l.useEffect(()=>{c.current&&(c.current.style.height="auto",c.current.style.height=`${c.current.scrollHeight}px`,c.current.focus())},[t]),e.jsxDEV("textarea",{ref:c,value:t,onChange:f=>r(f.target.value),onKeyDown:o,placeholder:i,rows:1,className:`w-full bg-transparent text-xs text-text-primary resize-none outline-none p-0 ${m?"font-mono":""}`,style:{minHeight:"1.5em"}},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:60,columnNumber:5},this)}function ke({domain:t,entryKey:r,onDeleted:o}){const{data:i,isLoading:m,refetch:c}=pe(t,r),f=ge(),u=ne(),S=be(),k=he(),[V,M]=l.useState(!1),[p,h]=l.useState(null),[D,N]=l.useState(""),[x,P]=l.useState(""),[j,n]=l.useState(""),[C,A]=l.useState(null),[R,J]=l.useState(null),[F,w]=l.useState(!1),E=i==null?void 0:i.data,T=E?Object.entries(E):[],H=l.useMemo(()=>{const a=x.trim().toLowerCase();return a?T.filter(([b])=>b.toLowerCase().includes(a)):T},[T,x]),G=l.useCallback((a,b)=>b==="field"?a:ye(E==null?void 0:E[a]),[E]),W=p?D!==G(p.field,p.column):!1;function $(a,b){h({field:a,column:b}),N(G(a,b)),A(null)}function O(){h(null),N("")}function s(){J("Invalid JSON — saved as text"),setTimeout(()=>J(null),4e3)}async function d(){if(!p||!E)return;const{field:a,column:b}=p;if(b==="value"){const{value:y,looksLikeJson:K,parsedOk:z}=te(D);K&&!z&&s(),await S.mutateAsync({domain:t,key:r,path:a,value:y})}else{const y=D.trim();if(!y||y===a){O();return}const K=E[a];await k.mutateAsync({domain:t,key:r,path:a}),await S.mutateAsync({domain:t,key:r,path:y,value:K})}h(null),N(""),c()}async function v(a){await k.mutateAsync({domain:t,key:r,path:a}),A(null),h(null),c()}async function g(a){await u.mutateAsync({domain:t,key:r,data:E||{},tags:a,replace:!0}),c()}async function _(){const a=x.trim();if(!a)return;const{value:b,looksLikeJson:y,parsedOk:K}=te(j);y&&!K&&s();const z={...E,[a]:b||""};await u.mutateAsync({domain:t,key:r,data:z}),P(""),n(""),c()}function U(a){a.key==="Escape"?O():a.key==="Enter"&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),d())}function Y(a){a.key==="Escape"?(P(""),n("")):a.key==="Enter"&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),_())}return m?e.jsxDEV("div",{className:"animate-pulse space-y-3 mt-4",children:[e.jsxDEV("div",{className:"h-4 bg-surface-sunken rounded w-1/3"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:200,columnNumber:9},this),e.jsxDEV("div",{className:"h-48 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:201,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:199,columnNumber:7},this):!i||i.found===!1?e.jsxDEV("p",{className:"text-sm text-text-tertiary mt-4",children:"Entry not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:207,columnNumber:12},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-4",children:[e.jsxDEV("div",{className:"flex items-center gap-4 min-h-[28px]",children:F?e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(xe,{tags:i.tags||[],onChange:a=>{g(a)},placeholder:"Add tag...",compact:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:217,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>w(!1),className:"text-[10px] text-text-tertiary hover:text-text-secondary shrink-0",children:"Done"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:223,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:216,columnNumber:13},this):e.jsxDEV("div",{className:"flex items-center gap-1 cursor-text group",onClick:()=>w(!0),title:"Click to edit tags",children:i.tags&&i.tags.length>0?i.tags.map(a=>e.jsxDEV("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent/10 text-accent",children:a},a,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:238,columnNumber:19},this)):e.jsxDEV("span",{className:"text-[10px] text-text-tertiary/40 italic group-hover:text-text-tertiary",children:"add tags..."},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:243,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:231,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:214,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:e.jsxDEV(B,{date:i.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:249,columnNumber:60},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:249,columnNumber:11},this),V?e.jsxDEV("span",{className:"flex items-center gap-2 text-[10px]",children:[e.jsxDEV("span",{className:"text-status-error",children:"Delete entry?"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:252,columnNumber:15},this),e.jsxDEV("button",{onClick:async()=>{try{await f.mutateAsync({domain:t,key:r}),o()}catch{}},className:"font-medium text-status-error hover:text-status-error/80",disabled:f.isPending,children:f.isPending?"Deleting...":"Yes"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:253,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>M(!1),className:"text-text-tertiary hover:text-text-secondary",children:"No"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:265,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:251,columnNumber:13},this):e.jsxDEV("button",{onClick:()=>M(!0),className:"text-text-tertiary/50 hover:text-status-error transition-colors",title:"Delete entry",children:e.jsxDEV(fe,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:278,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:273,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:248,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:213,columnNumber:7},this),R&&e.jsxDEV("div",{className:"flex items-center justify-end gap-2 mb-2 px-1",children:[e.jsxDEV("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:286,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-status-warning",children:R},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:287,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:285,columnNumber:9},this),e.jsxDEV("table",{className:"w-full border-collapse",children:[e.jsxDEV("thead",{className:"sticky top-0 z-10 bg-surface",children:[e.jsxDEV("tr",{className:"text-left text-[10px] uppercase tracking-wider text-text-tertiary border-b border-surface-border",children:[e.jsxDEV("th",{className:"px-3 py-2 font-medium w-[200px] border-r border-surface-border",children:"Field"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:295,columnNumber:13},this),e.jsxDEV("th",{className:"px-3 py-2 font-medium",children:"Value"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:296,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:294,columnNumber:11},this),e.jsxDEV("tr",{className:"border-b border-surface-border bg-surface",children:[e.jsxDEV("td",{className:"px-3 py-2 align-top border-r border-surface-border",children:e.jsxDEV("input",{value:x,onChange:a=>P(a.target.value),onKeyDown:Y,placeholder:T.length?"add or filter...":"new field",className:"w-full bg-transparent text-xs text-text-primary placeholder:text-text-tertiary/40 placeholder:italic outline-none p-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:301,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:300,columnNumber:13},this),e.jsxDEV("td",{className:"px-3 py-2 align-top",children:[e.jsxDEV(q,{value:j,onChange:n,onKeyDown:Y,placeholder:"value"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:310,columnNumber:15},this),x.trim()&&e.jsxDEV("div",{className:"flex gap-2 mt-1.5",children:[e.jsxDEV("button",{onClick:_,className:"text-[10px] font-medium text-accent hover:text-accent-hover",disabled:u.isPending,children:u.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:318,columnNumber:19},this),e.jsxDEV("button",{onClick:()=>{P(""),n("")},className:"text-[10px] text-text-tertiary hover:text-text-secondary",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:325,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:317,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:309,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:299,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:293,columnNumber:9},this),e.jsxDEV("tbody",{children:H.map(([a,b])=>{const y=(p==null?void 0:p.field)===a&&p.column==="field",K=(p==null?void 0:p.field)===a&&p.column==="value",z=y||K,L=C===a;return e.jsxDEV("tr",{className:`border-b border-surface-border ${L?"bg-status-error/10":z?"":"hover:bg-surface-hover/30"}`,children:[e.jsxDEV("td",{className:`px-3 py-2 align-top border-r cursor-text ${L?"bg-transparent border-r-transparent":y?"border-r-surface-border bg-accent/5 border-l-2 border-l-accent":"border-r-surface-border"}`,onClick:()=>!y&&!L&&$(a,"field"),children:y?e.jsxDEV("div",{children:[e.jsxDEV(q,{value:D,onChange:N,onKeyDown:U,placeholder:"field name"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:352,columnNumber:23},this),W&&e.jsxDEV("div",{className:"flex gap-2 mt-1.5",children:[e.jsxDEV("button",{onClick:d,className:"text-[10px] font-medium text-accent hover:text-accent-hover",disabled:u.isPending,children:u.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:355,columnNumber:27},this),e.jsxDEV("button",{onClick:O,className:"text-[10px] text-text-tertiary hover:text-text-secondary",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:358,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:354,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:351,columnNumber:21},this):e.jsxDEV("span",{className:"text-xs font-medium text-text-secondary break-all",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:363,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:346,columnNumber:17},this),e.jsxDEV("td",{className:`px-3 py-2 align-top cursor-text ${L?"bg-transparent":K?"bg-accent/5 border-l-2 border-l-accent":""}`,onClick:()=>!K&&!L&&$(a,"value"),children:L?e.jsxDEV("span",{className:"flex items-center justify-end gap-2 text-[10px]",children:[e.jsxDEV("span",{className:"text-status-error",children:["Remove ",e.jsxDEV("span",{className:"font-medium",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:374,columnNumber:66},this),"?"]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:374,columnNumber:23},this),e.jsxDEV("button",{onClick:I=>{I.stopPropagation(),v(a)},className:"font-medium text-status-error hover:text-status-error/80",disabled:u.isPending,children:u.isPending?"...":"Yes"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:375,columnNumber:23},this),e.jsxDEV("button",{onClick:I=>{I.stopPropagation(),A(null)},className:"text-text-tertiary hover:text-text-secondary",children:"No"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:382,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:373,columnNumber:21},this):K?e.jsxDEV("div",{children:[e.jsxDEV(q,{value:D,onChange:N,onKeyDown:U,placeholder:"value (string or JSON)",mono:!re(b)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:391,columnNumber:23},this),e.jsxDEV("div",{className:"flex gap-2 mt-1.5",children:[W&&e.jsxDEV("button",{onClick:d,className:"text-[10px] font-medium text-accent hover:text-accent-hover",disabled:u.isPending,children:u.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:400,columnNumber:27},this),e.jsxDEV("button",{onClick:O,className:"text-[10px] text-text-tertiary hover:text-text-secondary",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:404,columnNumber:25},this),e.jsxDEV("button",{onClick:I=>{I.stopPropagation(),A(a)},className:"text-[10px] text-status-error/50 hover:text-status-error ml-auto",children:"Remove"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:405,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:398,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:390,columnNumber:21},this):re(b)?e.jsxDEV("p",{className:"text-xs text-text-primary break-words whitespace-pre-wrap",children:String(b)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:415,columnNumber:23},this):e.jsxDEV("pre",{className:"text-xs text-text-primary font-mono whitespace-pre-wrap break-words",children:typeof b=="string"?b:JSON.stringify(b,null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:417,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:368,columnNumber:17},this)]},a,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:344,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:336,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:292,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgeEntryView.tsx",lineNumber:211,columnNumber:5},this)}function Ve({open:t,onClose:r,onCreated:o,prefillData:i,prefillDomain:m}){const{data:c}=le(),f=ne(),[u,S]=l.useState(m||""),[k,V]=l.useState(""),[M,p]=l.useState(i?JSON.stringify(i,null,2):"{}"),[h,D]=l.useState(""),[N,x]=l.useState(""),P=((c==null?void 0:c.domains)??[]).map(n=>n.domain);if(l.useEffect(()=>{t&&(p(i?JSON.stringify(i,null,2):"{}"),S(m||""),V(""),D(""),x(""))},[t,i,m]),!t)return null;const j=async()=>{if(x(""),!u.trim()){x("Domain is required");return}if(!k.trim()){x("Key is required");return}let n;try{if(n=JSON.parse(M),typeof n!="object"||Array.isArray(n))throw new Error}catch{x("Data must be a valid JSON object");return}try{await f.mutateAsync({domain:u.trim(),key:k.trim(),data:n,tags:h?h.split(",").map(C=>C.trim()).filter(Boolean):[]}),o==null||o(u.trim(),k.trim()),r()}catch(C){x(C.message)}};return Ee.createPortal(e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"fixed inset-0 z-40 bg-black/30",onClick:r},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:68,columnNumber:7},this),e.jsxDEV("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-6 overflow-y-auto",children:e.jsxDEV("div",{className:"bg-surface-raised border border-surface-border rounded-lg shadow-lg w-full max-w-md max-h-[85vh] flex flex-col",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-5 py-4 border-b border-surface-border",children:[e.jsxDEV("h3",{className:"text-sm font-medium text-text-primary",children:"New Knowledge Entry"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("button",{onClick:r,className:"text-text-tertiary hover:text-text-primary",children:e.jsxDEV(we,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:74,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:73,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:71,columnNumber:11},this),e.jsxDEV("div",{className:"px-5 py-4 space-y-4 overflow-y-auto flex-1 min-h-0",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:81,columnNumber:15},this),e.jsxDEV("input",{type:"text",list:"domain-list",value:u,onChange:n=>S(n.target.value),placeholder:"e.g., screenshots, config, emails",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:82,columnNumber:15},this),e.jsxDEV("datalist",{id:"domain-list",children:P.map(n=>e.jsxDEV("option",{value:n},n,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:91,columnNumber:45},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:90,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:80,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Key"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:97,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:k,onChange:n=>V(n.target.value),placeholder:"e.g., homepage, user-profile, report-2026",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:98,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:96,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Data (JSON)"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:109,columnNumber:15},this),e.jsxDEV("textarea",{value:M,onChange:n=>p(n.target.value),rows:8,className:"input-json w-full max-h-[30vh]"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:110,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:108,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tags (comma-separated)"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:120,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:h,onChange:n=>D(n.target.value),placeholder:"e.g., important, review, 401k",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:121,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:119,columnNumber:13},this),N&&e.jsxDEV("p",{className:"text-xs text-status-error",children:N},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:130,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:78,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-2 px-5 py-3 border-t border-surface-border",children:[e.jsxDEV("button",{onClick:r,className:"btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:134,columnNumber:13},this),e.jsxDEV("button",{onClick:j,disabled:f.isPending,className:"btn-primary text-xs",children:f.isPending?"Creating...":"Create Entry"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:135,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:133,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:70,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/CreateEntryModal.tsx",lineNumber:67,columnNumber:5},this),document.body)}const De=50;function We(){var W,$,O;const[t,r]=ve(),o=t.get("domain")||"",i=t.get("key")||"",[m,c]=l.useState(""),[f,u]=l.useState(""),[S,k]=l.useState(1),[V,M]=l.useState(De),[p,h]=l.useState(!1),[D,N]=l.useState(),x=l.useCallback(s=>{console.debug("[Knowledge] drop received:",s.map(g=>({name:g.name,type:g.type,size:g.size})));const d=s.find(g=>g.name.endsWith(".json")||g.type==="application/json");if(!d){console.warn("[Knowledge] no JSON file found in dropped files");return}console.debug("[Knowledge] reading:",d.name);const v=new FileReader;v.onload=()=>{try{const g=JSON.parse(v.result);typeof g=="object"&&!Array.isArray(g)?(console.debug("[Knowledge] parsed object with keys:",Object.keys(g)),N(g),h(!0)):console.warn("[Knowledge] JSON is not a plain object, got:",Array.isArray(g)?"array":typeof g)}catch(g){console.warn("[Knowledge] JSON parse failed:",g)}},v.readAsText(d)},[]);l.useEffect(()=>{const s=setTimeout(()=>{u(m),k(1)},300);return()=>clearTimeout(s)},[m]);const P=(S-1)*V,j=le(),n=Ne(o,{search:f||void 0,limit:V,offset:P}),C=((W=j.data)==null?void 0:W.domains)??[],A=(($=n.data)==null?void 0:$.entries)??[],R=((O=n.data)==null?void 0:O.total)??0,J=l.useMemo(()=>{if(!m)return C;const s=m.toLowerCase();return C.filter(d=>d.domain.toLowerCase().includes(s))},[C,m]);function F(s,d){c(""),u(""),k(1);const v={};s&&(v.domain=s),d&&(v.key=d),r(v)}const w=i?"entry":o?"entries":"domains",E=w==="entries"?n.isLoading:w==="domains"?j.isLoading:!1,T=Math.ceil((w==="entries"?R:J.length)/V),H=o?`/knowledge/entries?domain=${encodeURIComponent(o)}&limit=${V}&offset=${P}${f?`&search=${encodeURIComponent(f)}`:""}`:void 0;return e.jsxDEV(ue,{onDrop:x,label:"Drop a JSON file to create an entry",accept:".json,application/json",children:[e.jsxDEV("div",{children:[e.jsxDEV(oe,{title:"Knowledge",docsHash:"#docs:dashboard.md:knowledge",actions:e.jsxDEV("button",{onClick:()=>{N(void 0),h(!0)},className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(Z,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:113,columnNumber:13},this),"New Entry"]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:105,columnNumber:7},this),e.jsxDEV("nav",{className:"flex items-center gap-1 text-sm mb-6 min-h-[28px]",children:[e.jsxDEV("button",{onClick:()=>F(""),className:`flex items-center gap-1.5 px-1.5 py-0.5 rounded transition-colors ${w==="domains"?"text-text-primary font-medium":"text-text-secondary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(X,{className:"w-4 h-4 text-accent/75",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("span",{children:"All Domains"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:130,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:121,columnNumber:9},this),o&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(ee,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:134,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>F(o),className:`flex items-center gap-1.5 px-1.5 py-0.5 rounded transition-colors ${w==="entries"?"text-text-primary font-medium":"text-text-secondary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(ae,{className:"w-3.5 h-3.5 text-accent/60",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:143,columnNumber:15},this),o]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:135,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:133,columnNumber:11},this),i&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(ee,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:150,columnNumber:13},this),e.jsxDEV("span",{className:"flex items-center gap-1.5 px-1.5 py-0.5 text-text-primary font-medium",children:[e.jsxDEV(se,{className:"w-3.5 h-3.5 text-accent/60",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:152,columnNumber:15},this),i]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:151,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:149,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:120,columnNumber:7},this),w==="entry"?e.jsxDEV(ke,{domain:o,entryKey:i,onDeleted:()=>F(o)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:161,columnNumber:9},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(ie,{actions:e.jsxDEV(me,{onRefresh:()=>w==="entries"?n.refetch():j.refetch(),isFetching:w==="entries"?n.isFetching:j.isFetching,apiPath:w==="entries"?H:"/knowledge/domains"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:169,columnNumber:13},this),children:e.jsxDEV(de,{label:"Search",value:m,onChange:c,placeholder:o?"Filter by key or tag...":"Filter by domain..."},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:175,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:168,columnNumber:11},this),E?e.jsxDEV("div",{className:"animate-pulse space-y-2 mt-4",children:Array.from({length:6}).map((s,d)=>e.jsxDEV("div",{className:"h-10 bg-surface-sunken rounded"},d,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:186,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:184,columnNumber:13},this):w==="domains"?J.length===0?e.jsxDEV("div",{className:"cursor-pointer",onClick:()=>{N(void 0),h(!0)},children:e.jsxDEV(Q,{icon:X,title:m?"No matching domains":"No knowledge yet",description:m?void 0:"Create your first entry or drop a JSON file"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:192,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:191,columnNumber:15},this):e.jsxDEV("table",{className:"w-full mt-2",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"text-left text-[10px] uppercase tracking-wider text-text-tertiary",children:[e.jsxDEV("th",{className:"pb-2 pl-2 font-medium",children:"Domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:198,columnNumber:21},this),e.jsxDEV("th",{className:"pb-2 font-medium w-24 text-right",children:"Entries"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:199,columnNumber:21},this),e.jsxDEV("th",{className:"pb-2 pr-2 font-medium w-40 text-right",children:"Latest"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:200,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:197,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:196,columnNumber:17},this),e.jsxDEV("tbody",{children:J.map(s=>e.jsxDEV("tr",{onClick:()=>F(s.domain),className:"row-hover cursor-pointer group",children:[e.jsxDEV("td",{className:"py-2 pl-2",children:e.jsxDEV("span",{className:"flex items-center gap-2.5",children:[e.jsxDEV(ae,{className:"w-4 h-4 text-accent/75 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:212,columnNumber:27},this),e.jsxDEV("span",{className:"text-sm text-text-primary group-hover:text-accent transition-colors",children:s.domain},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:213,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:211,columnNumber:25},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:210,columnNumber:23},this),e.jsxDEV("td",{className:"py-2 text-right text-xs text-text-secondary tabular-nums",children:s.count},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:218,columnNumber:23},this),e.jsxDEV("td",{className:"py-2 pr-2 text-right text-xs text-text-secondary",children:e.jsxDEV(B,{date:s.latest},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:222,columnNumber:25},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:221,columnNumber:23},this)]},s.domain,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:205,columnNumber:21},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:203,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:195,columnNumber:15},this):A.length===0?e.jsxDEV("div",{className:"cursor-pointer",onClick:()=>{N(void 0),h(!0)},children:e.jsxDEV(Q,{icon:Z,title:m?"No matching entries":"No entries in this domain",description:m?void 0:"Add an entry or drop a JSON file"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:232,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:231,columnNumber:15},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("table",{className:"w-full mt-2",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"text-left text-[10px] uppercase tracking-wider text-text-tertiary",children:[e.jsxDEV("th",{className:"pb-2 pl-2 font-medium w-[200px]",children:"Key"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:239,columnNumber:23},this),e.jsxDEV("th",{className:"pb-2 font-medium",children:"Tags"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:240,columnNumber:23},this),e.jsxDEV("th",{className:"pb-2 font-medium w-16 text-right",children:"Fields"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:241,columnNumber:23},this),e.jsxDEV("th",{className:"pb-2 pr-2 font-medium w-32 text-right",children:"Updated"},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:242,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:238,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:237,columnNumber:19},this),e.jsxDEV("tbody",{children:A.map(s=>{var d;return e.jsxDEV("tr",{onClick:()=>F(o,s.key),className:"row-hover cursor-pointer group",children:[e.jsxDEV("td",{className:"py-2 pl-2 w-[200px]",children:e.jsxDEV("span",{className:"flex items-center gap-2.5",children:[e.jsxDEV(se,{className:"w-4 h-4 text-accent/75 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:254,columnNumber:29},this),e.jsxDEV("span",{className:"text-sm text-text-primary group-hover:text-accent transition-colors truncate max-w-[160px]",title:s.key,children:s.key},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:255,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:253,columnNumber:27},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:252,columnNumber:25},this),e.jsxDEV("td",{className:"py-2",children:e.jsxDEV("div",{className:"flex flex-wrap gap-1",children:[(d=s.tags)==null?void 0:d.slice(0,5).map(v=>e.jsxDEV("span",{className:"inline-flex items-center px-1.5 py-0 rounded-full text-[10px] font-medium bg-accent/10 text-accent",children:v},v,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:263,columnNumber:31},this)),s.tags&&s.tags.length>5&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["+",s.tags.length-5]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:271,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:261,columnNumber:27},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:260,columnNumber:25},this),e.jsxDEV("td",{className:"py-2 text-right text-xs text-text-secondary tabular-nums",children:s.data?Object.keys(s.data).length:0},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:277,columnNumber:25},this),e.jsxDEV("td",{className:"py-2 pr-2 text-right text-xs text-text-secondary",children:e.jsxDEV(B,{date:s.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:281,columnNumber:27},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:280,columnNumber:25},this)]},s.key,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:247,columnNumber:23},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:245,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:236,columnNumber:17},this),e.jsxDEV(ce,{page:S,totalPages:T,onPageChange:k,total:R,pageSize:V,onPageSizeChange:M},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:288,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:235,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:167,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:104,columnNumber:5},this),e.jsxDEV(Ve,{open:p,onClose:()=>{h(!1),N(void 0)},onCreated:(s,d)=>{r({domain:s,key:d}),j.refetch()},prefillData:D,prefillDomain:o||void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:303,columnNumber:5},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/knowledge/KnowledgePage.tsx",lineNumber:103,columnNumber:5},this)}export{We as KnowledgePage};
|
|
2
|
-
//# sourceMappingURL=index-C0sDEKdo.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-4T7Z_gQ4.js";import{a as N}from"./vendor-query-DLp59M9_.js";import{u as y,a as R,b as T,c as k}from"./mcp-B5VQPoF3.js";import{E as L}from"./EmptyState-DMldv8c5.js";import{C as z}from"./ConfirmDeleteModal-_hW5Vc05.js";import{P as V}from"./PageHeader-DF4BeEm4.js";import{F,a as I,b as P}from"./FilterBar-TYiTtUgv.js";import{S as _}from"./StickyPagination-Ddy93Q5I.js";import{u as $}from"./useFilterParams-CGRYFw_A.js";import{u as q}from"./useExpandedRows-Cg9iq6Vy.js";import{T as A}from"./ToolTestPanel-BzFOwzd_.js";import{R as B,a as f}from"./RowActions-QcakGbVA.js";import{S as H}from"./StatusBadge-ME2R6a7K.js";import{T as G}from"./ToolPill-DpDv3FwI.js";import{S as J}from"./ServerName-D5NKD06M.js";import{m as O,ah as U,ai as W,J as K,n as Q,P as X}from"./vendor-icons-D8-ZINAH.js";import{c as Y}from"./vendor-react-Co3Y8ikm.js";import"./Modal-Qe8lW7gQ.js";import"./RunAsSelector-CYMeZwrM.js";import"./BotPicker-CYfFMpkY.js";import"./bots-BPlouRDm.js";function Z(a){var s,t;return!!((s=a.metadata)!=null&&s.builtin)||!!((t=a.transport_config)!=null&&t.builtin)}function ee(a,s){var o;if(!s)return!0;const t=s.toLowerCase();return a.name.toLowerCase().includes(t)||(o=a.description)!=null&&o.toLowerCase().includes(t)||(a.tags??[]).some(n=>n.toLowerCase().includes(t))?!0:(a.tool_manifest??[]).some(n=>{var u;return n.name.toLowerCase().includes(t)||((u=n.description)==null?void 0:u.toLowerCase().includes(t))})}function se(a,s){if(!s)return a;const t=s.toLowerCase();return a.filter(m=>{var o;return m.name.toLowerCase().includes(t)||((o=m.description)==null?void 0:o.toLowerCase().includes(t))})}function re({server:a,expanded:s,onToggle:t,onEdit:m,onDelete:o,onTryTool:n,connect:u,disconnect:g,visibleTools:b}){const i=a.tool_manifest??[],v=Z(a),d=a.tags??[];return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("tr",{onClick:i.length>0?t:void 0,className:`group/row border-b border-surface-border/50 transition-colors duration-100 ${i.length>0?"cursor-pointer row-hover":""}`,children:[e.jsxDEV("td",{className:"px-6 py-2.5",children:e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:`transition-transform duration-150 ${s?"rotate-90":""} ${i.length===0?"opacity-0":"text-text-tertiary"}`,children:e.jsxDEV(O,{size:14},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:52,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:51,columnNumber:13},this),e.jsxDEV("span",{className:"flex items-center gap-1.5",children:[e.jsxDEV(J,{name:a.name,serverId:a.id,short:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:55,columnNumber:15},this),i.length>0&&e.jsxDEV("sup",{className:"text-[9px] font-normal text-accent/70",children:i.length},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:57,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:54,columnNumber:13},this),d.length>0&&e.jsxDEV("div",{className:"flex gap-1 ml-auto shrink-0",children:[d.slice(0,3).map(l=>e.jsxDEV("span",{className:"inline-block px-1.5 py-0 text-[9px] text-text-tertiary bg-surface-sunken rounded",children:l},l,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:63,columnNumber:19},this)),d.length>3&&e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",title:d.slice(3).join(", "),children:"…"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:68,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:61,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:50,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-28 whitespace-nowrap",children:e.jsxDEV(H,{status:a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:77,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:76,columnNumber:9},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-16",children:e.jsxDEV(B,{children:[!v&&(a.status==="connected"?e.jsxDEV(f,{icon:U,title:"Disconnect server",onClick:()=>g.mutate(a.id)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:85,columnNumber:17},this):e.jsxDEV(f,{icon:W,title:"Connect server",onClick:()=>u.mutate(a.id),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:91,columnNumber:17},this)),e.jsxDEV(f,{icon:K,title:"Edit server",onClick:m},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:99,columnNumber:13},this),!v&&e.jsxDEV(f,{icon:Q,title:"Delete server",onClick:o,colorClass:"text-text-tertiary hover:text-status-error"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:105,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:81,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:42,columnNumber:7},this),s&&b.map(l=>e.jsxDEV("tr",{onClick:()=>n(l),className:"group/row cursor-pointer hover:bg-surface-hover/50 transition-colors border-b border-surface-border/15",children:[e.jsxDEV("td",{className:"pl-14 pr-6 py-2.5",children:[e.jsxDEV(G,{name:l.name,size:"md"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:125,columnNumber:13},this),l.description&&e.jsxDEV("p",{className:"text-[11px] leading-snug text-text-quaternary mt-0.5",children:l.description},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:127,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:124,columnNumber:11},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-28"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:132,columnNumber:11},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-16",children:e.jsxDEV("div",{className:"flex items-center justify-end",children:e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),n(l)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"Try tool",children:e.jsxDEV(X,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:142,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:137,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:136,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:135,columnNumber:11},this)]},l.name,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:118,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/ServerRow.tsx",lineNumber:40,columnNumber:5},this)}function je(){const a=Y(),{filters:s,setFilter:t,pagination:m}=$({filters:{status:"",search:"",tag:""}}),{data:o,isLoading:n}=y({status:s.status||void 0,search:s.search||void 0,tags:s.tag||void 0}),u=R(),g=T(),b=k(),[i,v]=N.useState(null),{expandedIds:d,toggle:l}=q("lt:expanded:mcp-servers"),[p,S]=N.useState(null),h=(o==null?void 0:o.servers)??[],D=(o==null?void 0:o.total)??0,M=N.useMemo(()=>{const r=new Set;for(const c of h)for(const E of c.tags??[])r.add(E);return[...r].sort().map(c=>({value:c,label:c}))},[h]),x=N.useMemo(()=>s.search?h.filter(r=>ee(r,s.search)):h,[h,s.search]);N.useEffect(()=>{if(!s.search)return;const r=s.search.toLowerCase();for(const c of x)(c.tool_manifest??[]).some(w=>{var j;return w.name.toLowerCase().includes(r)||((j=w.description)==null?void 0:j.toLowerCase().includes(r))})&&!d.has(c.id)&&l(c.id)},[s.search,x]);const C=()=>{i&&b.mutate(i.id,{onSuccess:()=>v(null)})};return n?e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"MCP Server Tools"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:87,columnNumber:9},this),e.jsxDEV("div",{className:"animate-pulse space-y-0",children:Array.from({length:5}).map((r,c)=>e.jsxDEV("div",{className:"h-14 border-b last:border-b-0 px-6 flex items-center",children:e.jsxDEV("div",{className:"h-3 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:91,columnNumber:15},this)},c,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:90,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:88,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:86,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"MCP Server Tools",docsHash:"#docs:dashboard.md:mcp-server-tools",actions:e.jsxDEV("button",{onClick:()=>a("/mcp/servers/new"),className:"btn-primary text-xs",children:"Register Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:105,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:101,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed",children:"Registered MCP servers and their available tools. Each server exposes tools that can be used by the MCP Tool Designer."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:114,columnNumber:7},this),e.jsxDEV(F,{children:[e.jsxDEV(I,{label:"Search",value:s.search,onChange:r=>t("search",r),placeholder:"Server or tool name..."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:119,columnNumber:9},this),e.jsxDEV(P,{label:"Tag",value:s.tag,onChange:r=>t("tag",r),options:M},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:125,columnNumber:9},this),e.jsxDEV(P,{label:"Status",value:s.status,onChange:r=>t("status",r),options:[{value:"registered",label:"Registered"},{value:"connected",label:"Connected"},{value:"error",label:"Error"},{value:"disconnected",label:"Disconnected"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:131,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:118,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-0 ",children:[e.jsxDEV("div",{className:`${p?"flex-1 min-w-0":"w-full"} transition-all`,children:[x.length===0?e.jsxDEV(L,{title:"No servers found"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:148,columnNumber:13},this):e.jsxDEV("table",{className:"w-full",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b",children:[e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Server / Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:153,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:156,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface w-16"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:159,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:152,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:151,columnNumber:15},this),e.jsxDEV("tbody",{children:x.map(r=>e.jsxDEV(re,{server:r,expanded:d.has(r.id),onToggle:()=>l(r.id),onEdit:()=>a(`/mcp/servers/${r.id}`),onDelete:()=>v(r),onTryTool:c=>S({serverId:r.id,serverName:r.name,tool:c}),connect:u,disconnect:g,visibleTools:se(r.tool_manifest??[],s.search)},r.id,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:164,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:162,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:150,columnNumber:13},this),e.jsxDEV(_,{page:m.page,totalPages:m.totalPages(D),onPageChange:m.setPage,total:D,pageSize:m.pageSize,onPageSizeChange:m.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:190,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:146,columnNumber:9},this),p&&e.jsxDEV("div",{className:"w-[380px] shrink-0 sticky top-0 max-h-screen overflow-y-auto",children:e.jsxDEV(A,{serverId:p.serverId,serverName:p.serverName,tool:p.tool,onClose:()=>S(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:203,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:202,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:144,columnNumber:7},this),e.jsxDEV(z,{open:!!i,onClose:()=>v(null),onConfirm:C,title:"Delete MCP Server",description:e.jsxDEV(e.Fragment,{children:["Delete"," ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:i==null?void 0:i.name},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:222,columnNumber:13},this),"? This will remove the server registration."]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:220,columnNumber:11},this),isPending:b.isPending,error:b.error},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:214,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/McpServersPage.tsx",lineNumber:100,columnNumber:5},this)}export{je as McpServersPage};
|
|
2
|
-
//# sourceMappingURL=index-C2MJzu6J.js.map
|