@hotmeshio/long-tail 0.28.4 → 0.30.0
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/roles.js +4 -0
- package/build/api/scan-codes/choice.js +6 -3
- package/build/api/scan-codes/context.d.ts +7 -1
- package/build/api/scan-codes/context.js +24 -0
- package/build/api/scan-codes/execute.js +4 -2
- package/build/api/scan-codes/present.d.ts +3 -1
- package/build/api/scan-codes/present.js +25 -12
- package/build/routes/oauth.d.ts +1 -0
- package/build/routes/oauth.js +16 -2
- package/build/services/oauth/index.d.ts +1 -0
- package/build/services/oauth/index.js +5 -1
- package/build/services/oauth/providers/github.js +2 -1
- package/build/services/oauth/providers/google.js +3 -3
- package/build/services/oauth/providers/microsoft.js +4 -1
- package/build/services/oauth/providers/mock.js +1 -1
- package/build/services/oauth/provisioning.d.ts +8 -0
- package/build/services/oauth/provisioning.js +23 -0
- package/build/services/role/scan-done.d.ts +7 -0
- package/build/services/role/scan-done.js +36 -0
- package/build/services/role/seed.js +4 -0
- package/build/services/role/types.d.ts +11 -0
- package/build/services/role/types.js +4 -0
- package/build/services/scan-code/validate.js +50 -0
- package/build/start/config.js +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +2 -2
- package/build/types/index.js +3 -1
- package/build/types/oauth.d.ts +3 -0
- package/build/types/scan-choice.d.ts +8 -0
- package/build/types/scan-code/constants.d.ts +3 -0
- package/build/types/scan-code/constants.js +4 -1
- package/build/types/scan-code/response.d.ts +14 -0
- package/build/types/scan-code/rule.d.ts +11 -0
- package/dashboard/dist/assets/{AdminDashboard-DRE0hSDS.js → AdminDashboard-Bjf_7-S6.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DRE0hSDS.js.map → AdminDashboard-Bjf_7-S6.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-BuflQGgy.js → AgentConfigPage-CEGk5Gbv.js} +6 -6
- package/dashboard/dist/assets/{AgentConfigPage-BuflQGgy.js.map → AgentConfigPage-CEGk5Gbv.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-BiL9FB7i.js → AgentDetailPage-C52Oi1_f.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-BiL9FB7i.js.map → AgentDetailPage-C52Oi1_f.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-C4ZxCNxt.js → AgentsPage-CohqxaWS.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-C4ZxCNxt.js.map → AgentsPage-CohqxaWS.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-B5p8QJvI.js → AvailableEscalationsPage-DXpRnOVd.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-B5p8QJvI.js.map → AvailableEscalationsPage-DXpRnOVd.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-B7V77PnY.js → BotPicker-DPglulL6.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-B7V77PnY.js.map → BotPicker-DPglulL6.js.map} +1 -1
- package/dashboard/dist/assets/{BulkAssignModal-DcGVMQqm.js → BulkAssignModal-DWNR3FJJ.js} +2 -2
- package/dashboard/dist/assets/{BulkAssignModal-DcGVMQqm.js.map → BulkAssignModal-DWNR3FJJ.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-DmbC1pEs.js → CapabilitiesPage-ChBBD0IX.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-DmbC1pEs.js.map → CapabilitiesPage-ChBBD0IX.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-C81S1qic.js → CollapsibleSection-QAXKTYc6.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-C81S1qic.js.map → CollapsibleSection-QAXKTYc6.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-3RFyWN9Q.js → ConfirmDeleteModal-J9xc_gVZ.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-3RFyWN9Q.js.map → ConfirmDeleteModal-J9xc_gVZ.js.map} +1 -1
- package/dashboard/dist/assets/{ConnectedAppsPage-B0D2OvTD.js → ConnectedAppsPage-BKhsc_jJ.js} +2 -2
- package/dashboard/dist/assets/{ConnectedAppsPage-B0D2OvTD.js.map → ConnectedAppsPage-BKhsc_jJ.js.map} +1 -1
- package/dashboard/dist/assets/{CountdownTimer-iAG28fzG.js → CountdownTimer-C4hP64lF.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-iAG28fzG.js.map → CountdownTimer-C4hP64lF.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-DoFwNvFv.js → CredentialsPage-DUfgsEbI.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-DoFwNvFv.js.map → CredentialsPage-DUfgsEbI.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-C1Bb2wo4.js → CronLabel-CBc3Tvau.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-C1Bb2wo4.js.map → CronLabel-CBc3Tvau.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-Cl_Flb16.js → DropZone-DefYTYQy.js} +2 -2
- package/dashboard/dist/assets/{DropZone-Cl_Flb16.js.map → DropZone-DefYTYQy.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-DZs1I1JW.js → ElapsedCell-V27Y2Ksb.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-DZs1I1JW.js.map → ElapsedCell-V27Y2Ksb.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-Du1O6Oly.js → EntityTimelinePanel-BA4MWXkB.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-Du1O6Oly.js.map → EntityTimelinePanel-BA4MWXkB.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-CrpBhC0e.js → EscalationListSchemaPage-B20HUAlO.js} +2 -2
- package/dashboard/dist/assets/{EscalationListSchemaPage-CrpBhC0e.js.map → EscalationListSchemaPage-B20HUAlO.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-Co59lcuD.js → EscalationSchemaPage-Cen9HGYG.js} +2 -2
- package/dashboard/dist/assets/{EscalationSchemaPage-Co59lcuD.js.map → EscalationSchemaPage-Cen9HGYG.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-B_fzNsX5.js → EscalationTimeline-DGNgcMm0.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-B_fzNsX5.js.map → EscalationTimeline-DGNgcMm0.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-C2Goebjo.js → EscalationTitleSelect-BhsflGiC.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-C2Goebjo.js.map → EscalationTitleSelect-BhsflGiC.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-Cgmrl8Zc.js → EscalationsOverview-C2nc-Pgv.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-Cgmrl8Zc.js.map → EscalationsOverview-C2nc-Pgv.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-BdEiu3Fv.js → EventTable-BvNxHKy1.js} +2 -2
- package/dashboard/dist/assets/{EventTable-BdEiu3Fv.js.map → EventTable-BvNxHKy1.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CzKYBOMC.js → FilterBar-22FDO0R_.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CzKYBOMC.js.map → FilterBar-22FDO0R_.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-CcDFhY53.js → GraphInvokePage-BAyfJ-PY.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-CcDFhY53.js.map → GraphInvokePage-BAyfJ-PY.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-Xahqcdu9.js → HomePage-CtjG2kGn.js} +2 -2
- package/dashboard/dist/assets/{HomePage-Xahqcdu9.js.map → HomePage-CtjG2kGn.js.map} +1 -1
- package/dashboard/dist/assets/{LinePage-DKwhGunp.js → LinePage-DPe-vP3-.js} +3 -3
- package/dashboard/dist/assets/{LinePage-DKwhGunp.js.map → LinePage-DPe-vP3-.js.map} +1 -1
- package/dashboard/dist/assets/{LinesPage-BXZVO4MC.js → LinesPage-BCSfYkuL.js} +2 -2
- package/dashboard/dist/assets/{LinesPage-BXZVO4MC.js.map → LinesPage-BCSfYkuL.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-orQsOdl_.js → ListToolbar-6siR0Hao.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-orQsOdl_.js.map → ListToolbar-6siR0Hao.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-pSnadtSM.js → McpOverview-Cbu2CXlQ.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-pSnadtSM.js.map → McpOverview-Cbu2CXlQ.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-BCAJ3rKO.js → McpQueryDetailPage--1FsnGuM.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-BCAJ3rKO.js.map → McpQueryDetailPage--1FsnGuM.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-CRyXeRp5.js → McpQueryPage-CPUUMIiY.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-CRyXeRp5.js.map → McpQueryPage-CPUUMIiY.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-BHppCztI.js → McpRunDetailPage-BDCv-c1o.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-BHppCztI.js.map → McpRunDetailPage-BDCv-c1o.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-Cd9yCT-_.js → McpRunsPage-Df4yOclO.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-Cd9yCT-_.js.map → McpRunsPage-Df4yOclO.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill-OTZD2hzt.js → NamespacePill-CeSfHH-j.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-OTZD2hzt.js.map → NamespacePill-CeSfHH-j.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-BtnthZgj.js → OperationsPage-BYUGFgPp.js} +2 -2
- package/dashboard/dist/assets/{OperationsPage-BtnthZgj.js.map → OperationsPage-BYUGFgPp.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-B4_OBhYh.js → OperatorDashboard-Dd1EhTZe.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-B4_OBhYh.js.map → OperatorDashboard-Dd1EhTZe.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-Hx8APPwE.js → PageHeader-DiGWAQlR.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-Hx8APPwE.js.map → PageHeader-DiGWAQlR.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-BEQYYBJv.js → PageHeaderWithStats-DwnKQ06j.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BEQYYBJv.js.map → PageHeaderWithStats-DwnKQ06j.js.map} +1 -1
- package/dashboard/dist/assets/{PersonaDetailPage-BAYjM9qf.js → PersonaDetailPage-BCx3Ey2_.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-BAYjM9qf.js.map → PersonaDetailPage-BCx3Ey2_.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-6HsOp-1y.js → PersonasPage--Ez0YeHh.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-6HsOp-1y.js.map → PersonasPage--Ez0YeHh.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-6OMr7KtJ.js → PortalPage-BmBmheBp.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-6OMr7KtJ.js.map → PortalPage-BmBmheBp.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-AidH_h7z.js → ProcessDetailPage-DBj4VEnP.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-AidH_h7z.js.map → ProcessDetailPage-DBj4VEnP.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-BWKoKbXk.js → ProcessesListPage-CD5NRIBK.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-BWKoKbXk.js.map → ProcessesListPage-CD5NRIBK.js.map} +1 -1
- package/dashboard/dist/assets/{ResolverForm-BaSvhLoT.js → ResolverForm-Baxwv_IG.js} +2 -2
- package/dashboard/dist/assets/{ResolverForm-BaSvhLoT.js.map → ResolverForm-Baxwv_IG.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-6ukNyycs.js +8 -0
- package/dashboard/dist/assets/RoleDetailPage-6ukNyycs.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-R5_ctGFy.js → RolePill-D3hkAdKf.js} +2 -2
- package/dashboard/dist/assets/{RolePill-R5_ctGFy.js.map → RolePill-D3hkAdKf.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-T2hH_MV5.js → RolesPage-DRs2XeSd.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-T2hH_MV5.js.map → RolesPage-DRs2XeSd.js.map} +1 -1
- package/dashboard/dist/assets/{RosterWidget-DG6Rcx4P.js → RosterWidget-BPBPSa1k.js} +2 -2
- package/dashboard/dist/assets/{RosterWidget-DG6Rcx4P.js.map → RosterWidget-BPBPSa1k.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-M2h9U6PP.js → RunAsSelector-Br9FiMwP.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-M2h9U6PP.js.map → RunAsSelector-Br9FiMwP.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-lB_WxoZw.js → ScanCodesPage-BXENWoZb.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-lB_WxoZw.js.map → ScanCodesPage-BXENWoZb.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-C3VLg61H.js → ScanSchemeDetailPage-CaM4rUBV.js} +2 -2
- package/dashboard/dist/assets/{ScanSchemeDetailPage-C3VLg61H.js.map → ScanSchemeDetailPage-CaM4rUBV.js.map} +1 -1
- package/dashboard/dist/assets/ScanStationPage-CmJKgWy_.js +2 -0
- package/dashboard/dist/assets/ScanStationPage-CmJKgWy_.js.map +1 -0
- package/dashboard/dist/assets/{ScopeBadge-BXZ084nD.js → ScopeBadge-DGz79rmG.js} +2 -2
- package/dashboard/dist/assets/{ScopeBadge-BXZ084nD.js.map → ScopeBadge-DGz79rmG.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-BdjseWXr.js → StickyPagination-DX5CPgrX.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-BdjseWXr.js.map → StickyPagination-DX5CPgrX.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-DJCBxETh.js → StreamMessageDetail-3mWw3_M5.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-DJCBxETh.js.map → StreamMessageDetail-3mWw3_M5.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-DiXm9jIk.js → SwimlaneTimeline-C_pIcWBJ.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-DiXm9jIk.js.map → SwimlaneTimeline-C_pIcWBJ.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-DjPUDp2M.js → TagInput-DaIdhv3h.js} +2 -2
- package/dashboard/dist/assets/{TagInput-DjPUDp2M.js.map → TagInput-DaIdhv3h.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-m8CQFN4w.js → TaskDetailPage-DthMVBZO.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-m8CQFN4w.js.map → TaskDetailPage-DthMVBZO.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-D-4Ynf3K.js → TaskQueuePill-sUA1nZe-.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-D-4Ynf3K.js.map → TaskQueuePill-sUA1nZe-.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DHBSUhZC.js → TasksListPage-MtawUpuU.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DHBSUhZC.js.map → TasksListPage-MtawUpuU.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Cq3bKUd-.js → TimeAgo-DIziYk-v.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Cq3bKUd-.js.map → TimeAgo-DIziYk-v.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-e5gRR_FY.js → TimestampCell-Dn5M-Eey.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-e5gRR_FY.js.map → TimestampCell-Dn5M-Eey.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-GsKQ80CO.js → ToolPill-CpBAFdEX.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-GsKQ80CO.js.map → ToolPill-CpBAFdEX.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-Bg0ss9oN.js → ToolTestPanel-DaBrgPML.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-Bg0ss9oN.js.map → ToolTestPanel-DaBrgPML.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-DhPiCfOO.js → TopicDetailPage-zNE3EigP.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-DhPiCfOO.js.map → TopicDetailPage-zNE3EigP.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-BqZaVv3d.js → TopicsPage-Cj0ugdie.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-BqZaVv3d.js.map → TopicsPage-Cj0ugdie.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-C6ZNHHKN.js → UserName-t3PbLYfd.js} +2 -2
- package/dashboard/dist/assets/{UserName-C6ZNHHKN.js.map → UserName-t3PbLYfd.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BUqIhtcr.js → WorkflowExecutionPage-CZ2c5QLL.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BUqIhtcr.js.map → WorkflowExecutionPage-CZ2c5QLL.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-D7244fKp.js → WorkflowPill-CKHip3hH.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-D7244fKp.js.map → WorkflowPill-CKHip3hH.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-BKxhC_hT.js → WorkflowsDashboard-DLb71Sa2.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-BKxhC_hT.js.map → WorkflowsDashboard-DLb71Sa2.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-018s2q_p.js → WorkflowsOverview-Wz6RzxHJ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-018s2q_p.js.map → WorkflowsOverview-Wz6RzxHJ.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-C2zcXDr1.js → YamlWorkflowDetailPage-CcRAN_ey.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-C2zcXDr1.js.map → YamlWorkflowDetailPage-CcRAN_ey.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-aVcNZNu6.js → YamlWorkflowsPage-B4C9fiYU.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-aVcNZNu6.js.map → YamlWorkflowsPage-B4C9fiYU.js.map} +1 -1
- package/dashboard/dist/assets/{agents-DRaaJUue.js → agents-BvRjwrof.js} +2 -2
- package/dashboard/dist/assets/{agents-DRaaJUue.js.map → agents-BvRjwrof.js.map} +1 -1
- package/dashboard/dist/assets/{bots-C4N90NCj.js → bots-qx7qPwFo.js} +2 -2
- package/dashboard/dist/assets/{bots-C4N90NCj.js.map → bots-qx7qPwFo.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-BoRWifSC.js → capabilities-DJrUEeew.js} +2 -2
- package/dashboard/dist/assets/{capabilities-BoRWifSC.js.map → capabilities-DJrUEeew.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-DGZAxi7J.js → controlplane-D82a5cfq.js} +2 -2
- package/dashboard/dist/assets/{controlplane-DGZAxi7J.js.map → controlplane-D82a5cfq.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-DJbfsH_m.js → escalation-columns-Dmm8LY_f.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-DJbfsH_m.js.map → escalation-columns-Dmm8LY_f.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-items-C8iJZEA8.js → escalation-items-C3ko1DCb.js} +2 -2
- package/dashboard/dist/assets/{escalation-items-C8iJZEA8.js.map → escalation-items-C3ko1DCb.js.map} +1 -1
- package/dashboard/dist/assets/{index-BuSUevzO.js → index-BAxEeqfF.js} +2 -2
- package/dashboard/dist/assets/{index-BuSUevzO.js.map → index-BAxEeqfF.js.map} +1 -1
- package/dashboard/dist/assets/{index-DhKGp4QK.js → index-BCSeHOZH.js} +2 -2
- package/dashboard/dist/assets/{index-DhKGp4QK.js.map → index-BCSeHOZH.js.map} +1 -1
- package/dashboard/dist/assets/{index-DeyA88jq.js → index-BJrsQM-E.js} +2 -2
- package/dashboard/dist/assets/{index-DeyA88jq.js.map → index-BJrsQM-E.js.map} +1 -1
- package/dashboard/dist/assets/{index-CXXc9sUr.js → index-BVxqddYr.js} +2 -2
- package/dashboard/dist/assets/{index-CXXc9sUr.js.map → index-BVxqddYr.js.map} +1 -1
- package/dashboard/dist/assets/{index-DIU89TX3.js → index-C59ZyWOo.js} +2 -2
- package/dashboard/dist/assets/{index-DIU89TX3.js.map → index-C59ZyWOo.js.map} +1 -1
- package/dashboard/dist/assets/{index-CyL-6CAa.js → index-CNDnGdvT.js} +2 -2
- package/dashboard/dist/assets/{index-CyL-6CAa.js.map → index-CNDnGdvT.js.map} +1 -1
- package/dashboard/dist/assets/{index-pzbGpihI.js → index-CSr5q355.js} +25 -25
- package/dashboard/dist/assets/index-CSr5q355.js.map +1 -0
- package/dashboard/dist/assets/{index-DMKLnxt8.js → index-CXnmU0TS.js} +2 -2
- package/dashboard/dist/assets/{index-DMKLnxt8.js.map → index-CXnmU0TS.js.map} +1 -1
- package/dashboard/dist/assets/{index-CjjRxpVe.js → index-C_-FoMo9.js} +2 -2
- package/dashboard/dist/assets/{index-CjjRxpVe.js.map → index-C_-FoMo9.js.map} +1 -1
- package/dashboard/dist/assets/index-C_dp4WgY.css +1 -0
- package/dashboard/dist/assets/{index-3HaFP00M.js → index-D-vNL8Hm.js} +2 -2
- package/dashboard/dist/assets/{index-3HaFP00M.js.map → index-D-vNL8Hm.js.map} +1 -1
- package/dashboard/dist/assets/{index-BFxHIfQ_.js → index-DOkHnsLK.js} +2 -2
- package/dashboard/dist/assets/{index-BFxHIfQ_.js.map → index-DOkHnsLK.js.map} +1 -1
- package/dashboard/dist/assets/{index-BhS9XSy8.js → index-U5gC9Xgq.js} +2 -2
- package/dashboard/dist/assets/{index-BhS9XSy8.js.map → index-U5gC9Xgq.js.map} +1 -1
- package/dashboard/dist/assets/{index-CeeSFnl-.js → index-f4-pKYcm.js} +2 -2
- package/dashboard/dist/assets/{index-CeeSFnl-.js.map → index-f4-pKYcm.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-BWo3OCJc.js → knowledge-i7_nXSbf.js} +2 -2
- package/dashboard/dist/assets/{knowledge-BWo3OCJc.js.map → knowledge-i7_nXSbf.js.map} +1 -1
- package/dashboard/dist/assets/{machines-LEYY_yar.js → machines-DfSNshLg.js} +2 -2
- package/dashboard/dist/assets/{machines-LEYY_yar.js.map → machines-DfSNshLg.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-_0kFRcyT.js → mcp-dCLNwcC8.js} +2 -2
- package/dashboard/dist/assets/{mcp-_0kFRcyT.js.map → mcp-dCLNwcC8.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-BzmN0lc5.js → mcp-query-wmbaGRYi.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-BzmN0lc5.js.map → mcp-query-wmbaGRYi.js.map} +1 -1
- package/dashboard/dist/assets/{personas-kE4PMrgo.js → personas-B_cJA5UG.js} +2 -2
- package/dashboard/dist/assets/{personas-kE4PMrgo.js.map → personas-B_cJA5UG.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-DYDNaypF.js → pipelines-ClUmuwmY.js} +2 -2
- package/dashboard/dist/assets/{pipelines-DYDNaypF.js.map → pipelines-ClUmuwmY.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-ClJ-mbj9.js → tasks-BE97GrLr.js} +2 -2
- package/dashboard/dist/assets/{tasks-ClJ-mbj9.js.map → tasks-BE97GrLr.js.map} +1 -1
- package/dashboard/dist/assets/{topics-oHX4vbqe.js → topics-Dk0Y3kZP.js} +2 -2
- package/dashboard/dist/assets/{topics-oHX4vbqe.js.map → topics-Dk0Y3kZP.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-C97KADrj.js → useDebouncedValue-BLGuHd_v.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-C97KADrj.js.map → useDebouncedValue-BLGuHd_v.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-Kje0Rn7j.js → useNamespace-Cj7t8eQd.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-Kje0Rn7j.js.map → useNamespace-Cj7t8eQd.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-DMz-HKFv.js → useYamlActivityEvents-C7eurSkD.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-DMz-HKFv.js.map → useYamlActivityEvents-C7eurSkD.js.map} +1 -1
- package/dashboard/dist/assets/{validate-hUqjWN63.js → validate-BypZfZ8R.js} +2 -2
- package/dashboard/dist/assets/{validate-hUqjWN63.js.map → validate-BypZfZ8R.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-fxBvvHBi.js → vendor-icons-en0_uSRD.js} +191 -186
- package/dashboard/dist/assets/vendor-icons-en0_uSRD.js.map +1 -0
- package/dashboard/dist/assets/{yaml-workflows-64vfmKJx.js → yaml-workflows-CnMKmznF.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-64vfmKJx.js.map → yaml-workflows-CnMKmznF.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/roles.md +1 -1
- package/docs/dashboard.md +2 -2
- package/docs/oauth-and-delegation.md +6 -1
- package/docs/scan-codes.md +56 -0
- package/package.json +1 -1
- package/dashboard/dist/assets/RoleDetailPage-D_30TDVh.js +0 -8
- package/dashboard/dist/assets/RoleDetailPage-D_30TDVh.js.map +0 -1
- package/dashboard/dist/assets/ScanStationPage-CVET1_4r.js +0 -2
- package/dashboard/dist/assets/ScanStationPage-CVET1_4r.js.map +0 -1
- package/dashboard/dist/assets/index-B9uv-euR.css +0 -1
- package/dashboard/dist/assets/index-pzbGpihI.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-fxBvvHBi.js.map +0 -1
package/dashboard/dist/assets/{YamlWorkflowsPage-aVcNZNu6.js → YamlWorkflowsPage-B4C9fiYU.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"./vendor-query-DvWWuNIB.js";import{u as h}from"./yaml-workflows-
|
|
2
|
-
//# sourceMappingURL=YamlWorkflowsPage-
|
|
1
|
+
import{j as e}from"./vendor-query-DvWWuNIB.js";import{u as h}from"./yaml-workflows-CnMKmznF.js";import{c as u}from"./index-CSr5q355.js";import{u as f}from"./useFilterParams-DBRw1Hcv.js";import{P as d}from"./PageHeader-DiGWAQlR.js";import{F as g,a as w,b as j}from"./FilterBar-22FDO0R_.js";import{E as p}from"./EmptyState-DgC_6njU.js";import{T as b}from"./ToolPill-CpBAFdEX.js";import{N as v}from"./NamespacePill-CeSfHH-j.js";import{S as y}from"./StatusBadge-DHVwxre2.js";import{n as N,W as k}from"./vendor-icons-en0_uSRD.js";import{u as F}from"./vendor-react-_9U4mKFr.js";function O(){var c;const a=F(),{data:r}=u(),o=!!((c=r==null?void 0:r.ai)!=null&&c.enabled),{filters:t,setFilter:l}=f({filters:{status:"",search:""}}),{data:i,isLoading:m}=h({status:t.status||void 0,search:t.search||void 0,limit:200,offset:0}),n=(i==null?void 0:i.workflows)??[];return m?e.jsxs("div",{children:[e.jsx(d,{title:"Configure",docsHash:"#docs:dashboard.md:graph-workflows"}),e.jsx("div",{className:"animate-pulse space-y-0",children:Array.from({length:4}).map((s,x)=>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"})},x))})]}):e.jsxs("div",{children:[e.jsx(d,{title:"Configure",docsHash:"#docs:dashboard.md:graph-workflows",actions:o?e.jsx("button",{onClick:()=>a("/mcp/queries/new"),className:"btn-primary text-xs",children:"Design Flow"}):void 0}),e.jsxs("p",{className:"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed",children:["The compiled form of a durable workflow — the same guarantees at roughly 3× the speed. Each flow is a graph the router discovers and runs on demand. Open one to inspect or run it",o?", or design a new one from a description.":"."]}),e.jsxs(g,{children:[e.jsx(w,{label:"Search",value:t.search,onChange:s=>l("search",s),placeholder:"Flow or namespace…"}),e.jsx(j,{label:"Status",value:t.status,onChange:s=>l("status",s),options:[{value:"draft",label:"Draft"},{value:"deployed",label:"Deployed"},{value:"active",label:"Active"},{value:"archived",label:"Archived"}]})]}),n.length===0?o?e.jsx("div",{className:"cursor-pointer",onClick:()=>a("/mcp/queries/new"),children:e.jsx(p,{icon:N,title:"No graph flows yet",description:"Open the Designer to compile your first flow from a description, or register flows at startup with the graphWorkflows config."})}):e.jsx(p,{icon:k,title:"No graph flows yet",description:"Register graph flows at startup with the graphWorkflows config — see the docs for an example."}):e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{className:"px-6 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Flow"}),e.jsx("th",{className:"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-40",children:"Namespace"}),e.jsx("th",{className:"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-20",children:"Version"}),e.jsx("th",{className:"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-28",children:"Status"})]})}),e.jsx("tbody",{children:n.map(s=>e.jsxs("tr",{onClick:()=>a(`/mcp/workflows/${s.id}`),className:"border-b border-surface-border/50 hover:bg-surface-hover/40 transition-colors duration-100 cursor-pointer",children:[e.jsxs("td",{className:"px-6 py-2.5",children:[e.jsx(b,{name:s.graph_topic,size:"md"}),s.description&&e.jsx("p",{className:"text-2xs leading-snug text-text-quaternary mt-0.5",children:s.description})]}),e.jsx("td",{className:"px-4 py-2.5",children:e.jsx(v,{namespace:s.app_id})}),e.jsxs("td",{className:"px-4 py-2.5 text-2xs text-text-quaternary font-mono whitespace-nowrap",children:["v",s.content_version]}),e.jsx("td",{className:"px-4 py-2.5 whitespace-nowrap",children:e.jsx(y,{status:s.status})})]},s.id))})]})]})}export{O as YamlWorkflowsPage};
|
|
2
|
+
//# sourceMappingURL=YamlWorkflowsPage-B4C9fiYU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YamlWorkflowsPage-
|
|
1
|
+
{"version":3,"file":"YamlWorkflowsPage-B4C9fiYU.js","sources":["../../src/pages/workflows/YamlWorkflowsPage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport { Wand2, Workflow } from 'lucide-react';\nimport { useYamlWorkflows } from '../../api/yaml-workflows';\nimport { useSettings } from '../../api/settings';\nimport { useFilterParams } from '../../hooks/useFilterParams';\n\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect, FilterInput } from '../../components/common/data/FilterBar';\nimport { EmptyState } from '../../components/common/display/EmptyState';\nimport { ToolPill } from '../../components/common/display/ToolPill';\nimport { NamespacePill } from '../../components/common/display/NamespacePill';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\n\n// ── Page: Graph › Configure ─────────────────────────────────────────────────\n\nexport function YamlWorkflowsPage() {\n const navigate = useNavigate();\n const { data: settings } = useSettings();\n const aiEnabled = !!settings?.ai?.enabled;\n const { filters, setFilter } = useFilterParams({\n filters: { status: '', search: '' },\n });\n\n const { data, isLoading } = useYamlWorkflows({\n status: (filters.status || undefined) as any,\n search: filters.search || undefined,\n limit: 200,\n offset: 0,\n });\n\n const flows = data?.workflows ?? [];\n\n if (isLoading) {\n return (\n <div>\n <PageHeader title=\"Configure\" docsHash=\"#docs:dashboard.md:graph-workflows\" />\n <div className=\"animate-pulse space-y-0\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"h-14 border-b last:border-b-0 px-6 flex items-center\">\n <div className=\"h-3 bg-surface-sunken rounded w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"Configure\"\n docsHash=\"#docs:dashboard.md:graph-workflows\"\n actions={\n aiEnabled ? (\n <button onClick={() => navigate('/mcp/queries/new')} className=\"btn-primary text-xs\">\n Design Flow\n </button>\n ) : undefined\n }\n />\n\n <p className=\"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed\">\n The compiled form of a durable workflow — the same guarantees at roughly 3× the speed. Each\n flow is a graph the router discovers and runs on demand. Open one to inspect or run it\n {aiEnabled ? ', or design a new one from a description.' : '.'}\n </p>\n\n <FilterBar>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"Flow or namespace…\"\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'draft', label: 'Draft' },\n { value: 'deployed', label: 'Deployed' },\n { value: 'active', label: 'Active' },\n { value: 'archived', label: 'Archived' },\n ]}\n />\n </FilterBar>\n\n {flows.length === 0 ? (\n aiEnabled ? (\n <div className=\"cursor-pointer\" onClick={() => navigate('/mcp/queries/new')}>\n <EmptyState\n icon={Wand2}\n title=\"No graph flows yet\"\n description=\"Open the Designer to compile your first flow from a description, or register flows at startup with the graphWorkflows config.\"\n />\n </div>\n ) : (\n <EmptyState\n icon={Workflow}\n title=\"No graph flows yet\"\n description=\"Register graph flows at startup with the graphWorkflows config — see the docs for an example.\"\n />\n )\n ) : (\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"px-6 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary\">\n Flow\n </th>\n <th className=\"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-40\">\n Namespace\n </th>\n <th className=\"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-20\">\n Version\n </th>\n <th className=\"px-4 py-3 text-left text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-28\">\n Status\n </th>\n </tr>\n </thead>\n <tbody>\n {flows.map((flow) => (\n <tr\n key={flow.id}\n onClick={() => navigate(`/mcp/workflows/${flow.id}`)}\n className=\"border-b border-surface-border/50 hover:bg-surface-hover/40 transition-colors duration-100 cursor-pointer\"\n >\n <td className=\"px-6 py-2.5\">\n <ToolPill name={flow.graph_topic} size=\"md\" />\n {flow.description && (\n <p className=\"text-2xs leading-snug text-text-quaternary mt-0.5\">{flow.description}</p>\n )}\n </td>\n <td className=\"px-4 py-2.5\">\n <NamespacePill namespace={flow.app_id} />\n </td>\n <td className=\"px-4 py-2.5 text-2xs text-text-quaternary font-mono whitespace-nowrap\">\n v{flow.content_version}\n </td>\n <td className=\"px-4 py-2.5 whitespace-nowrap\">\n <StatusBadge status={flow.status} />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n );\n}\n"],"names":["YamlWorkflowsPage","navigate","useNavigate","settings","useSettings","aiEnabled","_a","filters","setFilter","useFilterParams","data","isLoading","useYamlWorkflows","flows","jsx","PageHeader","_","i","jsxs","FilterBar","FilterInput","v","FilterSelect","EmptyState","Wand2","Workflow","flow","ToolPill","NamespacePill","StatusBadge"],"mappings":"4jBAeO,SAASA,GAAoB,OAClC,MAAMC,EAAWC,EAAA,EACX,CAAE,KAAMC,CAAA,EAAaC,EAAA,EACrBC,EAAY,CAAC,GAACC,EAAAH,GAAA,YAAAA,EAAU,KAAV,MAAAG,EAAc,SAC5B,CAAE,QAAAC,EAAS,UAAAC,CAAA,EAAcC,EAAgB,CAC7C,QAAS,CAAE,OAAQ,GAAI,OAAQ,EAAA,CAAG,CACnC,EAEK,CAAE,KAAAC,EAAM,UAAAC,CAAA,EAAcC,EAAiB,CAC3C,OAASL,EAAQ,QAAU,OAC3B,OAAQA,EAAQ,QAAU,OAC1B,MAAO,IACP,OAAQ,CAAA,CACT,EAEKM,GAAQH,GAAA,YAAAA,EAAM,YAAa,CAAA,EAEjC,OAAIC,SAEC,MAAA,CACC,SAAA,CAAAG,EAAAA,IAACC,EAAA,CAAW,MAAM,YAAY,SAAS,qCAAqC,EAC5ED,EAAAA,IAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,MAAM,KAAK,CAAE,OAAQ,CAAA,CAAG,EAAE,IAAI,CAACE,EAAGC,IACjCH,EAAAA,IAAC,MAAA,CAAY,UAAU,uDACrB,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAU,sCAAA,CAAuC,CAAA,EAD9CG,CAEV,CACD,CAAA,CACH,CAAA,EACF,SAKD,MAAA,CACC,SAAA,CAAAH,EAAAA,IAACC,EAAA,CACC,MAAM,YACN,SAAS,qCACT,QACEV,EACES,EAAAA,IAAC,SAAA,CAAO,QAAS,IAAMb,EAAS,kBAAkB,EAAG,UAAU,sBAAsB,SAAA,aAAA,CAErF,EACE,MAAA,CAAA,EAIRiB,EAAAA,KAAC,IAAA,CAAE,UAAU,6DAA6D,SAAA,CAAA,qLAGvEb,EAAY,4CAA8C,GAAA,EAC7D,SAECc,EAAA,CACC,SAAA,CAAAL,EAAAA,IAACM,EAAA,CACC,MAAM,SACN,MAAOb,EAAQ,OACf,SAAWc,GAAMb,EAAU,SAAUa,CAAC,EACtC,YAAY,oBAAA,CAAA,EAEdP,EAAAA,IAACQ,EAAA,CACC,MAAM,SACN,MAAOf,EAAQ,OACf,SAAWc,GAAMb,EAAU,SAAUa,CAAC,EACtC,QAAS,CACP,CAAE,MAAO,QAAS,MAAO,OAAA,EACzB,CAAE,MAAO,WAAY,MAAO,UAAA,EAC5B,CAAE,MAAO,SAAU,MAAO,QAAA,EAC1B,CAAE,MAAO,WAAY,MAAO,UAAA,CAAW,CACzC,CAAA,CACF,EACF,EAECR,EAAM,SAAW,EAChBR,EACES,EAAAA,IAAC,MAAA,CAAI,UAAU,iBAAiB,QAAS,IAAMb,EAAS,kBAAkB,EACxE,SAAAa,EAAAA,IAACS,EAAA,CACC,KAAMC,EACN,MAAM,qBACN,YAAY,+HAAA,CAAA,EAEhB,EAEAV,EAAAA,IAACS,EAAA,CACC,KAAME,EACN,MAAM,qBACN,YAAY,+FAAA,CAAA,EAIhBP,EAAAA,KAAC,QAAA,CAAM,UAAU,SACf,SAAA,CAAAJ,MAAC,QAAA,CACC,SAAAI,EAAAA,KAAC,KAAA,CAAG,UAAU,WACZ,SAAA,CAAAJ,EAAAA,IAAC,KAAA,CAAG,UAAU,0FAA0F,SAAA,OAExG,EACAA,EAAAA,IAAC,KAAA,CAAG,UAAU,+FAA+F,SAAA,YAE7G,EACAA,EAAAA,IAAC,KAAA,CAAG,UAAU,+FAA+F,SAAA,UAE7G,EACAA,EAAAA,IAAC,KAAA,CAAG,UAAU,+FAA+F,SAAA,QAAA,CAE7G,CAAA,CAAA,CACF,CAAA,CACF,EACAA,EAAAA,IAAC,QAAA,CACE,SAAAD,EAAM,IAAKa,GACVR,EAAAA,KAAC,KAAA,CAEC,QAAS,IAAMjB,EAAS,kBAAkByB,EAAK,EAAE,EAAE,EACnD,UAAU,4GAEV,SAAA,CAAAR,EAAAA,KAAC,KAAA,CAAG,UAAU,cACZ,SAAA,CAAAJ,EAAAA,IAACa,EAAA,CAAS,KAAMD,EAAK,YAAa,KAAK,KAAK,EAC3CA,EAAK,aACJZ,EAAAA,IAAC,KAAE,UAAU,oDAAqD,WAAK,WAAA,CAAY,CAAA,EAEvF,EACAA,EAAAA,IAAC,MAAG,UAAU,cACZ,eAACc,EAAA,CAAc,UAAWF,EAAK,MAAA,CAAQ,CAAA,CACzC,EACAR,EAAAA,KAAC,KAAA,CAAG,UAAU,wEAAwE,SAAA,CAAA,IAClFQ,EAAK,eAAA,EACT,EACAZ,EAAAA,IAAC,MAAG,UAAU,gCACZ,eAACe,EAAA,CAAY,OAAQH,EAAK,MAAA,CAAQ,CAAA,CACpC,CAAA,CAAA,EAlBKA,EAAK,EAAA,CAoBb,CAAA,CACH,CAAA,CAAA,CACF,CAAA,EAEJ,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as o,b as u,c as a}from"./vendor-query-DvWWuNIB.js";import{m as t}from"./index-
|
|
2
|
-
//# sourceMappingURL=agents-
|
|
1
|
+
import{u as o,b as u,c as a}from"./vendor-query-DvWWuNIB.js";import{m as t}from"./index-CSr5q355.js";function g(e={}){const n=new URLSearchParams;e.status&&n.set("status",e.status),e.knowledge_domain&&n.set("knowledge_domain",e.knowledge_domain),e.limit!=null&&n.set("limit",String(e.limit)),e.offset!=null&&n.set("offset",String(e.offset));const s=n.toString();return o({queryKey:["agents",e],queryFn:()=>t(`/agents${s?`?${s}`:""}`)})}function y(e){return o({queryKey:["agents",e],queryFn:()=>t(`/agents/${e}`),enabled:!!e})}function c(){const e=u();return a({mutationFn:n=>t("/agents",{method:"POST",body:JSON.stringify(n)}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}function m(){const e=u();return a({mutationFn:({id:n,...s})=>t(`/agents/${n}`,{method:"PUT",body:JSON.stringify(s)}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}function d(){const e=u();return a({mutationFn:n=>t(`/agents/${n}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}export{y as a,m as b,d as c,c as d,g as u};
|
|
2
|
+
//# sourceMappingURL=agents-BvRjwrof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-
|
|
1
|
+
{"version":3,"file":"agents-BvRjwrof.js","sources":["../../src/api/agents.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\nexport interface AgentCapability {\n serverId: string;\n toolNames?: string[];\n}\n\nexport interface AgentTrigger {\n event: string;\n filter?: Record<string, any>;\n}\n\nexport interface AgentSchedule {\n cron: string;\n workflow_type: string;\n envelope?: Record<string, any>;\n execute_as?: string;\n}\n\nexport interface AgentBehaviors {\n cron?: string;\n triggers?: AgentTrigger[];\n schedules?: AgentSchedule[];\n escalationRules?: Record<string, any>;\n}\n\nexport interface Agent {\n /** Agent identifier — human-readable kebab-case name (e.g. 'content-triage') */\n id: string;\n description?: string;\n status: 'inactive' | 'active' | 'paused' | 'error';\n user_id?: string;\n knowledge_domain?: string;\n capabilities: AgentCapability[];\n behaviors: AgentBehaviors;\n goals?: string;\n rules?: string;\n workflow_type?: string;\n pipeline_id?: string;\n metadata: Record<string, any>;\n last_run_at?: string;\n subscription_count?: number;\n sub_topics?: string[];\n created_at: string;\n updated_at: string;\n stats?: {\n knowledge_count: number;\n escalation_count: number;\n last_execution_at?: string;\n };\n}\n\ninterface AgentListResponse {\n agents: Agent[];\n total: number;\n}\n\ninterface AgentFilters {\n status?: string;\n knowledge_domain?: string;\n limit?: number;\n offset?: number;\n}\n\nexport function useAgents(filters: AgentFilters = {}) {\n const params = new URLSearchParams();\n if (filters.status) params.set('status', filters.status);\n if (filters.knowledge_domain) params.set('knowledge_domain', filters.knowledge_domain);\n if (filters.limit != null) params.set('limit', String(filters.limit));\n if (filters.offset != null) params.set('offset', String(filters.offset));\n const qs = params.toString();\n\n return useQuery<AgentListResponse>({\n queryKey: ['agents', filters],\n queryFn: () => apiFetch(`/agents${qs ? `?${qs}` : ''}`),\n });\n}\n\nexport function useAgent(id: string | null) {\n return useQuery<Agent>({\n queryKey: ['agents', id],\n queryFn: () => apiFetch(`/agents/${id}`),\n enabled: !!id,\n });\n}\n\nexport function useCreateAgent() {\n const queryClient = useQueryClient();\n return useMutation<Agent, Error, Partial<Agent> & { id: string }>({\n mutationFn: (body) =>\n apiFetch('/agents', {\n method: 'POST',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n\nexport function useUpdateAgent() {\n const queryClient = useQueryClient();\n return useMutation<Agent, Error, { id: string } & Partial<Agent>>({\n mutationFn: ({ id, ...body }) =>\n apiFetch(`/agents/${id}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n\nexport function useDeleteAgent() {\n const queryClient = useQueryClient();\n return useMutation<{ deleted: boolean }, Error, string>({\n mutationFn: (id) =>\n apiFetch(`/agents/${id}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n"],"names":["useAgents","filters","params","qs","useQuery","apiFetch","useAgent","id","useCreateAgent","queryClient","useQueryClient","useMutation","body","useUpdateAgent","useDeleteAgent"],"mappings":"qGAiEO,SAASA,EAAUC,EAAwB,GAAI,CACpD,MAAMC,EAAS,IAAI,gBACfD,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,kBAAkBC,EAAO,IAAI,mBAAoBD,EAAQ,gBAAgB,EACjFA,EAAQ,OAAS,MAAMC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EAChEA,EAAQ,QAAU,MAAMC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EACvE,MAAME,EAAKD,EAAO,SAAA,EAElB,OAAOE,EAA4B,CACjC,SAAU,CAAC,SAAUH,CAAO,EAC5B,QAAS,IAAMI,EAAS,UAAUF,EAAK,IAAIA,CAAE,GAAK,EAAE,EAAE,CAAA,CACvD,CACH,CAEO,SAASG,EAASC,EAAmB,CAC1C,OAAOH,EAAgB,CACrB,SAAU,CAAC,SAAUG,CAAE,EACvB,QAAS,IAAMF,EAAS,WAAWE,CAAE,EAAE,EACvC,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAEO,SAASC,GAAiB,CAC/B,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAA2D,CAChE,WAAaC,GACXP,EAAS,UAAW,CAClB,OAAQ,OACR,KAAM,KAAK,UAAUO,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASI,GAAiB,CAC/B,MAAMJ,EAAcC,EAAA,EACpB,OAAOC,EAA2D,CAChE,WAAY,CAAC,CAAE,GAAAJ,EAAI,GAAGK,KACpBP,EAAS,WAAWE,CAAE,GAAI,CACxB,OAAQ,MACR,KAAM,KAAK,UAAUK,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASK,GAAiB,CAC/B,MAAML,EAAcC,EAAA,EACpB,OAAOC,EAAiD,CACtD,WAAaJ,GACXF,EAAS,WAAWE,CAAE,GAAI,CAAE,OAAQ,SAAU,EAChD,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as i,b as n,c as u}from"./vendor-query-DvWWuNIB.js";import{m as s}from"./index-
|
|
2
|
-
//# sourceMappingURL=bots-
|
|
1
|
+
import{u as i,b as n,c as u}from"./vendor-query-DvWWuNIB.js";import{m as s}from"./index-CSr5q355.js";function y(e={}){const t=new URLSearchParams;return e.status&&t.set("status",e.status),e.search&&t.set("search",e.search),e.limit&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset)),i({queryKey:["bots",e],queryFn:()=>s(`/bot-accounts?${t}`)})}function d(e){return i({queryKey:["bots",e,"api-keys"],queryFn:()=>s(`/bot-accounts/${e}/api-keys`),enabled:!!e})}function m(){const e=n();return u({mutationFn:t=>s("/bot-accounts",{method:"POST",body:JSON.stringify(t)}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function b(){const e=n();return u({mutationFn:({id:t,...o})=>s(`/bot-accounts/${t}`,{method:"PUT",body:JSON.stringify(o)}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function f(){const e=n();return u({mutationFn:t=>s(`/bot-accounts/${t}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function q(){const e=n();return u({mutationFn:({botId:t,name:o,scopes:a})=>s(`/bot-accounts/${t}/api-keys`,{method:"POST",body:JSON.stringify({name:o,scopes:a})}),onSuccess:(t,o)=>{e.invalidateQueries({queryKey:["bots",o.botId,"api-keys"]})}})}function S(){const e=n();return u({mutationFn:({botId:t,keyId:o})=>s(`/bot-accounts/${t}/api-keys/${o}`,{method:"DELETE"}),onSuccess:(t,o)=>{e.invalidateQueries({queryKey:["bots",o.botId,"api-keys"]})}})}function l(){const e=n();return u({mutationFn:({botId:t,role:o,type:a})=>s(`/bot-accounts/${t}/roles`,{method:"POST",body:JSON.stringify({role:o,type:a})}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function p(){const e=n();return u({mutationFn:({botId:t,role:o})=>s(`/bot-accounts/${t}/roles/${encodeURIComponent(o)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}export{b as a,d as b,q as c,S as d,l as e,p as f,f as g,y as h,m as u};
|
|
2
|
+
//# sourceMappingURL=bots-qx7qPwFo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bots-
|
|
1
|
+
{"version":3,"file":"bots-qx7qPwFo.js","sources":["../../src/api/bots.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { BotRecord, BotApiKeyRecord } from './types';\nimport type { LTRoleType } from './types';\n\ninterface BotListResponse {\n bots: BotRecord[];\n total: number;\n}\n\ninterface BotFilters {\n status?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}\n\n// ── Query hooks ──────────────────────────────────────────────────────────────\n\nexport function useBots(filters: BotFilters = {}) {\n const params = new URLSearchParams();\n if (filters.status) params.set('status', filters.status);\n if (filters.search) params.set('search', filters.search);\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n\n return useQuery<BotListResponse>({\n queryKey: ['bots', filters],\n queryFn: () => apiFetch(`/bot-accounts?${params}`),\n });\n}\n\nexport function useBotApiKeys(botId: string) {\n return useQuery<{ keys: BotApiKeyRecord[] }>({\n queryKey: ['bots', botId, 'api-keys'],\n queryFn: () => apiFetch(`/bot-accounts/${botId}/api-keys`),\n enabled: !!botId,\n });\n}\n\n// ── Mutation hooks ───────────────────────────────────────────────────────────\n\nexport function useCreateBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (data: {\n name: string;\n description?: string;\n display_name?: string;\n roles?: { role: string; type: LTRoleType }[];\n }) =>\n apiFetch('/bot-accounts', {\n method: 'POST',\n body: JSON.stringify(data),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useUpdateBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n id,\n ...data\n }: {\n id: string;\n display_name?: string;\n description?: string;\n status?: string;\n }) =>\n apiFetch(`/bot-accounts/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useDeleteBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n apiFetch(`/bot-accounts/${id}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useCreateBotApiKey() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n botId,\n name,\n scopes,\n }: {\n botId: string;\n name: string;\n scopes?: string[];\n }) =>\n apiFetch<{ id: string; rawKey: string }>(`/bot-accounts/${botId}/api-keys`, {\n method: 'POST',\n body: JSON.stringify({ name, scopes }),\n }),\n onSuccess: (_data, vars) => {\n queryClient.invalidateQueries({ queryKey: ['bots', vars.botId, 'api-keys'] });\n },\n });\n}\n\nexport function useRevokeBotApiKey() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ botId, keyId }: { botId: string; keyId: string }) =>\n apiFetch(`/bot-accounts/${botId}/api-keys/${keyId}`, { method: 'DELETE' }),\n onSuccess: (_data, vars) => {\n queryClient.invalidateQueries({ queryKey: ['bots', vars.botId, 'api-keys'] });\n },\n });\n}\n\nexport function useAddBotRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n botId,\n role,\n type,\n }: {\n botId: string;\n role: string;\n type: LTRoleType;\n }) =>\n apiFetch(`/bot-accounts/${botId}/roles`, {\n method: 'POST',\n body: JSON.stringify({ role, type }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useRemoveBotRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ botId, role }: { botId: string; role: string }) =>\n apiFetch(`/bot-accounts/${botId}/roles/${encodeURIComponent(role)}`, {\n method: 'DELETE',\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n"],"names":["useBots","filters","params","useQuery","apiFetch","useBotApiKeys","botId","useCreateBot","queryClient","useQueryClient","useMutation","data","useUpdateBot","id","useDeleteBot","useCreateBotApiKey","name","scopes","_data","vars","useRevokeBotApiKey","keyId","useAddBotRole","role","type","useRemoveBotRole"],"mappings":"qGAmBO,SAASA,EAAQC,EAAsB,GAAI,CAChD,MAAMC,EAAS,IAAI,gBACnB,OAAID,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,OAAOC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EACxDA,EAAQ,SAAW,QAAWC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EAEtEE,EAA0B,CAC/B,SAAU,CAAC,OAAQF,CAAO,EAC1B,QAAS,IAAMG,EAAS,iBAAiBF,CAAM,EAAE,CAAA,CAClD,CACH,CAEO,SAASG,EAAcC,EAAe,CAC3C,OAAOH,EAAsC,CAC3C,SAAU,CAAC,OAAQG,EAAO,UAAU,EACpC,QAAS,IAAMF,EAAS,iBAAiBE,CAAK,WAAW,EACzD,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAIO,SAASC,GAAe,CAC7B,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAaC,GAMXP,EAAS,gBAAiB,CACxB,OAAQ,OACR,KAAM,KAAK,UAAUO,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,CACtD,CAAA,CACD,CACH,CAEO,SAASI,GAAe,CAC7B,MAAMJ,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CACX,GAAAG,EACA,GAAGF,CAAA,IAOHP,EAAS,iBAAiBS,CAAE,GAAI,CAC9B,OAAQ,MACR,KAAM,KAAK,UAAUF,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,CACtD,CAAA,CACD,CACH,CAEO,SAASM,GAAe,CAC7B,MAAMN,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAaG,GACXT,EAAS,iBAAiBS,CAAE,GAAI,CAAE,OAAQ,SAAU,EACtD,UAAW,IAAM,CACfL,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,CACtD,CAAA,CACD,CACH,CAEO,SAASO,GAAqB,CACnC,MAAMP,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CACX,MAAAJ,EACA,KAAAU,EACA,OAAAC,CAAA,IAMAb,EAAyC,iBAAiBE,CAAK,YAAa,CAC1E,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,KAAAU,EAAM,OAAAC,EAAQ,CAAA,CACtC,EACH,UAAW,CAACC,EAAOC,IAAS,CAC1BX,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAQW,EAAK,MAAO,UAAU,EAAG,CAC9E,CAAA,CACD,CACH,CAEO,SAASC,GAAqB,CACnC,MAAMZ,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,MAAAJ,EAAO,MAAAe,KACpBjB,EAAS,iBAAiBE,CAAK,aAAae,CAAK,GAAI,CAAE,OAAQ,SAAU,EAC3E,UAAW,CAACH,EAAOC,IAAS,CAC1BX,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAQW,EAAK,MAAO,UAAU,EAAG,CAC9E,CAAA,CACD,CACH,CAEO,SAASG,GAAgB,CAC9B,MAAMd,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CACX,MAAAJ,EACA,KAAAiB,EACA,KAAAC,CAAA,IAMApB,EAAS,iBAAiBE,CAAK,SAAU,CACvC,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,KAAAiB,EAAM,KAAAC,EAAM,CAAA,CACpC,EACH,UAAW,IAAM,CACfhB,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,CACtD,CAAA,CACD,CACH,CAEO,SAASiB,GAAmB,CACjC,MAAMjB,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,MAAAJ,EAAO,KAAAiB,CAAA,IACpBnB,EAAS,iBAAiBE,CAAK,UAAU,mBAAmBiB,CAAI,CAAC,GAAI,CACnE,OAAQ,QAAA,CACT,EACH,UAAW,IAAM,CACff,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,CACtD,CAAA,CACD,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as i}from"./vendor-query-DvWWuNIB.js";import{m as e}from"./index-
|
|
2
|
-
//# sourceMappingURL=capabilities-
|
|
1
|
+
import{u as i}from"./vendor-query-DvWWuNIB.js";import{m as e}from"./index-CSr5q355.js";function t(){return i({queryKey:["capabilities"],queryFn:()=>e("/capabilities")})}export{t as u};
|
|
2
|
+
//# sourceMappingURL=capabilities-DJrUEeew.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-
|
|
1
|
+
{"version":3,"file":"capabilities-DJrUEeew.js","sources":["../../src/api/capabilities.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\nexport interface CapabilityTool {\n name: string;\n description: string;\n inputSchema: Record<string, any>;\n serverName: string;\n serverId: string;\n}\n\nexport interface CapabilityCategory {\n name: string;\n tools: CapabilityTool[];\n}\n\nexport interface CapabilitiesResponse {\n categories: CapabilityCategory[];\n totalTools: number;\n}\n\nexport function useCapabilities() {\n return useQuery<CapabilitiesResponse>({\n queryKey: ['capabilities'],\n queryFn: () => apiFetch('/capabilities'),\n });\n}\n"],"names":["useCapabilities","useQuery","apiFetch"],"mappings":"uFAqBO,SAASA,GAAkB,CAChC,OAAOC,EAA+B,CACpC,SAAU,CAAC,cAAc,EACzB,QAAS,IAAMC,EAAS,eAAe,CAAA,CACxC,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as o,c as l,b as a}from"./vendor-query-DvWWuNIB.js";import{m as n}from"./index-
|
|
2
|
-
//# sourceMappingURL=controlplane-
|
|
1
|
+
import{u as o,c as l,b as a}from"./vendor-query-DvWWuNIB.js";import{m as n}from"./index-CSr5q355.js";function s(){return n("/controlplane/apps")}function c(e){return n(`/controlplane/rollcall?app_id=${encodeURIComponent(e)}`)}function i(e){return n("/controlplane/throttle",{method:"POST",body:JSON.stringify(e)})}function m(e){return n("/controlplane/subscribe",{method:"POST",body:JSON.stringify(e)})}function f(e,t,u){let r=`/controlplane/streams?app_id=${encodeURIComponent(e)}&duration=${encodeURIComponent(t)}`;return n(r)}function b(e){return o({queryKey:["controlplane","apps"],queryFn:s,staleTime:6e4,enabled:(e==null?void 0:e.enabled)??!0})}function h(e,t){return o({queryKey:["controlplane","rollcall",e],queryFn:()=>c(e),enabled:!!e,refetchInterval:t})}function d(){const e=a();return l({mutationFn:i,onSuccess:()=>{setTimeout(()=>{e.invalidateQueries({queryKey:["controlplane","rollcall"]})},1500)}})}function S(e,t,u,r){return o({queryKey:["controlplane","streams",e,t,""],queryFn:()=>f(e,t),enabled:!!e,staleTime:15e3,refetchInterval:r})}function q(){return l({mutationFn:m})}export{d as a,q as b,h as c,S as d,b as u};
|
|
2
|
+
//# sourceMappingURL=controlplane-D82a5cfq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlplane-
|
|
1
|
+
{"version":3,"file":"controlplane-D82a5cfq.js","sources":["../../src/api/controlplane.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface ControlPlaneApp {\n appId: string;\n version: string;\n}\n\nexport interface QuorumProfile {\n namespace: string;\n app_id: string;\n engine_id: string;\n entity?: string;\n worker_topic?: string;\n stream?: string;\n stream_depth?: number;\n counts?: Record<string, number>;\n inited?: string;\n timestamp?: string;\n throttle?: number;\n reclaimDelay?: number;\n reclaimCount?: number;\n system?: {\n TotalMemoryGB: string;\n FreeMemoryGB: string;\n UsedMemoryGB: string;\n CPULoad: Array<Record<string, string>>;\n NetworkStats: Array<Record<string, unknown>>;\n };\n is_scout?: boolean;\n signature?: string;\n}\n\n// ── API functions ───────────────────────────────────────────────────────────\n\nfunction fetchApps() {\n return apiFetch<{ apps: ControlPlaneApp[] }>('/controlplane/apps');\n}\n\nfunction fetchRollCall(appId: string) {\n return apiFetch<{ profiles: QuorumProfile[] }>(`/controlplane/rollcall?app_id=${encodeURIComponent(appId)}`);\n}\n\nfunction postThrottle(body: { appId: string; throttle: number; topic?: string; guid?: string; scope?: 'engines' | 'workers' | 'all' }) {\n return apiFetch<{ success: boolean }>('/controlplane/throttle', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nfunction postSubscribe(body: { appId: string }) {\n return apiFetch<{ subscribed: boolean; appId: string }>('/controlplane/subscribe', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nexport interface StreamStats {\n pending: number;\n processed: number;\n byStream: Array<{ stream_type: 'engine' | 'worker'; stream_name: string; count: number }>;\n}\n\nfunction fetchStreamStats(appId: string, duration: string, stream?: string) {\n let url = `/controlplane/streams?app_id=${encodeURIComponent(appId)}&duration=${encodeURIComponent(duration)}`;\n if (stream) url += `&stream=${encodeURIComponent(stream)}`;\n return apiFetch<StreamStats>(url);\n}\n\n// ── Hooks ───────────────────────────────────────────────────────────────────\n\nexport function useControlPlaneApps(options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: ['controlplane', 'apps'],\n queryFn: fetchApps,\n staleTime: 60_000,\n enabled: options?.enabled ?? true,\n });\n}\n\nexport function useRollCall(appId: string, refetchInterval?: number | false) {\n return useQuery({\n queryKey: ['controlplane', 'rollcall', appId],\n queryFn: () => fetchRollCall(appId),\n enabled: !!appId,\n refetchInterval: refetchInterval ?? false,\n });\n}\n\nexport function useThrottle() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: postThrottle,\n onSuccess: () => {\n // Delay refetch so mesh members have time to process the throttle message\n setTimeout(() => {\n qc.invalidateQueries({ queryKey: ['controlplane', 'rollcall'] });\n }, 1500);\n },\n });\n}\n\nexport function useStreamStats(appId: string, duration: string, stream?: string, refetchInterval?: number | false) {\n return useQuery({\n queryKey: ['controlplane', 'streams', appId, duration, stream ?? ''],\n queryFn: () => fetchStreamStats(appId, duration, stream),\n enabled: !!appId,\n staleTime: 15_000,\n refetchInterval: refetchInterval ?? false,\n });\n}\n\nexport function useSubscribeMesh() {\n return useMutation({\n mutationFn: postSubscribe,\n });\n}\n"],"names":["fetchApps","apiFetch","fetchRollCall","appId","postThrottle","body","postSubscribe","fetchStreamStats","duration","stream","url","useControlPlaneApps","options","useQuery","useRollCall","refetchInterval","useThrottle","qc","useQueryClient","useMutation","useStreamStats","useSubscribeMesh"],"mappings":"qGAqCA,SAASA,GAAY,CACnB,OAAOC,EAAsC,oBAAoB,CACnE,CAEA,SAASC,EAAcC,EAAe,CACpC,OAAOF,EAAwC,iCAAiC,mBAAmBE,CAAK,CAAC,EAAE,CAC7G,CAEA,SAASC,EAAaC,EAAiH,CACrI,OAAOJ,EAA+B,yBAA0B,CAC9D,OAAQ,OACR,KAAM,KAAK,UAAUI,CAAI,CAAA,CAC1B,CACH,CAEA,SAASC,EAAcD,EAAyB,CAC9C,OAAOJ,EAAiD,0BAA2B,CACjF,OAAQ,OACR,KAAM,KAAK,UAAUI,CAAI,CAAA,CAC1B,CACH,CAQA,SAASE,EAAiBJ,EAAeK,EAAkBC,EAAiB,CAC1E,IAAIC,EAAM,gCAAgC,mBAAmBP,CAAK,CAAC,aAAa,mBAAmBK,CAAQ,CAAC,GAE5G,OAAOP,EAAsBS,CAAG,CAClC,CAIO,SAASC,EAAoBC,EAAiC,CACnE,OAAOC,EAAS,CACd,SAAU,CAAC,eAAgB,MAAM,EACjC,QAASb,EACT,UAAW,IACX,SAASY,GAAA,YAAAA,EAAS,UAAW,EAAA,CAC9B,CACH,CAEO,SAASE,EAAYX,EAAeY,EAAkC,CAC3E,OAAOF,EAAS,CACd,SAAU,CAAC,eAAgB,WAAYV,CAAK,EAC5C,QAAS,IAAMD,EAAcC,CAAK,EAClC,QAAS,CAAC,CAACA,EACX,gBAAiBY,CAAmB,CACrC,CACH,CAEO,SAASC,GAAc,CAC5B,MAAMC,EAAKC,EAAA,EACX,OAAOC,EAAY,CACjB,WAAYf,EACZ,UAAW,IAAM,CAEf,WAAW,IAAM,CACfa,EAAG,kBAAkB,CAAE,SAAU,CAAC,eAAgB,UAAU,EAAG,CACjE,EAAG,IAAI,CACT,CAAA,CACD,CACH,CAEO,SAASG,EAAejB,EAAeK,EAAkBC,EAAiBM,EAAkC,CACjH,OAAOF,EAAS,CACd,SAAU,CAAC,eAAgB,UAAWV,EAAOK,EAAoB,EAAE,EACnE,QAAS,IAAMD,EAAiBJ,EAAOK,CAAgB,EACvD,QAAS,CAAC,CAACL,EACX,UAAW,KACX,gBAAiBY,CAAmB,CACrC,CACH,CAEO,SAASM,GAAmB,CACjC,OAAOF,EAAY,CACjB,WAAYb,CAAA,CACb,CACH"}
|
package/dashboard/dist/assets/{escalation-columns-DJbfsH_m.js → escalation-columns-Dmm8LY_f.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as E,j as e,u as oe}from"./vendor-query-DvWWuNIB.js";import{a as O,H as Oe,g as ce,E as _,F as D,j as Ee,k as Le,f as _e}from"./escalation-items-C8iJZEA8.js";import{M as Fe,be as B,m as de,a0 as Me,bf as $e,ah as G,a9 as Ie,g as Pe,b0 as Re,a_ as Ae,ai as ee}from"./index-pzbGpihI.js";import{S as te}from"./StickyPagination-BdjseWXr.js";import{b as xe,ad as qe,e as De,az as Ke,aE as We,bH as A,at as He,aD as Ue}from"./vendor-icons-fxBvvHBi.js";import{c as ue,d as Ve,S as J,r as $,G as I,f as Be,b as Ge,e as me,I as Je,g as se,R as pe,h as Y,j as ze,k as Ye,M as Qe,l as Xe,i as Ze}from"./validate-hUqjWN63.js";import{D as he}from"./DataTable-FjFhx0SE.js";import{L as z,u as Q}from"./vendor-react-_9U4mKFr.js";import{E as et}from"./EntityTimelinePanel-Du1O6Oly.js";import{F as tt,b as W,c as H,a as st}from"./FilterBar-CzKYBOMC.js";import{P as at}from"./PriorityBadge-r33mpDju.js";import{R as nt}from"./RolePill-R5_ctGFy.js";import{W as rt}from"./WorkflowPill-D7244fKp.js";import{U as it}from"./UserName-C6ZNHHKN.js";import{C as lt}from"./CountdownTimer-iAG28fzG.js";const ae=[{text:"text-rose-400",bg:"bg-rose-400/[0.08]"},{text:"text-pink-400",bg:"bg-pink-400/[0.08]"},{text:"text-fuchsia-400",bg:"bg-fuchsia-400/[0.08]"},{text:"text-purple-400",bg:"bg-purple-400/[0.08]"},{text:"text-violet-400",bg:"bg-violet-400/[0.08]"},{text:"text-indigo-400",bg:"bg-indigo-400/[0.08]"},{text:"text-blue-400",bg:"bg-blue-400/[0.08]"},{text:"text-sky-400",bg:"bg-sky-400/[0.08]"},{text:"text-cyan-400",bg:"bg-cyan-400/[0.08]"},{text:"text-teal-400",bg:"bg-teal-400/[0.08]"},{text:"text-emerald-400",bg:"bg-emerald-400/[0.08]"},{text:"text-green-400",bg:"bg-green-400/[0.08]"},{text:"text-lime-400",bg:"bg-lime-400/[0.08]"},{text:"text-yellow-400",bg:"bg-yellow-400/[0.08]"},{text:"text-amber-400",bg:"bg-amber-400/[0.08]"},{text:"text-orange-400",bg:"bg-orange-400/[0.08]"},{text:"text-red-400",bg:"bg-red-400/[0.08]"},{text:"text-stone-400",bg:"bg-stone-400/[0.08]"},{text:"text-rose-300",bg:"bg-rose-300/[0.08]"},{text:"text-violet-300",bg:"bg-violet-300/[0.08]"},{text:"text-sky-300",bg:"bg-sky-300/[0.08]"},{text:"text-teal-300",bg:"bg-teal-300/[0.08]"},{text:"text-amber-300",bg:"bg-amber-300/[0.08]"},{text:"text-pink-300",bg:"bg-pink-300/[0.08]"}];function ot(t){let s=0;for(let n=0;n<t.length;n++)s=(s<<5)-s+t.charCodeAt(n)|0;return Math.abs(s)}function ct(t){return ae[ot(t)%ae.length]}const dt=6;function fe({open:t,onClose:s,role:n,pairs:a,onNavigate:r,onAddFacet:i}){const[l,p]=E.useState(new Set),[x,o]=E.useState(""),[u,h]=E.useState(t);if(t!==u&&(h(t),t)){const d=a.filter(N=>N.bound),y=d.length===1?[d[0].key]:a.length===1?[a[0].key]:[];p(new Set(y)),o("")}const f=x.trim().toLowerCase(),g=f?a.filter(d=>[d.label,d.key,String(d.value)].some(y=>y.toLowerCase().includes(f))):a,w=d=>{p(y=>{const N=new Set(y);return N.has(d)?N.delete(d):N.add(d),N})},j=a.filter(d=>l.has(d.key)),v=Object.fromEntries(j.map(d=>[d.key,d.value])),m=j.length===0,b=d=>{s(),r(d)};return e.jsx(Fe,{open:t,onClose:s,title:"Refine",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Pick the facts to match — several combine into one narrower query."}),a.length>dt&&e.jsxs("label",{className:"flex items-center gap-2 input text-xs py-1.5",children:[e.jsx(xe,{className:"w-3.5 h-3.5 shrink-0 text-text-quaternary",strokeWidth:1.5}),e.jsx("input",{type:"text",value:x,onChange:d=>o(d.target.value),placeholder:"Find a fact…",className:"flex-1 min-w-0 bg-transparent outline-none placeholder:text-text-quaternary","aria-label":"Find a fact","data-testid":"refine-find"}),e.jsxs("span",{className:"text-2xs tabular-nums text-text-quaternary",children:[g.length,"/",a.length]})]}),e.jsx("div",{className:"divide-y divide-surface-border/40 -mx-1 max-h-[50vh] overflow-y-auto",children:g.map(d=>{const y=l.has(d.key);return e.jsxs("button",{type:"button",onClick:()=>w(d.key),"aria-pressed":y,className:"w-full flex items-center gap-3 px-1 py-2.5 text-left group min-w-0","data-testid":"refine-pair",children:[e.jsx("span",{className:`w-4 h-4 rounded-[3px] border flex items-center justify-center shrink-0 transition-colors ${y?"bg-accent border-accent":"border-surface-border group-hover:border-accent/50"}`,"aria-hidden":!0,children:y&&e.jsx(qe,{className:"w-3 h-3 text-text-inverse",strokeWidth:3})}),e.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-28 shrink-0 truncate",title:d.key,children:d.label}),e.jsx("span",{className:"text-xs text-text-primary truncate flex-1 min-w-0",title:String(d.value),children:String(d.value)})]},d.key)})}),e.jsxs("div",{className:"flex items-center justify-end gap-3 pt-2 flex-wrap",children:[i&&e.jsx("button",{onClick:()=>{j.forEach(d=>i(d.key,d.value)),s()},disabled:m,className:"text-xs text-text-secondary hover:text-accent transition-colors disabled:opacity-40 disabled:cursor-not-allowed mr-auto","data-testid":"refine-add-filters",children:"Add to filters"}),e.jsx("button",{onClick:()=>b(B(v)),disabled:m,className:"btn-secondary text-xs disabled:opacity-40 disabled:cursor-not-allowed","data-testid":"refine-search-all",children:"Search everywhere"}),e.jsxs("button",{onClick:()=>b(B(v,n)),disabled:m,className:"btn-primary text-xs disabled:opacity-40 disabled:cursor-not-allowed","data-testid":"refine-filter-role",children:["Filter ",n]})]})]})})}function xt(t,s,n,a=!0){const r=[...s].sort();return oe({queryKey:["escalations","related",t,n??"latest",r],queryFn:()=>de("/escalations/related",{method:"POST",body:JSON.stringify({role:t,ids:r,...n!=null?{version:n}:{}})}),enabled:a&&!!t&&r.length>0,placeholderData:i=>i})}function ut(t,s,n,a,r,i=!0){return oe({queryKey:["escalations","related-rows",t,a??"latest",s,n,r??null],queryFn:()=>de("/escalations/related/rows",{method:"POST",body:JSON.stringify({role:t,id:s,set:n,...a!=null?{version:a}:{},...r?{limit:r}:{}})}),enabled:i&&!!t&&!!s&&!!n})}const mt=/^\{\{\s*([^{}]+?)\s*\}\}$/,pt=/\{\{\s*[^{}]+?\s*\}\}/,ht="—";function V(t){if(t&&typeof t=="object")return t;if(typeof t!="string"||!t)return null;try{const s=JSON.parse(t);return s&&typeof s=="object"?s:null}catch{return null}}function be(t){return{escalation:t,metadata:t.metadata??{},envelope:V(t.envelope)??{},payload:V(t.escalation_payload)??{},resolver:V(t.resolver_payload)??{}}}function ft(t,s){const n=t.indexOf("."),a=n===-1?t:t.slice(0,n);if(!Oe.includes(a))return;const r=s[a];if(n===-1)return r??void 0;try{return ce(r,t.slice(n+1))}catch{return}}function ne(t,s){if(typeof t!="string")return t;const n=t.match(mt);if(n){const r=ft(n[1],s);return r===null||r===""?void 0:r}if(!pt.test(t))return t;const a=O(t,s);return a.includes(ht)?void 0:a}function ye(t,s,n){const a={};for(const[r,i]of Object.entries(t)){const l=ne(i,s);if(l===void 0)return null;a[r]=l}for(const[r,i]of Object.entries(n??{})){const l=ne(i,s);l!==void 0&&(a[r]=l)}return a}function bt(t,s,n){var a,r;return(a=s.labels)!=null&&a[t]?s.labels[t]:s.splitBy===J.ROLE&&((r=n==null?void 0:n.roleLabels)!=null&&r[t])?n.roleLabels[t]:t===""?"None":t}function yt({col:t,set:s,agg:n,drillUrl:a}){if(!n||n.unresolved)return e.jsx("span",{className:"text-text-quaternary",children:_});if(ue(t.aggregate))return n.value===void 0?e.jsx("span",{className:"text-text-quaternary",children:_}):e.jsx("span",{className:"tabular-nums text-text-primary","data-testid":"related-cell",children:e.jsx(D,{raw:String(n.value),format:t.format})});const r=Ve(t.display,n.count),i=t.splitBy===J.ROLE&&(s!=null&&s.roles)?s.roles:null,l=Object.entries(n.splits??{}).filter(([,o])=>o>0).sort(([o,u],[h,f])=>i?i.indexOf(o)-i.indexOf(h):f-u),p=t.splitBy===J.ROLE?(s==null?void 0:s.restricted)??[]:[],x=[r!==null?String(n.count):"",n.hidden?`${n.hidden} not readable by you`:"",p.length?`Not counted (outside your view): ${p.map(o=>{var u;return((u=s==null?void 0:s.roleLabels)==null?void 0:u[o])??o}).join(", ")}`:""].filter(Boolean).join(" · ");return e.jsxs("span",{className:"inline-flex flex-wrap items-center gap-1 min-w-0",title:x||void 0,"data-testid":"related-cell",children:[e.jsx("span",{className:"tabular-nums font-medium text-text-primary","data-testid":"related-count",children:r??n.count}),l.map(([o,u])=>{const h=`${bt(o,t,s)} ${u}`,f=i&&a?a(o):null,g="px-1.5 py-0.5 rounded bg-surface-sunken text-2xs text-text-secondary whitespace-nowrap tabular-nums";return f?e.jsx(z,{to:f,onClick:w=>w.stopPropagation(),className:`${g} hover:text-accent`,"data-testid":"related-chip",children:h},o):e.jsx("span",{className:g,"data-testid":"related-chip",children:h},o)}),(n.hidden||p.length>0)&&e.jsx("span",{className:"text-2xs text-text-quaternary italic","data-testid":"related-restricted",children:n.hidden&&!l.length?"split restricted":"partial"})]})}const gt="role";function re(t,s){const n=s.escalation?$(s.escalation):{};return Ee(t,s.item,n)}function jt({role:t,host:s,version:n,section:a,roleLabels:r}){var w,j,v;const i=Q(),l=ut(t,s.id,a.related,n,a.limit),p=((w=l.data)==null?void 0:w.rows)??[],x=((j=l.data)==null?void 0:j.roleLabels)??r??{},o=((v=l.data)==null?void 0:v.restricted)??[],u=new Set(Object.values(s.metadata??{}).filter(m=>typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="boolean").map(String)),f=a.columns.filter((m,b)=>{if(b===0||p.length===0)return!0;const d=new Set(p.map(y=>re(m.value,y)));return!(d.size===1&&u.has([...d][0]))}).map((m,b)=>({key:`d-${b}`,label:m.label,priority:m.priority??(b===0?1:2),render:d=>{const y=re(m.value,d);return m.format===gt&&y!==_?e.jsx("span",{className:"block truncate",children:x[y]??Me({role:y})}):e.jsx("span",{className:"block truncate",title:y!==_?y:void 0,children:e.jsx(D,{raw:y,format:m.format})})}})),g=m=>{var b,d;return((b=m.escalation)==null?void 0:b.id)??((d=m.item)==null?void 0:d.reciprocalId)??null};return e.jsxs("div",{"data-testid":"row-detail-section",children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary pt-3 pb-1",children:[a.label??a.related,l.data&&e.jsx("span",{className:"ml-2 font-normal normal-case tracking-normal tabular-nums",children:l.data.total})]}),l.isLoading?e.jsx("p",{className:"text-2xs text-text-tertiary italic pb-2",children:"Loading…"}):e.jsx(he,{columns:f,data:p,keyFn:m=>{var b,d;return((b=m.item)==null?void 0:b.itemKey)??String((d=m.escalation)==null?void 0:d.id)},onRowClick:m=>{const b=g(m);b&&i(`/escalations/detail/${b}`)},layout:"fixed",density:"compact",inline:!0,emptyMessage:""}),!l.isLoading&&p.length===0&&e.jsx("p",{className:"text-2xs text-text-quaternary italic pb-2",children:"None."}),l.data&&l.data.total>p.length&&e.jsxs("p",{className:"text-2xs text-text-quaternary pb-2",children:["Showing ",p.length," of ",l.data.total,"."]}),o.length>0&&e.jsxs("p",{className:"text-2xs text-text-quaternary italic pb-2",children:["Not shown (outside your view): ",o.map(m=>x[m]??m).join(", ")]})]})}function vt({role:t,host:s,version:n,sections:a}){return e.jsx("div",{className:"space-y-1","data-testid":"row-detail",children:a.map((r,i)=>e.jsx(jt,{role:t,host:s,version:n,section:r},i))})}function wt(t,s){return t.flatMap(n=>{if(n.rows.length<2||!s.has(n.key))return[n];const a=n.rows.map((r,i)=>({key:`${n.key}/${r.id}`,rows:[r],groupKey:n.groupKey,depth:1,lastChild:i===n.rows.length-1,parent:n}));return[n,...a]})}function Nt(t,s){if(!s)return t.map(a=>({key:a.id,rows:[a],groupKey:null}));const n=new Map(t.map(a=>[a.id,a]));return s.map(a=>({key:a.key!=null?`group:${a.key}`:a.ids[0],rows:a.ids.map(r=>n.get(r)).filter(r=>!!r),groupKey:a.key})).filter(a=>a.rows.length>0)}function kt(t){const s=t.map(n=>Number(n));return s.every(n=>Number.isFinite(n))?s:null}function ie(t,s){const n=t.group??I.FIRST;if(n===I.COUNT)return String(s.length);const a=s.map(l=>O(t.value,$(l))).filter(l=>l&&l!==_);if(n===I.DISTINCT)return a.length?[...new Set(a)].join(", "):_;if(n===I.FIRST||s.length===1)return a[0]??_;if(!a.length)return _;const r=kt(a);if(n===I.SUM)return r?String(r.reduce((l,p)=>l+p,0)):_;if(r)return String(n===I.MIN?Math.min(...r):Math.max(...r));const i=[...a].sort();return n===I.MIN?i[0]:i[i.length-1]}function St(t,s){const n=t.filter(r=>!!r);if(!n.length)return;if(n.every(r=>r.unresolved))return{count:0,unresolved:!0};const a={count:0};for(const r of n)if(!r.unresolved&&(a.count+=r.count,r.hidden&&(a.hidden=(a.hidden??0)+r.hidden),r.splits)){a.splits??(a.splits={});for(const[i,l]of Object.entries(r.splits))a.splits[i]=(a.splits[i]??0)+l}if(ue(s)){const r=Be(s,n.flatMap(i=>i.value===void 0?[]:[i.value]));r!==void 0&&(a.value=r)}return a}function Tt(t,s,n){const a=new Set;return t.filter(r=>{const i=ye(s,be(r),n);if(!i)return!0;const l=JSON.stringify(i);return a.has(l)?!1:(a.add(l),!0)})}function Ct(t){try{return Ge(t)}catch{return null}}function Ot(t){var a;const s=xt(t.role,t.rows.map(r=>r.id),t.version),n=((a=s.data)==null?void 0:a.sets)??{};return $e(Object.values(n).flatMap(r=>r.roles??[])),e.jsx(ge,{...t,sets:n,setsLoading:s.isLoading})}function Et(t){const s=E.useMemo(()=>Ct(t.schema),[t.schema]);return s&&Object.keys(s.sets).length>0?e.jsx(Ot,{...t,relations:s}):e.jsx(ge,{...t,relations:s,sets:{},setsLoading:!1})}function ge({schema:t,rows:s,groups:n,role:a,version:r,onRowClick:i,onAddFacet:l,forceView:p,relations:x,sets:o,setsLoading:u}){const h=Q(),f=t["x-lt-columns"]??[],g=t["x-lt-row-action"],w=(x==null?void 0:x.rowDetail)??[],[j,v]=E.useState(null),[m,b]=E.useState(()=>new Set),d=E.useMemo(()=>Nt(s,n),[s,n]),y=E.useMemo(()=>wt(d,m),[d,m]),N=!!n,C=w.length>0||N,k=c=>c.rows.length>1||w.length>0,K=c=>b(T=>{const S=new Set(T);return S.has(c)?S.delete(c):S.add(c),S}),P=(c,T)=>{var X,Z;const S=c.related,F=o[S],L=(X=x==null?void 0:x.sets[S])==null?void 0:X.query,ke=L!=null&&L.facets?Tt(T,L.facets,L.narrow):T,Se=Ye(c,((Z=x==null?void 0:x.sets[S])==null?void 0:Z.source)??""),Te=St(ke.map(U=>{var R;return(R=F==null?void 0:F.aggregates[Se])==null?void 0:R[U.id]}),c.aggregate),Ce=L!=null&&L.facets&&T.length===1?U=>{const R=ye(L.facets,be(T[0]),L.narrow);return R?B(R,U):null}:void 0;return e.jsx(yt,{col:c,set:F,agg:u?void 0:Te,drillUrl:Ce})},je=(g==null?void 0:g.label)??(p?"View":"Claim"),M=c=>c.rows[0],ve=[...C?[{key:"_expand",label:"",priority:1,className:"w-12 px-1",render:c=>e.jsx("span",{className:`flex ${c.depth?"pl-5":""}`,children:k(c)&&e.jsx("button",{type:"button",onClick:T=>{T.stopPropagation(),K(c.key)},className:"p-1 rounded icon-link hover:bg-surface-hover transition-colors","aria-expanded":m.has(c.key),"aria-label":m.has(c.key)?"Collapse row":"Expand row","data-testid":"row-expand",children:e.jsx(De,{className:`w-3.5 h-3.5 transition-transform ${m.has(c.key)?"rotate-90":""}`,strokeWidth:1.75})})})}]:[],{key:"_status",label:"",priority:1,className:"w-8",render:c=>e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:`w-2.5 h-2.5 inline-block rounded-full dot-ring ${me(M(c))}`,title:M(c).status}),c.rows.length>1&&e.jsx("span",{className:"text-2xs tabular-nums text-text-tertiary",title:`${c.rows.length} rows in this group`,"data-testid":"group-size",children:c.rows.length})]})},...f.map((c,T)=>({key:`col-${T}`,label:c.label,priority:c.priority??(T===0?1:2),width:c.width??(T===0&&!f.some(S=>S.width)?Je:void 0),render:S=>{if(c.related)return P(c,S.rows);const F=S.rows.length>1?ie(c,S.rows):O(c.value,$(M(S)));if(S.parent&&F===ie(c,S.parent.rows))return null;const L=T===0&&S.depth?"pl-4":"";return e.jsx("span",{className:`block truncate ${L}`,title:F&&F!==_?F:void 0,children:e.jsx(D,{raw:F,format:c.format})})}})),{key:"_refine",label:"",priority:1,className:"w-8 px-1",render:c=>c.rows.length===1&&se(M(c),f).length>0?e.jsx(pe,{onOpen:()=>v(M(c))}):null},{key:"_action",label:"",priority:1,width:ze(je),className:"text-right whitespace-nowrap",render:c=>c.rows.length===1?e.jsx(Y,{row:M(c),def:g,onView:()=>i==null?void 0:i(M(c)),forceView:p}):null}],we=c=>c.depth?"bg-surface-sunken border-b-surface-border/40":m.has(c.key)&&k(c)?"bg-surface-sunken/50 border-b-surface-border/40":"",Ne=c=>!m.has(c.key)||c.rows.length>1||w.length===0?null:e.jsx("div",{onClick:T=>T.stopPropagation(),className:`${c.depth?"bg-surface-sunken pl-20":"bg-surface-sunken/50 pl-12"} pr-3 pt-1 pb-4`,"data-testid":"row-detail-block",children:e.jsx(vt,{role:a,host:M(c),version:r,sections:w})});return e.jsxs(e.Fragment,{children:[e.jsx(he,{columns:ve,data:y,layout:"fixed",density:"dense",keyFn:c=>c.key,onRowClick:i?c=>c.rows.length===1?i(M(c)):K(c.key):void 0,rowClassName:C?we:void 0,emptyMessage:"No pending items.",renderExpansion:C?Ne:void 0}),e.jsx(fe,{open:!!j,onClose:()=>v(null),role:a,pairs:j?se(j,f):[],onNavigate:h,onAddFacet:l})]})}function Lt(t){const[,s]=E.useState(0);E.useEffect(()=>{if(!t)return;const n=window.setInterval(()=>s(a=>a+1),6e4);return()=>window.clearInterval(n)},[t])}function _t(t){var s;return[...t["x-lt-columns"]??[],...((s=t["x-lt-card"])==null?void 0:s.fields)??[]].some(n=>Le(n.format))}function Ft({esc:t,card:s,rowAction:n,onOpen:a,forceView:r}){const i=$(t),l=s.title?O(s.title,i):t.type;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between gap-6",children:[e.jsxs("button",{onClick:a,className:"text-left group min-w-0",children:[e.jsx("h3",{className:"heading-2 group-hover:text-accent transition-colors leading-tight",children:l}),s.subtitle&&e.jsx("p",{className:"text-xs text-text-tertiary mt-1.5",children:O(s.subtitle,i)})]}),e.jsx(Y,{row:t,def:n,onView:a,prominent:!0,forceView:r})]}),s.fields&&s.fields.length>0&&e.jsx("dl",{className:"flex flex-wrap gap-x-10 gap-y-4 mt-6",children:s.fields.map((p,x)=>e.jsxs("div",{children:[e.jsx("dt",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:p.label}),e.jsx("dd",{className:"text-xs text-text-primary mt-1",children:e.jsx(D,{raw:O(p.value,i)})})]},x))}),s.body&&e.jsx("div",{className:"mt-7 pt-6 border-t border-surface-border/50",children:e.jsx(G,{content:O(s.body,i)})})]})}function Mt({role:t,def:s,onRowClick:n}){var o,u;const[a,r]=E.useState(!1),i=Ie({role:t,status:s.status??"resolved",sort_by:"resolved_at",order:"desc",limit:s.limit??25,enabled:a,include:_e(s)?"envelope":void 0}),l=((o=i.data)==null?void 0:o.escalations)??[],p=((u=i.data)==null?void 0:u.total)??0,x=s.row??{};return a?i.isLoading?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Loading history…"}):l.length===0?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No past revisions."}):e.jsxs("div",{children:[e.jsx("div",{className:"divide-y divide-surface-border/40",children:l.map(h=>{const f=$(h);return e.jsxs("button",{onClick:()=>n==null?void 0:n(h),className:"w-full text-left py-2.5 group flex items-center gap-3",children:[e.jsx("span",{className:`w-2.5 h-2.5 shrink-0 rounded-full dot-ring ${me(h)}`,title:h.status}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-xs text-text-primary group-hover:text-accent transition-colors truncate",children:x.title?O(x.title,f):h.type}),x.subtitle&&e.jsx("span",{className:"block text-2xs text-text-tertiary truncate",children:O(x.subtitle,f)})]}),x.meta?e.jsx("span",{className:"text-2xs text-text-tertiary shrink-0",children:O(x.meta,f)}):h.resolved_at&&e.jsx(Pe,{date:h.resolved_at,format:"relative",className:"text-2xs text-text-tertiary shrink-0 whitespace-nowrap"})]},h.id)})}),p>l.length&&e.jsxs("p",{className:"text-2xs text-text-quaternary mt-3",children:["Showing ",l.length," of ",p,"."]})]}):e.jsx("button",{onClick:()=>r(!0),className:"text-xs text-accent hover:underline","data-testid":"load-history",children:"Load full history →"})}function le({children:t}){return e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:t})}function $t(t,s){var i;const n=s.indexOf("."),a=s.startsWith("metadata.")?s.slice(9):null,r=new Map;for(const l of t){const p=$(l);let x;try{x=n===-1?p[s]:ce(p[s.slice(0,n)],s.slice(n+1))}catch{x=void 0}if(x==null||x==="")continue;const o=String(x),u=a?((i=l.metadata)==null?void 0:i[a])??x:x,h=r.get(o);h?(h.count+=1,new Date(l.created_at)>new Date(h.latest.created_at)&&(h.latest=l)):r.set(o,{key:o,rawValue:u,latest:l,count:1})}return[...r.values()].sort((l,p)=>l.key.localeCompare(p.key))}function It({schema:t,rows:s,role:n,onOpenDetail:a,onOpenGroup:r,onAddFacet:i,forceView:l}){const p=Q(),x=t["x-lt-group-by"],o=t["x-lt-card"]??{},u=t["x-lt-row-action"],[h,f]=E.useState(null);if(!x)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"facet-board needs an x-lt-group-by path."});const g=x.startsWith("metadata.")?x.slice(9):null,w=$t(s,x);if(w.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No entities in scope."});const j=v=>{var d,y;const m=[];g&&m.push({key:g,label:g,value:v.rawValue});const b=new Set(m.map(N=>N.key));for(const N of o.fields??[]){const C=(d=N.value.match(Qe))==null?void 0:d[1];if(!C||b.has(C))continue;const k=(y=v.latest.metadata)==null?void 0:y[C];k==null||k===""||(b.add(C),m.push({key:C,label:N.label,value:k}))}return m};return e.jsxs("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(15rem,1fr))] gap-4","data-testid":"facet-board",children:[w.map(v=>{const m=$(v.latest),b=o.title?O(o.title,m):v.key,d=o.state?O(o.state,m):v.latest.subtype||v.latest.status,y=ct(d),N=j(v).length>0,C=k=>{if(k.shiftKey&&g&&i){i(g,v.rawValue);return}a==null||a(v.latest)};return e.jsxs("div",{role:"button",tabIndex:0,onClick:C,onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),C(k))},title:g?"Open the latest item · ⇧ click to filter the board":"Open the latest item",className:"group/card border-l-2 border-accent/30 bg-surface-sunken/40 rounded-[0.125em] px-4 py-3.5 cursor-pointer transition-colors hover:bg-surface-sunken/70 focus:outline-none focus-visible:ring-1 focus-visible:ring-accent/40","data-testid":"facet-board-card",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2.5",children:[e.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary truncate",children:b}),e.jsxs("span",{className:"flex items-center gap-1 shrink-0",children:[e.jsx("span",{className:"px-1.5 py-0.5 rounded text-2xs font-mono font-medium",style:{color:y.text,backgroundColor:y.bg},title:d,children:d}),N&&e.jsx(pe,{onOpen:()=>f(v),className:"-my-1 -mr-1"})]})]}),o.fields&&o.fields.length>0&&e.jsx("dl",{className:"space-y-1",children:o.fields.map((k,K)=>{const P=O(k.value,m);return e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsx("dt",{className:"text-2xs uppercase tracking-wider text-text-quaternary shrink-0",children:k.label}),e.jsx("dd",{className:"min-w-0 truncate text-2xs text-text-primary",title:P&&P!==_?P:void 0,children:e.jsx(D,{raw:P,format:k.format})})]},K)})}),e.jsx("div",{className:"mt-3 flex justify-end",children:e.jsx(Y,{row:v.latest,def:u,onView:()=>a==null?void 0:a(v.latest),forceView:l})})]},v.key)}),e.jsx(fe,{open:!!h,onClose:()=>f(null),role:n,pairs:h?j(h):[],onNavigate:r??p,onAddFacet:i})]})}function ss({role:t,listSchema:s,listSchemaVersion:n,activeEscalations:a,groups:r,onRowClick:i,onOpenGroup:l,onAddFacet:p,forceViewAction:x,total:o,page:u,totalPages:h,pageSize:f,onPageChange:g,onPageSizeChange:w}){const j=s["x-lt-layout"],v=s["x-lt-active"]??{},m=s["x-lt-row-action"],b=a[0],d=s["x-lt-help"];Lt(_t(s));const y=e.jsxs("div",{className:"border border-surface-border/60 bg-surface-sunken rounded-[0.25em] p-4",children:[e.jsx(le,{children:"Active"}),b?e.jsx(Ft,{esc:b,card:v,rowAction:m,onOpen:()=>i==null?void 0:i(b),forceView:x}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No active item right now."})]}),N=d&&b?e.jsx("div",{className:"mb-8",children:e.jsx(G,{content:O(d,$(b))})}):d?e.jsx("div",{className:"mb-8",children:e.jsx(G,{content:d})}):null;if(j==="facet-table"){const C=o??a.length;return e.jsxs("div",{children:[e.jsx(Et,{schema:s,rows:a,groups:r,role:t,version:n,onRowClick:i,onAddFacet:p,forceView:x}),u!==void 0&&h!==void 0&&g&&e.jsx(te,{page:u,totalPages:h,onPageChange:g,total:C,pageSize:f??25,onPageSizeChange:w})]})}return j==="facet-board"?e.jsxs("div",{children:[N,e.jsx(It,{schema:s,rows:a,role:t,onOpenDetail:i,onOpenGroup:l,onAddFacet:p,forceView:x}),u!==void 0&&h!==void 0&&g&&h>1&&e.jsx(te,{page:u,totalPages:h,onPageChange:g,total:o??a.length,pageSize:f??25,onPageSizeChange:w})]}):j==="active-history"?e.jsxs("div",{children:[N,e.jsxs("div",{className:"grid grid-cols-1 @split:grid-cols-[1.6fr_1fr] gap-8 @split:gap-12 items-start",children:[y,e.jsxs("div",{className:"@split:pt-4",children:[e.jsx(le,{children:"History"}),e.jsx(Mt,{role:t,def:s["x-lt-history"]??{},onRowClick:i})]})]})]}):e.jsxs("div",{children:[N,y]})}const q="text-text-secondary transition-colors group-hover/row:text-text-primary";function Pt({row:t}){if(Xe(t)){const s=t.status==="resolved"?"text-status-success":"text-text-tertiary";return e.jsx(We,{className:`w-3 h-3 shrink-0 ${s}`})}return t.status==="resolved"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-success",strokeWidth:2.5}):t.status==="cancelled"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-error",strokeWidth:2.5}):t.status==="expired"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-text-tertiary",strokeWidth:2.5}):Ze(t)?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-warning",strokeWidth:2.5}):e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-active",strokeWidth:2.5})}function Rt({metadata:t,role:s,highlightKeys:n}){const[a,r]=E.useState(!1),i=Ae();if(!t||Object.keys(t).length===0)return e.jsx("span",{className:"text-2xs text-text-tertiary",children:"—"});const l=n??[],p=[...l.filter(u=>u in t),...Object.keys(t).filter(u=>!l.includes(u))],x=a?p:p.slice(0,1),o=p.length-1;return e.jsx("div",{className:"w-full",onClick:u=>u.stopPropagation(),children:e.jsx("div",{className:"space-y-px",children:x.map((u,h)=>{const f=typeof t[u]=="object"&&t[u]!==null?JSON.stringify(t[u]):String(t[u]),g=l.includes(u),w=h===x.length-1;return e.jsxs("div",{className:"group/mrow flex items-center gap-1 min-w-0",children:[e.jsx("span",{className:`shrink-0 w-14 text-2xs font-mono uppercase tracking-wide truncate ${g?"text-accent":"text-text-tertiary"}`,title:u,children:u}),e.jsx("span",{className:`flex-1 min-w-0 text-2xs font-medium truncate ${g?"text-text-primary":"text-text-secondary"}`,title:f,children:f}),e.jsxs("span",{className:"flex items-center gap-px shrink-0 opacity-50 group-hover/mrow:opacity-100 transition-opacity",children:[e.jsx(z,{to:ee(u,t[u],s),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Filter ${s}: ${u} = ${f}`,onClick:j=>j.stopPropagation(),children:e.jsx(He,{className:"w-3 h-3"})}),e.jsx(z,{to:ee(u,t[u]),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Search all: ${u} = ${f}`,onClick:j=>j.stopPropagation(),children:e.jsx(xe,{className:"w-3 h-3"})}),i&&typeof t[u]=="string"&&e.jsx("button",{className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Timeline: every station ${f} has moved through`,onClick:j=>{j.stopPropagation(),i.setPanel(e.jsx(et,{facetKey:u,value:t[u],role:s}),{key:"entity-timeline",width:420})},children:e.jsx(Ue,{className:"w-3 h-3"})})]}),!a&&o>0&&e.jsxs("button",{onClick:j=>{j.stopPropagation(),r(!0)},className:"shrink-0 text-2xs text-text-quaternary hover:text-accent transition-colors font-mono",title:`Show ${o} more fields`,children:["+",o]}),a&&w&&o>0&&e.jsx("button",{onClick:j=>{j.stopPropagation(),r(!1)},className:"shrink-0 text-2xs text-text-quaternary hover:text-accent transition-colors",title:"Show less",children:"↑"})]},u)})})})}function At(t={}){return[{key:"description",label:"Summary",priority:1,render:s=>e.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(Pt,{row:s})}),e.jsx("span",{className:`truncate text-xs ${q}`,children:s.description||s.type})]}),className:"max-w-0"},{key:"assigned_to",label:"Assignee",priority:2,render:s=>s.assigned_to?e.jsx(it,{userId:s.assigned_to,className:`block truncate text-xs ${q}`}):e.jsx("span",{className:"text-xs text-text-quaternary",children:"—"}),className:"w-36 max-w-[9rem]"},{key:"role",label:"Role",priority:2,render:s=>e.jsx("span",{className:q,children:e.jsx(nt,{role:s.role,size:"md",tone:"inherit"})}),className:"w-44 min-w-[11rem]"},{key:"priority",label:"Pri",priority:2,render:s=>e.jsx("span",{className:q,children:e.jsx(at,{priority:s.priority,size:"sm",tone:"inherit"})}),className:"w-10"},{key:"workflow_type",label:"Workflow",priority:2,showFrom:"split",render:s=>e.jsx(rt,{type:s.workflow_type||s.type}),className:"w-40 whitespace-nowrap"},{key:"metadata",label:"Metadata",priority:2,showFrom:"wall",render:s=>e.jsx(Rt,{metadata:s.metadata,role:s.role,highlightKeys:t.highlightKeys}),className:"w-80 max-w-[19rem] align-top"},{key:"created_at",label:"Ago",priority:1,render:s=>e.jsx("span",{className:`text-xs tabular-nums ${q}`,title:s.created_at,children:Re(s.created_at)}),className:"w-14 whitespace-nowrap"}]}const as=At(),ns={key:"expires",label:e.jsx(Ke,{className:"w-3.5 h-3.5 text-text-tertiary"}),render:t=>t.assigned_until?e.jsx(lt,{until:t.assigned_until}):e.jsx("span",{className:"text-xs text-text-tertiary",children:"—"}),className:"w-16 whitespace-nowrap",priority:1},qt=[{value:"1",label:"P1"},{value:"2",label:"P2"},{value:"3",label:"P3"},{value:"4",label:"P4"}],Dt=[{value:"all",label:"All"},{value:"available",label:"Available"},{value:"claimed",label:"Claimed"},{value:"resolved",label:"Resolved"},{value:"cancelled",label:"Cancelled"},{value:"expired",label:"Expired"}];function rs({filters:t,setFilter:s,roles:n,types:a,showStatus:r=!1,showSearch:i=!0,showRole:l=!0,actions:p}){const x=[t.role,t.type,t.priority,t.status&&t.status!=="all"?t.status:"",t.search??""].filter(Boolean).length;return e.jsxs(tt,{actions:p,activeFilterCount:x,children:[r&&e.jsxs(e.Fragment,{children:[e.jsx(W,{label:"Status",value:t.status??"",onChange:o=>s("status",o),options:Dt}),e.jsx(H,{})]}),l&&e.jsxs(e.Fragment,{children:[e.jsx(W,{label:"Role",value:t.role,onChange:o=>s("role",o),options:n.map(o=>({value:o,label:o}))}),e.jsx(H,{})]}),e.jsx(W,{label:"Priority",value:t.priority,onChange:o=>s("priority",o),options:qt}),e.jsx(H,{}),e.jsx(W,{label:"Workflow Type",value:t.type,onChange:o=>s("type",o),options:a.map(o=>({value:o,label:o}))}),i&&e.jsxs(e.Fragment,{children:[e.jsx(H,{}),e.jsx(st,{label:"Search",value:t.search??"",onChange:o=>s("search",o),placeholder:"ID, workflow, origin…"})]})]})}export{rs as E,ns as T,ss as a,as as b,At as m};
|
|
2
|
-
//# sourceMappingURL=escalation-columns-
|
|
1
|
+
import{a as E,j as e,u as oe}from"./vendor-query-DvWWuNIB.js";import{a as O,H as Oe,g as ce,E as _,F as D,j as Ee,k as Le,f as _e}from"./escalation-items-C3ko1DCb.js";import{M as Fe,be as B,m as de,a0 as Me,bf as $e,ah as G,a9 as Ie,g as Pe,b0 as Re,a_ as Ae,ai as ee}from"./index-CSr5q355.js";import{S as te}from"./StickyPagination-DX5CPgrX.js";import{b as xe,ad as qe,e as De,az as Ke,aE as We,bI as A,at as He,aD as Ue}from"./vendor-icons-en0_uSRD.js";import{c as ue,d as Ve,S as J,r as $,G as I,f as Be,b as Ge,e as me,I as Je,g as se,R as pe,h as Y,j as ze,k as Ye,M as Qe,l as Xe,i as Ze}from"./validate-BypZfZ8R.js";import{D as he}from"./DataTable-FjFhx0SE.js";import{L as z,u as Q}from"./vendor-react-_9U4mKFr.js";import{E as et}from"./EntityTimelinePanel-BA4MWXkB.js";import{F as tt,b as W,c as H,a as st}from"./FilterBar-22FDO0R_.js";import{P as at}from"./PriorityBadge-r33mpDju.js";import{R as nt}from"./RolePill-D3hkAdKf.js";import{W as rt}from"./WorkflowPill-CKHip3hH.js";import{U as it}from"./UserName-t3PbLYfd.js";import{C as lt}from"./CountdownTimer-C4hP64lF.js";const ae=[{text:"text-rose-400",bg:"bg-rose-400/[0.08]"},{text:"text-pink-400",bg:"bg-pink-400/[0.08]"},{text:"text-fuchsia-400",bg:"bg-fuchsia-400/[0.08]"},{text:"text-purple-400",bg:"bg-purple-400/[0.08]"},{text:"text-violet-400",bg:"bg-violet-400/[0.08]"},{text:"text-indigo-400",bg:"bg-indigo-400/[0.08]"},{text:"text-blue-400",bg:"bg-blue-400/[0.08]"},{text:"text-sky-400",bg:"bg-sky-400/[0.08]"},{text:"text-cyan-400",bg:"bg-cyan-400/[0.08]"},{text:"text-teal-400",bg:"bg-teal-400/[0.08]"},{text:"text-emerald-400",bg:"bg-emerald-400/[0.08]"},{text:"text-green-400",bg:"bg-green-400/[0.08]"},{text:"text-lime-400",bg:"bg-lime-400/[0.08]"},{text:"text-yellow-400",bg:"bg-yellow-400/[0.08]"},{text:"text-amber-400",bg:"bg-amber-400/[0.08]"},{text:"text-orange-400",bg:"bg-orange-400/[0.08]"},{text:"text-red-400",bg:"bg-red-400/[0.08]"},{text:"text-stone-400",bg:"bg-stone-400/[0.08]"},{text:"text-rose-300",bg:"bg-rose-300/[0.08]"},{text:"text-violet-300",bg:"bg-violet-300/[0.08]"},{text:"text-sky-300",bg:"bg-sky-300/[0.08]"},{text:"text-teal-300",bg:"bg-teal-300/[0.08]"},{text:"text-amber-300",bg:"bg-amber-300/[0.08]"},{text:"text-pink-300",bg:"bg-pink-300/[0.08]"}];function ot(t){let s=0;for(let n=0;n<t.length;n++)s=(s<<5)-s+t.charCodeAt(n)|0;return Math.abs(s)}function ct(t){return ae[ot(t)%ae.length]}const dt=6;function fe({open:t,onClose:s,role:n,pairs:a,onNavigate:r,onAddFacet:i}){const[l,p]=E.useState(new Set),[x,o]=E.useState(""),[u,h]=E.useState(t);if(t!==u&&(h(t),t)){const d=a.filter(N=>N.bound),y=d.length===1?[d[0].key]:a.length===1?[a[0].key]:[];p(new Set(y)),o("")}const f=x.trim().toLowerCase(),g=f?a.filter(d=>[d.label,d.key,String(d.value)].some(y=>y.toLowerCase().includes(f))):a,w=d=>{p(y=>{const N=new Set(y);return N.has(d)?N.delete(d):N.add(d),N})},j=a.filter(d=>l.has(d.key)),v=Object.fromEntries(j.map(d=>[d.key,d.value])),m=j.length===0,b=d=>{s(),r(d)};return e.jsx(Fe,{open:t,onClose:s,title:"Refine",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Pick the facts to match — several combine into one narrower query."}),a.length>dt&&e.jsxs("label",{className:"flex items-center gap-2 input text-xs py-1.5",children:[e.jsx(xe,{className:"w-3.5 h-3.5 shrink-0 text-text-quaternary",strokeWidth:1.5}),e.jsx("input",{type:"text",value:x,onChange:d=>o(d.target.value),placeholder:"Find a fact…",className:"flex-1 min-w-0 bg-transparent outline-none placeholder:text-text-quaternary","aria-label":"Find a fact","data-testid":"refine-find"}),e.jsxs("span",{className:"text-2xs tabular-nums text-text-quaternary",children:[g.length,"/",a.length]})]}),e.jsx("div",{className:"divide-y divide-surface-border/40 -mx-1 max-h-[50vh] overflow-y-auto",children:g.map(d=>{const y=l.has(d.key);return e.jsxs("button",{type:"button",onClick:()=>w(d.key),"aria-pressed":y,className:"w-full flex items-center gap-3 px-1 py-2.5 text-left group min-w-0","data-testid":"refine-pair",children:[e.jsx("span",{className:`w-4 h-4 rounded-[3px] border flex items-center justify-center shrink-0 transition-colors ${y?"bg-accent border-accent":"border-surface-border group-hover:border-accent/50"}`,"aria-hidden":!0,children:y&&e.jsx(qe,{className:"w-3 h-3 text-text-inverse",strokeWidth:3})}),e.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary w-28 shrink-0 truncate",title:d.key,children:d.label}),e.jsx("span",{className:"text-xs text-text-primary truncate flex-1 min-w-0",title:String(d.value),children:String(d.value)})]},d.key)})}),e.jsxs("div",{className:"flex items-center justify-end gap-3 pt-2 flex-wrap",children:[i&&e.jsx("button",{onClick:()=>{j.forEach(d=>i(d.key,d.value)),s()},disabled:m,className:"text-xs text-text-secondary hover:text-accent transition-colors disabled:opacity-40 disabled:cursor-not-allowed mr-auto","data-testid":"refine-add-filters",children:"Add to filters"}),e.jsx("button",{onClick:()=>b(B(v)),disabled:m,className:"btn-secondary text-xs disabled:opacity-40 disabled:cursor-not-allowed","data-testid":"refine-search-all",children:"Search everywhere"}),e.jsxs("button",{onClick:()=>b(B(v,n)),disabled:m,className:"btn-primary text-xs disabled:opacity-40 disabled:cursor-not-allowed","data-testid":"refine-filter-role",children:["Filter ",n]})]})]})})}function xt(t,s,n,a=!0){const r=[...s].sort();return oe({queryKey:["escalations","related",t,n??"latest",r],queryFn:()=>de("/escalations/related",{method:"POST",body:JSON.stringify({role:t,ids:r,...n!=null?{version:n}:{}})}),enabled:a&&!!t&&r.length>0,placeholderData:i=>i})}function ut(t,s,n,a,r,i=!0){return oe({queryKey:["escalations","related-rows",t,a??"latest",s,n,r??null],queryFn:()=>de("/escalations/related/rows",{method:"POST",body:JSON.stringify({role:t,id:s,set:n,...a!=null?{version:a}:{},...r?{limit:r}:{}})}),enabled:i&&!!t&&!!s&&!!n})}const mt=/^\{\{\s*([^{}]+?)\s*\}\}$/,pt=/\{\{\s*[^{}]+?\s*\}\}/,ht="—";function V(t){if(t&&typeof t=="object")return t;if(typeof t!="string"||!t)return null;try{const s=JSON.parse(t);return s&&typeof s=="object"?s:null}catch{return null}}function be(t){return{escalation:t,metadata:t.metadata??{},envelope:V(t.envelope)??{},payload:V(t.escalation_payload)??{},resolver:V(t.resolver_payload)??{}}}function ft(t,s){const n=t.indexOf("."),a=n===-1?t:t.slice(0,n);if(!Oe.includes(a))return;const r=s[a];if(n===-1)return r??void 0;try{return ce(r,t.slice(n+1))}catch{return}}function ne(t,s){if(typeof t!="string")return t;const n=t.match(mt);if(n){const r=ft(n[1],s);return r===null||r===""?void 0:r}if(!pt.test(t))return t;const a=O(t,s);return a.includes(ht)?void 0:a}function ye(t,s,n){const a={};for(const[r,i]of Object.entries(t)){const l=ne(i,s);if(l===void 0)return null;a[r]=l}for(const[r,i]of Object.entries(n??{})){const l=ne(i,s);l!==void 0&&(a[r]=l)}return a}function bt(t,s,n){var a,r;return(a=s.labels)!=null&&a[t]?s.labels[t]:s.splitBy===J.ROLE&&((r=n==null?void 0:n.roleLabels)!=null&&r[t])?n.roleLabels[t]:t===""?"None":t}function yt({col:t,set:s,agg:n,drillUrl:a}){if(!n||n.unresolved)return e.jsx("span",{className:"text-text-quaternary",children:_});if(ue(t.aggregate))return n.value===void 0?e.jsx("span",{className:"text-text-quaternary",children:_}):e.jsx("span",{className:"tabular-nums text-text-primary","data-testid":"related-cell",children:e.jsx(D,{raw:String(n.value),format:t.format})});const r=Ve(t.display,n.count),i=t.splitBy===J.ROLE&&(s!=null&&s.roles)?s.roles:null,l=Object.entries(n.splits??{}).filter(([,o])=>o>0).sort(([o,u],[h,f])=>i?i.indexOf(o)-i.indexOf(h):f-u),p=t.splitBy===J.ROLE?(s==null?void 0:s.restricted)??[]:[],x=[r!==null?String(n.count):"",n.hidden?`${n.hidden} not readable by you`:"",p.length?`Not counted (outside your view): ${p.map(o=>{var u;return((u=s==null?void 0:s.roleLabels)==null?void 0:u[o])??o}).join(", ")}`:""].filter(Boolean).join(" · ");return e.jsxs("span",{className:"inline-flex flex-wrap items-center gap-1 min-w-0",title:x||void 0,"data-testid":"related-cell",children:[e.jsx("span",{className:"tabular-nums font-medium text-text-primary","data-testid":"related-count",children:r??n.count}),l.map(([o,u])=>{const h=`${bt(o,t,s)} ${u}`,f=i&&a?a(o):null,g="px-1.5 py-0.5 rounded bg-surface-sunken text-2xs text-text-secondary whitespace-nowrap tabular-nums";return f?e.jsx(z,{to:f,onClick:w=>w.stopPropagation(),className:`${g} hover:text-accent`,"data-testid":"related-chip",children:h},o):e.jsx("span",{className:g,"data-testid":"related-chip",children:h},o)}),(n.hidden||p.length>0)&&e.jsx("span",{className:"text-2xs text-text-quaternary italic","data-testid":"related-restricted",children:n.hidden&&!l.length?"split restricted":"partial"})]})}const gt="role";function re(t,s){const n=s.escalation?$(s.escalation):{};return Ee(t,s.item,n)}function jt({role:t,host:s,version:n,section:a,roleLabels:r}){var w,j,v;const i=Q(),l=ut(t,s.id,a.related,n,a.limit),p=((w=l.data)==null?void 0:w.rows)??[],x=((j=l.data)==null?void 0:j.roleLabels)??r??{},o=((v=l.data)==null?void 0:v.restricted)??[],u=new Set(Object.values(s.metadata??{}).filter(m=>typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="boolean").map(String)),f=a.columns.filter((m,b)=>{if(b===0||p.length===0)return!0;const d=new Set(p.map(y=>re(m.value,y)));return!(d.size===1&&u.has([...d][0]))}).map((m,b)=>({key:`d-${b}`,label:m.label,priority:m.priority??(b===0?1:2),render:d=>{const y=re(m.value,d);return m.format===gt&&y!==_?e.jsx("span",{className:"block truncate",children:x[y]??Me({role:y})}):e.jsx("span",{className:"block truncate",title:y!==_?y:void 0,children:e.jsx(D,{raw:y,format:m.format})})}})),g=m=>{var b,d;return((b=m.escalation)==null?void 0:b.id)??((d=m.item)==null?void 0:d.reciprocalId)??null};return e.jsxs("div",{"data-testid":"row-detail-section",children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary pt-3 pb-1",children:[a.label??a.related,l.data&&e.jsx("span",{className:"ml-2 font-normal normal-case tracking-normal tabular-nums",children:l.data.total})]}),l.isLoading?e.jsx("p",{className:"text-2xs text-text-tertiary italic pb-2",children:"Loading…"}):e.jsx(he,{columns:f,data:p,keyFn:m=>{var b,d;return((b=m.item)==null?void 0:b.itemKey)??String((d=m.escalation)==null?void 0:d.id)},onRowClick:m=>{const b=g(m);b&&i(`/escalations/detail/${b}`)},layout:"fixed",density:"compact",inline:!0,emptyMessage:""}),!l.isLoading&&p.length===0&&e.jsx("p",{className:"text-2xs text-text-quaternary italic pb-2",children:"None."}),l.data&&l.data.total>p.length&&e.jsxs("p",{className:"text-2xs text-text-quaternary pb-2",children:["Showing ",p.length," of ",l.data.total,"."]}),o.length>0&&e.jsxs("p",{className:"text-2xs text-text-quaternary italic pb-2",children:["Not shown (outside your view): ",o.map(m=>x[m]??m).join(", ")]})]})}function vt({role:t,host:s,version:n,sections:a}){return e.jsx("div",{className:"space-y-1","data-testid":"row-detail",children:a.map((r,i)=>e.jsx(jt,{role:t,host:s,version:n,section:r},i))})}function wt(t,s){return t.flatMap(n=>{if(n.rows.length<2||!s.has(n.key))return[n];const a=n.rows.map((r,i)=>({key:`${n.key}/${r.id}`,rows:[r],groupKey:n.groupKey,depth:1,lastChild:i===n.rows.length-1,parent:n}));return[n,...a]})}function Nt(t,s){if(!s)return t.map(a=>({key:a.id,rows:[a],groupKey:null}));const n=new Map(t.map(a=>[a.id,a]));return s.map(a=>({key:a.key!=null?`group:${a.key}`:a.ids[0],rows:a.ids.map(r=>n.get(r)).filter(r=>!!r),groupKey:a.key})).filter(a=>a.rows.length>0)}function kt(t){const s=t.map(n=>Number(n));return s.every(n=>Number.isFinite(n))?s:null}function ie(t,s){const n=t.group??I.FIRST;if(n===I.COUNT)return String(s.length);const a=s.map(l=>O(t.value,$(l))).filter(l=>l&&l!==_);if(n===I.DISTINCT)return a.length?[...new Set(a)].join(", "):_;if(n===I.FIRST||s.length===1)return a[0]??_;if(!a.length)return _;const r=kt(a);if(n===I.SUM)return r?String(r.reduce((l,p)=>l+p,0)):_;if(r)return String(n===I.MIN?Math.min(...r):Math.max(...r));const i=[...a].sort();return n===I.MIN?i[0]:i[i.length-1]}function St(t,s){const n=t.filter(r=>!!r);if(!n.length)return;if(n.every(r=>r.unresolved))return{count:0,unresolved:!0};const a={count:0};for(const r of n)if(!r.unresolved&&(a.count+=r.count,r.hidden&&(a.hidden=(a.hidden??0)+r.hidden),r.splits)){a.splits??(a.splits={});for(const[i,l]of Object.entries(r.splits))a.splits[i]=(a.splits[i]??0)+l}if(ue(s)){const r=Be(s,n.flatMap(i=>i.value===void 0?[]:[i.value]));r!==void 0&&(a.value=r)}return a}function Tt(t,s,n){const a=new Set;return t.filter(r=>{const i=ye(s,be(r),n);if(!i)return!0;const l=JSON.stringify(i);return a.has(l)?!1:(a.add(l),!0)})}function Ct(t){try{return Ge(t)}catch{return null}}function Ot(t){var a;const s=xt(t.role,t.rows.map(r=>r.id),t.version),n=((a=s.data)==null?void 0:a.sets)??{};return $e(Object.values(n).flatMap(r=>r.roles??[])),e.jsx(ge,{...t,sets:n,setsLoading:s.isLoading})}function Et(t){const s=E.useMemo(()=>Ct(t.schema),[t.schema]);return s&&Object.keys(s.sets).length>0?e.jsx(Ot,{...t,relations:s}):e.jsx(ge,{...t,relations:s,sets:{},setsLoading:!1})}function ge({schema:t,rows:s,groups:n,role:a,version:r,onRowClick:i,onAddFacet:l,forceView:p,relations:x,sets:o,setsLoading:u}){const h=Q(),f=t["x-lt-columns"]??[],g=t["x-lt-row-action"],w=(x==null?void 0:x.rowDetail)??[],[j,v]=E.useState(null),[m,b]=E.useState(()=>new Set),d=E.useMemo(()=>Nt(s,n),[s,n]),y=E.useMemo(()=>wt(d,m),[d,m]),N=!!n,C=w.length>0||N,k=c=>c.rows.length>1||w.length>0,K=c=>b(T=>{const S=new Set(T);return S.has(c)?S.delete(c):S.add(c),S}),P=(c,T)=>{var X,Z;const S=c.related,F=o[S],L=(X=x==null?void 0:x.sets[S])==null?void 0:X.query,ke=L!=null&&L.facets?Tt(T,L.facets,L.narrow):T,Se=Ye(c,((Z=x==null?void 0:x.sets[S])==null?void 0:Z.source)??""),Te=St(ke.map(U=>{var R;return(R=F==null?void 0:F.aggregates[Se])==null?void 0:R[U.id]}),c.aggregate),Ce=L!=null&&L.facets&&T.length===1?U=>{const R=ye(L.facets,be(T[0]),L.narrow);return R?B(R,U):null}:void 0;return e.jsx(yt,{col:c,set:F,agg:u?void 0:Te,drillUrl:Ce})},je=(g==null?void 0:g.label)??(p?"View":"Claim"),M=c=>c.rows[0],ve=[...C?[{key:"_expand",label:"",priority:1,className:"w-12 px-1",render:c=>e.jsx("span",{className:`flex ${c.depth?"pl-5":""}`,children:k(c)&&e.jsx("button",{type:"button",onClick:T=>{T.stopPropagation(),K(c.key)},className:"p-1 rounded icon-link hover:bg-surface-hover transition-colors","aria-expanded":m.has(c.key),"aria-label":m.has(c.key)?"Collapse row":"Expand row","data-testid":"row-expand",children:e.jsx(De,{className:`w-3.5 h-3.5 transition-transform ${m.has(c.key)?"rotate-90":""}`,strokeWidth:1.75})})})}]:[],{key:"_status",label:"",priority:1,className:"w-8",render:c=>e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:`w-2.5 h-2.5 inline-block rounded-full dot-ring ${me(M(c))}`,title:M(c).status}),c.rows.length>1&&e.jsx("span",{className:"text-2xs tabular-nums text-text-tertiary",title:`${c.rows.length} rows in this group`,"data-testid":"group-size",children:c.rows.length})]})},...f.map((c,T)=>({key:`col-${T}`,label:c.label,priority:c.priority??(T===0?1:2),width:c.width??(T===0&&!f.some(S=>S.width)?Je:void 0),render:S=>{if(c.related)return P(c,S.rows);const F=S.rows.length>1?ie(c,S.rows):O(c.value,$(M(S)));if(S.parent&&F===ie(c,S.parent.rows))return null;const L=T===0&&S.depth?"pl-4":"";return e.jsx("span",{className:`block truncate ${L}`,title:F&&F!==_?F:void 0,children:e.jsx(D,{raw:F,format:c.format})})}})),{key:"_refine",label:"",priority:1,className:"w-8 px-1",render:c=>c.rows.length===1&&se(M(c),f).length>0?e.jsx(pe,{onOpen:()=>v(M(c))}):null},{key:"_action",label:"",priority:1,width:ze(je),className:"text-right whitespace-nowrap",render:c=>c.rows.length===1?e.jsx(Y,{row:M(c),def:g,onView:()=>i==null?void 0:i(M(c)),forceView:p}):null}],we=c=>c.depth?"bg-surface-sunken border-b-surface-border/40":m.has(c.key)&&k(c)?"bg-surface-sunken/50 border-b-surface-border/40":"",Ne=c=>!m.has(c.key)||c.rows.length>1||w.length===0?null:e.jsx("div",{onClick:T=>T.stopPropagation(),className:`${c.depth?"bg-surface-sunken pl-20":"bg-surface-sunken/50 pl-12"} pr-3 pt-1 pb-4`,"data-testid":"row-detail-block",children:e.jsx(vt,{role:a,host:M(c),version:r,sections:w})});return e.jsxs(e.Fragment,{children:[e.jsx(he,{columns:ve,data:y,layout:"fixed",density:"dense",keyFn:c=>c.key,onRowClick:i?c=>c.rows.length===1?i(M(c)):K(c.key):void 0,rowClassName:C?we:void 0,emptyMessage:"No pending items.",renderExpansion:C?Ne:void 0}),e.jsx(fe,{open:!!j,onClose:()=>v(null),role:a,pairs:j?se(j,f):[],onNavigate:h,onAddFacet:l})]})}function Lt(t){const[,s]=E.useState(0);E.useEffect(()=>{if(!t)return;const n=window.setInterval(()=>s(a=>a+1),6e4);return()=>window.clearInterval(n)},[t])}function _t(t){var s;return[...t["x-lt-columns"]??[],...((s=t["x-lt-card"])==null?void 0:s.fields)??[]].some(n=>Le(n.format))}function Ft({esc:t,card:s,rowAction:n,onOpen:a,forceView:r}){const i=$(t),l=s.title?O(s.title,i):t.type;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between gap-6",children:[e.jsxs("button",{onClick:a,className:"text-left group min-w-0",children:[e.jsx("h3",{className:"heading-2 group-hover:text-accent transition-colors leading-tight",children:l}),s.subtitle&&e.jsx("p",{className:"text-xs text-text-tertiary mt-1.5",children:O(s.subtitle,i)})]}),e.jsx(Y,{row:t,def:n,onView:a,prominent:!0,forceView:r})]}),s.fields&&s.fields.length>0&&e.jsx("dl",{className:"flex flex-wrap gap-x-10 gap-y-4 mt-6",children:s.fields.map((p,x)=>e.jsxs("div",{children:[e.jsx("dt",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:p.label}),e.jsx("dd",{className:"text-xs text-text-primary mt-1",children:e.jsx(D,{raw:O(p.value,i)})})]},x))}),s.body&&e.jsx("div",{className:"mt-7 pt-6 border-t border-surface-border/50",children:e.jsx(G,{content:O(s.body,i)})})]})}function Mt({role:t,def:s,onRowClick:n}){var o,u;const[a,r]=E.useState(!1),i=Ie({role:t,status:s.status??"resolved",sort_by:"resolved_at",order:"desc",limit:s.limit??25,enabled:a,include:_e(s)?"envelope":void 0}),l=((o=i.data)==null?void 0:o.escalations)??[],p=((u=i.data)==null?void 0:u.total)??0,x=s.row??{};return a?i.isLoading?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Loading history…"}):l.length===0?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No past revisions."}):e.jsxs("div",{children:[e.jsx("div",{className:"divide-y divide-surface-border/40",children:l.map(h=>{const f=$(h);return e.jsxs("button",{onClick:()=>n==null?void 0:n(h),className:"w-full text-left py-2.5 group flex items-center gap-3",children:[e.jsx("span",{className:`w-2.5 h-2.5 shrink-0 rounded-full dot-ring ${me(h)}`,title:h.status}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-xs text-text-primary group-hover:text-accent transition-colors truncate",children:x.title?O(x.title,f):h.type}),x.subtitle&&e.jsx("span",{className:"block text-2xs text-text-tertiary truncate",children:O(x.subtitle,f)})]}),x.meta?e.jsx("span",{className:"text-2xs text-text-tertiary shrink-0",children:O(x.meta,f)}):h.resolved_at&&e.jsx(Pe,{date:h.resolved_at,format:"relative",className:"text-2xs text-text-tertiary shrink-0 whitespace-nowrap"})]},h.id)})}),p>l.length&&e.jsxs("p",{className:"text-2xs text-text-quaternary mt-3",children:["Showing ",l.length," of ",p,"."]})]}):e.jsx("button",{onClick:()=>r(!0),className:"text-xs text-accent hover:underline","data-testid":"load-history",children:"Load full history →"})}function le({children:t}){return e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:t})}function $t(t,s){var i;const n=s.indexOf("."),a=s.startsWith("metadata.")?s.slice(9):null,r=new Map;for(const l of t){const p=$(l);let x;try{x=n===-1?p[s]:ce(p[s.slice(0,n)],s.slice(n+1))}catch{x=void 0}if(x==null||x==="")continue;const o=String(x),u=a?((i=l.metadata)==null?void 0:i[a])??x:x,h=r.get(o);h?(h.count+=1,new Date(l.created_at)>new Date(h.latest.created_at)&&(h.latest=l)):r.set(o,{key:o,rawValue:u,latest:l,count:1})}return[...r.values()].sort((l,p)=>l.key.localeCompare(p.key))}function It({schema:t,rows:s,role:n,onOpenDetail:a,onOpenGroup:r,onAddFacet:i,forceView:l}){const p=Q(),x=t["x-lt-group-by"],o=t["x-lt-card"]??{},u=t["x-lt-row-action"],[h,f]=E.useState(null);if(!x)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"facet-board needs an x-lt-group-by path."});const g=x.startsWith("metadata.")?x.slice(9):null,w=$t(s,x);if(w.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No entities in scope."});const j=v=>{var d,y;const m=[];g&&m.push({key:g,label:g,value:v.rawValue});const b=new Set(m.map(N=>N.key));for(const N of o.fields??[]){const C=(d=N.value.match(Qe))==null?void 0:d[1];if(!C||b.has(C))continue;const k=(y=v.latest.metadata)==null?void 0:y[C];k==null||k===""||(b.add(C),m.push({key:C,label:N.label,value:k}))}return m};return e.jsxs("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(15rem,1fr))] gap-4","data-testid":"facet-board",children:[w.map(v=>{const m=$(v.latest),b=o.title?O(o.title,m):v.key,d=o.state?O(o.state,m):v.latest.subtype||v.latest.status,y=ct(d),N=j(v).length>0,C=k=>{if(k.shiftKey&&g&&i){i(g,v.rawValue);return}a==null||a(v.latest)};return e.jsxs("div",{role:"button",tabIndex:0,onClick:C,onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),C(k))},title:g?"Open the latest item · ⇧ click to filter the board":"Open the latest item",className:"group/card border-l-2 border-accent/30 bg-surface-sunken/40 rounded-[0.125em] px-4 py-3.5 cursor-pointer transition-colors hover:bg-surface-sunken/70 focus:outline-none focus-visible:ring-1 focus-visible:ring-accent/40","data-testid":"facet-board-card",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2.5",children:[e.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary truncate",children:b}),e.jsxs("span",{className:"flex items-center gap-1 shrink-0",children:[e.jsx("span",{className:"px-1.5 py-0.5 rounded text-2xs font-mono font-medium",style:{color:y.text,backgroundColor:y.bg},title:d,children:d}),N&&e.jsx(pe,{onOpen:()=>f(v),className:"-my-1 -mr-1"})]})]}),o.fields&&o.fields.length>0&&e.jsx("dl",{className:"space-y-1",children:o.fields.map((k,K)=>{const P=O(k.value,m);return e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsx("dt",{className:"text-2xs uppercase tracking-wider text-text-quaternary shrink-0",children:k.label}),e.jsx("dd",{className:"min-w-0 truncate text-2xs text-text-primary",title:P&&P!==_?P:void 0,children:e.jsx(D,{raw:P,format:k.format})})]},K)})}),e.jsx("div",{className:"mt-3 flex justify-end",children:e.jsx(Y,{row:v.latest,def:u,onView:()=>a==null?void 0:a(v.latest),forceView:l})})]},v.key)}),e.jsx(fe,{open:!!h,onClose:()=>f(null),role:n,pairs:h?j(h):[],onNavigate:r??p,onAddFacet:i})]})}function ss({role:t,listSchema:s,listSchemaVersion:n,activeEscalations:a,groups:r,onRowClick:i,onOpenGroup:l,onAddFacet:p,forceViewAction:x,total:o,page:u,totalPages:h,pageSize:f,onPageChange:g,onPageSizeChange:w}){const j=s["x-lt-layout"],v=s["x-lt-active"]??{},m=s["x-lt-row-action"],b=a[0],d=s["x-lt-help"];Lt(_t(s));const y=e.jsxs("div",{className:"border border-surface-border/60 bg-surface-sunken rounded-[0.25em] p-4",children:[e.jsx(le,{children:"Active"}),b?e.jsx(Ft,{esc:b,card:v,rowAction:m,onOpen:()=>i==null?void 0:i(b),forceView:x}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No active item right now."})]}),N=d&&b?e.jsx("div",{className:"mb-8",children:e.jsx(G,{content:O(d,$(b))})}):d?e.jsx("div",{className:"mb-8",children:e.jsx(G,{content:d})}):null;if(j==="facet-table"){const C=o??a.length;return e.jsxs("div",{children:[e.jsx(Et,{schema:s,rows:a,groups:r,role:t,version:n,onRowClick:i,onAddFacet:p,forceView:x}),u!==void 0&&h!==void 0&&g&&e.jsx(te,{page:u,totalPages:h,onPageChange:g,total:C,pageSize:f??25,onPageSizeChange:w})]})}return j==="facet-board"?e.jsxs("div",{children:[N,e.jsx(It,{schema:s,rows:a,role:t,onOpenDetail:i,onOpenGroup:l,onAddFacet:p,forceView:x}),u!==void 0&&h!==void 0&&g&&h>1&&e.jsx(te,{page:u,totalPages:h,onPageChange:g,total:o??a.length,pageSize:f??25,onPageSizeChange:w})]}):j==="active-history"?e.jsxs("div",{children:[N,e.jsxs("div",{className:"grid grid-cols-1 @split:grid-cols-[1.6fr_1fr] gap-8 @split:gap-12 items-start",children:[y,e.jsxs("div",{className:"@split:pt-4",children:[e.jsx(le,{children:"History"}),e.jsx(Mt,{role:t,def:s["x-lt-history"]??{},onRowClick:i})]})]})]}):e.jsxs("div",{children:[N,y]})}const q="text-text-secondary transition-colors group-hover/row:text-text-primary";function Pt({row:t}){if(Xe(t)){const s=t.status==="resolved"?"text-status-success":"text-text-tertiary";return e.jsx(We,{className:`w-3 h-3 shrink-0 ${s}`})}return t.status==="resolved"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-success",strokeWidth:2.5}):t.status==="cancelled"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-error",strokeWidth:2.5}):t.status==="expired"?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-text-tertiary",strokeWidth:2.5}):Ze(t)?e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-warning",strokeWidth:2.5}):e.jsx(A,{className:"w-2.5 h-2.5 shrink-0 text-status-active",strokeWidth:2.5})}function Rt({metadata:t,role:s,highlightKeys:n}){const[a,r]=E.useState(!1),i=Ae();if(!t||Object.keys(t).length===0)return e.jsx("span",{className:"text-2xs text-text-tertiary",children:"—"});const l=n??[],p=[...l.filter(u=>u in t),...Object.keys(t).filter(u=>!l.includes(u))],x=a?p:p.slice(0,1),o=p.length-1;return e.jsx("div",{className:"w-full",onClick:u=>u.stopPropagation(),children:e.jsx("div",{className:"space-y-px",children:x.map((u,h)=>{const f=typeof t[u]=="object"&&t[u]!==null?JSON.stringify(t[u]):String(t[u]),g=l.includes(u),w=h===x.length-1;return e.jsxs("div",{className:"group/mrow flex items-center gap-1 min-w-0",children:[e.jsx("span",{className:`shrink-0 w-14 text-2xs font-mono uppercase tracking-wide truncate ${g?"text-accent":"text-text-tertiary"}`,title:u,children:u}),e.jsx("span",{className:`flex-1 min-w-0 text-2xs font-medium truncate ${g?"text-text-primary":"text-text-secondary"}`,title:f,children:f}),e.jsxs("span",{className:"flex items-center gap-px shrink-0 opacity-50 group-hover/mrow:opacity-100 transition-opacity",children:[e.jsx(z,{to:ee(u,t[u],s),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Filter ${s}: ${u} = ${f}`,onClick:j=>j.stopPropagation(),children:e.jsx(He,{className:"w-3 h-3"})}),e.jsx(z,{to:ee(u,t[u]),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Search all: ${u} = ${f}`,onClick:j=>j.stopPropagation(),children:e.jsx(xe,{className:"w-3 h-3"})}),i&&typeof t[u]=="string"&&e.jsx("button",{className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Timeline: every station ${f} has moved through`,onClick:j=>{j.stopPropagation(),i.setPanel(e.jsx(et,{facetKey:u,value:t[u],role:s}),{key:"entity-timeline",width:420})},children:e.jsx(Ue,{className:"w-3 h-3"})})]}),!a&&o>0&&e.jsxs("button",{onClick:j=>{j.stopPropagation(),r(!0)},className:"shrink-0 text-2xs text-text-quaternary hover:text-accent transition-colors font-mono",title:`Show ${o} more fields`,children:["+",o]}),a&&w&&o>0&&e.jsx("button",{onClick:j=>{j.stopPropagation(),r(!1)},className:"shrink-0 text-2xs text-text-quaternary hover:text-accent transition-colors",title:"Show less",children:"↑"})]},u)})})})}function At(t={}){return[{key:"description",label:"Summary",priority:1,render:s=>e.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(Pt,{row:s})}),e.jsx("span",{className:`truncate text-xs ${q}`,children:s.description||s.type})]}),className:"max-w-0"},{key:"assigned_to",label:"Assignee",priority:2,render:s=>s.assigned_to?e.jsx(it,{userId:s.assigned_to,className:`block truncate text-xs ${q}`}):e.jsx("span",{className:"text-xs text-text-quaternary",children:"—"}),className:"w-36 max-w-[9rem]"},{key:"role",label:"Role",priority:2,render:s=>e.jsx("span",{className:q,children:e.jsx(nt,{role:s.role,size:"md",tone:"inherit"})}),className:"w-44 min-w-[11rem]"},{key:"priority",label:"Pri",priority:2,render:s=>e.jsx("span",{className:q,children:e.jsx(at,{priority:s.priority,size:"sm",tone:"inherit"})}),className:"w-10"},{key:"workflow_type",label:"Workflow",priority:2,showFrom:"split",render:s=>e.jsx(rt,{type:s.workflow_type||s.type}),className:"w-40 whitespace-nowrap"},{key:"metadata",label:"Metadata",priority:2,showFrom:"wall",render:s=>e.jsx(Rt,{metadata:s.metadata,role:s.role,highlightKeys:t.highlightKeys}),className:"w-80 max-w-[19rem] align-top"},{key:"created_at",label:"Ago",priority:1,render:s=>e.jsx("span",{className:`text-xs tabular-nums ${q}`,title:s.created_at,children:Re(s.created_at)}),className:"w-14 whitespace-nowrap"}]}const as=At(),ns={key:"expires",label:e.jsx(Ke,{className:"w-3.5 h-3.5 text-text-tertiary"}),render:t=>t.assigned_until?e.jsx(lt,{until:t.assigned_until}):e.jsx("span",{className:"text-xs text-text-tertiary",children:"—"}),className:"w-16 whitespace-nowrap",priority:1},qt=[{value:"1",label:"P1"},{value:"2",label:"P2"},{value:"3",label:"P3"},{value:"4",label:"P4"}],Dt=[{value:"all",label:"All"},{value:"available",label:"Available"},{value:"claimed",label:"Claimed"},{value:"resolved",label:"Resolved"},{value:"cancelled",label:"Cancelled"},{value:"expired",label:"Expired"}];function rs({filters:t,setFilter:s,roles:n,types:a,showStatus:r=!1,showSearch:i=!0,showRole:l=!0,actions:p}){const x=[t.role,t.type,t.priority,t.status&&t.status!=="all"?t.status:"",t.search??""].filter(Boolean).length;return e.jsxs(tt,{actions:p,activeFilterCount:x,children:[r&&e.jsxs(e.Fragment,{children:[e.jsx(W,{label:"Status",value:t.status??"",onChange:o=>s("status",o),options:Dt}),e.jsx(H,{})]}),l&&e.jsxs(e.Fragment,{children:[e.jsx(W,{label:"Role",value:t.role,onChange:o=>s("role",o),options:n.map(o=>({value:o,label:o}))}),e.jsx(H,{})]}),e.jsx(W,{label:"Priority",value:t.priority,onChange:o=>s("priority",o),options:qt}),e.jsx(H,{}),e.jsx(W,{label:"Workflow Type",value:t.type,onChange:o=>s("type",o),options:a.map(o=>({value:o,label:o}))}),i&&e.jsxs(e.Fragment,{children:[e.jsx(H,{}),e.jsx(st,{label:"Search",value:t.search??"",onChange:o=>s("search",o),placeholder:"ID, workflow, origin…"})]})]})}export{rs as E,ns as T,ss as a,as as b,At as m};
|
|
2
|
+
//# sourceMappingURL=escalation-columns-Dmm8LY_f.js.map
|