@hotmeshio/long-tail 0.17.2 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/escalations/index.d.ts +1 -0
- package/build/api/escalations/index.js +5 -1
- package/build/api/escalations/resolve-batch.d.ts +58 -0
- package/build/api/escalations/resolve-batch.js +247 -0
- package/build/api/escalations/resolve.d.ts +11 -0
- package/build/api/escalations/resolve.js +2 -0
- package/build/api/settings.js +2 -0
- package/build/index.js +6 -0
- package/build/lib/events/publish.d.ts +1 -1
- package/build/modules/search.d.ts +21 -0
- package/build/modules/search.js +55 -0
- package/build/routes/escalations/metadata.js +19 -0
- package/build/routes/escalations/resolve.js +41 -0
- package/build/sdk/index.d.ts +21 -0
- package/build/sdk/index.js +3 -0
- package/build/services/escalation/batch.d.ts +38 -0
- package/build/services/escalation/batch.js +85 -0
- package/build/services/escalation/crud.d.ts +7 -0
- package/build/services/escalation/crud.js +1 -0
- package/build/services/escalation/index.d.ts +1 -0
- package/build/services/escalation/index.js +1 -0
- package/build/services/orchestrator/condition.d.ts +28 -0
- package/build/services/orchestrator/condition.js +28 -0
- package/build/services/role/types.d.ts +18 -0
- package/build/services/role/types.js +6 -0
- package/build/start/adapters.js +2 -0
- package/build/system/mcp-servers/human-queue-schemas.d.ts +13 -0
- package/build/system/mcp-servers/human-queue-schemas.js +6 -1
- package/build/system/mcp-servers/human-queue.d.ts +3 -1
- package/build/system/mcp-servers/human-queue.js +38 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/escalation.d.ts +24 -0
- package/build/types/escalation.js +18 -1
- package/build/types/events.d.ts +1 -1
- package/build/types/index.d.ts +2 -2
- package/build/types/index.js +2 -1
- package/build/types/startup.d.ts +12 -1
- package/dashboard/dist/assets/{AdminDashboard-B_AVB7tk.js → AdminDashboard-DDY8bceq.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-B_AVB7tk.js.map → AdminDashboard-DDY8bceq.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-JoZko3JB.js → AgentConfigPage-D47sHnup.js} +6 -6
- package/dashboard/dist/assets/{AgentConfigPage-JoZko3JB.js.map → AgentConfigPage-D47sHnup.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-DfpR2Fgg.js → AgentDetailPage-DwrfByA2.js} +2 -2
- package/dashboard/dist/assets/{AgentDetailPage-DfpR2Fgg.js.map → AgentDetailPage-DwrfByA2.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-F2ixDk1Q.js → AgentsPage-CLSjlyXy.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-F2ixDk1Q.js.map → AgentsPage-CLSjlyXy.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-D2ukvuQh.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-D2ukvuQh.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-B8Yal8Mm.js → BotPicker-CbL7gQFq.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-B8Yal8Mm.js.map → BotPicker-CbL7gQFq.js.map} +1 -1
- package/dashboard/dist/assets/BulkAssignModal-CMSgvHIs.js +2 -0
- package/dashboard/dist/assets/{BulkAssignModal-ySfoaF7f.js.map → BulkAssignModal-CMSgvHIs.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-Q9Pe0y_p.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-BSJ2oFj6.js.map → CapabilitiesPage-Q9Pe0y_p.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CcV88IUy.js → CollapsibleSection-BZOtaWPR.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CcV88IUy.js.map → CollapsibleSection-BZOtaWPR.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CQsJUzEa.js → ConfirmDeleteModal-6CidwpPx.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CQsJUzEa.js.map → ConfirmDeleteModal-6CidwpPx.js.map} +1 -1
- package/dashboard/dist/assets/CountdownTimer-B5lM7PfE.js +2 -0
- package/dashboard/dist/assets/{CountdownTimer-C-E9MXMk.js.map → CountdownTimer-B5lM7PfE.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-dxjrUEyO.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DrydlZ65.js.map → CredentialsPage-dxjrUEyO.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-BxQmJXos.js → CronLabel-D8oo8eaA.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-BxQmJXos.js.map → CronLabel-D8oo8eaA.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-Pv-v5RAs.js → DropZone-CWCh5ItZ.js} +2 -2
- package/dashboard/dist/assets/{DropZone-Pv-v5RAs.js.map → DropZone-CWCh5ItZ.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-lszUXiyP.js → ElapsedCell-FHHQ69G3.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-lszUXiyP.js.map → ElapsedCell-FHHQ69G3.js.map} +1 -1
- package/dashboard/dist/assets/EntityTimelinePanel-B5NuHnPF.js +2 -0
- package/dashboard/dist/assets/{EntityTimelinePanel-CwzIV87U.js.map → EntityTimelinePanel-B5NuHnPF.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-D16uUVcG.js → EscalationListSchemaPage-D5L5lDNb.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-D16uUVcG.js.map → EscalationListSchemaPage-D5L5lDNb.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-BLM3dUEw.js → EscalationSchemaPage-bYbfEpSB.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-BLM3dUEw.js.map → EscalationSchemaPage-bYbfEpSB.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BlFjoKlR.js → EscalationsOverview-DjtIjL1b.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BlFjoKlR.js.map → EscalationsOverview-DjtIjL1b.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-rTkMR8Zf.js → EventTable-CihVTREC.js} +2 -2
- package/dashboard/dist/assets/{EventTable-rTkMR8Zf.js.map → EventTable-CihVTREC.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BeVBUdfJ.js → FilterBar-Fin1IqHc.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BeVBUdfJ.js.map → FilterBar-Fin1IqHc.js.map} +1 -1
- package/dashboard/dist/assets/GraphInvokePage-D77ILPd3.js +2 -0
- package/dashboard/dist/assets/{GraphInvokePage-BV60xkVy.js.map → GraphInvokePage-D77ILPd3.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-8XsQFqKL.js +2 -0
- package/dashboard/dist/assets/{HomePage-BA0RYzFc.js.map → HomePage-8XsQFqKL.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-4IfsUXfV.js → ListToolbar-DyHaJBTk.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-4IfsUXfV.js.map → ListToolbar-DyHaJBTk.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-gDegMXvF.js → McpOverview-qz7Ivf0G.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-gDegMXvF.js.map → McpOverview-qz7Ivf0G.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-CnCffPks.js → McpQueryDetailPage-D6MB4CZM.js} +3 -3
- package/dashboard/dist/assets/{McpQueryDetailPage-CnCffPks.js.map → McpQueryDetailPage-D6MB4CZM.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryPage-BqqRF5cQ.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-CLEMtLOG.js.map → McpQueryPage-BqqRF5cQ.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-tr-lrWVv.js → McpRunDetailPage-DxLEhzhn.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-tr-lrWVv.js.map → McpRunDetailPage-DxLEhzhn.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-nE0d_1Px.js → McpRunsPage-BOsS4Hdf.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-nE0d_1Px.js.map → McpRunsPage-BOsS4Hdf.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill-DONj6eUU.js → NamespacePill-CJikgGzE.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-DONj6eUU.js.map → NamespacePill-CJikgGzE.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-C8h1DN5Q.js → OperationsPage-Cj1mJLMC.js} +3 -3
- package/dashboard/dist/assets/{OperationsPage-C8h1DN5Q.js.map → OperationsPage-Cj1mJLMC.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-C5rlijvh.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-DCG8BFKE.js.map → OperatorDashboard-C5rlijvh.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-CFVw67M6.js → PageHeader-DZmymFBS.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-CFVw67M6.js.map → PageHeader-DZmymFBS.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-D9tQxILm.js → PageHeaderWithStats-DuAm6YK2.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-D9tQxILm.js.map → PageHeaderWithStats-DuAm6YK2.js.map} +1 -1
- package/dashboard/dist/assets/PersonaDetailPage-JBdVvT5g.js +2 -0
- package/dashboard/dist/assets/{PersonaDetailPage-BEVeJr1q.js.map → PersonaDetailPage-JBdVvT5g.js.map} +1 -1
- package/dashboard/dist/assets/PersonasPage-Xp_Gt6El.js +2 -0
- package/dashboard/dist/assets/{PersonasPage-B5fj2AK6.js.map → PersonasPage-Xp_Gt6El.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-CWGby6KD.js → ProcessDetailPage-CHnzOzQn.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-CWGby6KD.js.map → ProcessDetailPage-CHnzOzQn.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-nFdLMlfb.js → ProcessesListPage-DuXTS5-v.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-nFdLMlfb.js.map → ProcessesListPage-DuXTS5-v.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-C9GGHNf4.js +8 -0
- package/dashboard/dist/assets/RoleDetailPage-C9GGHNf4.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-Di_5hfvw.js → RolePill-C9LSs1aK.js} +2 -2
- package/dashboard/dist/assets/{RolePill-Di_5hfvw.js.map → RolePill-C9LSs1aK.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-h77-JOLd.js +2 -0
- package/dashboard/dist/assets/{RolesPage-DwprdPCA.js.map → RolesPage-h77-JOLd.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-DGw9EKSR.js → RunAsSelector-DoLFJ0mZ.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-DGw9EKSR.js.map → RunAsSelector-DoLFJ0mZ.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-RPi4qZ_l.js → ScanCodesPage-b5NZM_-f.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-RPi4qZ_l.js.map → ScanCodesPage-b5NZM_-f.js.map} +1 -1
- package/dashboard/dist/assets/ScanSchemeDetailPage-t7X6ekaW.js +2 -0
- package/dashboard/dist/assets/{ScanSchemeDetailPage-BKc4lUjc.js.map → ScanSchemeDetailPage-t7X6ekaW.js.map} +1 -1
- package/dashboard/dist/assets/ScanStationPage-r02hkTAG.js +2 -0
- package/dashboard/dist/assets/{ScanStationPage-DUfxcntB.js.map → ScanStationPage-r02hkTAG.js.map} +1 -1
- package/dashboard/dist/assets/{ScopeBadge-CqIIeWjK.js → ScopeBadge-CjyC7iyO.js} +2 -2
- package/dashboard/dist/assets/{ScopeBadge-CqIIeWjK.js.map → ScopeBadge-CjyC7iyO.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-DXOk5z5X.js → StickyPagination-BGHQbp0_.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DXOk5z5X.js.map → StickyPagination-BGHQbp0_.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-BB1h2zZN.js → StreamMessageDetail-C-wfdbLJ.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-BB1h2zZN.js.map → StreamMessageDetail-C-wfdbLJ.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-CapKokLg.js → SwimlaneTimeline-Dnoz-me3.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-CapKokLg.js.map → SwimlaneTimeline-Dnoz-me3.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-BLwxTNsI.js → TagInput-D-vLSMQC.js} +2 -2
- package/dashboard/dist/assets/{TagInput-BLwxTNsI.js.map → TagInput-D-vLSMQC.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-Dfzdp97x.js → TaskDetailPage-c9IiAhVJ.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-Dfzdp97x.js.map → TaskDetailPage-c9IiAhVJ.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-DVgcqd-h.js → TaskQueuePill-sFRMrQ5D.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-DVgcqd-h.js.map → TaskQueuePill-sFRMrQ5D.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DxlS7PTD.js → TasksListPage-Dor8LSc5.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DxlS7PTD.js.map → TasksListPage-Dor8LSc5.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Bv5viQ1m.js → TimeAgo-Dd8vmRnM.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Bv5viQ1m.js.map → TimeAgo-Dd8vmRnM.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-DXNBf_eb.js → TimestampCell-qJfC6-iT.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-DXNBf_eb.js.map → TimestampCell-qJfC6-iT.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-C6hkOqPx.js → ToolPill-OQ3mC11d.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-C6hkOqPx.js.map → ToolPill-OQ3mC11d.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-f32mir7Q.js → ToolTestPanel-CEGY5jss.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-f32mir7Q.js.map → ToolTestPanel-CEGY5jss.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-D-N8Vsd4.js → TopicDetailPage-SI80ZTVv.js} +3 -3
- package/dashboard/dist/assets/{TopicDetailPage-D-N8Vsd4.js.map → TopicDetailPage-SI80ZTVv.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-hqlu32wg.js → TopicsPage-DiVB8tNr.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-hqlu32wg.js.map → TopicsPage-DiVB8tNr.js.map} +1 -1
- package/dashboard/dist/assets/UserName-Dmm456xT.js +2 -0
- package/dashboard/dist/assets/{UserName-BhA_ItNN.js.map → UserName-Dmm456xT.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BAgMKnhe.js → WorkflowExecutionPage-e-Q57yiJ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BAgMKnhe.js.map → WorkflowExecutionPage-e-Q57yiJ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CN-952iI.js → WorkflowPill-Dh3hIW1l.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CN-952iI.js.map → WorkflowPill-Dh3hIW1l.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-B2wYT_hj.js → WorkflowsDashboard-DLKzN80h.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-B2wYT_hj.js.map → WorkflowsDashboard-DLKzN80h.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview--jC5F9lz.js → WorkflowsOverview-J-ITQiO5.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview--jC5F9lz.js.map → WorkflowsOverview-J-ITQiO5.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-BdB5eX8s.js → YamlWorkflowDetailPage-B_-ahhf1.js} +11 -11
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-BdB5eX8s.js.map → YamlWorkflowDetailPage-B_-ahhf1.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-BUQQU9II.js → YamlWorkflowsPage-DQNeERXU.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-BUQQU9II.js.map → YamlWorkflowsPage-DQNeERXU.js.map} +1 -1
- package/dashboard/dist/assets/{agents-BF_S1J_z.js → agents-BsJ-MizQ.js} +2 -2
- package/dashboard/dist/assets/{agents-BF_S1J_z.js.map → agents-BsJ-MizQ.js.map} +1 -1
- package/dashboard/dist/assets/{bots-CGlEoWAu.js → bots-q1UYqaIh.js} +2 -2
- package/dashboard/dist/assets/{bots-CGlEoWAu.js.map → bots-q1UYqaIh.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-Pq8pG0kX.js → capabilities-BvjPXUcJ.js} +2 -2
- package/dashboard/dist/assets/{capabilities-Pq8pG0kX.js.map → capabilities-BvjPXUcJ.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-dY6a4iYT.js → controlplane-BwlNpoJ_.js} +2 -2
- package/dashboard/dist/assets/{controlplane-dY6a4iYT.js.map → controlplane-BwlNpoJ_.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-Bo3PfIZj.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-CBUTda5U.js.map → escalation-columns-Bo3PfIZj.js.map} +1 -1
- package/dashboard/dist/assets/index-8Gmtvd8e.js +2 -0
- package/dashboard/dist/assets/{index-BHfISWyn.js.map → index-8Gmtvd8e.js.map} +1 -1
- package/dashboard/dist/assets/{index-CivQGQpu.js → index-B8JfGtQB.js} +3 -3
- package/dashboard/dist/assets/{index-CivQGQpu.js.map → index-B8JfGtQB.js.map} +1 -1
- package/dashboard/dist/assets/index-Bb9ZZUyB.js +5 -0
- package/dashboard/dist/assets/{index-BTksPQZe.js.map → index-Bb9ZZUyB.js.map} +1 -1
- package/dashboard/dist/assets/{index-BrFGgfjR.js → index-BhzsR_gZ.js} +2 -2
- package/dashboard/dist/assets/{index-BrFGgfjR.js.map → index-BhzsR_gZ.js.map} +1 -1
- package/dashboard/dist/assets/{index-DrlZc3C0.js → index-BvGIyZUt.js} +2 -2
- package/dashboard/dist/assets/{index-DrlZc3C0.js.map → index-BvGIyZUt.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bn-6MP9-.js → index-CldVY0UQ.js} +2 -2
- package/dashboard/dist/assets/{index-Bn-6MP9-.js.map → index-CldVY0UQ.js.map} +1 -1
- package/dashboard/dist/assets/index-D88VWEVp.js +67 -0
- package/dashboard/dist/assets/index-D88VWEVp.js.map +1 -0
- package/dashboard/dist/assets/{index-ByYeo8P7.js → index-DBvkaa-B.js} +4 -4
- package/dashboard/dist/assets/{index-ByYeo8P7.js.map → index-DBvkaa-B.js.map} +1 -1
- package/dashboard/dist/assets/{index-D0bjzVum.js → index-DDHoDZRg.js} +2 -2
- package/dashboard/dist/assets/{index-D0bjzVum.js.map → index-DDHoDZRg.js.map} +1 -1
- package/dashboard/dist/assets/index-DsKqDMs4.js +2 -0
- package/dashboard/dist/assets/{index-BWtW5puE.js.map → index-DsKqDMs4.js.map} +1 -1
- package/dashboard/dist/assets/index-Hbbox1A4.js +2 -0
- package/dashboard/dist/assets/{index-U7HShN30.js.map → index-Hbbox1A4.js.map} +1 -1
- package/dashboard/dist/assets/index-O9uuK2yO.js +2 -0
- package/dashboard/dist/assets/{index-CwQn-nhR.js.map → index-O9uuK2yO.js.map} +1 -1
- package/dashboard/dist/assets/index-cvmt1plS.js +2 -0
- package/dashboard/dist/assets/{index-D1KCPoRr.js.map → index-cvmt1plS.js.map} +1 -1
- package/dashboard/dist/assets/index-qU_dXqP4.css +1 -0
- package/dashboard/dist/assets/{knowledge-8_TilyaY.js → knowledge-DM0tNphj.js} +2 -2
- package/dashboard/dist/assets/{knowledge-8_TilyaY.js.map → knowledge-DM0tNphj.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-hY3O2HJa.js → mcp-CQ_TD2P9.js} +2 -2
- package/dashboard/dist/assets/{mcp-hY3O2HJa.js.map → mcp-CQ_TD2P9.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CA8NEf2e.js → mcp-query-BP7KSGhc.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CA8NEf2e.js.map → mcp-query-BP7KSGhc.js.map} +1 -1
- package/dashboard/dist/assets/metadata-display--TzK0REC.js +2 -0
- package/dashboard/dist/assets/metadata-display--TzK0REC.js.map +1 -0
- package/dashboard/dist/assets/{personas-DrWgQ94s.js → personas-DclHdHKK.js} +2 -2
- package/dashboard/dist/assets/{personas-DrWgQ94s.js.map → personas-DclHdHKK.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-DdgSlafC.js → pipelines-LwuKJfj-.js} +2 -2
- package/dashboard/dist/assets/{pipelines-DdgSlafC.js.map → pipelines-LwuKJfj-.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-UyjER1TA.js → tasks-CDs-Li2v.js} +2 -2
- package/dashboard/dist/assets/{tasks-UyjER1TA.js.map → tasks-CDs-Li2v.js.map} +1 -1
- package/dashboard/dist/assets/{topics-CIc5SpT_.js → topics-BeOSelBX.js} +2 -2
- package/dashboard/dist/assets/{topics-CIc5SpT_.js.map → topics-BeOSelBX.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CmUqBRK4.js → useDebouncedValue-DhhAKjDC.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CmUqBRK4.js.map → useDebouncedValue-DhhAKjDC.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-BOZOwXTE.js → useNamespace-C-E2gNEK.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-BOZOwXTE.js.map → useNamespace-C-E2gNEK.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BsTpIsba.js → useYamlActivityEvents-CmLzX3YU.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BsTpIsba.js.map → useYamlActivityEvents-CmLzX3YU.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-h-jlRSb9.js → vendor-icons-R9b9gQ04.js} +2 -2
- package/dashboard/dist/assets/{vendor-icons-h-jlRSb9.js.map → vendor-icons-R9b9gQ04.js.map} +1 -1
- package/dashboard/dist/assets/{workflows-BkFI3IwE.js → workflows-CYv1CTU0.js} +2 -2
- package/dashboard/dist/assets/{workflows-BkFI3IwE.js.map → workflows-CYv1CTU0.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-CeeqNi9k.js → yaml-workflows-BgAsc6-I.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-CeeqNi9k.js.map → yaml-workflows-BgAsc6-I.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/sdk/escalations.md +87 -0
- package/docs/dashboard.md +23 -1
- package/docs/faceted-routing.md +34 -0
- package/docs/hitl/escalation.md +29 -0
- package/docs/hitl/resolution.md +33 -0
- package/docs/sdk.md +1 -1
- package/package.json +2 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-D-W4OP55.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-D-W4OP55.js.map +0 -1
- package/dashboard/dist/assets/BulkAssignModal-ySfoaF7f.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-BSJ2oFj6.js +0 -2
- package/dashboard/dist/assets/CountdownTimer-C-E9MXMk.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-DrydlZ65.js +0 -2
- package/dashboard/dist/assets/EntityTimelinePanel-CwzIV87U.js +0 -2
- package/dashboard/dist/assets/GraphInvokePage-BV60xkVy.js +0 -2
- package/dashboard/dist/assets/HomePage-BA0RYzFc.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-CLEMtLOG.js +0 -2
- package/dashboard/dist/assets/Modal-BU7No9NH.js +0 -2
- package/dashboard/dist/assets/Modal-BU7No9NH.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-DCG8BFKE.js +0 -2
- package/dashboard/dist/assets/PersonaDetailPage-BEVeJr1q.js +0 -2
- package/dashboard/dist/assets/PersonasPage-B5fj2AK6.js +0 -2
- package/dashboard/dist/assets/RoleDetailPage-OmOdRm1F.js +0 -8
- package/dashboard/dist/assets/RoleDetailPage-OmOdRm1F.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-DwprdPCA.js +0 -2
- package/dashboard/dist/assets/ScanSchemeDetailPage-BKc4lUjc.js +0 -2
- package/dashboard/dist/assets/ScanStationPage-DUfxcntB.js +0 -2
- package/dashboard/dist/assets/UserName-BhA_ItNN.js +0 -2
- package/dashboard/dist/assets/escalation-columns-CBUTda5U.js +0 -2
- package/dashboard/dist/assets/index-BHfISWyn.js +0 -2
- package/dashboard/dist/assets/index-BTksPQZe.js +0 -5
- package/dashboard/dist/assets/index-BWtW5puE.js +0 -2
- package/dashboard/dist/assets/index-CwQn-nhR.js +0 -2
- package/dashboard/dist/assets/index-D1KCPoRr.js +0 -2
- package/dashboard/dist/assets/index-D9rtK9QF.js +0 -67
- package/dashboard/dist/assets/index-D9rtK9QF.js.map +0 -1
- package/dashboard/dist/assets/index-U7HShN30.js +0 -2
- package/dashboard/dist/assets/index-fUqvRHOe.css +0 -1
- package/dashboard/dist/assets/metadata-display-DHjqWkLG.js +0 -2
- package/dashboard/dist/assets/metadata-display-DHjqWkLG.js.map +0 -1
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as m,j as e}from"./vendor-query-RUZdMvN6.js";import{d as z,h as U,u as H,i as G,b as K}from"./workflows-BkFI3IwE.js";import{F as X,b as Y,a as V}from"./FilterBar-BeVBUdfJ.js";import{C as O}from"./ConfirmDeleteModal-CQsJUzEa.js";import{R as D}from"./RolePill-Di_5hfvw.js";import{W as Z}from"./WorkflowPill-CN-952iI.js";import{P as ee}from"./PageHeader-CFVw67M6.js";import{A as te,aC as I,aE as $,aF as se,i as L,aG as re,aH as W,a0 as ne,U as E,X as oe,s as ae,a8 as ie,k as le}from"./vendor-icons-h-jlRSb9.js";import{u as Q,e as ce,f as de}from"./vendor-react-CdqEC2zv.js";import{U as ue}from"./index-D9rtK9QF.js";import{B as me}from"./BotPicker-B8Yal8Mm.js";import{N as xe}from"./NamespacePill-DONj6eUU.js";import"./Modal-BU7No9NH.js";import"./bots-CGlEoWAu.js";function pe({tier:t}){return t==="certified"?e.jsxs("span",{className:"inline-flex items-center gap-1 text-2xs font-medium text-status-success",children:[e.jsx($,{className:"w-3 h-3"}),"Certified"]}):t==="registered"?e.jsxs("span",{className:"inline-flex items-center gap-1 text-2xs font-medium text-text-secondary",children:[e.jsx(ne,{className:"w-3 h-3"}),"Registered"]}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-2xs font-medium text-text-quaternary",children:[e.jsx(I,{className:"w-3 h-3"}),"Durable"]})}function Fe(){const t=Q(),{data:o,isLoading:u}=z(),x=U(),[c,g]=m.useState(""),[s,k]=m.useState(null),[j,v]=m.useState(null),l=o??[],f=m.useMemo(()=>[...new Set(l.map(a=>a.task_queue).filter(Boolean))].sort(),[l]),i=m.useMemo(()=>{const a=c.toLowerCase().trim();return(s?[s]:f).map(p=>({queue:p,workflows:l.filter(b=>{var h;return b.task_queue===p&&(!a||b.workflow_type.toLowerCase().includes(a)||((h=b.description)==null?void 0:h.toLowerCase().includes(a)))})})).filter(p=>p.workflows.length>0)},[l,f,c,s]),d=m.useMemo(()=>{const a=c.toLowerCase().trim();return s?[]:l.filter(w=>{var p;return!w.task_queue&&(!a||w.workflow_type.toLowerCase().includes(a)||((p=w.description)==null?void 0:p.toLowerCase().includes(a)))})},[l,c,s]),r=a=>{a.registered?t(`/workflows/registry/${encodeURIComponent(a.workflow_type)}`):t(`/workflows/registry/new?workflow_type=${encodeURIComponent(a.workflow_type)}&task_queue=${encodeURIComponent(a.task_queue??"")}`)},C=()=>{j&&x.mutate(j,{onSuccess:()=>v(null)})};return e.jsxs("div",{children:[e.jsx(ee,{title:"Registered Workflows",docsHash:"#docs:dashboard.md:workflow-registry",actions:e.jsx("button",{onClick:()=>t("/workflows/registry/new"),className:"btn-primary text-xs",children:"Register Workflow"})}),!u&&f.length>0&&e.jsxs(X,{children:[e.jsx(Y,{label:"Queue",value:s??"",onChange:a=>k(a||null),options:f.map(a=>({value:a,label:a}))}),e.jsx(V,{label:"Search",value:c,onChange:g,placeholder:`${l.length} workflows…`})]}),u?e.jsx(he,{}):i.length===0&&d.length===0?e.jsx("p",{className:"text-sm text-text-tertiary mt-8",children:c||s?"No workflows match your filter.":"No workflows discovered yet."}):e.jsxs("div",{className:"space-y-10",children:[i.map(({queue:a,workflows:w})=>e.jsxs("div",{children:[e.jsxs("div",{className:"sticky top-[60px] z-10 bg-surface flex items-center gap-2 py-2 mb-2 border-b border-surface-border",children:[e.jsx(te,{className:"w-3 h-3 text-accent",strokeWidth:1.5}),e.jsx("h2",{className:"section-h2",children:a}),e.jsx("span",{className:"text-xs text-text-quaternary",children:w.length})]}),e.jsx(T,{}),e.jsx("div",{className:"divide-y divide-surface-border/30",children:w.map(p=>e.jsx(F,{wf:p,onRowClick:r,onDelete:v,onNavigate:t},p.workflow_type))})]},a)),d.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"sticky top-[60px] z-10 bg-surface flex items-center gap-2 py-2 mb-2 border-b border-surface-border",children:[e.jsx(I,{className:"w-3 h-3 text-text-quaternary",strokeWidth:1.5}),e.jsx("h2",{className:"section-h2",children:"No Queue"}),e.jsx("span",{className:"text-xs text-text-quaternary",children:d.length})]}),e.jsx(T,{}),e.jsx("div",{className:"divide-y divide-surface-border/30",children:d.map(a=>e.jsx(F,{wf:a,onRowClick:r,onDelete:v,onNavigate:t},a.workflow_type))})]})]}),e.jsx(O,{open:!!j,onClose:()=>v(null),onConfirm:C,title:"Unregister Workflow",description:e.jsxs(e.Fragment,{children:["Delete the registration for"," ",e.jsx("span",{className:"font-mono font-medium text-text-primary",children:j}),"? This removes its invocation settings, certification, and interceptor treatment; the workflow keeps running as a plain durable workflow. To demote certified → registered instead, open the workflow and uncheck Certify — that keeps every setting."]}),isPending:x.isPending,error:x.error})]})}const J="grid grid-cols-[minmax(0,1fr)_7rem_13rem_4.5rem] gap-x-6";function T(){return e.jsxs("div",{className:`${J} px-3 pb-2 pt-1`,children:[e.jsx("span",{className:"text-2xs font-medium text-text-quaternary",children:"Workflow"}),e.jsx("span",{className:"text-2xs font-medium text-text-quaternary",children:"Tier"}),e.jsx("span",{className:"text-2xs font-medium text-text-quaternary",children:"Access"}),e.jsx("span",{})]})}function F({wf:t,onRowClick:o,onDelete:u,onNavigate:x}){const c=t.roles??[],g=t.invocation_roles??[];return e.jsxs("div",{role:"button",tabIndex:0,onClick:()=>o(t),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&o(t)},className:`group ${J} py-2 px-3 -mx-3 rounded-md cursor-pointer transition-colors items-center`,children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(Z,{type:t.workflow_type,size:"md",variant:t.tier==="certified"?"certified":t.tier==="registered"?"registered":"durable"}),t.description&&e.jsx("p",{className:"flex-1 min-w-0 truncate text-2xs text-text-tertiary group-hover:text-text-secondary transition-colors",children:t.description})]}),e.jsx("div",{children:e.jsx(pe,{tier:t.tier??"durable"})}),e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0 overflow-hidden whitespace-nowrap",children:[c.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{title:"Escalation roles",children:e.jsx($,{className:"w-3 h-3 text-text-quaternary shrink-0"})}),c.map(s=>e.jsx(D,{role:s},`e-${s}`))]}),g.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{title:"Invocation roles",children:e.jsx(se,{className:"w-3 h-3 text-text-quaternary shrink-0"})}),g.map(s=>e.jsx(D,{role:s},`i-${s}`))]}),c.length===0&&g.length===0&&e.jsx("span",{className:"text-xs text-text-quaternary",children:"—"})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[t.invocable&&e.jsx("button",{title:"Invoke workflow",onClick:s=>{s.stopPropagation(),x(`/workflows/start?type=${encodeURIComponent(t.workflow_type)}&mode=now`)},className:"text-text-quaternary hover:text-status-success transition-colors",children:e.jsx(L,{className:"w-3.5 h-3.5"})}),t.tier==="durable"&&e.jsx("button",{title:"Configure workflow",onClick:s=>{s.stopPropagation(),x(`/workflows/registry/new?workflow_type=${encodeURIComponent(t.workflow_type)}&task_queue=${encodeURIComponent(t.task_queue??"")}`)},className:"text-text-quaternary hover:text-status-info transition-colors",children:e.jsx(I,{className:"w-3.5 h-3.5"})}),t.tier==="registered"&&e.jsx("button",{title:"Certify workflow",onClick:s=>{s.stopPropagation(),x(`/workflows/registry/${encodeURIComponent(t.workflow_type)}`)},className:"text-text-quaternary hover:text-status-success transition-colors",children:e.jsx(re,{className:"w-3.5 h-3.5"})}),t.registered&&e.jsx("button",{title:"Unregister workflow",onClick:s=>{s.stopPropagation(),u(t.workflow_type)},className:"text-text-quaternary hover:text-status-warning transition-colors",children:e.jsx(W,{className:"w-3.5 h-3.5"})})]})]})}function he(){return e.jsx("div",{className:"animate-pulse space-y-8 mt-4",children:[1,2].map(t=>e.jsxs("div",{children:[e.jsx("div",{className:"h-4 bg-surface-sunken rounded w-36 mb-4"}),e.jsx("div",{className:"space-y-4",children:[1,2,3].map(o=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"}),e.jsx("div",{className:"h-3 bg-surface-sunken rounded w-full"})]},o))})]},t))})}function fe({selected:t,onChange:o,single:u,placeholder:x}){const{data:c}=ue(),g=(c==null?void 0:c.roles)??[],[s,k]=m.useState(!1),j=m.useRef(null);m.useEffect(()=>{const i=d=>{j.current&&!j.current.contains(d.target)&&k(!1)};return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[]);const v=i=>{u?(o(t.includes(i)?[]:[i]),k(!1)):o(t.includes(i)?t.filter(d=>d!==i):[...t,i])},l=i=>{o(t.filter(d=>d!==i))},f=x??(u?"Select role...":"Add roles...");return e.jsxs("div",{ref:j,className:"relative",children:[e.jsxs("button",{type:"button",onClick:()=>k(!s),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:[t.length===0&&e.jsx("span",{className:"text-xs text-text-tertiary",children:f}),t.map(i=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-lg bg-accent/[0.08] text-text-secondary text-2xs",children:[e.jsx(E,{className:"w-2.5 h-2.5 shrink-0 text-accent/75"}),i,e.jsx("span",{role:"button",onClick:d=>{d.stopPropagation(),l(i)},className:"ml-0.5 hover:text-status-error transition-colors",children:e.jsx(oe,{className:"w-2.5 h-2.5"})})]},i)),e.jsx(ae,{className:`w-3.5 h-3.5 ml-auto shrink-0 text-text-tertiary transition-transform ${s?"rotate-180":""}`})]}),s&&e.jsx("div",{className:"absolute z-[100] mt-1 w-full bg-surface-raised border border-surface-border rounded-md shadow-lg max-h-48 overflow-y-auto",children:g.length===0?e.jsx("p",{className:"px-3 py-2 text-xs text-text-tertiary",children:"No roles defined"}):g.map(i=>{const d=t.includes(i);return e.jsxs("button",{type:"button",onClick:()=>v(i),className:`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs transition-colors ${d?"bg-accent/[0.06] text-accent":"text-text-primary hover:bg-surface-sunken"}`,children:[e.jsx(E,{className:"w-3 h-3 shrink-0 text-accent/60"}),e.jsx("span",{className:"flex-1",children:i}),d&&e.jsx(ie,{className:"w-3 h-3 shrink-0"})]},i)})})]})}function S(t){return t.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 we(t){const o=(t.roles??[]).join(", "),u=(t.consumes??[]).join(", ");return{workflow_type:t.workflow_type,description:t.description??"",task_queue:t.task_queue??"",default_role:t.default_role,invocable:t.invocable,roles:o,invocation_roles:(t.invocation_roles??[]).join(", "),consumes:u,envelope_schema:t.envelope_schema?JSON.stringify(t.envelope_schema,null,2):"",resolver_schema:t.resolver_schema?JSON.stringify(t.resolver_schema,null,2):"",cron_schedule:t.cron_schedule??"",execute_as:t.execute_as??"",certified:t.certified}}function q(t){if(!t.trim())return!0;try{return JSON.parse(t),!0}catch{return!1}}function P({icon:t,color:o,children:u}){return e.jsxs("div",{className:"flex items-center gap-2 mb-4 pb-2 border-b border-surface-border",children:[e.jsx(t,{className:`w-4 h-4 ${o}`,strokeWidth:1.5}),e.jsx("h2",{className:"section-h2",children:u})]})}function _({label:t,hint:o,children:u}){return e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"label",children:t}),u,o&&e.jsx("p",{className:"hint",children:o})]})}const ge="input-json w-full";function je(t){return S(t)}function ke(t){return t.join(", ")}const ve=new Set(["mcpQuery","mcpDeterministic","mcpQueryRouter","mcpTriage","mcpTriageRouter","mcpTriageDeterministic","insightQuery"]);function Ue(){const{workflowType:t}=ce(),o=!t,u=Q(),[x]=de(),{data:c,isLoading:g}=H(),s=G(),k=U(),[j,v]=m.useState(!1),l=(c==null?void 0:c.find(n=>n.workflow_type===t))??null,{data:f}=K({limit:500}),i=m.useMemo(()=>{const n=new Set((c??[]).map(N=>N.workflow_type));return[...new Set(((f==null?void 0:f.jobs)??[]).map(N=>N.entity))].filter(N=>!n.has(N)&&!ve.has(N)).sort()},[c,f]),d=m.useMemo(()=>{if(!o)return R;const n=x.get("workflow_type")??"",y=x.get("task_queue")??"";return n||y?{...R,workflow_type:n,task_queue:y}:R},[o,x]),[r,C]=m.useState(d),[a,w]=m.useState(""),[p,b]=m.useState(!1),h=m.useCallback((n,y)=>C(N=>({...N,[n]:y})),[]);m.useEffect(()=>{if(!p){if(o){C(d),b(!0);return}l&&(C(we(l)),b(!0))}},[l,o,p,d]);const M=()=>{if(!r.workflow_type.trim())return;w("");let n=null,y=null;try{r.envelope_schema.trim()&&(n=JSON.parse(r.envelope_schema))}catch{w("Invalid JSON in Envelope Schema");return}try{r.resolver_schema.trim()&&(y=JSON.parse(r.resolver_schema))}catch{w("Invalid JSON in Resolver Schema");return}s.mutate({workflow_type:r.workflow_type.trim(),description:r.description.trim()||null,task_queue:r.task_queue.trim()||null,default_role:r.default_role.trim()||"reviewer",invocable:r.invocable,certified:r.certified,roles:S(r.roles),invocation_roles:S(r.invocation_roles),consumes:S(r.consumes),envelope_schema:n,resolver_schema:y,cron_schedule:r.cron_schedule.trim()||null,execute_as:r.execute_as.trim()||null},{onSuccess:()=>u("/workflows/registry")})};if(g)return e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-8 bg-surface-sunken rounded w-64"}),e.jsx("div",{className:"h-40 bg-surface-sunken rounded"})]});if(!o&&!l)return e.jsx("p",{className:"text-sm text-text-secondary",children:"Config not found."});const A=!!r.workflow_type.trim()&&q(r.envelope_schema)&&q(r.resolver_schema),B=o&&!r.workflow_type&&i.length>0;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-light font-mono text-text-primary",children:o?"New Workflow":(l==null?void 0:l.workflow_type)??""}),l&&e.jsx("div",{className:"flex items-center gap-2 mt-2",children:e.jsx(xe,{namespace:"durable"})})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[e.jsx("button",{onClick:()=>u("/workflows/registry"),className:"btn-ghost text-xs",children:"Cancel"}),e.jsx("button",{onClick:M,disabled:!A||s.isPending,className:"btn-primary text-xs",children:s.isPending?"Saving…":o?"Register":"Save"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 @wall:grid-cols-3 gap-x-14 gap-y-10",children:[e.jsxs("div",{children:[e.jsx(P,{icon:le,color:"text-accent",children:"Identity"}),e.jsxs("div",{className:"space-y-5",children:[e.jsx(_,{label:"Workflow Type",hint:"Register a workflow to configure invocation and HITL escalation routing.",children:B?e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs text-text-secondary",children:"Select a durable workflow to register:"}),e.jsx("div",{className:"grid gap-1",children:i.map(n=>e.jsx("button",{onClick:()=>h("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))}),e.jsxs("div",{className:"flex items-center gap-2 pt-1",children:[e.jsx("span",{className:"text-2xs text-text-tertiary",children:"or"}),e.jsx("input",{type:"text",onChange:n=>h("workflow_type",n.target.value),placeholder:"Enter type manually",className:"input font-mono flex-1"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",value:r.workflow_type,onChange:n=>h("workflow_type",n.target.value),disabled:!o,placeholder:"reviewContent",className:"input font-mono w-full"}),o&&r.workflow_type&&i.length>0&&e.jsx("button",{onClick:()=>h("workflow_type",""),className:"text-2xs text-accent hover:underline mt-1",children:"Choose from durable workflows"})]})}),e.jsx(_,{label:"Description",children:e.jsx("input",{type:"text",value:r.description,onChange:n=>h("description",n.target.value),placeholder:"Describe what this workflow does",className:"input text-xs w-full"})}),e.jsx(_,{label:"Task Queue",hint:"Durable task queue this workflow listens on.",children:e.jsx("input",{type:"text",value:r.task_queue,onChange:n=>h("task_queue",n.target.value),placeholder:"lt-review",className:"input font-mono w-full"})})]})]}),e.jsxs("div",{children:[e.jsx(P,{icon:L,color:"text-accent",children:"Invocation"}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:r.invocable,onChange:n=>h("invocable",n.target.checked),className:"w-4 h-4 rounded border-border accent-accent"}),e.jsx("span",{className:"text-xs text-text-primary font-medium",children:"Invocable"})]}),e.jsx("p",{className:"hint",children:"Allow this workflow to be started from the dashboard or API."})]}),r.invocable?e.jsxs(e.Fragment,{children:[e.jsx(_,{label:"Run As",hint:"Bot identity to run under. Default runs as the invoking user.",children:e.jsx(me,{selected:r.execute_as,onChange:n=>h("execute_as",n)})}),e.jsx(_,{label:"Invocation Roles",hint:"Only users with these roles can start this workflow. Empty = all authenticated users.",children:e.jsx(fe,{selected:je(r.invocation_roles),onChange:n=>h("invocation_roles",ke(n)),placeholder:"Select roles…"})}),e.jsxs(_,{label:"Envelope Schema",hint:e.jsxs(e.Fragment,{children:["Pre-fills the JSON editor when invoking. Include ",e.jsx("code",{className:"font-mono",children:"data"})," (input) and optional ",e.jsx("code",{className:"font-mono",children:"metadata"}),"."]}),children:[e.jsx("textarea",{value:r.envelope_schema,onChange:n=>h("envelope_schema",n.target.value),placeholder:`{
|
|
2
|
-
"data": {},
|
|
3
|
-
"metadata": {}
|
|
4
|
-
}`,className:ge,rows:8,spellCheck:!1}),r.envelope_schema.trim()&&!q(r.envelope_schema)&&e.jsx("p",{className:"text-2xs text-status-error mt-1",children:"Invalid JSON"})]})]}):e.jsxs("p",{className:"text-2xs text-text-tertiary py-2",children:["Enable ",e.jsx("span",{className:"font-medium text-text-secondary",children:"Invocable"})," to configure invocation roles and an input template."]})]})]}),l&&e.jsxs("div",{children:[e.jsx(P,{icon:W,color:"text-text-tertiary",children:"Registration"}),e.jsxs("button",{onClick:()=>v(!0),className:"flex items-center gap-1.5 text-2xs text-status-warning hover:underline",title:"Delete this registration — the workflow returns to plain durable",children:[e.jsx(W,{className:"w-3 h-3"})," Unregister workflow"]})]})]}),(a||s.error)&&e.jsx("p",{className:"text-xs text-status-error mt-8",children:a||s.error.message}),e.jsx(O,{open:j,onClose:()=>v(!1),onConfirm:()=>k.mutate(l.workflow_type,{onSuccess:()=>u("/workflows/registry")}),title:"Unregister Workflow",description:e.jsxs(e.Fragment,{children:["Delete the registration for"," ",e.jsx("span",{className:"font-mono font-medium text-text-primary",children:l==null?void 0:l.workflow_type}),"? This removes its invocation settings, certification, and interceptor treatment; the workflow keeps running as a plain durable workflow. Escalation schemas versioned on roles are untouched."]}),isPending:k.isPending,error:k.error})]})}export{Ue as WorkflowConfigDetailPage,Fe as WorkflowConfigsPage};
|
|
5
|
-
//# sourceMappingURL=index-BTksPQZe.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as u,j as e}from"./vendor-query-RUZdMvN6.js";import{u as L,a as M,b as I,c as D}from"./mcp-hY3O2HJa.js";import{E as R}from"./EmptyState-lpUFYfun.js";import{C as z}from"./ConfirmDeleteModal-CQsJUzEa.js";import{P as k}from"./PageHeader-CFVw67M6.js";import{F,a as _,b as T}from"./FilterBar-BeVBUdfJ.js";import{S as $}from"./StickyPagination-DXOk5z5X.js";import{u as q}from"./useFilterParams-crmlBw_l.js";import{S as A,T as B}from"./ToolTestPanel-f32mir7Q.js";import{R as J,a as b}from"./RowActions-eYrzgQSj.js";import{S as O}from"./StatusBadge-BDeUwPtb.js";import{T as H}from"./ToolPill-C6hkOqPx.js";import{c as G,aI as U,aJ as W,a7 as Q,T as V,i as X}from"./vendor-icons-h-jlRSb9.js";import{u as Y}from"./vendor-react-CdqEC2zv.js";import"./index-D9rtK9QF.js";import"./Modal-BU7No9NH.js";import"./RunAsSelector-DGw9EKSR.js";import"./BotPicker-B8Yal8Mm.js";import"./bots-CGlEoWAu.js";import"./helpers-DzO-OGPe.js";function Z(s){const[t,a]=u.useState(()=>{try{const o=localStorage.getItem(s);if(o){const p=JSON.parse(o);if(Array.isArray(p))return new Set(p)}}catch{}return new Set}),i=u.useCallback(o=>{try{localStorage.setItem(s,JSON.stringify([...o]))}catch{}},[s]),n=u.useCallback(o=>{a(p=>{const x=new Set(p);return x.has(o)?x.delete(o):x.add(o),i(x),x})},[i]),m=u.useCallback(o=>t.has(o),[t]);return{expandedIds:t,toggle:n,isExpanded:m}}function K(s){var t,a;return!!((t=s.metadata)!=null&&t.builtin)||!!((a=s.transport_config)!=null&&a.builtin)}function ee(s,t){var n;if(!t)return!0;const a=t.toLowerCase();return s.name.toLowerCase().includes(a)||(n=s.description)!=null&&n.toLowerCase().includes(a)||(s.tags??[]).some(m=>m.toLowerCase().includes(a))?!0:(s.tool_manifest??[]).some(m=>{var o;return m.name.toLowerCase().includes(a)||((o=m.description)==null?void 0:o.toLowerCase().includes(a))})}function te(s,t){if(!t)return s;const a=t.toLowerCase();return s.filter(i=>{var n;return i.name.toLowerCase().includes(a)||((n=i.description)==null?void 0:n.toLowerCase().includes(a))})}function se({server:s,expanded:t,onToggle:a,onEdit:i,onDelete:n,onTryTool:m,connect:o,disconnect:p,visibleTools:x}){const l=s.tool_manifest??[],f=K(s),g=s.tags??[];return e.jsxs(e.Fragment,{children:[e.jsxs("tr",{onClick:l.length>0?a:void 0,className:`group/row border-b border-surface-border/50 transition-colors duration-100 ${l.length>0?"cursor-pointer row-hover":""}`,children:[e.jsx("td",{className:"px-6 py-2.5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:`transition-transform duration-150 ${t?"rotate-90":""} ${l.length===0?"opacity-0":"text-text-tertiary"}`,children:e.jsx(G,{size:14})}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(A,{name:s.name,serverId:s.id,short:!1}),l.length>0&&e.jsx("sup",{className:"text-2xs font-normal text-accent/70",children:l.length})]}),g.length>0&&e.jsxs("div",{className:"flex gap-1 ml-auto shrink-0",children:[g.slice(0,3).map(c=>e.jsx("span",{className:"inline-block px-1.5 py-0 text-2xs text-text-tertiary bg-surface-sunken rounded",children:c},c)),g.length>3&&e.jsx("span",{className:"text-2xs text-text-quaternary",title:g.slice(3).join(", "),children:"…"})]})]})}),e.jsx("td",{className:"px-4 py-2.5 w-28 whitespace-nowrap",children:e.jsx(O,{status:s.status})}),e.jsx("td",{className:"px-4 py-2.5 w-16",children:e.jsxs(J,{children:[!f&&(s.status==="connected"?e.jsx(b,{icon:U,title:"Disconnect server",onClick:()=>p.mutate(s.id)}):e.jsx(b,{icon:W,title:"Connect server",onClick:()=>o.mutate(s.id),colorClass:"text-text-tertiary hover:text-status-success"})),e.jsx(b,{icon:Q,title:"Edit server",onClick:i}),!f&&e.jsx(b,{icon:V,title:"Delete server",onClick:n,colorClass:"text-text-tertiary hover:text-status-error"})]})})]}),t&&x.map(c=>e.jsxs("tr",{onClick:()=>m(c),className:"group/row cursor-pointer hover:bg-surface-hover/50 transition-colors border-b border-surface-border/15",children:[e.jsxs("td",{className:"pl-14 pr-6 py-2.5",children:[e.jsx(H,{name:c.name,size:"md"}),c.description&&e.jsx("p",{className:"text-2xs leading-snug text-text-quaternary mt-0.5",children:c.description})]}),e.jsx("td",{className:"px-4 py-2.5 w-28"}),e.jsx("td",{className:"px-4 py-2.5 w-16",children:e.jsx("div",{className:"flex items-center justify-end",children:e.jsx("button",{onClick:h=>{h.stopPropagation(),m(c)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"Try tool",children:e.jsx(X,{className:"w-3.5 h-3.5",strokeWidth:1.5})})})})]},c.name))]})}function Se(){const s=Y(),{filters:t,setFilter:a,pagination:i}=q({filters:{status:"",search:"",tag:""}}),{data:n,isLoading:m}=L({status:t.status||void 0,search:t.search||void 0,tags:t.tag||void 0}),o=M(),p=I(),x=D(),[l,f]=u.useState(null),{expandedIds:g,toggle:c}=Z("lt:expanded:mcp-servers"),[h,w]=u.useState(null),j=(n==null?void 0:n.servers)??[],y=(n==null?void 0:n.total)??0,P=u.useMemo(()=>{const r=new Set;for(const d of j)for(const C of d.tags??[])r.add(C);return[...r].sort().map(d=>({value:d,label:d}))},[j]),v=u.useMemo(()=>t.search?j.filter(r=>ee(r,t.search)):j,[j,t.search]);u.useEffect(()=>{if(!t.search)return;const r=t.search.toLowerCase();for(const d of v)(d.tool_manifest??[]).some(S=>{var N;return S.name.toLowerCase().includes(r)||((N=S.description)==null?void 0:N.toLowerCase().includes(r))})&&!g.has(d.id)&&c(d.id)},[t.search,v]);const E=()=>{l&&x.mutate(l.id,{onSuccess:()=>f(null)})};return m?e.jsxs("div",{children:[e.jsx(k,{title:"Servers & Tools"}),e.jsx("div",{className:"animate-pulse space-y-0",children:Array.from({length:5}).map((r,d)=>e.jsx("div",{className:"h-14 border-b last:border-b-0 px-6 flex items-center",children:e.jsx("div",{className:"h-3 bg-surface-sunken rounded w-full"})},d))})]}):e.jsxs("div",{children:[e.jsx(k,{title:"Servers & Tools",docsHash:"#docs:dashboard.md:mcp-server-tools",actions:e.jsx("button",{onClick:()=>s("/mcp/servers/new"),className:"btn-primary text-xs",children:"Register Server"})}),e.jsx("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."}),e.jsxs(F,{children:[e.jsx(_,{label:"Search",value:t.search,onChange:r=>a("search",r),placeholder:"Server or tool name..."}),e.jsx(T,{label:"Tag",value:t.tag,onChange:r=>a("tag",r),options:P}),e.jsx(T,{label:"Status",value:t.status,onChange:r=>a("status",r),options:[{value:"registered",label:"Registered"},{value:"connected",label:"Connected"},{value:"error",label:"Error"},{value:"disconnected",label:"Disconnected"}]})]}),e.jsxs("div",{className:"flex gap-0 ",children:[e.jsxs("div",{className:`${h?"flex-1 min-w-0":"w-full"} transition-all`,children:[v.length===0?e.jsx(R,{title:"No servers found"}):e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Server / Tool"}),e.jsx("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-28",children:"Status"}),e.jsx("th",{className:"sticky top-[2.75rem] z-10 bg-surface w-16"})]})}),e.jsx("tbody",{children:v.map(r=>e.jsx(se,{server:r,expanded:g.has(r.id),onToggle:()=>c(r.id),onEdit:()=>s(`/mcp/servers/${r.id}`),onDelete:()=>f(r),onTryTool:d=>w({serverId:r.id,serverName:r.name,tool:d}),connect:o,disconnect:p,visibleTools:te(r.tool_manifest??[],t.search)},r.id))})]}),e.jsx($,{page:i.page,totalPages:i.totalPages(y),onPageChange:i.setPage,total:y,pageSize:i.pageSize,onPageSizeChange:i.setPageSize})]}),h&&e.jsx("div",{className:"w-[380px] shrink-0 sticky top-0 max-h-screen overflow-y-auto",children:e.jsx(B,{serverId:h.serverId,serverName:h.serverName,tool:h.tool,onClose:()=>w(null)})})]}),e.jsx(z,{open:!!l,onClose:()=>f(null),onConfirm:E,title:"Delete MCP Server",description:e.jsxs(e.Fragment,{children:["Delete"," ",e.jsx("span",{className:"font-medium text-text-primary",children:l==null?void 0:l.name}),"? This will remove the server registration."]}),isPending:x.isPending,error:x.error})]})}export{Se as McpServersPage};
|
|
2
|
-
//# sourceMappingURL=index-BWtW5puE.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as k,u as R,b as O,j as e,a as d}from"./vendor-query-RUZdMvN6.js";import{P as F}from"./PageHeader-CFVw67M6.js";import{l as b}from"./index-D9rtK9QF.js";import{M}from"./Modal-BU7No9NH.js";import{R as g,C}from"./constants-BHkpVaqx.js";import{aX as E,aH as T,aE as W,J as j,T as I,aq as D}from"./vendor-icons-h-jlRSb9.js";import"./vendor-react-CdqEC2zv.js";function $(){return R({queryKey:["maintenance"],queryFn:()=>b("/config/maintenance")})}function q(){const t=O();return k({mutationFn:r=>b("/config/maintenance",{method:"PUT",body:JSON.stringify(r)}),onSuccess:()=>{t.invalidateQueries({queryKey:["maintenance"]})}})}function _(){return k({mutationFn:t=>b("/dba/prune",{method:"POST",body:JSON.stringify(t)})})}function v({checked:t,onToggle:r,label:a,hint:s,safety:i,value:l,onChange:c}){const n=i==="safe"?W:i==="moderate"?E:T,o=i==="safe"?"text-status-success":i==="moderate"?"text-status-warning":"text-status-error",p=i==="safe"?"Safe":i==="moderate"?"Careful":"Permanent";return e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsx("input",{type:"checkbox",checked:t,onChange:x=>r(x.target.checked),className:"w-4 h-4 rounded border-border accent-accent shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-text-primary",children:a}),e.jsxs("span",{className:`flex items-center gap-0.5 text-2xs ${o}`,children:[e.jsx(n,{className:"w-3 h-3",strokeWidth:1.5}),p]})]}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:s})]})]}),e.jsx("select",{value:l,onChange:x=>c(x.target.value),disabled:!t,className:`select text-xs w-36 transition-opacity ${t?"":"opacity-40 cursor-not-allowed"}`,children:g.map(x=>e.jsx("option",{value:x.value,children:x.label},x.value))})]})}function L(){return e.jsxs("div",{className:"flex items-start gap-2 mt-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsx(j,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"}),e.jsx("p",{className:"text-2xs 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."})]})}const f={pruneJobs:!0,expire:"30 days",engineStreams:!0,engineStreamsExpire:"1 day",workerStreams:!0,workerStreamsExpire:"90 days",stripAttributes:!1,pruneTransient:!1};function N(t){return t.pruneJobs||t.engineStreams||t.workerStreams||t.stripAttributes||t.pruneTransient}function P({fields:t,onChange:r}){const a=(s,i)=>r({...t,[s]:i});return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Stream Messages"}),e.jsx("p",{className:"text-2xs text-text-tertiary mb-4",children:"Processed routing messages. Already consumed — safe to remove after a short retention window."}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(v,{checked:t.engineStreams,onToggle:s=>a("engineStreams",s),label:"Engine messages",hint:"Internal orchestration signals",safety:"safe",value:t.engineStreamsExpire,onChange:s=>a("engineStreamsExpire",s)}),e.jsx(v,{checked:t.workerStreams,onToggle:s=>a("workerStreams",s),label:"Worker messages",hint:"Activity dispatch and response payloads",safety:"safe",value:t.workerStreamsExpire,onChange:s=>a("workerStreamsExpire",s)})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Completed Workflows"}),e.jsx("p",{className:"text-2xs 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."}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"flex items-start gap-2.5 cursor-pointer",children:[e.jsx("input",{type:"radio",name:"workflow-cleanup",checked:!t.stripAttributes&&!t.pruneJobs,onChange:()=>r({...t,stripAttributes:!1,pruneJobs:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"}),e.jsxs("div",{children:[e.jsx("span",{className:"text-xs text-text-primary",children:"Keep as-is"}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:"No changes to completed workflow records."})]})]}),e.jsxs("div",{className:"flex items-start gap-2.5",children:[e.jsxs("label",{className:"flex items-start gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsx("input",{type:"radio",name:"workflow-cleanup",checked:t.stripAttributes&&!t.pruneJobs,onChange:()=>r({...t,stripAttributes:!0,pruneJobs:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-text-primary",children:"Reduce completed workflows"}),e.jsxs("span",{className:"flex items-center gap-0.5 text-2xs text-status-warning",children:[e.jsx(E,{className:"w-3 h-3",strokeWidth:1.5}),"Careful"]})]}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Strips step-level execution detail (activity inputs/outputs, internal state). Workflow results and timeline are preserved."})]})]}),e.jsx("select",{value:t.expire,onChange:s=>a("expire",s.target.value),disabled:!t.stripAttributes||t.pruneJobs,className:`select text-xs w-36 transition-opacity mt-0.5 ${!t.stripAttributes||t.pruneJobs?"opacity-40 cursor-not-allowed":""}`,children:g.map(s=>e.jsx("option",{value:s.value,children:s.label},s.value))})]}),e.jsxs("div",{className:"flex items-start gap-2.5",children:[e.jsxs("label",{className:"flex items-start gap-2.5 cursor-pointer w-80 shrink-0",children:[e.jsx("input",{type:"radio",name:"workflow-cleanup",checked:t.pruneJobs,onChange:()=>r({...t,pruneJobs:!0,stripAttributes:!1}),className:"w-4 h-4 mt-0.5 accent-accent shrink-0"}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-text-primary",children:"Delete completed workflows"}),e.jsxs("span",{className:"flex items-center gap-0.5 text-2xs text-status-error",children:[e.jsx(T,{className:"w-3 h-3",strokeWidth:1.5}),"Permanent"]})]}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Permanently removes workflow records. Results, timeline, and all execution data are deleted and cannot be recovered."})]})]}),e.jsx("select",{value:t.expire,onChange:s=>a("expire",s.target.value),disabled:!t.pruneJobs,className:`select text-xs w-36 transition-opacity mt-0.5 ${t.pruneJobs?"":"opacity-40 cursor-not-allowed"}`,children:g.map(s=>e.jsx("option",{value:s.value,children:s.label},s.value))})]})]}),e.jsx(L,{})]})]})}function m({label:t,value:r}){return e.jsxs("div",{children:[e.jsx("p",{className:"text-lg font-light text-text-primary",children:r.toLocaleString()}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:t})]})}function H(){const t=_(),[r,a]=d.useState(f),[s,i]=d.useState(null),[l,c]=d.useState(!1),n=()=>{i(null),t.mutate({expire:r.expire,jobs:r.pruneJobs,engineStreams:r.engineStreams,engineStreamsExpire:r.engineStreamsExpire,workerStreams:r.workerStreams,workerStreamsExpire:r.workerStreamsExpire,attributes:r.stripAttributes,pruneTransient:r.pruneTransient},{onSuccess:o=>{i(o),c(!1)}})};return e.jsxs("div",{className:"space-y-8",children:[e.jsx(P,{fields:r,onChange:a}),e.jsxs("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsx("p",{className:"text-2xs text-text-tertiary",children:N(r)?"This action permanently deletes data and cannot be undone.":"Select at least one operation to enable pruning."}),e.jsx("button",{onClick:()=>c(!0),disabled:!N(r)||t.isPending,className:"bg-status-error text-text-inverse px-4 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity disabled:opacity-40 shrink-0",children:t.isPending?"Pruning...":"Prune Now"})]}),s&&e.jsxs("div",{className:"bg-surface-sunken rounded-md px-4 py-3",children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Results"}),e.jsxs("div",{className:"flex flex-wrap gap-6",children:[s.jobs!=null&&s.jobs>0&&e.jsx(m,{label:"Jobs deleted",value:s.jobs}),s.engineStreams!=null&&s.engineStreams>0&&e.jsx(m,{label:"Engine streams",value:s.engineStreams}),s.workerStreams!=null&&s.workerStreams>0&&e.jsx(m,{label:"Worker streams",value:s.workerStreams}),s.streams!=null&&s.engineStreams==null&&s.streams>0&&e.jsx(m,{label:"Streams",value:s.streams}),s.attributes!=null&&s.attributes>0&&e.jsx(m,{label:"Artifacts stripped",value:s.attributes}),s.transient!=null&&s.transient>0&&e.jsx(m,{label:"Transient deleted",value:s.transient}),s.marked!=null&&s.marked>0&&e.jsx(m,{label:"Marked pruned",value:s.marked}),Object.values(s).every(o=>!o||o===0)&&e.jsx("p",{className:"text-xs text-text-tertiary",children:"Nothing to prune within the selected retention windows."})]})]}),t.error&&e.jsx("p",{className:"text-xs text-status-error",children:t.error.message}),e.jsx(M,{open:l,onClose:()=>c(!1),title:"Confirm Prune",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-text-secondary",children:"This will permanently delete data. This action cannot be undone."}),e.jsxs("ul",{className:"text-xs text-text-secondary space-y-1 list-disc list-inside",children:[r.pruneJobs&&e.jsxs("li",{children:["Delete jobs older than ",r.expire]}),r.engineStreams&&e.jsxs("li",{children:["Delete engine streams older than ",r.engineStreamsExpire]}),r.workerStreams&&e.jsxs("li",{children:["Delete worker streams older than ",r.workerStreamsExpire]}),r.stripAttributes&&e.jsx("li",{children:"Strip execution artifacts from completed jobs"}),r.pruneTransient&&e.jsx("li",{children:"Delete transient (entity-less) jobs"})]}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:()=>c(!1),className:"btn-secondary text-xs",children:"Cancel"}),e.jsx("button",{onClick:n,className:"bg-status-error text-text-inverse px-3 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity",disabled:t.isPending,children:t.isPending?"Pruning...":"Confirm Prune"})]})]})})]})}function w(t){var c;if(!((c=t==null?void 0:t.rules)!=null&&c.length))return f;const r=t.rules,a=r.find(n=>n.target==="streams"&&n.action==="delete"),s=r.find(n=>n.target==="jobs"&&n.action==="delete"&&n.hasEntity===!1),i=r.find(n=>n.target==="jobs"&&n.action==="prune"&&n.hasEntity===!0),l=r.find(n=>n.target==="jobs"&&n.action==="delete"&&n.pruned===!0);return{pruneJobs:!!l,expire:(l==null?void 0:l.olderThan)??"180 days",engineStreams:!!a,engineStreamsExpire:(a==null?void 0:a.olderThan)??"1 day",workerStreams:!!a,workerStreamsExpire:(a==null?void 0:a.olderThan)??"90 days",stripAttributes:!!i,pruneTransient:!!s}}function U(t){const r=[];return t.engineStreams&&r.push({target:"streams",action:"delete",olderThan:t.engineStreamsExpire}),t.workerStreams&&t.workerStreamsExpire!==t.engineStreamsExpire&&r.push({target:"streams",action:"delete",olderThan:t.workerStreamsExpire}),t.pruneTransient&&r.push({target:"jobs",action:"delete",olderThan:t.expire,hasEntity:!1}),t.stripAttributes&&r.push({target:"jobs",action:"prune",olderThan:t.expire,hasEntity:!0}),t.pruneJobs&&r.push({target:"jobs",action:"delete",olderThan:t.expire,pruned:!0}),r}function S(t){var r;return((r=C.find(a=>a.value===t))==null?void 0:r.label)??""}function K(){const{data:t,isLoading:r}=$(),a=q(),[s,i]=d.useState(""),[l,c]=d.useState(f),[n,o]=d.useState(""),p=d.useCallback(()=>{t!=null&&t.config&&(i(t.config.schedule),c(w(t.config)),o(JSON.stringify({schedule:t.config.schedule,fields:w(t.config)})))},[t]);d.useEffect(()=>{p()},[p]);const x=JSON.stringify({schedule:s,fields:l}),y=n!==""&&x!==n,h=(t==null?void 0:t.active)??!1,J=()=>{const u=U(l);a.mutate({schedule:s,rules:u},{onSuccess:()=>{o(JSON.stringify({schedule:s,fields:l}))}})},A=()=>{p()};return r?e.jsx("div",{className:"animate-pulse h-40 bg-surface-sunken rounded"}):e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"grid grid-cols-1 @split:grid-cols-[1fr_auto] gap-10",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Schedule"}),e.jsxs("div",{className:"flex items-end gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-2xs text-text-tertiary mb-1",children:"Cron Expression"}),e.jsx("input",{type:"text",value:s,onChange:u=>i(u.target.value),placeholder:"0 2 * * *",className:"input text-xs font-mono w-48"})]}),e.jsx("div",{children:e.jsxs("div",{className:"flex items-center gap-1.5 h-8",children:[e.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring ${h?"bg-status-success":"bg-text-tertiary"}`}),e.jsx("span",{className:`text-xs ${h?"text-status-success":"text-text-tertiary"}`,children:h?"Active":"Inactive"})]})}),S(s)&&e.jsx("p",{className:"text-xs text-text-tertiary h-8 flex items-center",children:S(s)})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mt-3",children:C.map(u=>e.jsx("button",{type:"button",onClick:()=>i(u.value),className:`px-2.5 py-1 text-2xs rounded-full transition-colors ${s===u.value?"bg-accent/10 text-accent font-medium":"bg-surface-sunken text-text-tertiary hover:text-text-secondary"}`,children:u.label},u.value))})]}),e.jsxs("div",{className:"lg:w-72",children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"How It Works"}),e.jsxs("div",{className:"flex items-start gap-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsx(j,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"}),e.jsx("p",{className:"text-2xs 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."})]})]})]}),e.jsx(P,{fields:l,onChange:c}),e.jsxs("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[y&&e.jsx("button",{onClick:A,className:"text-2xs text-text-tertiary hover:text-text-primary transition-colors",children:"Revert changes"}),a.error&&e.jsx("p",{className:"text-xs text-status-error",children:a.error.message})]}),e.jsx("button",{onClick:J,disabled:!y||!s.trim()||a.isPending,className:"btn-primary text-xs disabled:opacity-40 shrink-0",children:a.isPending?"Saving...":"Save Schedule"})]})]})}function Q({mode:t,onChange:r}){const a=(s,i,l)=>e.jsxs("button",{onClick:()=>r(s),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${t===s?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[i,l]});return e.jsxs("div",{className:"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[a("prune",e.jsx(I,{className:"w-3.5 h-3.5"}),"Prune Now"),a("schedule",e.jsx(D,{className:"w-3.5 h-3.5"}),"Schedule")]})}function ee(){const[t,r]=d.useState("schedule");return e.jsxs("div",{children:[e.jsx(F,{title:"DB Maintenance",docsHash:"#docs:dashboard.md:db-maintenance",actions:e.jsx(Q,{mode:t,onChange:r})}),e.jsxs("div",{className:"flex items-start gap-2 px-4 py-3 mb-8 rounded-md bg-accent/5 border border-accent/10",children:[e.jsx(j,{className:"w-4 h-4 text-accent shrink-0 mt-0.5"}),e.jsx("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."})]}),t==="prune"?e.jsx(H,{}):e.jsx(K,{})]})}export{ee as MaintenancePage};
|
|
2
|
-
//# sourceMappingURL=index-CwQn-nhR.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i,j as e}from"./vendor-query-RUZdMvN6.js";import{P as ye}from"./PageHeaderWithStats-D9tQxILm.js";import{F as we,b as ke}from"./FilterBar-BeVBUdfJ.js";import{u as Ne}from"./useFilterParams-crmlBw_l.js";import{u as ve}from"./useNamespace-BOZOwXTE.js";import{a as ee,u as Ce,b as $e,c as Se,d as _e}from"./controlplane-dY6a4iYT.js";import{M as Te}from"./Modal-BU7No9NH.js";import{a6 as K,a_ as U,i as Ee,a$ as Z,aO as J,c as te,I as Re,Q as Me,aq as Pe,R as Ae,a0 as Le,b0 as We,v as Qe,Z as Fe,an as Oe}from"./vendor-icons-h-jlRSb9.js";import{C as I}from"./CollapsibleSection-CcV88IUy.js";import{T as Be}from"./TaskQueuePill-DVgcqd-h.js";import{D as ze}from"./DataTable-DFPMeqyQ.js";import{C as W,j as Ie,J as Je}from"./index-D9rtK9QF.js";import{R as De,a as Y}from"./RowActions-eYrzgQSj.js";import{f as Ue}from"./vendor-react-CdqEC2zv.js";import"./EmptyState-lpUFYfun.js";const Ve=[{label:"15m",value:"15m"},{label:"30m",value:"30m"},{label:"1h",value:"1h"},{label:"1d",value:"1d"},{label:"7d",value:"7d"}],se={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"},He=250;function M(t){return!!t.worker_topic}function P(t){return typeof t.throttle=="number"&&t.throttle!==0}function V(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 Ge(t){if(!t)return null;const s=t.match(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d+)$/);if(s){const[,r,n,o,u,l,h,d]=s;return new Date(`${r}-${n}-${o}T${u}:${l}:${h}.${d}Z`)}const a=new Date(t);return isNaN(a.getTime())?null:a}function Ke(t){const s=Ge(t);if(!s)return"--";const a=Date.now()-s.getTime();if(a<0||isNaN(a))return"--";const r=Math.floor(a/1e3);if(r<60)return`${r}s`;const n=Math.floor(r/60);if(n<60)return`${n}m`;const o=Math.floor(n/60);return o<24?`${o}h ${n%60}m`:`${Math.floor(o/24)}d ${o%24}h`}function ne(t){return t.replace(/^hmsh:[^:]+:x:/,"")||"(engine)"}function F(t){const s=t.match(/^([^:]+)::(.+?)-[A-Za-z0-9_]{10,}$/);return s?s[2]:t.length>20?t.slice(0,20)+"...":t}function Ze(t){const s=t.match(/^([^:]+)::/);return(s==null?void 0:s[1])||""}const re=[{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 B(t){return`${t.engine_id}-${t.worker_topic||"engine"}`}function Ye(t){const s=new Map;for(const a of t){if(!a.worker_topic)continue;const r=a.worker_topic;s.has(r)||s.set(r,[]),s.get(r).push(a)}return s}function T(t){let s=0,a=0,r=0;for(const n of t)if(n.counts)for(const[o,u]of Object.entries(n.counts))s+=u,o==="200"?a+=u:o==="500"&&(r+=u);return{total:s,success:a,errors:r}}function Xe(t){let s=0;for(const a of t)typeof a.stream_depth=="number"&&(s+=a.stream_depth);return s}function et(t){if(t.length===0)return"healthy";if(t.every(r=>r.throttle===-1))return"paused";const{errors:a}=T(t);return a>0||t.some(P)?"degraded":"healthy"}function tt({activeAppId:t,allProfiles:s,profiles:a}){const r=ee(),[n,o]=i.useState(new Set),[u,l]=i.useState(!1),[h,d]=i.useState([]);i.useEffect(()=>{o(new Set)},[t]);const k=i.useCallback(m=>{o(C=>{const f=new Set(C),$=B(m);return f.has($)?f.delete($):f.add($),f})},[]),b=i.useCallback(()=>{n.size===a.length?o(new Set):o(new Set(a.map(B)))},[a,n.size]),j=i.useMemo(()=>{const m=a.filter(N=>n.has(B(N)));if(m.length===0)return[];if(m.length===s.length)return[{label:"Entire Mesh"}];const C=m.filter(N=>!M(N)),f=m.filter(M),$=[];for(const N of C)$.push({label:`Engine ${N.engine_id}`,guid:N.engine_id,scope:"engines"});const A=new Map;for(const N of f){const R=N.worker_topic;A.has(R)||A.set(R,[]),A.get(R).push(N)}for(const[N,R]of A){const O=s.filter(L=>L.worker_topic===N);if(R.length===O.length)$.push({label:N,topic:N});else for(const L of R)$.push({label:`${N} ${L.engine_id}`,guid:L.engine_id})}return $},[a,s,n]);return{selectedIds:n,setSelectedIds:o,toggleCheckbox:k,toggleAll:b,throttleModalOpen:u,throttleTargets:h,selectedThrottleTargets:j,throttleMutation:r,handleBulkThrottle:m=>{const C=h.length>0?h:j;for(const f of C)r.mutate({appId:t,throttle:m,...f.topic?{topic:f.topic}:{},...f.guid?{guid:f.guid}:{},...f.scope?{scope:f.scope}:{}});l(!1),d([])},handleRowClick:(m,C)=>{const f=M(m)?`${m.worker_topic} ${m.engine_id}`:`Engine ${m.engine_id}`;d([{label:f,guid:m.engine_id,scope:C||(M(m)?"workers":"engines")}]),l(!0)},handleBulkThrottleOpen:()=>{d(j),l(!0)},handleResumeThrottle:(m,C)=>{const f=C||(M(m)?"workers":"engines");r.mutate({appId:t,throttle:0,guid:m.engine_id,scope:f})},handleResumeQueue:m=>{r.mutate({appId:t,throttle:0,topic:m})},handleQueueThrottle:m=>{d([{label:m,topic:m}]),l(!0)},closeThrottleModal:()=>{l(!1),d([])}}}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 nt({target:t}){const s=t.label==="Entire Mesh",a=t.label==="All Engines"||t.label.startsWith("Engine "),r=s?"bg-status-error/10 text-status-error":a?"bg-status-active/10 text-status-active":"bg-accent/[0.06] text-text-secondary",n=t.scope==="engines"?"engine only":t.scope==="workers"?"worker only":t.guid?"guid":t.topic?"topic":"mesh";return e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-2xs font-medium rounded-lg ${r}`,children:[t.label,e.jsx("span",{className:"text-2xs opacity-50",children:n})]})}function rt({open:t,onClose:s,targets:a,onApply:r,isPending:n}){const[o,u]=i.useState("");return e.jsx(Te,{open:t,onClose:s,title:"Adjust Throttle",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Targets"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:a.map((l,h)=>e.jsx(nt,{target:l},l.guid||l.topic||h))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Presets"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:st.map(l=>e.jsx("button",{onClick:()=>r(l.ms),disabled:n,className:`px-3 py-1.5 text-xs rounded transition-colors ${l.ms===-1?"bg-status-error/10 text-status-error hover:bg-status-error/20":l.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:l.label},l.label))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Custom delay (seconds)"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"number",step:"0.1",min:"0",value:o,onChange:l=>u(l.target.value),placeholder:"e.g. 2.5",className:"input text-xs py-1.5 px-3 w-28"}),e.jsx("button",{onClick:()=>{const l=parseFloat(o);isNaN(l)||l<0||r(Math.round(l*1e3))},disabled:n,className:"btn-primary text-xs py-1.5 px-4 disabled:opacity-50",children:"Apply"})]})]})]})})}function at(){const{data:t}=Ce(),s=ee(),[a,r]=i.useState(null),[n,o]=i.useState(!1),u=(t==null?void 0:t.apps)??[],l=i.useCallback(async(d,k="all")=>{if(u.length===0)return;o(!0);const b=await Promise.allSettled(u.map(v=>s.mutateAsync({appId:v.appId,throttle:d,...k!=="all"?{scope:k}:{}}))),j=b.filter(v=>v.status==="rejected").length;j>0&&console.error(`Emergency throttle: ${j}/${b.length} apps failed`),o(!1),r(null)},[u,s]),h=d=>d==="engines"?"engines":d==="workers"?"workers":"everything";return a?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-xs text-status-error",children:["Pause ",h(a.scope),"?"]}),e.jsx("button",{onClick:()=>l(a.ms,a.scope),disabled:n,className:"px-2.5 py-1 text-xs rounded-md bg-status-error text-text-inverse hover:bg-status-error/90 transition-colors disabled:opacity-50",children:n?e.jsx(K,{className:"w-3.5 h-3.5 animate-spin"}):"Confirm"}),e.jsx("button",{onClick:()=>r(null),disabled:n,className:"px-2.5 py-1 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:"Cancel"})]}):e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>r({ms:-1,scope:"all"}),disabled:n,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.jsx(U,{className:"w-3.5 h-3.5"}),"Pause All"]}),e.jsxs("button",{onClick:()=>l(0),disabled:n,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:[n?e.jsx(K,{className:"w-3.5 h-3.5 animate-spin"}):e.jsx(Ee,{className:"w-3.5 h-3.5"}),"Resume All"]})]})}function ot({byStream:t,onNodeFilter:s}){const[a,r]=i.useState(!1);if(i.useEffect(()=>{r(!1);const d=requestAnimationFrame(()=>r(!0));return()=>cancelAnimationFrame(d)},[t]),t.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary py-4 text-center",children:"No activity in this period"});const n=t.filter(d=>d.stream_type==="engine"),o=t.filter(d=>d.stream_type==="worker"),u=Math.max(...t.map(d=>d.count)),l=d=>{const k=u>0?d.count/u*100:0,b=d.stream_type==="engine",j=b?"(all engines)":ne(d.stream_name),v=b?"bg-status-active/70":"bg-accent/60",y=b?"text-status-active":"text-text-tertiary";return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:`text-2xs font-mono ${y} w-36 truncate text-right shrink-0`,title:d.stream_name,children:j}),e.jsx("div",{className:"flex-1 h-4 bg-surface-sunken rounded overflow-hidden",children:e.jsx("div",{className:`h-full ${v} rounded transition-all duration-500 ease-out`,style:{width:a?`${k}%`:"0%"}})}),e.jsx("span",{className:"text-2xs font-mono tabular-nums text-text-secondary w-12 text-right shrink-0",children:d.count.toLocaleString()})]},`${d.stream_type}-${d.stream_name}`)},h="text-2xs uppercase tracking-widest font-semibold mb-1 cursor-pointer hover:underline";return e.jsxs("div",{className:"space-y-1.5",children:[n.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:`${h} text-status-active/70 hover:text-status-active`,onClick:()=>s==null?void 0:s("engines"),children:"Engine Stream"}),n.map(l),o.length>0&&e.jsx("div",{className:"h-2"})]}),o.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:`${h} text-accent/70 hover:text-accent`,onClick:()=>s==null?void 0:s("workers"),children:"Worker Streams"}),o.map(l)]})]})}function lt({queue:t,workers:s,expanded:a,onToggle:r,onWorkerClick:n,onResumeThrottle:o,onQueueThrottle:u,onResumeQueue:l,byStream:h,activeDuration:d}){const k=i.useMemo(()=>{const c=h.find(g=>g.stream_type==="worker"&&ne(g.stream_name)===t);return(c==null?void 0:c.count)??0},[h,t]),b=i.useMemo(()=>et(s),[s]),j=i.useMemo(()=>Xe(s),[s]),{errors:v}=i.useMemo(()=>T(s),[s]),y=b==="paused"?"bg-status-error":b==="degraded"?"bg-status-warning":"bg-status-success",x=i.useMemo(()=>[...s].sort((c,g)=>T([g]).total-T([c]).total),[s]),w=i.useMemo(()=>[{key:"engine_id",label:"Router",render:c=>{var m;const g=c.engine_id.replace(/^[^:]+::/,"").replace(/-[A-Za-z0-9_]{10,}$/,"")||c.engine_id,E=((m=c.engine_id.match(/^([^:]+)::/))==null?void 0:m[1])||"";return e.jsxs("div",{className:"flex items-center gap-2",title:c.engine_id,children:[e.jsx("span",{className:"text-xs text-text-secondary truncate max-w-[180px]",children:g}),E&&e.jsx("span",{className:"text-2xs text-text-tertiary/50",children:E})]})}},{key:"processed",label:"Processed",render:c=>{const g=T([c]);return e.jsx("span",{className:"text-xs font-mono tabular-nums text-text-tertiary",children:g.total>0?g.total.toLocaleString():"--"})},className:"w-24"},{key:"throttle",label:"Throttle",render:c=>{const g=c.throttle;return g===-1?e.jsx("span",{className:"text-xs text-status-error font-medium",children:"Paused"}):g&&g>0?e.jsx("span",{className:"text-xs text-status-warning font-medium",children:V(g)}):e.jsx("span",{className:"text-xs text-text-tertiary",children:"0"})},className:"w-24"},{key:"actions",label:"",render:c=>e.jsxs(De,{children:[P(c)&&e.jsx(Y,{icon:Z,title:"Resume (remove throttle)",onClick:()=>o(c),colorClass:"text-text-tertiary hover:text-status-success"}),e.jsx(Y,{icon:J,title:"Adjust throttle",onClick:()=>n(c)})]}),className:"w-16"}],[n,o]);return e.jsxs("div",{children:[e.jsxs("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.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${y}`,title:b}),e.jsx(te,{className:`w-3.5 h-3.5 text-text-tertiary/50 transition-transform duration-200 ${a?"rotate-90":""}`,strokeWidth:2}),e.jsx(Be,{queue:t,size:"sm"}),e.jsx("span",{className:"flex-1"}),v>0&&e.jsxs("span",{className:"text-2xs text-status-error font-medium mr-2",children:[v," errors"]}),j>0&&e.jsxs("span",{className:"flex items-center gap-1 text-2xs text-status-warning w-20",children:[e.jsx(Re,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"font-mono tabular-nums",children:j.toLocaleString()})]}),e.jsxs("span",{className:`flex items-center gap-1 text-xs w-24 ${s.some(P)?"text-status-warning":"text-text-tertiary"}`,children:[e.jsx(Me,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"font-mono tabular-nums",children:s.length}),e.jsx("span",{children:"workers"})]}),e.jsx("span",{className:"flex items-center gap-1 text-xs font-mono text-text-tertiary w-28 justify-end mr-16",children:k>0?e.jsxs(e.Fragment,{children:[e.jsx(Pe,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),k.toLocaleString()," in ",d]}):e.jsx("span",{className:"text-text-tertiary/40",children:"—"})}),e.jsxs("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:[s.some(P)&&e.jsx(Z,{className:"w-4 h-4 text-text-tertiary hover:text-status-success",strokeWidth:1.5,onClick:c=>{c.stopPropagation(),l(t)}}),e.jsx(J,{className:"w-4 h-4 text-text-tertiary hover:text-accent",strokeWidth:1.5,onClick:c=>{c.stopPropagation(),u(t)}})]})]}),e.jsx(W,{open:a,children:e.jsx("div",{className:"ml-6",children:e.jsx(ze,{columns:w,data:x,keyFn:B,onRowClick:n,emptyMessage:"No workers",inline:!0})})})]})}let it=0;function ct(t){const s=t.data||{},a=s.topic?String(s.topic):"",r=s.guid?String(s.guid).slice(0,8):"";switch(t.type){case"pong":return a?`Worker ${r}... on "${a}" responded`:`Engine ${r}... responded`;case"ping":return"Roll call broadcast";case"throttle":{const n=s.throttle,o=a?`queue "${a}"`:r?`node ${r}...`:"all nodes";return`${V(n)} applied to ${o}`}case"job":return`Job ${r?r+"...":""} ${s.status||"updated"}`;case"work":return`Dispatched to "${a||"worker"}" ${r?"("+r+"...)":""}`;case"activate":return`Worker "${a||"unknown"}" activated`;case"cron":return`Cron triggered ${a?'"'+a+'"':""}`;default:return a||r||t.type}}function ut(t){const s=[];let a=0;for(;a<t.length;){const r=t[a];if(r.type==="pong"){let n=a+1;for(;n<t.length&&t[n].type==="pong";)n++;const o=t.slice(a,n);if(o.length>=3)s.push({kind:"group",type:"pong",count:o.length,firstTimestamp:o[o.length-1].timestamp,lastTimestamp:o[0].timestamp,events:o});else for(const u of o)s.push({kind:"single",event:u});a=n}else s.push({kind:"single",event:r}),a++}return s}function ae({event:t}){const[s,a]=i.useState(!1);return e.jsxs("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxs("button",{onClick:()=>a(!s),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsx("span",{className:"text-2xs 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"})}),e.jsx("span",{className:`text-2xs font-medium px-1 py-0.5 rounded ${se[t.type]||"text-text-tertiary"} bg-surface-sunken whitespace-nowrap shrink-0`,children:qe[t.type]||t.type}),e.jsx("span",{className:"text-2xs text-text-secondary flex-1 min-w-0 truncate",children:ct(t)}),e.jsx("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${s?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),e.jsx(W,{open:s,children:e.jsx("div",{className:"pb-2",children:e.jsx(Je,{data:t.data})})})]})}function dt({group:t}){const[s,a]=i.useState(!1),r=t.events.filter(o=>{var u;return!((u=o.data)!=null&&u.topic)}).length,n=t.count-r;return e.jsxs("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxs("button",{onClick:()=>a(!s),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsx("span",{className:"text-2xs 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"})}),e.jsx("span",{className:`text-2xs font-medium px-1 py-0.5 rounded ${se.pong} bg-surface-sunken whitespace-nowrap shrink-0`,children:"roll call"}),e.jsxs("span",{className:"text-2xs text-text-secondary flex-1 min-w-0 truncate",children:[t.count," nodes responded",r>0&&n>0?` (${r} engine${r!==1?"s":""}, ${n} worker${n!==1?"s":""})`:r>0?` (${r} engine${r!==1?"s":""})`:` (${n} worker${n!==1?"s":""})`]}),e.jsx("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${s?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),e.jsx(W,{open:s,children:e.jsx("div",{className:"ml-4",children:t.events.map(o=>e.jsx(ae,{event:o},o.id))})})]})}function xt({channels:t,onToggle:s,customFilter:a,onCustomFilterChange:r}){return e.jsxs("div",{className:"space-y-3 pb-3 border-b border-surface-border mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Channels"}),e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Unchecked channels are dropped before buffering"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1",children:re.map(n=>e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer py-0.5",children:[e.jsx("input",{type:"checkbox",checked:t.has(n.key),onChange:()=>s(n.key),className:"w-3 h-3 rounded border-border accent-accent"}),e.jsx("span",{className:"text-2xs text-text-secondary",title:n.description,children:n.label})]},n.key))}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Text Filter"}),e.jsx("input",{type:"text",value:a,onChange:n=>r(n.target.value),placeholder:"pong",className:"input text-2xs font-mono py-1 px-2 w-full"}),e.jsxs("p",{className:"text-2xs text-text-tertiary mt-1",children:["Filter by event type, e.g. ",e.jsx("span",{className:"font-mono",children:"pong"}),", ",e.jsx("span",{className:"font-mono",children:"throttle"}),", or any text in the event data."]})]})]})}function mt({bridgeActive:t}){const[s,a]=i.useState(!1),[r,n]=i.useState(!1),[o,u]=i.useState([]),[l,h]=i.useState(()=>new Set(re.map(x=>x.key))),[d,k]=i.useState(""),b=i.useRef(l);i.useEffect(()=>{b.current=l},[l]);const j=i.useRef(d);i.useEffect(()=>{j.current=d},[d]);const v=x=>{h(w=>{const c=new Set(w);return c.has(x)?c.delete(x):c.add(x),c})};Ie("lt.events.mesh.>",i.useCallback(x=>{var g;const w=((g=x.type)==null?void 0:g.replace("mesh.",""))||"unknown";if(!b.current.has(w))return;const c=j.current;c&&!`${w} ${JSON.stringify(x.data||x)}`.toLowerCase().includes(c.toLowerCase())||u(E=>[{id:++it,type:w,timestamp:x.timestamp||new Date().toISOString(),data:x.data||x},...E].slice(0,He))},[]));const y=()=>u([]);return e.jsxs("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.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Event Stream"}),e.jsx(Ae,{className:`w-3 h-3 ${t?"text-status-success animate-pulse":"text-text-tertiary"}`}),e.jsx("span",{className:"text-2xs text-text-tertiary",children:t?"Live":"..."}),e.jsxs("span",{className:"ml-auto flex items-center gap-1",children:[e.jsx("button",{onClick:()=>{a(x=>!x),n(!1)},className:`p-1 rounded transition-colors ${s?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"Configure channels",children:e.jsx(Le,{className:"w-3.5 h-3.5"})}),e.jsx("button",{onClick:()=>{n(x=>!x),a(!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.jsx(We,{className:"w-3.5 h-3.5"})}),o.length>0&&e.jsx("button",{onClick:y,className:"p-1 rounded text-text-tertiary hover:text-text-primary transition-colors",title:"Clear events",children:e.jsx(Qe,{className:"w-3.5 h-3.5"})})]})]}),e.jsx(W,{open:s,children:e.jsx(xt,{channels:l,onToggle:v,customFilter:d,onCustomFilterChange:k})}),e.jsx(W,{open:r,children:e.jsx("div",{className:"pb-3 border-b border-surface-border mb-3",children:e.jsx("pre",{className:"text-2xs font-mono text-text-tertiary bg-surface-sunken rounded-lg p-3 max-h-[50vh] overflow-auto whitespace-pre-wrap",children:JSON.stringify(o.slice(0,50),null,2)})})}),o.length>0&&e.jsxs("p",{className:"text-2xs text-text-tertiary mb-2",children:[o.length," events"]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:o.length===0?e.jsx("p",{className:"text-xs text-text-tertiary py-6 text-center",children:t?"Waiting for events...":"Subscribing..."}):ut(o).map((x,w)=>x.kind==="group"?e.jsx(dt,{group:x},`grp-${w}`):e.jsx(ae,{event:x.event},x.event.id))})]})}function ht(t){const s=[],a=[],r=[];for(const n of t)P(n)?r.push(n):n.is_scout||T([n]).total>0?s.push(n):a.push(n);return s.sort((n,o)=>n.is_scout&&!o.is_scout?-1:!n.is_scout&&o.is_scout?1:T([o]).total-T([n]).total),a.sort((n,o)=>F(n.engine_id).localeCompare(F(o.engine_id))),r.sort((n,o)=>F(n.engine_id).localeCompare(F(o.engine_id))),{active:s,idle:a,paused:r}}function D({engine:t,isFirst:s,onThrottle:a}){const r=F(t.engine_id),n=Ze(t.engine_id),o=T([t]),u=t.stream_depth??0,l=P(t);return e.jsxs("div",{className:"group/row flex items-center gap-3 py-2 hover:bg-surface-hover/50 transition-colors rounded px-1",children:[l?e.jsx(U,{className:"w-3.5 h-3.5 text-status-warning shrink-0",strokeWidth:1.5}):e.jsx(Fe,{className:`w-3.5 h-3.5 shrink-0 ${o.total>0||t.is_scout?"text-status-success":"text-text-tertiary/30"}`,strokeWidth:1.5}),e.jsx("span",{className:`${s?"text-base font-medium":"text-xs"} text-text-primary truncate max-w-[180px]`,title:t.engine_id,children:r}),n&&e.jsx("span",{className:"text-2xs text-text-tertiary/50",children:n}),t.is_scout&&e.jsx("span",{className:"text-2xs text-status-warning uppercase tracking-widest",children:"scout"}),e.jsx("span",{className:"flex-1"}),l&&e.jsx("span",{className:"text-2xs text-status-warning",children:t.throttle===-1?"Paused":V(t.throttle)}),o.total>0&&e.jsx("span",{className:"text-2xs font-mono tabular-nums text-text-tertiary w-16 text-right",children:o.total.toLocaleString()}),u>0&&e.jsxs("span",{className:`text-2xs font-mono tabular-nums w-14 text-right ${u>100?"text-status-warning":"text-text-tertiary/50"}`,children:[u.toLocaleString()," q"]}),e.jsx("span",{className:"text-2xs font-mono text-text-tertiary/40 w-12 text-right",children:Ke(t.inited)}),e.jsx("span",{className:"opacity-0 group-hover/row:opacity-100 transition-opacity",children:e.jsx("button",{onClick:h=>{h.stopPropagation(),a(t)},className:"text-text-tertiary hover:text-accent transition-colors",title:l?"Resume / adjust throttle":"Pause / throttle",children:e.jsx(J,{className:"w-3.5 h-3.5",strokeWidth:1.5})})})]})}function X({label:t,engines:s,onThrottle:a}){const[r,n]=i.useState(!1);return s.length===0?null:e.jsxs("div",{className:"mt-1",children:[e.jsxs("button",{onClick:()=>n(!r),className:"flex items-center gap-1.5 text-2xs text-text-tertiary hover:text-text-secondary transition-colors py-1",children:[e.jsx(te,{className:`w-3 h-3 transition-transform duration-200 ${r?"rotate-90":""}`,strokeWidth:2}),s.length," ",t]}),e.jsx(W,{open:r,children:e.jsx("div",{className:"ml-1",children:s.map(o=>e.jsx(D,{engine:o,onThrottle:a},o.engine_id))})})]})}function pt({engines:t,onThrottle:s,isLoading:a}){const{active:r,idle:n,paused:o}=i.useMemo(()=>ht(t),[t]);return a?e.jsx("p",{className:"text-xs text-text-tertiary",children:"Discovering engines..."}):t.length===0?e.jsx("p",{className:"text-xs text-text-tertiary",children:"No engines found."}):r.length===0&&n.length===0?e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 py-2",children:[e.jsx(U,{className:"w-4 h-4 text-status-error shrink-0",strokeWidth:1.5}),e.jsxs("span",{className:"text-base text-status-error font-medium",children:["All ",t.length," engines paused"]})]}),e.jsx("p",{className:"text-2xs text-text-tertiary ml-7",children:"Messages are accumulating. Resume at least one engine to restore processing."}),e.jsx("div",{className:"ml-1 mt-2",children:o.map(u=>e.jsx(D,{engine:u,onThrottle:s},u.engine_id))})]}):e.jsxs("div",{children:[r.map((u,l)=>e.jsx(D,{engine:u,isFirst:l===0,onThrottle:s},u.engine_id)),e.jsx(X,{label:"idle",engines:n,onThrottle:s}),e.jsx(X,{label:"paused",engines:o,onThrottle:s})]})}function gt({collapsed:t,toggleSection:s,activeDuration:a,streamStats:r,isLoading:n,queueMap:o,expandedQueues:u,toggleQueue:l,allQueuesExpanded:h,toggleAllQueues:d,handleRowClick:k,handleResumeThrottle:b,handleQueueThrottle:j,handleResumeQueue:v,engines:y,bridgeActive:x}){return e.jsxs("div",{className:"grid grid-cols-1 @split:grid-cols-[1fr_340px] gap-6",children:[e.jsxs("div",{className:"flex flex-col gap-12 mt-10",children:[e.jsx(I,{title:`Message Volume (${a})`,sectionKey:"volume",isCollapsed:!!t.volume,onToggle:s,contentClassName:"mt-4 ml-7",children:e.jsx(ot,{byStream:(r==null?void 0:r.byStream)??[],onNodeFilter:()=>{},onQueueFilter:()=>{}})}),e.jsx(I,{title:`Engine Routers (${y.length})`,sectionKey:"engines",isCollapsed:!!t.engines,onToggle:s,contentClassName:"mt-4 ml-7",children:e.jsx(pt,{engines:y,onThrottle:k,isLoading:n})}),e.jsx(I,{title:"Worker Routers",sectionKey:"queues",isCollapsed:!!t.queues,onToggle:s,contentClassName:"mt-4 ml-7 flex flex-col gap-0",children:n?e.jsx("p",{className:"text-xs text-text-tertiary",children:"Discovering mesh nodes..."}):o.size===0?e.jsx("p",{className:"text-xs text-text-tertiary",children:'No worker routers found. Click "Roll Call" to discover.'}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex justify-end mb-2",children:e.jsx("button",{onClick:d,className:"text-2xs text-accent hover:underline",children:h?"Collapse all":"Expand all"})}),[...o.entries()].sort(([w],[c])=>w.localeCompare(c)).map(([w,c])=>e.jsx(lt,{queue:w,workers:c,expanded:u.has(w),onToggle:l,onWorkerClick:k,onResumeThrottle:b,onQueueThrottle:j,onResumeQueue:v,byStream:(r==null?void 0:r.byStream)??[],activeDuration:a},w))]})})]}),e.jsx(mt,{bridgeActive:x})]})}function Mt(){const{namespace:t,available:s}=ve(),{filters:a,setFilter:r}=Ne({filters:{app_id:"",duration:"1h"}}),n=a.app_id||t,o=a.duration||"1h",u=$e(),l=6e4,{data:h,isLoading:d,error:k,refetch:b,isFetching:j}=Se(n,l),{data:v}=_e(n,o,void 0,l),y=i.useMemo(()=>[...(h==null?void 0:h.profiles)??[]].sort((S,_)=>{const z=S.worker_topic||S.stream||"",Q=_.worker_topic||_.stream||"";return!S.worker_topic&&_.worker_topic?-1:S.worker_topic&&!_.worker_topic?1:z.localeCompare(Q)}),[h==null?void 0:h.profiles]),x=i.useMemo(()=>y.filter(p=>!M(p)),[y]),w=i.useMemo(()=>y.filter(M),[y]),c=i.useMemo(()=>Ye(y),[y]),g=y.filter(P).length,E=i.useMemo(()=>{const p=new Set(s);return n&&p.add(n),[...p].sort().map(S=>({value:S,label:S}))},[s,n]),[m]=Ue(),C=m.get("queue"),[f,$]=i.useState(()=>C?new Set([C]):new Set),A=i.useCallback(p=>{$(S=>{const _=S.has(p),z=_?new Set:new Set([p]),Q=new URLSearchParams(window.location.search);_?Q.delete("queue"):Q.set("queue",p);const G=Q.toString();return window.history.pushState(null,"",`${window.location.pathname}${G?`?${G}`:""}`),z})},[]),N=c.size>0&&[...c.keys()].every(p=>f.has(p)),R=i.useCallback(()=>{$(N?new Set:new Set(c.keys()))},[N,c]),O="lt:controlplane:collapsed",[L,oe]=i.useState(()=>{try{const p=JSON.parse(localStorage.getItem(O)||"{}");return C&&(p.queues=!1),p}catch{return{}}}),le=i.useCallback(p=>{oe(S=>{const _={...S,[p]:!S[p]};return localStorage.setItem(O,JSON.stringify(_)),_})},[]),{throttleModalOpen:ie,throttleTargets:q,selectedThrottleTargets:ce,throttleMutation:ue,handleBulkThrottle:de,handleRowClick:xe,handleResumeThrottle:me,handleResumeQueue:he,handleQueueThrottle:pe,closeThrottleModal:ge}=tt({activeAppId:n,allProfiles:y,profiles:y}),fe=i.useMemo(()=>{const p=[{label:"Engines",value:x.length,dotClass:"bg-status-active"},{label:"Workers",value:w.length,dotClass:"bg-text-secondary"},{label:"Topics",value:c.size}];return g>0&&p.push({label:"Throttled",value:g,dotClass:"bg-status-warning"}),p},[x.length,w.length,c.size,g]),[H,be]=i.useState(!1),je=i.useCallback(()=>{u.mutate({appId:n},{onSuccess:()=>be(!0)})},[n,u]);return i.useEffect(()=>{!H&&n&&je()},[n]),e.jsxs("div",{children:[e.jsx(ye,{title:"Routers",docsHash:"#docs:dashboard.md:task-queues",stats:fe,actions:e.jsx(at,{})}),e.jsxs(we,{actions:e.jsx("div",{className:"flex items-center gap-1",children:Ve.map(p=>e.jsx("button",{onClick:()=>r("duration",p.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${o===p.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:p.label},p.value))}),children:[e.jsx(ke,{label:"Application",value:a.app_id,onChange:p=>r("app_id",p),options:E}),e.jsxs("button",{onClick:()=>b(),disabled:j,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.jsx(Oe,{className:`w-3.5 h-3.5 ${j?"animate-spin":""}`}),"Roll Call"]})]}),k&&e.jsx("div",{className:"mb-6 px-4 py-3 rounded bg-status-error/10 border border-status-error/20",children:e.jsx("p",{className:"text-xs text-status-error font-medium",children:k.message==="Session expired"?"Session expired — please log in again.":`Failed to load mesh data: ${k.message}`})}),e.jsx(gt,{collapsed:L,toggleSection:le,activeDuration:o,streamStats:v,isLoading:d,queueMap:c,expandedQueues:f,toggleQueue:A,allQueuesExpanded:N,toggleAllQueues:R,handleRowClick:xe,handleResumeThrottle:me,handleQueueThrottle:pe,handleResumeQueue:he,engines:x,bridgeActive:H}),e.jsx(rt,{open:ie,onClose:ge,targets:q.length>0?q:ce,onApply:de,isPending:ue.isPending})]})}export{Mt as ControlPlanePage};
|
|
2
|
-
//# sourceMappingURL=index-D1KCPoRr.js.map
|