@hotmeshio/long-tail 0.31.1 → 0.32.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/escalations/create.js +17 -6
- package/build/api/escalations/files.d.ts +18 -0
- package/build/api/escalations/files.js +73 -0
- package/build/api/escalations/index.d.ts +1 -0
- package/build/api/escalations/index.js +4 -2
- package/build/api/escalations/metadata.js +5 -4
- package/build/api/escalations/resolve.js +6 -4
- package/build/bin/ltc.js +4 -2
- package/build/index.d.ts +2 -0
- package/build/index.js +13 -2
- package/build/lib/cli/commands/escalations.d.ts +2 -0
- package/build/lib/cli/commands/escalations.js +12 -4
- package/build/lib/storage/s3.js +1 -0
- package/build/modules/config.d.ts +9 -0
- package/build/modules/config.js +9 -0
- package/build/routes/escalations/single.js +11 -0
- package/build/sdk/index.d.ts +4 -0
- package/build/sdk/index.js +2 -0
- package/build/services/escalation/aggregate-resolved-sql.d.ts +19 -0
- package/build/services/escalation/aggregate-resolved-sql.js +57 -0
- package/build/services/escalation/aggregate-sql.d.ts +6 -1
- package/build/services/escalation/aggregate-sql.js +33 -12
- package/build/services/escalation/aggregate-validate.d.ts +5 -2
- package/build/services/escalation/aggregate-validate.js +7 -4
- package/build/services/escalation/aggregates.js +5 -3
- package/build/services/escalation/crud.js +3 -0
- package/build/services/escalation/file-links.d.ts +39 -0
- package/build/services/escalation/file-links.js +118 -0
- package/build/services/escalation/resolver-validation.d.ts +33 -0
- package/build/services/escalation/resolver-validation.js +22 -6
- package/build/services/orchestrator/condition.d.ts +20 -4
- package/build/services/orchestrator/condition.js +27 -8
- package/build/shared/form-validation/display-only-widgets.d.ts +3 -2
- package/build/shared/form-validation/display-only-widgets.js +3 -2
- package/build/shared/form-validation/index.d.ts +2 -0
- package/build/shared/form-validation/index.js +2 -0
- package/build/shared/form-validation/x-lt-confidence-facets.d.ts +27 -0
- package/build/shared/form-validation/x-lt-confidence-facets.js +60 -0
- package/build/shared/form-validation/x-lt-confidence.d.ts +57 -0
- package/build/shared/form-validation/x-lt-confidence.js +177 -0
- package/build/shared/form-validation/x-lt-help.d.ts +1 -1
- package/build/shared/form-validation/x-lt-help.js +1 -1
- package/build/system/mcp-servers/admin/escalations.js +4 -2
- package/build/system/mcp-servers/admin/labels-schemas.d.ts +4 -4
- package/build/system/mcp-servers/admin/schemas.d.ts +111 -70
- package/build/system/mcp-servers/admin/schemas.js +8 -3
- package/build/system/mcp-servers/human-queue-files.d.ts +8 -0
- package/build/system/mcp-servers/human-queue-files.js +32 -0
- package/build/system/mcp-servers/human-queue-schemas.d.ts +7 -0
- package/build/system/mcp-servers/human-queue-schemas.js +4 -1
- package/build/system/mcp-servers/human-queue.d.ts +1 -0
- package/build/system/mcp-servers/human-queue.js +23 -16
- package/build/system/seed/tool-manifests-admin.js +1 -1
- package/build/system/seed/tool-manifests-escalation.js +13 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/analytics.d.ts +14 -3
- package/build/types/analytics.js +3 -1
- package/build/types/escalation.d.ts +34 -0
- package/build/types/escalation.js +72 -1
- package/build/types/index.d.ts +4 -4
- package/build/types/index.js +5 -1
- package/dashboard/dist/assets/{AdminDashboard-BafKaq50.js → AdminDashboard-C25co77C.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-BafKaq50.js.map → AdminDashboard-C25co77C.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-CFHf31DT.js → AgentConfigPage-CsCpI15j.js} +5 -5
- package/dashboard/dist/assets/{AgentConfigPage-CFHf31DT.js.map → AgentConfigPage-CsCpI15j.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-CEvz5rJr.js → AgentDetailPage-ByaepsB5.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-CEvz5rJr.js.map → AgentDetailPage-ByaepsB5.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-DjQaio0O.js → AgentsPage-ByHU42SO.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-DjQaio0O.js.map → AgentsPage-ByHU42SO.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-UB03VTJx.js → AvailableEscalationsPage--o6qcz7-.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-UB03VTJx.js.map → AvailableEscalationsPage--o6qcz7-.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-C7MNWOF7.js → BotPicker-B3y3H3fs.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-C7MNWOF7.js.map → BotPicker-B3y3H3fs.js.map} +1 -1
- package/dashboard/dist/assets/{BulkAssignModal-h5fX-_cV.js → BulkAssignModal-DMNIkIn6.js} +2 -2
- package/dashboard/dist/assets/{BulkAssignModal-h5fX-_cV.js.map → BulkAssignModal-DMNIkIn6.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-BIzDl-ZT.js → CapabilitiesPage-BekfKHlk.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-BIzDl-ZT.js.map → CapabilitiesPage-BekfKHlk.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-B5TivtEg.js → CollapsibleSection-BAteHgBG.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-B5TivtEg.js.map → CollapsibleSection-BAteHgBG.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CB4nKePb.js → ConfirmDeleteModal-BNY287W9.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CB4nKePb.js.map → ConfirmDeleteModal-BNY287W9.js.map} +1 -1
- package/dashboard/dist/assets/{ConnectedAppsPage-B3S5gVWw.js → ConnectedAppsPage-LLiiH3da.js} +2 -2
- package/dashboard/dist/assets/{ConnectedAppsPage-B3S5gVWw.js.map → ConnectedAppsPage-LLiiH3da.js.map} +1 -1
- package/dashboard/dist/assets/{CountdownTimer-BHVIq3kA.js → CountdownTimer-DBLURjxh.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-BHVIq3kA.js.map → CountdownTimer-DBLURjxh.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialConfirmModal-w0AGmCIe.js → CredentialConfirmModal-BqpY3yen.js} +2 -2
- package/dashboard/dist/assets/{CredentialConfirmModal-w0AGmCIe.js.map → CredentialConfirmModal-BqpY3yen.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-BtCGBJrT.js → CredentialsPage-CW3_dbm2.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-BtCGBJrT.js.map → CredentialsPage-CW3_dbm2.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-BG1rZK-5.js → CronLabel-CR6DiZZr.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-BG1rZK-5.js.map → CronLabel-CR6DiZZr.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-FjFhx0SE.js → DataTable-C-IlbLhY.js} +2 -2
- package/dashboard/dist/assets/{DataTable-FjFhx0SE.js.map → DataTable-C-IlbLhY.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-D8ZVdEb5.js → DropZone-CHmz59w4.js} +2 -2
- package/dashboard/dist/assets/{DropZone-D8ZVdEb5.js.map → DropZone-CHmz59w4.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-l4m8Yvfv.js → ElapsedCell-CEapQvgU.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-l4m8Yvfv.js.map → ElapsedCell-CEapQvgU.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-BOHlIaxF.js → EntityTimelinePanel-DqD_BpJM.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-BOHlIaxF.js.map → EntityTimelinePanel-DqD_BpJM.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-BotlwlX3.js → EscalationListSchemaPage-DDKcrVbb.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-BotlwlX3.js.map → EscalationListSchemaPage-DDKcrVbb.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-CfZSVOSD.js → EscalationSchemaPage-BZHZfJiQ.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-CfZSVOSD.js.map → EscalationSchemaPage-BZHZfJiQ.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-CCKpuRBU.js → EscalationTimeline-Dv0XUgQX.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-CCKpuRBU.js.map → EscalationTimeline-Dv0XUgQX.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-cpTzPHiW.js → EscalationTitleSelect-BN7D52wT.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-cpTzPHiW.js.map → EscalationTitleSelect-BN7D52wT.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DS-nK0qV.js → EscalationsOverview-DE6EPkhT.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DS-nK0qV.js.map → EscalationsOverview-DE6EPkhT.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-UfebhJf0.js → EventTable-CiV62txY.js} +2 -2
- package/dashboard/dist/assets/{EventTable-UfebhJf0.js.map → EventTable-CiV62txY.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-newA5l-X.js → FilterBar-WyNQPyQ1.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-newA5l-X.js.map → FilterBar-WyNQPyQ1.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-6SCDyQcK.js → GraphInvokePage--gn48yUD.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-6SCDyQcK.js.map → GraphInvokePage--gn48yUD.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-BEc-XdKj.js → HomePage-IR_jgBE8.js} +2 -2
- package/dashboard/dist/assets/{HomePage-BEc-XdKj.js.map → HomePage-IR_jgBE8.js.map} +1 -1
- package/dashboard/dist/assets/{LabelJobsPage-BO50zXT5.js → LabelJobsPage-C8LSts4O.js} +2 -2
- package/dashboard/dist/assets/{LabelJobsPage-BO50zXT5.js.map → LabelJobsPage-C8LSts4O.js.map} +1 -1
- package/dashboard/dist/assets/{LinePage-NYxJQ-ex.js → LinePage-CS7uUv00.js} +2 -2
- package/dashboard/dist/assets/{LinePage-NYxJQ-ex.js.map → LinePage-CS7uUv00.js.map} +1 -1
- package/dashboard/dist/assets/{LinesPage-RbWTaQRh.js → LinesPage-CJprjG39.js} +3 -3
- package/dashboard/dist/assets/{LinesPage-RbWTaQRh.js.map → LinesPage-CJprjG39.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-B-E9-toh.js → ListToolbar-YP3uwvXC.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-B-E9-toh.js.map → ListToolbar-YP3uwvXC.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-Shcf9QhZ.js → McpOverview-Ce-m2JON.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-Shcf9QhZ.js.map → McpOverview-Ce-m2JON.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-D8kmjy2v.js → McpQueryDetailPage-CtnUqO1v.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-D8kmjy2v.js.map → McpQueryDetailPage-CtnUqO1v.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-ck-o5m8A.js → McpQueryPage-C-lqUPlg.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-ck-o5m8A.js.map → McpQueryPage-C-lqUPlg.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-BJKkM9-3.js → McpRunDetailPage-MnIe0hwz.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-BJKkM9-3.js.map → McpRunDetailPage-MnIe0hwz.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-DqhHfD5G.js → McpRunsPage-CpYLXVPF.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-DqhHfD5G.js.map → McpRunsPage-CpYLXVPF.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill--uIaGtrN.js → NamespacePill-DilSgLyE.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill--uIaGtrN.js.map → NamespacePill-DilSgLyE.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-D6B9Vv__.js → OperationsPage-xe6bAwaq.js} +2 -2
- package/dashboard/dist/assets/{OperationsPage-D6B9Vv__.js.map → OperationsPage-xe6bAwaq.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-CIH1cxjQ.js → OperatorDashboard-Cm9_C0EP.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-CIH1cxjQ.js.map → OperatorDashboard-Cm9_C0EP.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-DClJ33fV.js → PageHeader-B7SOvLT8.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-DClJ33fV.js.map → PageHeader-B7SOvLT8.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-C-TrbKQL.js → PageHeaderWithStats-DWKap7gs.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-C-TrbKQL.js.map → PageHeaderWithStats-DWKap7gs.js.map} +1 -1
- package/dashboard/dist/assets/{PersonaDetailPage-DjvfyIph.js → PersonaDetailPage-CvstNkh3.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-DjvfyIph.js.map → PersonaDetailPage-CvstNkh3.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-D7ryA8Vc.js → PersonasPage-ba1KeInW.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-D7ryA8Vc.js.map → PersonasPage-ba1KeInW.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-D3ybr0mo.js → PortalPage-GDgG88TM.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-D3ybr0mo.js.map → PortalPage-GDgG88TM.js.map} +1 -1
- package/dashboard/dist/assets/{PrintLabelsPanel-D0HF5x8b.js → PrintLabelsPanel-BkUN00Qd.js} +2 -2
- package/dashboard/dist/assets/{PrintLabelsPanel-D0HF5x8b.js.map → PrintLabelsPanel-BkUN00Qd.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-0xS9EdHe.js → ProcessDetailPage-BKu9_wWv.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-0xS9EdHe.js.map → ProcessDetailPage-BKu9_wWv.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-93SMj1Fd.js → ProcessesListPage-BfJYTU_v.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-93SMj1Fd.js.map → ProcessesListPage-BfJYTU_v.js.map} +1 -1
- package/dashboard/dist/assets/ResolverForm-DZmY6wJV.js +8 -0
- package/dashboard/dist/assets/ResolverForm-DZmY6wJV.js.map +1 -0
- package/dashboard/dist/assets/{RoleDetailPage-DlUOJWSB.js → RoleDetailPage-vGeth3ve.js} +3 -3
- package/dashboard/dist/assets/{RoleDetailPage-DlUOJWSB.js.map → RoleDetailPage-vGeth3ve.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-BjD1Qw5y.js → RolePill-KhT-Yehm.js} +2 -2
- package/dashboard/dist/assets/{RolePill-BjD1Qw5y.js.map → RolePill-KhT-Yehm.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-DqhHSvaw.js → RolesPage-CwxHOkqF.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-DqhHSvaw.js.map → RolesPage-CwxHOkqF.js.map} +1 -1
- package/dashboard/dist/assets/{RosterWidget-BrIq61HR.js → RosterWidget-DRVj9xyk.js} +2 -2
- package/dashboard/dist/assets/{RosterWidget-BrIq61HR.js.map → RosterWidget-DRVj9xyk.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-D6zQrCNr.js → RunAsSelector-DvPX3XmA.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-D6zQrCNr.js.map → RunAsSelector-DvPX3XmA.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-B2S9DR2f.js → ScanCodesPage-Cptbe7h8.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-B2S9DR2f.js.map → ScanCodesPage-Cptbe7h8.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-gpxKN-pL.js → ScanSchemeDetailPage-DquNJ7Or.js} +4 -4
- package/dashboard/dist/assets/{ScanSchemeDetailPage-gpxKN-pL.js.map → ScanSchemeDetailPage-DquNJ7Or.js.map} +1 -1
- package/dashboard/dist/assets/{ScanStationPage-B-UTgXsG.js → ScanStationPage-DaRfGGa8.js} +2 -2
- package/dashboard/dist/assets/{ScanStationPage-B-UTgXsG.js.map → ScanStationPage-DaRfGGa8.js.map} +1 -1
- package/dashboard/dist/assets/{SchemeMatchFields-BK24aa7K.js → SchemeMatchFields-w-pffi98.js} +2 -2
- package/dashboard/dist/assets/{SchemeMatchFields-BK24aa7K.js.map → SchemeMatchFields-w-pffi98.js.map} +1 -1
- package/dashboard/dist/assets/{ScopeBadge-ofLQ6HW-.js → ScopeBadge-HeuiMJhW.js} +2 -2
- package/dashboard/dist/assets/{ScopeBadge-ofLQ6HW-.js.map → ScopeBadge-HeuiMJhW.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-CgVv7vc_.js → StickyPagination-D6fDHCcJ.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CgVv7vc_.js.map → StickyPagination-D6fDHCcJ.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-B9sxDVw4.js → StreamMessageDetail-BmYVQrzl.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-B9sxDVw4.js.map → StreamMessageDetail-BmYVQrzl.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-DQc0CYSL.js → SwimlaneTimeline-KCqA-PeL.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-DQc0CYSL.js.map → SwimlaneTimeline-KCqA-PeL.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-47qVYzke.js → TagInput-CZBAu1Hy.js} +2 -2
- package/dashboard/dist/assets/{TagInput-47qVYzke.js.map → TagInput-CZBAu1Hy.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-D6VOsA1f.js → TaskDetailPage-WtVv2z7T.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-D6VOsA1f.js.map → TaskDetailPage-WtVv2z7T.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-C5KmdXAl.js → TaskQueuePill-DWGn3CWx.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-C5KmdXAl.js.map → TaskQueuePill-DWGn3CWx.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DG8hvO8G.js → TasksListPage-DMYQNDIw.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DG8hvO8G.js.map → TasksListPage-DMYQNDIw.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-CL02EhFi.js → TimeAgo-BkY4lahi.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-CL02EhFi.js.map → TimeAgo-BkY4lahi.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-BE7oKVJg.js → TimestampCell-BBPb9TI2.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-BE7oKVJg.js.map → TimestampCell-BBPb9TI2.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-Cp9Drk1s.js → ToolPill-B2aRk0o1.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-Cp9Drk1s.js.map → ToolPill-B2aRk0o1.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-CRecLh6S.js → ToolTestPanel-CNMbmymK.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-CRecLh6S.js.map → ToolTestPanel-CNMbmymK.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-QzkinTfN.js → TopicDetailPage-CodBRylU.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-QzkinTfN.js.map → TopicDetailPage-CodBRylU.js.map} +1 -1
- package/dashboard/dist/assets/TopicsPage-BtD8jTU7.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-D8dW6J65.js.map → TopicsPage-BtD8jTU7.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-Dw3R_zrl.js → UserName-D6y9AnuY.js} +2 -2
- package/dashboard/dist/assets/{UserName-Dw3R_zrl.js.map → UserName-D6y9AnuY.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BTocv8or.js → WorkflowExecutionPage-BeffqV13.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BTocv8or.js.map → WorkflowExecutionPage-BeffqV13.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-BiLYq__w.js → WorkflowPill-BNm3R4pP.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-BiLYq__w.js.map → WorkflowPill-BNm3R4pP.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-CIPEt3et.js → WorkflowsDashboard-m4Co5diK.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-CIPEt3et.js.map → WorkflowsDashboard-m4Co5diK.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Bj4MJIE-.js → WorkflowsOverview-DNoI9qY8.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Bj4MJIE-.js.map → WorkflowsOverview-DNoI9qY8.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-DMEk5k9-.js → YamlWorkflowDetailPage-8Vpc4Oxy.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-DMEk5k9-.js.map → YamlWorkflowDetailPage-8Vpc4Oxy.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-F2yyyoiB.js → YamlWorkflowsPage-D1JNwDSg.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-F2yyyoiB.js.map → YamlWorkflowsPage-D1JNwDSg.js.map} +1 -1
- package/dashboard/dist/assets/{agents-mSgxEPpI.js → agents-LTHUsfv3.js} +2 -2
- package/dashboard/dist/assets/{agents-mSgxEPpI.js.map → agents-LTHUsfv3.js.map} +1 -1
- package/dashboard/dist/assets/{bots-p4Hp0CV6.js → bots-CQxehfBo.js} +2 -2
- package/dashboard/dist/assets/{bots-p4Hp0CV6.js.map → bots-CQxehfBo.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-D_-I_SXR.js → capabilities-DECTnJrK.js} +2 -2
- package/dashboard/dist/assets/{capabilities-D_-I_SXR.js.map → capabilities-DECTnJrK.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-DjdoQnRU.js → controlplane-Dx20db5g.js} +2 -2
- package/dashboard/dist/assets/{controlplane-DjdoQnRU.js.map → controlplane-Dx20db5g.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-R_IEVQjQ.js → escalation-columns-CVFGUB79.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-R_IEVQjQ.js.map → escalation-columns-CVFGUB79.js.map} +1 -1
- package/dashboard/dist/assets/escalation-items-Bj7bkwWy.js +2 -0
- package/dashboard/dist/assets/escalation-items-Bj7bkwWy.js.map +1 -0
- package/dashboard/dist/assets/index-BD4O-ISx.js +13 -0
- package/dashboard/dist/assets/{index-Dk2KKo0z.js.map → index-BD4O-ISx.js.map} +1 -1
- package/dashboard/dist/assets/{index-D9RAN9sA.js → index-BL8XOMHT.js} +2 -2
- package/dashboard/dist/assets/{index-D9RAN9sA.js.map → index-BL8XOMHT.js.map} +1 -1
- package/dashboard/dist/assets/index-C2vRDf96.js +2 -0
- package/dashboard/dist/assets/{index-C5osluV3.js.map → index-C2vRDf96.js.map} +1 -1
- package/dashboard/dist/assets/{index-DUYAGxwc.js → index-CNgyKRQ8.js} +2 -2
- package/dashboard/dist/assets/{index-DUYAGxwc.js.map → index-CNgyKRQ8.js.map} +1 -1
- package/dashboard/dist/assets/{index-DlJkZ12b.js → index-CdXPbBgs.js} +2 -2
- package/dashboard/dist/assets/{index-DlJkZ12b.js.map → index-CdXPbBgs.js.map} +1 -1
- package/dashboard/dist/assets/{index-BuCEhhnl.js → index-CnBUFCV7.js} +2 -2
- package/dashboard/dist/assets/{index-BuCEhhnl.js.map → index-CnBUFCV7.js.map} +1 -1
- package/dashboard/dist/assets/index-CoLciFzq.css +1 -0
- package/dashboard/dist/assets/{index-D-FYj9jT.js → index-D_TSx-k_.js} +2 -2
- package/dashboard/dist/assets/{index-D-FYj9jT.js.map → index-D_TSx-k_.js.map} +1 -1
- package/dashboard/dist/assets/{index-C_dAJUzh.js → index-Do9Y6Fgt.js} +16 -16
- package/dashboard/dist/assets/index-Do9Y6Fgt.js.map +1 -0
- package/dashboard/dist/assets/{index-D6K_IgCz.js → index-Dq1zjilj.js} +2 -2
- package/dashboard/dist/assets/{index-D6K_IgCz.js.map → index-Dq1zjilj.js.map} +1 -1
- package/dashboard/dist/assets/{index-BEMdD58x.js → index-Dz4LSzA2.js} +2 -2
- package/dashboard/dist/assets/{index-BEMdD58x.js.map → index-Dz4LSzA2.js.map} +1 -1
- package/dashboard/dist/assets/{index-D7L_VoBD.js → index-g1MmARVR.js} +2 -2
- package/dashboard/dist/assets/{index-D7L_VoBD.js.map → index-g1MmARVR.js.map} +1 -1
- package/dashboard/dist/assets/{index-BxbQmeqh.js → index-qEd4FVmN.js} +2 -2
- package/dashboard/dist/assets/{index-BxbQmeqh.js.map → index-qEd4FVmN.js.map} +1 -1
- package/dashboard/dist/assets/index-v4rQ8ctJ.js +3 -0
- package/dashboard/dist/assets/index-v4rQ8ctJ.js.map +1 -0
- package/dashboard/dist/assets/{knowledge-DSsPTqkK.js → knowledge-CT1I1t1S.js} +2 -2
- package/dashboard/dist/assets/{knowledge-DSsPTqkK.js.map → knowledge-CT1I1t1S.js.map} +1 -1
- package/dashboard/dist/assets/{machines-DSgGtqqr.js → machines-Dsuw-l1y.js} +2 -2
- package/dashboard/dist/assets/{machines-DSgGtqqr.js.map → machines-Dsuw-l1y.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-Cg-_uLw8.js → mcp-C3o5wzO8.js} +2 -2
- package/dashboard/dist/assets/{mcp-Cg-_uLw8.js.map → mcp-C3o5wzO8.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-DQombEK_.js → mcp-query-IvkIG7gH.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-DQombEK_.js.map → mcp-query-IvkIG7gH.js.map} +1 -1
- package/dashboard/dist/assets/pdf-CcZYcL52.js +13 -0
- package/dashboard/dist/assets/pdf-CcZYcL52.js.map +1 -0
- package/dashboard/dist/assets/pdf.worker.min-DgRcL-GR.js +2 -0
- package/dashboard/dist/assets/pdf.worker.min-DgRcL-GR.js.map +1 -0
- package/dashboard/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/dashboard/dist/assets/{personas-DYrcoVBu.js → personas-zWlWjj6j.js} +2 -2
- package/dashboard/dist/assets/{personas-DYrcoVBu.js.map → personas-zWlWjj6j.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-wdb4xsey.js → pipelines-BKNvBMdf.js} +2 -2
- package/dashboard/dist/assets/{pipelines-wdb4xsey.js.map → pipelines-BKNvBMdf.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-Bil7gvm9.js → tasks-BQSO3Sjv.js} +2 -2
- package/dashboard/dist/assets/{tasks-Bil7gvm9.js.map → tasks-BQSO3Sjv.js.map} +1 -1
- package/dashboard/dist/assets/{topics-wBqaVhRR.js → topics-Dr_1TtUM.js} +2 -2
- package/dashboard/dist/assets/{topics-wBqaVhRR.js.map → topics-Dr_1TtUM.js.map} +1 -1
- package/dashboard/dist/assets/{useContainerWidth-DSLp1gEm.js → useContainerWidth-D38m8eub.js} +2 -2
- package/dashboard/dist/assets/{useContainerWidth-DSLp1gEm.js.map → useContainerWidth-D38m8eub.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CwrY8TpV.js → useDebouncedValue-C5ESASfo.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CwrY8TpV.js.map → useDebouncedValue-C5ESASfo.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-Sod_xApz.js → useNamespace-DLLOJRYY.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-Sod_xApz.js.map → useNamespace-DLLOJRYY.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CKLInV3C.js → useYamlActivityEvents-D0XNXli1.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CKLInV3C.js.map → useYamlActivityEvents-D0XNXli1.js.map} +1 -1
- package/dashboard/dist/assets/{validate-CYhW1xMJ.js → validate-Be4GWnJ1.js} +2 -2
- package/dashboard/dist/assets/{validate-CYhW1xMJ.js.map → validate-Be4GWnJ1.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-ed7mYQw4.js → vendor-icons-D48ijXZU.js} +209 -189
- package/dashboard/dist/assets/vendor-icons-D48ijXZU.js.map +1 -0
- package/dashboard/dist/assets/{yaml-workflows-C20qHo3L.js → yaml-workflows-BQpO-G-I.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-C20qHo3L.js.map → yaml-workflows-BQpO-G-I.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/escalations.md +54 -7
- package/docs/api/mcp/admin.md +7 -5
- package/docs/api/mcp/human-queue.md +17 -1
- package/docs/api/sdk/escalations.md +30 -4
- package/docs/api/sdk/files.md +19 -0
- package/docs/cli.md +4 -1
- package/docs/escalation-analytics.md +17 -0
- package/docs/hitl/files.md +104 -0
- package/docs/hitl/x-lt-confidence.md +139 -0
- package/docs/hitl/x-lt-layout.md +19 -0
- package/docs/hitl/x-lt-widget.md +20 -0
- package/docs/hitl-guide.md +6 -0
- package/docs/mcp.md +2 -1
- package/package.json +1 -1
- package/dashboard/dist/assets/ResolverForm-DfogHDzl.js +0 -8
- package/dashboard/dist/assets/ResolverForm-DfogHDzl.js.map +0 -1
- package/dashboard/dist/assets/TopicsPage-D8dW6J65.js +0 -2
- package/dashboard/dist/assets/escalation-items-BGZlJMpk.js +0 -2
- package/dashboard/dist/assets/escalation-items-BGZlJMpk.js.map +0 -1
- package/dashboard/dist/assets/index-BUmz0NMg.css +0 -1
- package/dashboard/dist/assets/index-C5osluV3.js +0 -2
- package/dashboard/dist/assets/index-C_dAJUzh.js.map +0 -1
- package/dashboard/dist/assets/index-Dk2KKo0z.js +0 -13
- package/dashboard/dist/assets/index-FiNThtNU.js +0 -3
- package/dashboard/dist/assets/index-FiNThtNU.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-ed7mYQw4.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeMatchFields-
|
|
1
|
+
{"version":3,"file":"SchemeMatchFields-w-pffi98.js","sources":["../../src/pages/admin/scan-codes/GrantScopeField.tsx","../../src/pages/admin/scan-codes/SchemeMatchFields.tsx"],"sourcesContent":["/** How an identity scheme's badge grant is spent. */\nexport function GrantScopeField({\n value,\n onChange,\n}: {\n value: 'action' | 'subject';\n onChange: (value: 'action' | 'subject') => void;\n}) {\n return (\n <label className=\"block\">\n <span className=\"block text-xs text-text-secondary mb-1\">Grant covers</span>\n <span className=\"block text-2xs text-text-tertiary mb-1\">\n {value === 'subject'\n ? 'One held item: every act on it counts once, and the badge acts on that item only.'\n : 'Each act spends one use.'}\n </span>\n <select value={value} onChange={(e) => onChange(e.target.value as 'action' | 'subject')} className=\"select\">\n <option value=\"action\">Each act</option>\n <option value=\"subject\">One held item</option>\n </select>\n </label>\n );\n}\n","import { compilePattern } from '../../../../../shared/scan-code';\n\nexport type TargetMatch = 'value' | 'member';\n\n/** The patterns textarea's lines as declared expressions. */\nexport function patternLines(text: string): string[] {\n return text.split('\\n').map((line) => line.trim()).filter(Boolean);\n}\n\n/** The first line that does not compile, or null when every line does. */\nfunction invalidPattern(text: string): string | null {\n return patternLines(text).find((p) => !compilePattern(p)) ?? null;\n}\n\n/** True when the patterns text declares at least one expression and every one compiles. */\nexport function patternsValid(text: string): boolean {\n return patternLines(text).length > 0 && invalidPattern(text) === null;\n}\n\n/**\n * How a scheme's target matches rows (one value, or a member of a list) and,\n * for pattern encoding, the expressions it reads and their order against gtin.\n */\nexport function SchemeMatchFields({\n encoding,\n isIdentity,\n targetMatch,\n onTargetMatch,\n patternsText,\n onPatternsText,\n precedesGtin,\n onPrecedesGtin,\n}: {\n encoding: string;\n isIdentity: boolean;\n targetMatch: TargetMatch;\n onTargetMatch: (value: TargetMatch) => void;\n patternsText: string;\n onPatternsText: (value: string) => void;\n precedesGtin: boolean | null;\n onPrecedesGtin: (value: boolean | null) => void;\n}) {\n const invalid = invalidPattern(patternsText);\n return (\n <>\n {!isIdentity && (\n <label className=\"block\">\n <span className=\"block text-xs text-text-secondary mb-1\">Target holds</span>\n <span className=\"block text-2xs text-text-tertiary mb-1\">\n {targetMatch === 'member'\n ? 'A list: a row matches when its list contains the scanned value.'\n : 'One value: a row matches when it equals the scanned value.'}\n </span>\n <select value={targetMatch} onChange={(e) => onTargetMatch(e.target.value as TargetMatch)} className=\"select\">\n <option value=\"value\">One value</option>\n <option value=\"member\">A list of values</option>\n </select>\n </label>\n )}\n {encoding === 'pattern' && (\n <>\n <label className=\"block flex-1 min-w-[20rem]\">\n <span className=\"block text-xs text-text-secondary mb-1\">Patterns <span className=\"text-status-error\">*</span></span>\n <span className=\"block text-2xs text-text-tertiary mb-1\">\n One regular expression per line, matched against the whole code (up to 10).\n </span>\n <textarea\n value={patternsText}\n onChange={(e) => onPatternsText(e.target.value)}\n rows={3}\n className=\"input w-full font-mono\"\n placeholder={'1Z[0-9A-Z]{16}\\n[0-9]{12}'}\n />\n {invalid && <span className=\"block text-2xs text-status-error mt-1\">Not a valid expression: {invalid}</span>}\n </label>\n <label className=\"block\">\n <span className=\"block text-xs text-text-secondary mb-1\">Digits-only codes</span>\n <span className=\"block text-2xs text-text-tertiary mb-1\">\n Which scheme reads a digits-only code that a manufacturer barcode scheme also reads.\n Required while a manufacturer barcode scheme is enabled.\n </span>\n <select\n value={precedesGtin === null ? '' : precedesGtin ? 'pattern' : 'gtin'}\n onChange={(e) => onPrecedesGtin(e.target.value === '' ? null : e.target.value === 'pattern')}\n className=\"select\"\n >\n <option value=\"\">Not declared</option>\n <option value=\"gtin\">Manufacturer barcode first</option>\n <option value=\"pattern\">These patterns first</option>\n </select>\n </label>\n </>\n )}\n </>\n );\n}\n"],"names":["GrantScopeField","value","onChange","jsxs","jsx","e","patternLines","text","line","invalidPattern","p","compilePattern","patternsValid","SchemeMatchFields","encoding","isIdentity","targetMatch","onTargetMatch","patternsText","onPatternsText","precedesGtin","onPrecedesGtin","invalid","Fragment"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"./vendor-query-DvWWuNIB.js";import{E as l,ad as t}from"./vendor-icons-
|
|
2
|
-
//# sourceMappingURL=ScopeBadge-
|
|
1
|
+
import{j as e}from"./vendor-query-DvWWuNIB.js";import{E as l,ad as t}from"./vendor-icons-D48ijXZU.js";const i={self:"Self",all:"All"},c={none:"None",self:"Self",all:"All"};function m({read:s,write:a,className:n=""}){return e.jsxs("span",{className:`inline-flex items-center gap-2.5 text-2xs text-text-tertiary ${n}`,children:[e.jsxs("span",{className:"inline-flex items-center gap-1",title:"Can see",children:[e.jsx(l,{className:"w-3 h-3 shrink-0 opacity-70"}),e.jsx("span",{className:"w-7",children:i[s]})]}),e.jsxs("span",{className:"inline-flex items-center gap-1",title:"Can act on",children:[e.jsx(t,{className:"w-3 h-3 shrink-0 opacity-70"}),e.jsx("span",{className:"w-7",children:c[a]})]})]})}export{m as S};
|
|
2
|
+
//# sourceMappingURL=ScopeBadge-HeuiMJhW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeBadge-
|
|
1
|
+
{"version":3,"file":"ScopeBadge-HeuiMJhW.js","sources":["../../src/components/common/display/ScopeBadge.tsx"],"sourcesContent":["import { Eye, Pencil } from 'lucide-react';\nimport type { LTReadScope, LTWriteScope } from '../../../api/types';\n\nconst SEE: Record<LTReadScope, string> = { self: 'Self', all: 'All' };\nconst ACT: Record<LTWriteScope, string> = { none: 'None', self: 'Self', all: 'All' };\n\n/**\n * Renders a member's work-surface scope as two aligned facts rather than a\n * sentence: what they can **see** (Eye) and what they can **act on** (Pencil).\n * The value cells are fixed-width so `All` / `Self` / `None` line up in a column\n * across stacked rows.\n */\nexport function ScopeBadge({\n read,\n write,\n className = '',\n}: {\n read: LTReadScope;\n write: LTWriteScope;\n className?: string;\n}) {\n return (\n <span className={`inline-flex items-center gap-2.5 text-2xs text-text-tertiary ${className}`}>\n <span className=\"inline-flex items-center gap-1\" title=\"Can see\">\n <Eye className=\"w-3 h-3 shrink-0 opacity-70\" />\n <span className=\"w-7\">{SEE[read]}</span>\n </span>\n <span className=\"inline-flex items-center gap-1\" title=\"Can act on\">\n <Pencil className=\"w-3 h-3 shrink-0 opacity-70\" />\n <span className=\"w-7\">{ACT[write]}</span>\n </span>\n </span>\n );\n}\n"],"names":["SEE","ACT","ScopeBadge","read","write","className","jsxs","jsx","Eye","Pencil"],"mappings":"sGAGA,MAAMA,EAAmC,CAAE,KAAM,OAAQ,IAAK,KAAA,EACxDC,EAAoC,CAAE,KAAM,OAAQ,KAAM,OAAQ,IAAK,KAAA,EAQtE,SAASC,EAAW,CACzB,KAAAC,EACA,MAAAC,EACA,UAAAC,EAAY,EACd,EAIG,CACD,OACEC,EAAAA,KAAC,OAAA,CAAK,UAAW,gEAAgED,CAAS,GACxF,SAAA,CAAAC,EAAAA,KAAC,OAAA,CAAK,UAAU,iCAAiC,MAAM,UACrD,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAI,UAAU,6BAAA,CAA8B,QAC5C,OAAA,CAAK,UAAU,MAAO,SAAAR,EAAIG,CAAI,CAAA,CAAE,CAAA,EACnC,EACAG,EAAAA,KAAC,OAAA,CAAK,UAAU,iCAAiC,MAAM,aACrD,SAAA,CAAAC,EAAAA,IAACE,EAAA,CAAO,UAAU,6BAAA,CAA8B,QAC/C,OAAA,CAAK,UAAU,MAAO,SAAAR,EAAIG,CAAK,CAAA,CAAE,CAAA,CAAA,CACpC,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t}from"./vendor-query-DvWWuNIB.js";import{
|
|
2
|
-
//# sourceMappingURL=StickyPagination-
|
|
1
|
+
import{j as t}from"./vendor-query-DvWWuNIB.js";import{bb as i}from"./index-Do9Y6Fgt.js";const x=[10,25,50,100];function u({page:e,totalPages:r,onPageChange:c,total:a,pageSize:n,onPageSizeChange:o}){if(a===0)return null;const d=(e-1)*n+1,l=Math.min(e*n,a);return t.jsxs("div",{className:"flex items-center justify-between pt-4",children:[t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("p",{className:"text-xs text-text-tertiary",children:[i(d),"–",i(l)," of ",i(a)]}),o&&t.jsx("select",{value:n,onChange:s=>o(parseInt(s.target.value)),className:"select text-xs py-1",children:x.map(s=>t.jsxs("option",{value:s,children:[s," / page"]},s))})]}),r>1&&t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("button",{onClick:()=>c(e-1),disabled:e<=1,className:"px-4 py-2 text-xs font-medium text-accent hover:text-accent-hover hover:bg-surface-hover transition-colors rounded-[var(--lt-radius-field)] disabled:opacity-30 disabled:text-text-tertiary disabled:cursor-not-allowed disabled:hover:bg-transparent",children:"Previous"}),t.jsxs("span",{className:"px-3 text-xs text-text-secondary tabular-nums",children:[e," / ",r]}),t.jsx("button",{onClick:()=>c(e+1),disabled:e>=r,className:"px-4 py-2 text-xs font-medium text-accent hover:text-accent-hover hover:bg-surface-hover transition-colors rounded-[var(--lt-radius-field)] disabled:opacity-30 disabled:text-text-tertiary disabled:cursor-not-allowed disabled:hover:bg-transparent",children:"Next"})]})]})}function f(e){return e.total===0?null:t.jsx("div",{className:"sticky bottom-0 z-20 bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-page-x px-page-x pt-2 pb-4",children:t.jsx(u,{...e})})}export{f as S};
|
|
2
|
+
//# sourceMappingURL=StickyPagination-D6fDHCcJ.js.map
|
package/dashboard/dist/assets/{StickyPagination-CgVv7vc_.js.map → StickyPagination-D6fDHCcJ.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyPagination-
|
|
1
|
+
{"version":3,"file":"StickyPagination-D6fDHCcJ.js","sources":["../../src/components/common/data/Pagination.tsx","../../src/components/common/data/StickyPagination.tsx"],"sourcesContent":["import { formatCount } from '../../../lib/format';\n\nconst PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\ninterface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n total: number;\n pageSize: number;\n onPageSizeChange?: (size: number) => void;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n total,\n pageSize,\n onPageSizeChange,\n}: PaginationProps) {\n if (total === 0) return null;\n\n const start = (page - 1) * pageSize + 1;\n const end = Math.min(page * pageSize, total);\n\n return (\n <div className=\"flex items-center justify-between pt-4\">\n <div className=\"flex items-center gap-4\">\n <p className=\"text-xs text-text-tertiary\">\n {formatCount(start)}–{formatCount(end)} of {formatCount(total)}\n </p>\n {onPageSizeChange && (\n <select\n value={pageSize}\n onChange={(e) => onPageSizeChange(parseInt(e.target.value))}\n className=\"select text-xs py-1\"\n >\n {PAGE_SIZE_OPTIONS.map((size) => (\n <option key={size} value={size}>\n {size} / page\n </option>\n ))}\n </select>\n )}\n </div>\n {totalPages > 1 && (\n <div className=\"flex items-center gap-1\">\n <button\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n className=\"px-4 py-2 text-xs font-medium text-accent hover:text-accent-hover hover:bg-surface-hover transition-colors rounded-[var(--lt-radius-field)] disabled:opacity-30 disabled:text-text-tertiary disabled:cursor-not-allowed disabled:hover:bg-transparent\"\n >\n Previous\n </button>\n <span className=\"px-3 text-xs text-text-secondary tabular-nums\">\n {page} / {totalPages}\n </span>\n <button\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n className=\"px-4 py-2 text-xs font-medium text-accent hover:text-accent-hover hover:bg-surface-hover transition-colors rounded-[var(--lt-radius-field)] disabled:opacity-30 disabled:text-text-tertiary disabled:cursor-not-allowed disabled:hover:bg-transparent\"\n >\n Next\n </button>\n </div>\n )}\n </div>\n );\n}\n","import { Pagination } from './Pagination';\n\ninterface StickyPaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n total: number;\n pageSize: number;\n onPageSizeChange?: (size: number) => void;\n}\n\nexport function StickyPagination(props: StickyPaginationProps) {\n if (props.total === 0) return null;\n\n return (\n <div className=\"sticky bottom-0 z-20 bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-page-x px-page-x pt-2 pb-4\">\n <Pagination {...props} />\n </div>\n );\n}\n"],"names":["PAGE_SIZE_OPTIONS","Pagination","page","totalPages","onPageChange","total","pageSize","onPageSizeChange","start","end","jsxs","formatCount","jsx","e","size","StickyPagination","props"],"mappings":"wFAEA,MAAMA,EAAoB,CAAC,GAAI,GAAI,GAAI,GAAG,EAWnC,SAASC,EAAW,CACzB,KAAAC,EACA,WAAAC,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,iBAAAC,CACF,EAAoB,CAClB,GAAIF,IAAU,EAAG,OAAO,KAExB,MAAMG,GAASN,EAAO,GAAKI,EAAW,EAChCG,EAAM,KAAK,IAAIP,EAAOI,EAAUD,CAAK,EAE3C,OACEK,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,KAAC,IAAA,CAAE,UAAU,6BACV,SAAA,CAAAC,EAAYH,CAAK,EAAE,IAAQG,EAAYF,CAAG,EAAE,OAAKE,EAAYN,CAAK,CAAA,EACrE,EACCE,GACCK,EAAAA,IAAC,SAAA,CACC,MAAON,EACP,SAAWO,GAAMN,EAAiB,SAASM,EAAE,OAAO,KAAK,CAAC,EAC1D,UAAU,sBAET,WAAkB,IAAKC,GACtBJ,OAAC,SAAA,CAAkB,MAAOI,EACvB,SAAA,CAAAA,EAAK,SAAA,CAAA,EADKA,CAEb,CACD,CAAA,CAAA,CACH,EAEJ,EACCX,EAAa,GACZO,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAE,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMR,EAAaF,EAAO,CAAC,EACpC,SAAUA,GAAQ,EAClB,UAAU,wPACX,SAAA,UAAA,CAAA,EAGDQ,EAAAA,KAAC,OAAA,CAAK,UAAU,gDACb,SAAA,CAAAR,EAAK,MAAIC,CAAA,EACZ,EACAS,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMR,EAAaF,EAAO,CAAC,EACpC,SAAUA,GAAQC,EAClB,UAAU,wPACX,SAAA,MAAA,CAAA,CAED,CAAA,CACF,CAAA,EAEJ,CAEJ,CC1DO,SAASY,EAAiBC,EAA8B,CAC7D,OAAIA,EAAM,QAAU,EAAU,KAG5BJ,MAAC,OAAI,UAAU,oHACb,eAACX,EAAA,CAAY,GAAGe,EAAO,CAAA,CACzB,CAEJ"}
|
package/dashboard/dist/assets/{StreamMessageDetail-B9sxDVw4.js → StreamMessageDetail-BmYVQrzl.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as i,j as a}from"./vendor-query-DvWWuNIB.js";import{m as c,S as n,J as o,g as x}from"./index-
|
|
2
|
-
//# sourceMappingURL=StreamMessageDetail-
|
|
1
|
+
import{u as i,j as a}from"./vendor-query-DvWWuNIB.js";import{m as c,S as n,J as o,g as x}from"./index-Do9Y6Fgt.js";import{Y as u}from"./vendor-icons-D48ijXZU.js";function j(e){const t=new URLSearchParams;return t.set("namespace",e.namespace),t.set("source",e.source),e.limit&&t.set("limit",String(e.limit)),e.offset&&t.set("offset",String(e.offset)),e.sort_by&&t.set("sort_by",e.sort_by),e.order&&t.set("order",e.order),e.status&&t.set("status",e.status),e.stream_name&&t.set("stream_name",e.stream_name),e.msg_type&&t.set("msg_type",e.msg_type),e.topic&&t.set("topic",e.topic),e.workflow_name&&t.set("workflow_name",e.workflow_name),e.jid&&t.set("jid",e.jid),e.aid&&t.set("aid",e.aid),e.dad&&t.set("dad",e.dad),c(`/controlplane/stream-messages?${t}`)}function _(e,t){return i({queryKey:["controlplane","stream-messages",e],queryFn:()=>j(e),enabled:!!e.namespace&&((t==null?void 0:t.enabled)??!0),staleTime:15e3})}const b={pending:"bg-text-tertiary",claimed:"bg-status-warning",processed:"bg-status-success",dead_lettered:"bg-status-error"},y={pending:"Pending",claimed:"Claimed",processed:"Processed",dead_lettered:"Dead Lettered"},m="inline-block px-1.5 py-0.5 text-2xs font-mono rounded bg-surface-sunken text-text-secondary",N=[{value:"pending",label:"Pending"},{value:"claimed",label:"Claimed"},{value:"processed",label:"Processed"},{value:"dead_lettered",label:"Dead Lettered"}],g=[{value:"engine",label:"Engine"},{value:"worker",label:"Worker"}];function d({label:e,value:t}){return t?a.jsxs("div",{children:[a.jsx("span",{className:"text-text-tertiary",children:e}),a.jsx("div",{className:"mt-0.5",children:a.jsx(x,{date:t,format:"datetime"})})]}):null}function r({label:e,value:t}){return t?a.jsxs("div",{children:[a.jsx("span",{className:"text-text-tertiary",children:e}),a.jsx("p",{className:"text-xs text-text-primary font-mono break-all",children:t})]}):null}function l({label:e,value:t,onFilter:s}){return t?a.jsxs("div",{children:[a.jsx("span",{className:"text-text-tertiary",children:e}),a.jsxs("button",{onClick:()=>s==null?void 0:s(t),className:"flex items-center gap-1 group text-left w-full",title:`Filter by ${e.toLowerCase()}: ${t}`,children:[a.jsx("p",{className:"text-xs text-text-primary font-mono break-all group-hover:text-accent transition-colors",children:t}),a.jsx(u,{className:"w-2.5 h-2.5 shrink-0 text-text-quaternary opacity-0 group-hover:opacity-100 transition-opacity"})]})]}):null}function S({message:e,filters:t}){return e?a.jsxs("div",{className:"space-y-5 text-2xs",children:[a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[a.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${b[e.status]}`}),a.jsx(l,{label:"",value:y[e.status],onFilter:()=>{var s;return(s=t==null?void 0:t.onFilterStatus)==null?void 0:s.call(t,e.status)}}),a.jsx("span",{className:m,children:e.source})]}),a.jsx(l,{label:"",value:e.stream_name,onFilter:()=>{var s;return(s=t==null?void 0:t.onFilterStreamName)==null?void 0:s.call(t,e.stream_name)}}),a.jsxs("p",{className:"text-2xs text-text-tertiary mt-0.5",children:["ID: ",e.id]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(n,{children:"Timestamps"}),a.jsxs("div",{className:"grid grid-cols-1 gap-2",children:[a.jsx(d,{label:"Created",value:e.created_at}),a.jsx(d,{label:"Reserved",value:e.reserved_at}),a.jsx(d,{label:"Processed",value:e.expired_at}),a.jsx(d,{label:"Dead-lettered",value:e.dead_lettered_at})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(n,{children:"Metadata"}),a.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[a.jsx(r,{label:"Priority",value:String(e.priority)}),a.jsx(r,{label:"Retries",value:`${e.retry_attempt} / ${e.max_retry_attempts}`}),a.jsx(r,{label:"Reserved by",value:e.reserved_by})]})]}),e.jid&&a.jsxs("div",{className:"space-y-2",children:[a.jsx(n,{children:"Job"}),a.jsx("div",{className:"grid grid-cols-1 gap-2",children:a.jsx(l,{label:"Job ID",value:e.jid,onFilter:t==null?void 0:t.onFilterJid})})]}),e.source==="worker"&&a.jsxs("div",{className:"space-y-2",children:[a.jsx(n,{children:"Worker Details"}),a.jsxs("div",{className:"grid grid-cols-1 gap-2",children:[a.jsx(l,{label:"Workflow",value:e.workflow_name,onFilter:t==null?void 0:t.onFilterWorkflow}),a.jsx(l,{label:"Activity",value:e.aid,onFilter:t==null?void 0:t.onFilterAid}),a.jsx(r,{label:"Dimension",value:e.dad}),a.jsx(l,{label:"Type",value:e.msg_type,onFilter:t==null?void 0:t.onFilterMsgType}),a.jsx(l,{label:"Topic",value:e.topic,onFilter:t==null?void 0:t.onFilterTopic})]})]}),a.jsx("div",{className:"space-y-2",children:a.jsx(o,{data:e.message,label:"Payload",defaultCollapsed:!1})})]}):null}export{S,g as a,N as b,y as c,b as d,m as e,_ as u};
|
|
2
|
+
//# sourceMappingURL=StreamMessageDetail-BmYVQrzl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamMessageDetail-B9sxDVw4.js","sources":["../../src/api/stream-messages.ts","../../src/pages/admin/streams/constants.ts","../../src/pages/admin/streams/StreamMessageDetail.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport type StreamMessageStatus = 'pending' | 'claimed' | 'processed' | 'dead_lettered';\nexport type StreamMessageSource = 'engine' | 'worker';\n\nexport interface StreamMessage {\n id: string;\n source: StreamMessageSource;\n stream_name: string;\n message: string;\n status: StreamMessageStatus;\n created_at: string;\n reserved_at: string | null;\n reserved_by: string | null;\n expired_at: string | null;\n dead_lettered_at: string | null;\n priority: number;\n visible_at: string | null;\n retry_attempt: number;\n max_retry_attempts: number;\n workflow_name: string | null;\n jid: string | null;\n aid: string | null;\n dad: string | null;\n msg_type: string | null;\n topic: string | null;\n}\n\nexport interface StreamMessagesResponse {\n messages: StreamMessage[];\n total: number;\n}\n\nexport interface StreamMessagesParams {\n namespace: string;\n source: StreamMessageSource;\n limit?: number;\n offset?: number;\n sort_by?: string;\n order?: 'asc' | 'desc';\n status?: StreamMessageStatus | '';\n stream_name?: string;\n msg_type?: string;\n topic?: string;\n workflow_name?: string;\n jid?: string;\n aid?: string;\n dad?: string;\n}\n\n// ── Fetch ───────────────────────────────────────────────────────────────────\n\nfunction fetchStreamMessages(params: StreamMessagesParams) {\n const qs = new URLSearchParams();\n qs.set('namespace', params.namespace);\n qs.set('source', params.source);\n if (params.limit) qs.set('limit', String(params.limit));\n if (params.offset) qs.set('offset', String(params.offset));\n if (params.sort_by) qs.set('sort_by', params.sort_by);\n if (params.order) qs.set('order', params.order);\n if (params.status) qs.set('status', params.status);\n if (params.stream_name) qs.set('stream_name', params.stream_name);\n if (params.msg_type) qs.set('msg_type', params.msg_type);\n if (params.topic) qs.set('topic', params.topic);\n if (params.workflow_name) qs.set('workflow_name', params.workflow_name);\n if (params.jid) qs.set('jid', params.jid);\n if (params.aid) qs.set('aid', params.aid);\n if (params.dad) qs.set('dad', params.dad);\n return apiFetch<StreamMessagesResponse>(`/controlplane/stream-messages?${qs}`);\n}\n\n// ── Hook ────────────────────────────────────────────────────────────────────\n\nexport function useStreamMessages(params: StreamMessagesParams, options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: ['controlplane', 'stream-messages', params],\n queryFn: () => fetchStreamMessages(params),\n enabled: !!params.namespace && (options?.enabled ?? true),\n staleTime: 15_000,\n });\n}\n","import type { StreamMessageStatus } from '../../../api/stream-messages';\n\nexport const STATUS_DOT: Record<StreamMessageStatus, string> = {\n pending: 'bg-text-tertiary',\n claimed: 'bg-status-warning',\n processed: 'bg-status-success',\n dead_lettered: 'bg-status-error',\n};\n\nexport const STATUS_LABEL: Record<StreamMessageStatus, string> = {\n pending: 'Pending',\n claimed: 'Claimed',\n processed: 'Processed',\n dead_lettered: 'Dead Lettered',\n};\n\nexport const SOURCE_BADGE =\n 'inline-block px-1.5 py-0.5 text-2xs font-mono rounded bg-surface-sunken text-text-secondary';\n\nexport const STATUS_OPTIONS = [\n { value: 'pending', label: 'Pending' },\n { value: 'claimed', label: 'Claimed' },\n { value: 'processed', label: 'Processed' },\n { value: 'dead_lettered', label: 'Dead Lettered' },\n];\n\nexport const SOURCE_OPTIONS = [\n { value: 'engine', label: 'Engine' },\n { value: 'worker', label: 'Worker' },\n];\n","import { Filter } from 'lucide-react';\nimport type { StreamMessage } from '../../../api/stream-messages';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { STATUS_DOT, STATUS_LABEL, SOURCE_BADGE } from './constants';\n\nfunction Timestamp({ label, value }: { label: string; value: string | null }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <div className=\"mt-0.5\">\n <DateValue date={value} format=\"datetime\" />\n </div>\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string | null | undefined }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <p className=\"text-xs text-text-primary font-mono break-all\">{value}</p>\n </div>\n );\n}\n\n/** A field value that can be clicked to filter the master list. */\nfunction FilterableField({ label, value, onFilter }: {\n label: string;\n value: string | null | undefined;\n onFilter?: (value: string) => void;\n}) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <button\n onClick={() => onFilter?.(value)}\n className=\"flex items-center gap-1 group text-left w-full\"\n title={`Filter by ${label.toLowerCase()}: ${value}`}\n >\n <p className=\"text-xs text-text-primary font-mono break-all group-hover:text-accent transition-colors\">{value}</p>\n <Filter className=\"w-2.5 h-2.5 shrink-0 text-text-quaternary opacity-0 group-hover:opacity-100 transition-opacity\" />\n </button>\n </div>\n );\n}\n\nexport interface StreamMessageDetailFilters {\n onFilterStatus?: (value: string) => void;\n onFilterStreamName?: (value: string) => void;\n onFilterMsgType?: (value: string) => void;\n onFilterTopic?: (value: string) => void;\n onFilterWorkflow?: (value: string) => void;\n onFilterJid?: (value: string) => void;\n onFilterAid?: (value: string) => void;\n}\n\n/**\n * Standard stream message detail view.\n *\n * This component is the canonical representation of a stream message.\n * Reuse it wherever stream messages need to be displayed — the layout,\n * timestamp formatting (via DateValue with ms/UTC/local tooltip), and\n * payload viewer are the standard.\n */\nexport function StreamMessageDetail({ message, filters }: {\n message: StreamMessage | null;\n filters?: StreamMessageDetailFilters;\n}) {\n if (!message) return null;\n\n return (\n <div className=\"space-y-5 text-2xs\">\n {/* Header */}\n <div>\n <div className=\"flex items-center gap-2 mb-1\">\n <span className={`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${STATUS_DOT[message.status]}`} />\n <FilterableField\n label=\"\"\n value={STATUS_LABEL[message.status]}\n onFilter={() => filters?.onFilterStatus?.(message.status)}\n />\n <span className={SOURCE_BADGE}>{message.source}</span>\n </div>\n <FilterableField\n label=\"\"\n value={message.stream_name}\n onFilter={() => filters?.onFilterStreamName?.(message.stream_name)}\n />\n <p className=\"text-2xs text-text-tertiary mt-0.5\">ID: {message.id}</p>\n </div>\n\n {/* Timestamps */}\n <div className=\"space-y-2\">\n <SectionLabel>Timestamps</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <Timestamp label=\"Created\" value={message.created_at} />\n <Timestamp label=\"Reserved\" value={message.reserved_at} />\n <Timestamp label=\"Processed\" value={message.expired_at} />\n <Timestamp label=\"Dead-lettered\" value={message.dead_lettered_at} />\n </div>\n </div>\n\n {/* Metadata */}\n <div className=\"space-y-2\">\n <SectionLabel>Metadata</SectionLabel>\n <div className=\"grid grid-cols-2 gap-2\">\n <Field label=\"Priority\" value={String(message.priority)} />\n <Field label=\"Retries\" value={`${message.retry_attempt} / ${message.max_retry_attempts}`} />\n <Field label=\"Reserved by\" value={message.reserved_by} />\n </div>\n </div>\n\n {/* Job ID — available on both engine and worker streams */}\n {message.jid && (\n <div className=\"space-y-2\">\n <SectionLabel>Job</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Job ID\" value={message.jid} onFilter={filters?.onFilterJid} />\n </div>\n </div>\n )}\n\n {/* Worker-specific fields — clickable to filter */}\n {message.source === 'worker' && (\n <div className=\"space-y-2\">\n <SectionLabel>Worker Details</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Workflow\" value={message.workflow_name} onFilter={filters?.onFilterWorkflow} />\n <FilterableField label=\"Activity\" value={message.aid} onFilter={filters?.onFilterAid} />\n <Field label=\"Dimension\" value={message.dad} />\n <FilterableField label=\"Type\" value={message.msg_type} onFilter={filters?.onFilterMsgType} />\n <FilterableField label=\"Topic\" value={message.topic} onFilter={filters?.onFilterTopic} />\n </div>\n </div>\n )}\n\n {/* Message payload — fully expanded by default */}\n <div className=\"space-y-2\">\n <JsonViewer data={message.message} label=\"Payload\" defaultCollapsed={false} />\n </div>\n </div>\n );\n}\n"],"names":["fetchStreamMessages","params","qs","apiFetch","useStreamMessages","options","useQuery","STATUS_DOT","STATUS_LABEL","SOURCE_BADGE","STATUS_OPTIONS","SOURCE_OPTIONS","Timestamp","label","value","jsx","DateValue","Field","FilterableField","onFilter","jsxs","Filter","StreamMessageDetail","message","filters","_a","SectionLabel","JsonViewer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StreamMessageDetail-BmYVQrzl.js","sources":["../../src/api/stream-messages.ts","../../src/pages/admin/streams/constants.ts","../../src/pages/admin/streams/StreamMessageDetail.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport type StreamMessageStatus = 'pending' | 'claimed' | 'processed' | 'dead_lettered';\nexport type StreamMessageSource = 'engine' | 'worker';\n\nexport interface StreamMessage {\n id: string;\n source: StreamMessageSource;\n stream_name: string;\n message: string;\n status: StreamMessageStatus;\n created_at: string;\n reserved_at: string | null;\n reserved_by: string | null;\n expired_at: string | null;\n dead_lettered_at: string | null;\n priority: number;\n visible_at: string | null;\n retry_attempt: number;\n max_retry_attempts: number;\n workflow_name: string | null;\n jid: string | null;\n aid: string | null;\n dad: string | null;\n msg_type: string | null;\n topic: string | null;\n}\n\nexport interface StreamMessagesResponse {\n messages: StreamMessage[];\n total: number;\n}\n\nexport interface StreamMessagesParams {\n namespace: string;\n source: StreamMessageSource;\n limit?: number;\n offset?: number;\n sort_by?: string;\n order?: 'asc' | 'desc';\n status?: StreamMessageStatus | '';\n stream_name?: string;\n msg_type?: string;\n topic?: string;\n workflow_name?: string;\n jid?: string;\n aid?: string;\n dad?: string;\n}\n\n// ── Fetch ───────────────────────────────────────────────────────────────────\n\nfunction fetchStreamMessages(params: StreamMessagesParams) {\n const qs = new URLSearchParams();\n qs.set('namespace', params.namespace);\n qs.set('source', params.source);\n if (params.limit) qs.set('limit', String(params.limit));\n if (params.offset) qs.set('offset', String(params.offset));\n if (params.sort_by) qs.set('sort_by', params.sort_by);\n if (params.order) qs.set('order', params.order);\n if (params.status) qs.set('status', params.status);\n if (params.stream_name) qs.set('stream_name', params.stream_name);\n if (params.msg_type) qs.set('msg_type', params.msg_type);\n if (params.topic) qs.set('topic', params.topic);\n if (params.workflow_name) qs.set('workflow_name', params.workflow_name);\n if (params.jid) qs.set('jid', params.jid);\n if (params.aid) qs.set('aid', params.aid);\n if (params.dad) qs.set('dad', params.dad);\n return apiFetch<StreamMessagesResponse>(`/controlplane/stream-messages?${qs}`);\n}\n\n// ── Hook ────────────────────────────────────────────────────────────────────\n\nexport function useStreamMessages(params: StreamMessagesParams, options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: ['controlplane', 'stream-messages', params],\n queryFn: () => fetchStreamMessages(params),\n enabled: !!params.namespace && (options?.enabled ?? true),\n staleTime: 15_000,\n });\n}\n","import type { StreamMessageStatus } from '../../../api/stream-messages';\n\nexport const STATUS_DOT: Record<StreamMessageStatus, string> = {\n pending: 'bg-text-tertiary',\n claimed: 'bg-status-warning',\n processed: 'bg-status-success',\n dead_lettered: 'bg-status-error',\n};\n\nexport const STATUS_LABEL: Record<StreamMessageStatus, string> = {\n pending: 'Pending',\n claimed: 'Claimed',\n processed: 'Processed',\n dead_lettered: 'Dead Lettered',\n};\n\nexport const SOURCE_BADGE =\n 'inline-block px-1.5 py-0.5 text-2xs font-mono rounded bg-surface-sunken text-text-secondary';\n\nexport const STATUS_OPTIONS = [\n { value: 'pending', label: 'Pending' },\n { value: 'claimed', label: 'Claimed' },\n { value: 'processed', label: 'Processed' },\n { value: 'dead_lettered', label: 'Dead Lettered' },\n];\n\nexport const SOURCE_OPTIONS = [\n { value: 'engine', label: 'Engine' },\n { value: 'worker', label: 'Worker' },\n];\n","import { Filter } from 'lucide-react';\nimport type { StreamMessage } from '../../../api/stream-messages';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { STATUS_DOT, STATUS_LABEL, SOURCE_BADGE } from './constants';\n\nfunction Timestamp({ label, value }: { label: string; value: string | null }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <div className=\"mt-0.5\">\n <DateValue date={value} format=\"datetime\" />\n </div>\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string | null | undefined }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <p className=\"text-xs text-text-primary font-mono break-all\">{value}</p>\n </div>\n );\n}\n\n/** A field value that can be clicked to filter the master list. */\nfunction FilterableField({ label, value, onFilter }: {\n label: string;\n value: string | null | undefined;\n onFilter?: (value: string) => void;\n}) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <button\n onClick={() => onFilter?.(value)}\n className=\"flex items-center gap-1 group text-left w-full\"\n title={`Filter by ${label.toLowerCase()}: ${value}`}\n >\n <p className=\"text-xs text-text-primary font-mono break-all group-hover:text-accent transition-colors\">{value}</p>\n <Filter className=\"w-2.5 h-2.5 shrink-0 text-text-quaternary opacity-0 group-hover:opacity-100 transition-opacity\" />\n </button>\n </div>\n );\n}\n\nexport interface StreamMessageDetailFilters {\n onFilterStatus?: (value: string) => void;\n onFilterStreamName?: (value: string) => void;\n onFilterMsgType?: (value: string) => void;\n onFilterTopic?: (value: string) => void;\n onFilterWorkflow?: (value: string) => void;\n onFilterJid?: (value: string) => void;\n onFilterAid?: (value: string) => void;\n}\n\n/**\n * Standard stream message detail view.\n *\n * This component is the canonical representation of a stream message.\n * Reuse it wherever stream messages need to be displayed — the layout,\n * timestamp formatting (via DateValue with ms/UTC/local tooltip), and\n * payload viewer are the standard.\n */\nexport function StreamMessageDetail({ message, filters }: {\n message: StreamMessage | null;\n filters?: StreamMessageDetailFilters;\n}) {\n if (!message) return null;\n\n return (\n <div className=\"space-y-5 text-2xs\">\n {/* Header */}\n <div>\n <div className=\"flex items-center gap-2 mb-1\">\n <span className={`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${STATUS_DOT[message.status]}`} />\n <FilterableField\n label=\"\"\n value={STATUS_LABEL[message.status]}\n onFilter={() => filters?.onFilterStatus?.(message.status)}\n />\n <span className={SOURCE_BADGE}>{message.source}</span>\n </div>\n <FilterableField\n label=\"\"\n value={message.stream_name}\n onFilter={() => filters?.onFilterStreamName?.(message.stream_name)}\n />\n <p className=\"text-2xs text-text-tertiary mt-0.5\">ID: {message.id}</p>\n </div>\n\n {/* Timestamps */}\n <div className=\"space-y-2\">\n <SectionLabel>Timestamps</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <Timestamp label=\"Created\" value={message.created_at} />\n <Timestamp label=\"Reserved\" value={message.reserved_at} />\n <Timestamp label=\"Processed\" value={message.expired_at} />\n <Timestamp label=\"Dead-lettered\" value={message.dead_lettered_at} />\n </div>\n </div>\n\n {/* Metadata */}\n <div className=\"space-y-2\">\n <SectionLabel>Metadata</SectionLabel>\n <div className=\"grid grid-cols-2 gap-2\">\n <Field label=\"Priority\" value={String(message.priority)} />\n <Field label=\"Retries\" value={`${message.retry_attempt} / ${message.max_retry_attempts}`} />\n <Field label=\"Reserved by\" value={message.reserved_by} />\n </div>\n </div>\n\n {/* Job ID — available on both engine and worker streams */}\n {message.jid && (\n <div className=\"space-y-2\">\n <SectionLabel>Job</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Job ID\" value={message.jid} onFilter={filters?.onFilterJid} />\n </div>\n </div>\n )}\n\n {/* Worker-specific fields — clickable to filter */}\n {message.source === 'worker' && (\n <div className=\"space-y-2\">\n <SectionLabel>Worker Details</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Workflow\" value={message.workflow_name} onFilter={filters?.onFilterWorkflow} />\n <FilterableField label=\"Activity\" value={message.aid} onFilter={filters?.onFilterAid} />\n <Field label=\"Dimension\" value={message.dad} />\n <FilterableField label=\"Type\" value={message.msg_type} onFilter={filters?.onFilterMsgType} />\n <FilterableField label=\"Topic\" value={message.topic} onFilter={filters?.onFilterTopic} />\n </div>\n </div>\n )}\n\n {/* Message payload — fully expanded by default */}\n <div className=\"space-y-2\">\n <JsonViewer data={message.message} label=\"Payload\" defaultCollapsed={false} />\n </div>\n </div>\n );\n}\n"],"names":["fetchStreamMessages","params","qs","apiFetch","useStreamMessages","options","useQuery","STATUS_DOT","STATUS_LABEL","SOURCE_BADGE","STATUS_OPTIONS","SOURCE_OPTIONS","Timestamp","label","value","jsx","DateValue","Field","FilterableField","onFilter","jsxs","Filter","StreamMessageDetail","message","filters","_a","SectionLabel","JsonViewer"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t,a as P}from"./vendor-query-DvWWuNIB.js";import{D as q,g as V,J as k,C as B,f as C}from"./index-C_dAJUzh.js";import{S as X}from"./StatusBadge-DHVwxre2.js";import{L as R}from"./vendor-react-_9U4mKFr.js";import{u as T,S as Q}from"./StreamMessageDetail-B9sxDVw4.js";function W(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}function U({event:e}){return t.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[e.attributes.activity_type&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Activity"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.activity_type})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Kind"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.kind})]}),e.duration_ms!==null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Duration"}),t.jsx(q,{ms:e.duration_ms,className:"font-mono text-text-primary"})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Time"}),t.jsx(V,{date:e.event_time,format:"datetime",className:"font-mono text-text-primary"})]}),e.attributes.signal_name&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Signal"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.signal_name})]}),e.attributes.awaited!==void 0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Awaited"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.awaited?"Yes":"No (fire-and-forget)"})]}),e.attributes.timeline_key&&t.jsxs("div",{className:"col-span-2",children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Timeline Key"}),t.jsx("p",{className:"text-xs font-mono text-text-primary truncate",title:e.attributes.timeline_key,children:e.attributes.timeline_key})]}),e.attributes.execution_index!==void 0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Exec Index"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.execution_index})]}),e.attributes.scheduled_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Scheduled Event"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["#",e.attributes.scheduled_event_id]})]}),e.attributes.wait_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Wait Started"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["Event #",e.attributes.wait_event_id]})]}),e.attributes.initiated_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Initiated Event"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["#",e.attributes.initiated_event_id]})]})]})}function Z({event:e,childTask:a}){const n=a?W(a.envelope):null,o=a?W(a.data):null;return!a&&e.attributes.child_workflow_id?t.jsx("div",{className:"border-t border-surface-border pt-3",children:t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"}),t.jsx(R,{to:`/workflows/executions/${e.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:d=>d.stopPropagation(),children:e.attributes.child_workflow_id})]})}):a?t.jsxs("div",{className:"space-y-3 border-t border-surface-border pt-3",children:[t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"}),t.jsx(R,{to:`/workflows/executions/${a.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:d=>d.stopPropagation(),children:a.workflow_id}),t.jsx(X,{status:a.status}),a.completed_at&&t.jsxs("span",{className:"text-2xs text-text-tertiary",children:["Completed ",t.jsx(V,{date:a.completed_at,format:"relative"})]})]}),(n!=null||o!=null)&&t.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-4",children:[n!=null?t.jsx(k,{data:n,label:"Input (Envelope)",variant:"panel"}):t.jsx("div",{}),o!=null?t.jsx(k,{data:o,label:"Output (Result)",variant:"panel"}):t.jsx("div",{})]})]}):null}function tt({event:e,childTask:a}){const n=e.attributes.input,o=e.attributes.result,d=e.category==="signal",i=e.category==="activity",l=e.category==="child_workflow",x=n!==void 0&&(i||l),p=!a&&o!==void 0&&(i||l),u=e.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return x||p?t.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-4",children:[x?t.jsx(k,{data:n,label:"Input",variant:"panel"}):t.jsx("div",{}),p?t.jsx(k,{data:o,label:u,variant:"panel"}):t.jsx("div",{})]}):d&&n!==void 0?t.jsx(k,{data:n,label:"Signal Payload",variant:"panel"}):null}function et(e){if(!e)return null;const a=/^-proxy-(\d+)-$/.exec(e);if(a)return{kind:"proxyIndex",index:parseInt(a[1],10)};if(e.startsWith("-"))return null;const n=e.split("/");return n.length<2?null:{kind:"path",aid:n[n.length-1],dad:`,${n.slice(0,-1).join(",")}`}}function st(e){var a,n;try{const o=JSON.parse(e.message);return{aid:(a=o==null?void 0:o.metadata)==null?void 0:a.aid,dad:(n=o==null?void 0:o.metadata)==null?void 0:n.dad}}catch{return{}}}function at({jid:e,appId:a,event:n}){const[o,d]=P.useState(!1),i=et(n.attributes.timeline_key);return t.jsxs("div",{className:"space-y-2",children:[t.jsxs("button",{onClick:()=>d(l=>!l),className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[t.jsx("span",{className:`transition-transform duration-300 ${o?"rotate-90":""}`,children:"▶"}),"Raw stream message (audit)"]}),t.jsx(B,{open:o,children:o&&t.jsxs("div",{className:"pt-1",children:[!i&&t.jsx("p",{className:"text-2xs text-text-tertiary",children:"No raw stream row maps to this activity."}),(i==null?void 0:i.kind)==="proxyIndex"&&t.jsx(nt,{namespace:a||"durable",jid:e,index:i.index}),(i==null?void 0:i.kind)==="path"&&t.jsx(rt,{namespace:a||"durable",jid:e,aid:i.aid,dad:i.dad})]})})]})}function nt({namespace:e,jid:a,index:n}){var i,l;const o=T({namespace:e,source:"worker",jid:a,aid:"proxyer",sort_by:"created_at",order:"asc",offset:n-1,limit:1}),d=(l=(i=o.data)==null?void 0:i.messages)==null?void 0:l[0];return o.isLoading?t.jsx(Y,{}):o.error?t.jsx(F,{}):d?t.jsx(J,{note:`Proxy activity #${n} (durable) — the worker stream record for this step`,messages:[d]}):t.jsx(z,{label:`proxy activity #${n}`})}function rt({namespace:e,jid:a,aid:n,dad:o}){var m,w,g;const d=T({namespace:e,source:"worker",jid:a,aid:n,dad:o,limit:1}),i=(w=(m=d.data)==null?void 0:m.messages)==null?void 0:w[0],l=d.isFetched&&!i,x=T({namespace:e,source:"engine",jid:a,limit:200},{enabled:l}),p=l?(((g=x.data)==null?void 0:g.messages)??[]).filter(h=>{const y=st(h);return y.aid===n&&y.dad===o}):[],u=!!i,f=i?[i]:p;return d.isLoading||l&&x.isLoading?t.jsx(Y,{}):d.error?t.jsx(F,{}):f.length===0?t.jsx(z,{label:`${n} ${o}`}):t.jsx(J,{note:u?"Worker stream — the function-execution record behind this activity":`Engine stream — control-flow record${f.length>1?`s (${f.length}, one per occurrence)`:" (trigger / hook / cycle)"}`,messages:f})}function J({note:e,messages:a}){return t.jsxs("div",{className:"space-y-3",children:[t.jsx("p",{className:"text-2xs text-text-tertiary",children:e}),a.map(n=>t.jsx("div",{className:"rounded-md bg-surface p-3",children:t.jsx(Q,{message:n})},n.id))]})}const Y=()=>t.jsx("p",{className:"text-2xs text-text-tertiary",children:"Loading stream message…"}),F=()=>t.jsx("p",{className:"text-2xs text-status-error",children:"Failed to load stream message."}),z=({label:e})=>t.jsxs("p",{className:"text-2xs text-text-tertiary",children:["No stream row found for ",t.jsx("span",{className:"font-mono",children:e}),"."]});function it({event:e,childTask:a,pending:n=!1,jid:o,appId:d,onClose:i}){return t.jsxs("div",{className:"p-4 bg-surface-sunken rounded-md space-y-4",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("p",{className:"font-mono font-medium text-sm text-text-primary",children:e.attributes.activity_type??e.attributes.signal_name??e.attributes.child_workflow_id??e.event_type}),n&&t.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-2xs font-medium bg-status-warning/15 text-status-warning",children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded-full dot-ring bg-status-warning animate-pulse"}),"Pending"]})]}),i&&t.jsx("button",{onClick:i,className:"text-text-tertiary hover:text-text-primary text-xs",children:"Close"})]}),t.jsx(U,{event:e}),t.jsx(Z,{event:e,childTask:a}),o&&t.jsx(at,{jid:o,appId:d??"durable",event:e}),t.jsx(tt,{event:e,childTask:a}),e.attributes.failure!==void 0&&t.jsx(k,{data:e.attributes.failure,label:"Failure"}),(()=>{const{kind:l,activity_type:x,result:p,timeline_key:u,execution_index:f,signal_name:m,input:w,child_workflow_id:g,awaited:h,wait_event_id:y,scheduled_event_id:j,initiated_event_id:_,failure:L,trace_id:M,span_id:$,...E}=e.attributes;return Object.keys(E).length>0?t.jsx(k,{data:E,label:"Attributes"}):null})()]})}const N={activity:{bar:"bg-accent",outline:"border border-accent/40 bg-accent/15",text:"text-accent",label:"Activities"},signal:{bar:"bg-status-success-graphic",outline:"border border-status-success-graphic/40 bg-status-success-graphic/15",text:"text-status-success",label:"Signals"},timer:{bar:"bg-status-pending-graphic",outline:"border border-status-pending-graphic/40 bg-status-pending-graphic/15",text:"text-status-warning",label:"Timers"},child_workflow:{bar:"bg-status-claimed-graphic",outline:"border border-status-claimed-graphic/40 bg-status-claimed-graphic/15",text:"text-status-claimed",label:"Child Workflows"}},ot="bg-stripes animate-pulse opacity-70",lt=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function ct(e,a){if(!e||typeof e!="string")return e??"";if(e.length<=a)return e;const n=Math.floor((a-1)/2);return`${e.slice(0,n)}…${e.slice(e.length-n)}`}function dt(e){const a=[],n=new Map,o=new Map;for(const i of e){const l=i.attributes.timeline_key;if(!l)continue;const x=i.event_type;x==="activity_task_scheduled"||x==="timer_started"||x==="child_workflow_execution_started"||x==="signal_wait_started"?n.set(l,i):o.set(l,i)}const d=new Set;for(const i of e){const l=i.attributes.timeline_key;if(l&&d.has(l))continue;l&&d.add(l);const x=l?n.get(l):void 0,p=l?o.get(l):void 0,u=p||x||i,f=u.category,m=String(u.attributes.activity_type||u.attributes.signal_name||u.attributes.child_workflow_id||u.event_type||"unknown"),w=x||u,g=p,h=new Date(w.event_time).getTime();let y=null,j=null,_=!1;g?(y=new Date(g.event_time).getTime(),j=g.duration_ms??y-h):u.duration_ms!==null?(j=u.duration_ms,y=h+j):_=!0,a.push({category:f,name:m||u.event_type,startTime:h,endTime:y,duration:j,eventId:u.event_id,pending:_})}return a}function ht({events:e,childTasks:a,outline:n,jid:o,appId:d}){const[i,l]=P.useState(new Set),[x,p]=P.useState(null),f=e.filter(s=>s.category!=="workflow");if(f.length===0)return null;const m=dt(f);if(m.length===0)return null;const w=Date.now(),g=m.flatMap(s=>{const c=[s.startTime];return s.endTime?c.push(s.endTime):c.push(w),c}),h=Math.min(...g),j=Math.max(...g)-h||1,_=new Map;for(const s of m){const c=`${s.category}:${s.name}`,r=s.startTime-h,v=(s.endTime?s.endTime-h:w-h)-r,S={eventId:s.eventId,startPct:r/j*100,widthPct:Math.max(v/j*100,.5),duration:s.duration,label:`${s.name} — ${s.duration!==null?C(s.duration):"pending"} — ${new Date(s.startTime).toLocaleTimeString()}`,eventTime:new Date(s.startTime).toISOString(),pending:s.pending};_.has(c)||_.set(c,{name:s.name,category:s.category,segments:[]}),_.get(c).segments.push(S)}const L=Array.from(_.values()),M=5,$=Array.from({length:M+1},(s,c)=>({pct:c/M*100,label:C(Math.round(c/M*j))})),E=[...new Set(m.map(s=>s.category))],G=s=>{if(!(a!=null&&a.length))return;const c=s.attributes.activity_type;if(c)return a.find(r=>r.workflow_type===c)},D=s=>{l(c=>{const r=new Set(c);return r.has(s)?r.delete(s):r.add(s),r})},I=m.map(s=>s.eventId),O=I.length>0&&I.every(s=>i.has(s)),H=()=>{l(O?new Set:new Set(I))},A=(s,c)=>{var r,b;return c?ot:n?((r=N[s])==null?void 0:r.outline)??"border-text-tertiary bg-transparent":((b=N[s])==null?void 0:b.bar)??"bg-text-tertiary"},K=s=>{var c;return n?((c=N[s])==null?void 0:c.text)??"text-text-tertiary":"text-text-inverse"};return t.jsxs("div",{className:"px-6 py-6 mb-6",children:[t.jsxs("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Execution Timeline"}),t.jsx("button",{onClick:H,className:"text-2xs text-accent hover:underline",children:O?"Collapse all":"Expand all"}),t.jsxs("div",{className:"flex items-center gap-3 ml-auto",children:[E.map(s=>{var c,r,b;return t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring ${n?`border ${((c=N[s])==null?void 0:c.outline)??"border-text-tertiary"}`:((r=N[s])==null?void 0:r.bar)??"bg-text-tertiary"}`}),t.jsx("span",{className:"text-2xs text-text-tertiary",children:((b=N[s])==null?void 0:b.label)??s})]},s)}),m.some(s=>s.pending)&&t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded-full dot-ring bg-status-warning animate-pulse"}),t.jsx("span",{className:"text-2xs text-text-tertiary",children:"Pending"})]})]})]}),t.jsxs("div",{className:"flex",children:[t.jsx("div",{className:"w-56 shrink-0"}),t.jsx("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:$.map(s=>t.jsx("span",{className:"absolute text-2xs font-mono text-text-tertiary -translate-x-1/2 bottom-1",style:{left:`${s.pct}%`},children:s.label},s.pct))})]}),L.map(s=>{const c=N[s.category];return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center border-b border-surface-border",children:[t.jsxs("div",{className:"w-56 shrink-0 py-3 pr-4 flex items-center gap-2",children:[t.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${(c==null?void 0:c.bar)??"bg-text-tertiary"}`}),t.jsx("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:s.name,children:ct(s.name,28)}),lt.has(s.name)&&t.jsx("span",{className:"shrink-0 text-accent/60",title:"MCP tool interaction",children:t.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})})]}),t.jsxs("div",{className:"flex-1 relative h-10",children:[$.map(r=>t.jsx("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${r.pct}%`}},r.pct)),s.segments.map(r=>{const b=x===r.eventId,v=i.has(r.eventId),S=r.widthPct<3;return t.jsx("div",{className:`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 origin-center ${v?`${A(s.category,r.pending)} ring-2 ring-accent ring-offset-1`:`${A(s.category,r.pending)} hover:opacity-80`}`,style:{left:`${r.startPct}%`,width:`${r.widthPct}%`,minWidth:"4px",...b&&S?{transform:"scaleX(4) scaleY(1.3) translateY(-2px)",zIndex:20,borderRadius:"4px"}:{zIndex:v?10:1}},title:r.label,onClick:()=>D(r.eventId),onMouseEnter:()=>p(r.eventId),onMouseLeave:()=>p(null),children:r.widthPct>8&&t.jsx("span",{className:`absolute inset-0 flex items-center px-1.5 text-2xs font-mono ${K(s.category)} truncate`,children:r.duration!==null?C(r.duration):"pending"})},r.eventId)})]})]}),s.segments.map(r=>{const b=i.has(r.eventId),v=f.find(S=>S.event_id===r.eventId);return t.jsx(B,{open:b,children:v&&t.jsx("div",{className:"py-3",children:t.jsx(it,{event:v,childTask:G(v),pending:r.pending,jid:o,appId:d,onClose:()=>D(v.event_id)})})},r.eventId)})]},`${s.category}:${s.name}`)})]})}export{it as E,ht as S};
|
|
2
|
-
//# sourceMappingURL=SwimlaneTimeline-
|
|
1
|
+
import{j as t,a as P}from"./vendor-query-DvWWuNIB.js";import{D as q,g as V,J as k,C as B,f as C}from"./index-Do9Y6Fgt.js";import{S as X}from"./StatusBadge-DHVwxre2.js";import{L as R}from"./vendor-react-_9U4mKFr.js";import{u as T,S as Q}from"./StreamMessageDetail-BmYVQrzl.js";function W(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}function U({event:e}){return t.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[e.attributes.activity_type&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Activity"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.activity_type})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Kind"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.kind})]}),e.duration_ms!==null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Duration"}),t.jsx(q,{ms:e.duration_ms,className:"font-mono text-text-primary"})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Time"}),t.jsx(V,{date:e.event_time,format:"datetime",className:"font-mono text-text-primary"})]}),e.attributes.signal_name&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Signal"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.signal_name})]}),e.attributes.awaited!==void 0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Awaited"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.awaited?"Yes":"No (fire-and-forget)"})]}),e.attributes.timeline_key&&t.jsxs("div",{className:"col-span-2",children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Timeline Key"}),t.jsx("p",{className:"text-xs font-mono text-text-primary truncate",title:e.attributes.timeline_key,children:e.attributes.timeline_key})]}),e.attributes.execution_index!==void 0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Exec Index"}),t.jsx("p",{className:"text-xs font-mono text-text-primary",children:e.attributes.execution_index})]}),e.attributes.scheduled_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Scheduled Event"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["#",e.attributes.scheduled_event_id]})]}),e.attributes.wait_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Wait Started"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["Event #",e.attributes.wait_event_id]})]}),e.attributes.initiated_event_id!=null&&t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Initiated Event"}),t.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["#",e.attributes.initiated_event_id]})]})]})}function Z({event:e,childTask:a}){const n=a?W(a.envelope):null,o=a?W(a.data):null;return!a&&e.attributes.child_workflow_id?t.jsx("div",{className:"border-t border-surface-border pt-3",children:t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"}),t.jsx(R,{to:`/workflows/executions/${e.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:d=>d.stopPropagation(),children:e.attributes.child_workflow_id})]})}):a?t.jsxs("div",{className:"space-y-3 border-t border-surface-border pt-3",children:[t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"}),t.jsx(R,{to:`/workflows/executions/${a.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:d=>d.stopPropagation(),children:a.workflow_id}),t.jsx(X,{status:a.status}),a.completed_at&&t.jsxs("span",{className:"text-2xs text-text-tertiary",children:["Completed ",t.jsx(V,{date:a.completed_at,format:"relative"})]})]}),(n!=null||o!=null)&&t.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-4",children:[n!=null?t.jsx(k,{data:n,label:"Input (Envelope)",variant:"panel"}):t.jsx("div",{}),o!=null?t.jsx(k,{data:o,label:"Output (Result)",variant:"panel"}):t.jsx("div",{})]})]}):null}function tt({event:e,childTask:a}){const n=e.attributes.input,o=e.attributes.result,d=e.category==="signal",i=e.category==="activity",l=e.category==="child_workflow",x=n!==void 0&&(i||l),p=!a&&o!==void 0&&(i||l),u=e.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return x||p?t.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-4",children:[x?t.jsx(k,{data:n,label:"Input",variant:"panel"}):t.jsx("div",{}),p?t.jsx(k,{data:o,label:u,variant:"panel"}):t.jsx("div",{})]}):d&&n!==void 0?t.jsx(k,{data:n,label:"Signal Payload",variant:"panel"}):null}function et(e){if(!e)return null;const a=/^-proxy-(\d+)-$/.exec(e);if(a)return{kind:"proxyIndex",index:parseInt(a[1],10)};if(e.startsWith("-"))return null;const n=e.split("/");return n.length<2?null:{kind:"path",aid:n[n.length-1],dad:`,${n.slice(0,-1).join(",")}`}}function st(e){var a,n;try{const o=JSON.parse(e.message);return{aid:(a=o==null?void 0:o.metadata)==null?void 0:a.aid,dad:(n=o==null?void 0:o.metadata)==null?void 0:n.dad}}catch{return{}}}function at({jid:e,appId:a,event:n}){const[o,d]=P.useState(!1),i=et(n.attributes.timeline_key);return t.jsxs("div",{className:"space-y-2",children:[t.jsxs("button",{onClick:()=>d(l=>!l),className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[t.jsx("span",{className:`transition-transform duration-300 ${o?"rotate-90":""}`,children:"▶"}),"Raw stream message (audit)"]}),t.jsx(B,{open:o,children:o&&t.jsxs("div",{className:"pt-1",children:[!i&&t.jsx("p",{className:"text-2xs text-text-tertiary",children:"No raw stream row maps to this activity."}),(i==null?void 0:i.kind)==="proxyIndex"&&t.jsx(nt,{namespace:a||"durable",jid:e,index:i.index}),(i==null?void 0:i.kind)==="path"&&t.jsx(rt,{namespace:a||"durable",jid:e,aid:i.aid,dad:i.dad})]})})]})}function nt({namespace:e,jid:a,index:n}){var i,l;const o=T({namespace:e,source:"worker",jid:a,aid:"proxyer",sort_by:"created_at",order:"asc",offset:n-1,limit:1}),d=(l=(i=o.data)==null?void 0:i.messages)==null?void 0:l[0];return o.isLoading?t.jsx(Y,{}):o.error?t.jsx(F,{}):d?t.jsx(J,{note:`Proxy activity #${n} (durable) — the worker stream record for this step`,messages:[d]}):t.jsx(z,{label:`proxy activity #${n}`})}function rt({namespace:e,jid:a,aid:n,dad:o}){var m,w,g;const d=T({namespace:e,source:"worker",jid:a,aid:n,dad:o,limit:1}),i=(w=(m=d.data)==null?void 0:m.messages)==null?void 0:w[0],l=d.isFetched&&!i,x=T({namespace:e,source:"engine",jid:a,limit:200},{enabled:l}),p=l?(((g=x.data)==null?void 0:g.messages)??[]).filter(h=>{const y=st(h);return y.aid===n&&y.dad===o}):[],u=!!i,f=i?[i]:p;return d.isLoading||l&&x.isLoading?t.jsx(Y,{}):d.error?t.jsx(F,{}):f.length===0?t.jsx(z,{label:`${n} ${o}`}):t.jsx(J,{note:u?"Worker stream — the function-execution record behind this activity":`Engine stream — control-flow record${f.length>1?`s (${f.length}, one per occurrence)`:" (trigger / hook / cycle)"}`,messages:f})}function J({note:e,messages:a}){return t.jsxs("div",{className:"space-y-3",children:[t.jsx("p",{className:"text-2xs text-text-tertiary",children:e}),a.map(n=>t.jsx("div",{className:"rounded-md bg-surface p-3",children:t.jsx(Q,{message:n})},n.id))]})}const Y=()=>t.jsx("p",{className:"text-2xs text-text-tertiary",children:"Loading stream message…"}),F=()=>t.jsx("p",{className:"text-2xs text-status-error",children:"Failed to load stream message."}),z=({label:e})=>t.jsxs("p",{className:"text-2xs text-text-tertiary",children:["No stream row found for ",t.jsx("span",{className:"font-mono",children:e}),"."]});function it({event:e,childTask:a,pending:n=!1,jid:o,appId:d,onClose:i}){return t.jsxs("div",{className:"p-4 bg-surface-sunken rounded-md space-y-4",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("p",{className:"font-mono font-medium text-sm text-text-primary",children:e.attributes.activity_type??e.attributes.signal_name??e.attributes.child_workflow_id??e.event_type}),n&&t.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-2xs font-medium bg-status-warning/15 text-status-warning",children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded-full dot-ring bg-status-warning animate-pulse"}),"Pending"]})]}),i&&t.jsx("button",{onClick:i,className:"text-text-tertiary hover:text-text-primary text-xs",children:"Close"})]}),t.jsx(U,{event:e}),t.jsx(Z,{event:e,childTask:a}),o&&t.jsx(at,{jid:o,appId:d??"durable",event:e}),t.jsx(tt,{event:e,childTask:a}),e.attributes.failure!==void 0&&t.jsx(k,{data:e.attributes.failure,label:"Failure"}),(()=>{const{kind:l,activity_type:x,result:p,timeline_key:u,execution_index:f,signal_name:m,input:w,child_workflow_id:g,awaited:h,wait_event_id:y,scheduled_event_id:j,initiated_event_id:_,failure:L,trace_id:M,span_id:$,...E}=e.attributes;return Object.keys(E).length>0?t.jsx(k,{data:E,label:"Attributes"}):null})()]})}const N={activity:{bar:"bg-accent",outline:"border border-accent/40 bg-accent/15",text:"text-accent",label:"Activities"},signal:{bar:"bg-status-success-graphic",outline:"border border-status-success-graphic/40 bg-status-success-graphic/15",text:"text-status-success",label:"Signals"},timer:{bar:"bg-status-pending-graphic",outline:"border border-status-pending-graphic/40 bg-status-pending-graphic/15",text:"text-status-warning",label:"Timers"},child_workflow:{bar:"bg-status-claimed-graphic",outline:"border border-status-claimed-graphic/40 bg-status-claimed-graphic/15",text:"text-status-claimed",label:"Child Workflows"}},ot="bg-stripes animate-pulse opacity-70",lt=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function ct(e,a){if(!e||typeof e!="string")return e??"";if(e.length<=a)return e;const n=Math.floor((a-1)/2);return`${e.slice(0,n)}…${e.slice(e.length-n)}`}function dt(e){const a=[],n=new Map,o=new Map;for(const i of e){const l=i.attributes.timeline_key;if(!l)continue;const x=i.event_type;x==="activity_task_scheduled"||x==="timer_started"||x==="child_workflow_execution_started"||x==="signal_wait_started"?n.set(l,i):o.set(l,i)}const d=new Set;for(const i of e){const l=i.attributes.timeline_key;if(l&&d.has(l))continue;l&&d.add(l);const x=l?n.get(l):void 0,p=l?o.get(l):void 0,u=p||x||i,f=u.category,m=String(u.attributes.activity_type||u.attributes.signal_name||u.attributes.child_workflow_id||u.event_type||"unknown"),w=x||u,g=p,h=new Date(w.event_time).getTime();let y=null,j=null,_=!1;g?(y=new Date(g.event_time).getTime(),j=g.duration_ms??y-h):u.duration_ms!==null?(j=u.duration_ms,y=h+j):_=!0,a.push({category:f,name:m||u.event_type,startTime:h,endTime:y,duration:j,eventId:u.event_id,pending:_})}return a}function ht({events:e,childTasks:a,outline:n,jid:o,appId:d}){const[i,l]=P.useState(new Set),[x,p]=P.useState(null),f=e.filter(s=>s.category!=="workflow");if(f.length===0)return null;const m=dt(f);if(m.length===0)return null;const w=Date.now(),g=m.flatMap(s=>{const c=[s.startTime];return s.endTime?c.push(s.endTime):c.push(w),c}),h=Math.min(...g),j=Math.max(...g)-h||1,_=new Map;for(const s of m){const c=`${s.category}:${s.name}`,r=s.startTime-h,v=(s.endTime?s.endTime-h:w-h)-r,S={eventId:s.eventId,startPct:r/j*100,widthPct:Math.max(v/j*100,.5),duration:s.duration,label:`${s.name} — ${s.duration!==null?C(s.duration):"pending"} — ${new Date(s.startTime).toLocaleTimeString()}`,eventTime:new Date(s.startTime).toISOString(),pending:s.pending};_.has(c)||_.set(c,{name:s.name,category:s.category,segments:[]}),_.get(c).segments.push(S)}const L=Array.from(_.values()),M=5,$=Array.from({length:M+1},(s,c)=>({pct:c/M*100,label:C(Math.round(c/M*j))})),E=[...new Set(m.map(s=>s.category))],G=s=>{if(!(a!=null&&a.length))return;const c=s.attributes.activity_type;if(c)return a.find(r=>r.workflow_type===c)},D=s=>{l(c=>{const r=new Set(c);return r.has(s)?r.delete(s):r.add(s),r})},I=m.map(s=>s.eventId),O=I.length>0&&I.every(s=>i.has(s)),H=()=>{l(O?new Set:new Set(I))},A=(s,c)=>{var r,b;return c?ot:n?((r=N[s])==null?void 0:r.outline)??"border-text-tertiary bg-transparent":((b=N[s])==null?void 0:b.bar)??"bg-text-tertiary"},K=s=>{var c;return n?((c=N[s])==null?void 0:c.text)??"text-text-tertiary":"text-text-inverse"};return t.jsxs("div",{className:"px-6 py-6 mb-6",children:[t.jsxs("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:"Execution Timeline"}),t.jsx("button",{onClick:H,className:"text-2xs text-accent hover:underline",children:O?"Collapse all":"Expand all"}),t.jsxs("div",{className:"flex items-center gap-3 ml-auto",children:[E.map(s=>{var c,r,b;return t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring ${n?`border ${((c=N[s])==null?void 0:c.outline)??"border-text-tertiary"}`:((r=N[s])==null?void 0:r.bar)??"bg-text-tertiary"}`}),t.jsx("span",{className:"text-2xs text-text-tertiary",children:((b=N[s])==null?void 0:b.label)??s})]},s)}),m.some(s=>s.pending)&&t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded-full dot-ring bg-status-warning animate-pulse"}),t.jsx("span",{className:"text-2xs text-text-tertiary",children:"Pending"})]})]})]}),t.jsxs("div",{className:"flex",children:[t.jsx("div",{className:"w-56 shrink-0"}),t.jsx("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:$.map(s=>t.jsx("span",{className:"absolute text-2xs font-mono text-text-tertiary -translate-x-1/2 bottom-1",style:{left:`${s.pct}%`},children:s.label},s.pct))})]}),L.map(s=>{const c=N[s.category];return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center border-b border-surface-border",children:[t.jsxs("div",{className:"w-56 shrink-0 py-3 pr-4 flex items-center gap-2",children:[t.jsx("span",{className:`w-2.5 h-2.5 rounded-full dot-ring shrink-0 ${(c==null?void 0:c.bar)??"bg-text-tertiary"}`}),t.jsx("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:s.name,children:ct(s.name,28)}),lt.has(s.name)&&t.jsx("span",{className:"shrink-0 text-accent/60",title:"MCP tool interaction",children:t.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})})]}),t.jsxs("div",{className:"flex-1 relative h-10",children:[$.map(r=>t.jsx("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${r.pct}%`}},r.pct)),s.segments.map(r=>{const b=x===r.eventId,v=i.has(r.eventId),S=r.widthPct<3;return t.jsx("div",{className:`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 origin-center ${v?`${A(s.category,r.pending)} ring-2 ring-accent ring-offset-1`:`${A(s.category,r.pending)} hover:opacity-80`}`,style:{left:`${r.startPct}%`,width:`${r.widthPct}%`,minWidth:"4px",...b&&S?{transform:"scaleX(4) scaleY(1.3) translateY(-2px)",zIndex:20,borderRadius:"4px"}:{zIndex:v?10:1}},title:r.label,onClick:()=>D(r.eventId),onMouseEnter:()=>p(r.eventId),onMouseLeave:()=>p(null),children:r.widthPct>8&&t.jsx("span",{className:`absolute inset-0 flex items-center px-1.5 text-2xs font-mono ${K(s.category)} truncate`,children:r.duration!==null?C(r.duration):"pending"})},r.eventId)})]})]}),s.segments.map(r=>{const b=i.has(r.eventId),v=f.find(S=>S.event_id===r.eventId);return t.jsx(B,{open:b,children:v&&t.jsx("div",{className:"py-3",children:t.jsx(it,{event:v,childTask:G(v),pending:r.pending,jid:o,appId:d,onClose:()=>D(v.event_id)})})},r.eventId)})]},`${s.category}:${s.name}`)})]})}export{it as E,ht as S};
|
|
2
|
+
//# sourceMappingURL=SwimlaneTimeline-KCqA-PeL.js.map
|