@hotmeshio/long-tail 0.31.0 → 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/scripts/bambu-boat.d.ts +4 -2
- package/build/scripts/bambu-boat.js +4 -2
- package/build/scripts/bambu-print.d.ts +2 -1
- package/build/scripts/bambu-print.js +7 -3
- package/build/scripts/machine-line.js +2 -1
- 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/machines.md +2 -2
- 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,2 +1,2 @@
|
|
|
1
|
-
import{u as t,b as o,c as u}from"./vendor-query-DvWWuNIB.js";import{m as s}from"./index-
|
|
2
|
-
//# sourceMappingURL=personas-
|
|
1
|
+
import{u as t,b as o,c as u}from"./vendor-query-DvWWuNIB.js";import{m as s}from"./index-Do9Y6Fgt.js";function c(){return t({queryKey:["personas"],queryFn:()=>s("/personas")})}function d(e){return t({queryKey:["personas",e],queryFn:()=>s(`/personas/${encodeURIComponent(e)}`),enabled:!!e})}function p(){const e=o();return u({mutationFn:n=>s("/personas",{method:"POST",body:JSON.stringify(n)}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]})}})}function l(){const e=o();return u({mutationFn:({key:n,...r})=>s(`/personas/${encodeURIComponent(n)}`,{method:"PATCH",body:JSON.stringify(r)}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]})}})}function m(){const e=o();return u({mutationFn:n=>s(`/personas/${encodeURIComponent(n)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]}),e.invalidateQueries({queryKey:["users"]})}})}function q(){const e=o();return u({mutationFn:({key:n,role:r,relationship:a})=>s(`/personas/${encodeURIComponent(n)}/roles/${encodeURIComponent(r)}`,{method:"PUT",body:JSON.stringify({relationship:a})}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]}),e.invalidateQueries({queryKey:["users"]}),e.invalidateQueries({queryKey:["roles"]})}})}function C(){const e=o();return u({mutationFn:({key:n,role:r})=>s(`/personas/${encodeURIComponent(n)}/roles/${encodeURIComponent(r)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]}),e.invalidateQueries({queryKey:["users"]})}})}function f(){const e=o();return u({mutationFn:({userId:n,key:r})=>s(`/users/${n}/personas`,{method:"POST",body:JSON.stringify({persona:r})}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]}),e.invalidateQueries({queryKey:["users"]})}})}function K(){const e=o();return u({mutationFn:({userId:n,key:r})=>s(`/users/${n}/personas/${encodeURIComponent(r)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["personas"]}),e.invalidateQueries({queryKey:["users"]})}})}function Q(e){return t({queryKey:["users",e,"personas"],queryFn:()=>s(`/users/${e}/personas`),enabled:!!e})}export{Q as a,f as b,K as c,p as d,d as e,l as f,m as g,q as h,C as i,c as u};
|
|
2
|
+
//# sourceMappingURL=personas-zWlWjj6j.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas-
|
|
1
|
+
{"version":3,"file":"personas-zWlWjj6j.js","sources":["../../src/api/personas.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type {\n LTPersonaRecord,\n LTPersonaDetail,\n LTUserPersona,\n LTComposedRoleScope,\n} from './types/personas';\n\nexport function usePersonas() {\n return useQuery<{ personas: LTPersonaRecord[] }>({\n queryKey: ['personas'],\n queryFn: () => apiFetch('/personas'),\n });\n}\n\nexport function usePersona(key: string) {\n return useQuery<LTPersonaDetail>({\n queryKey: ['personas', key],\n queryFn: () => apiFetch(`/personas/${encodeURIComponent(key)}`),\n enabled: !!key,\n });\n}\n\nexport function useCreatePersona() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (data: { key: string; title?: string; description?: string }) =>\n apiFetch('/personas', { method: 'POST', body: JSON.stringify(data) }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n },\n });\n}\n\nexport function useUpdatePersona() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ key, ...data }: { key: string; title?: string | null; description?: string | null }) =>\n apiFetch(`/personas/${encodeURIComponent(key)}`, { method: 'PATCH', body: JSON.stringify(data) }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n },\n });\n}\n\nexport function useDeletePersona() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (key: string) =>\n apiFetch(`/personas/${encodeURIComponent(key)}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n // Deleting a persona removes the memberships it sustained.\n queryClient.invalidateQueries({ queryKey: ['users'] });\n },\n });\n}\n\nexport function useLinkPersonaRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ key, role, relationship }: { key: string; role: string; relationship: string }) =>\n apiFetch(`/personas/${encodeURIComponent(key)}/roles/${encodeURIComponent(role)}`, {\n method: 'PUT',\n body: JSON.stringify({ relationship }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n queryClient.invalidateQueries({ queryKey: ['users'] });\n queryClient.invalidateQueries({ queryKey: ['roles'] });\n },\n });\n}\n\nexport function useUnlinkPersonaRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ key, role }: { key: string; role: string }) =>\n apiFetch(`/personas/${encodeURIComponent(key)}/roles/${encodeURIComponent(role)}`, {\n method: 'DELETE',\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n queryClient.invalidateQueries({ queryKey: ['users'] });\n },\n });\n}\n\nexport function useAssignPersona() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ userId, key }: { userId: string; key: string }) =>\n apiFetch(`/users/${userId}/personas`, {\n method: 'POST',\n body: JSON.stringify({ persona: key }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n queryClient.invalidateQueries({ queryKey: ['users'] });\n },\n });\n}\n\nexport function useUnassignPersona() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ userId, key }: { userId: string; key: string }) =>\n apiFetch(`/users/${userId}/personas/${encodeURIComponent(key)}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['personas'] });\n queryClient.invalidateQueries({ queryKey: ['users'] });\n },\n });\n}\n\nexport function useUserPersonas(userId: string | undefined) {\n return useQuery<{ personas: LTUserPersona[]; roles: LTComposedRoleScope[] }>({\n queryKey: ['users', userId, 'personas'],\n queryFn: () => apiFetch(`/users/${userId}/personas`),\n enabled: !!userId,\n });\n}\n"],"names":["usePersonas","useQuery","apiFetch","usePersona","key","useCreatePersona","queryClient","useQueryClient","useMutation","data","useUpdatePersona","useDeletePersona","useLinkPersonaRole","role","relationship","useUnlinkPersonaRole","useAssignPersona","userId","useUnassignPersona","useUserPersonas"],"mappings":"qGASO,SAASA,GAAc,CAC5B,OAAOC,EAA0C,CAC/C,SAAU,CAAC,UAAU,EACrB,QAAS,IAAMC,EAAS,WAAW,CAAA,CACpC,CACH,CAEO,SAASC,EAAWC,EAAa,CACtC,OAAOH,EAA0B,CAC/B,SAAU,CAAC,WAAYG,CAAG,EAC1B,QAAS,IAAMF,EAAS,aAAa,mBAAmBE,CAAG,CAAC,EAAE,EAC9D,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAEO,SAASC,GAAmB,CACjC,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAaC,GACXP,EAAS,YAAa,CAAE,OAAQ,OAAQ,KAAM,KAAK,UAAUO,CAAI,EAAG,EACtE,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,CAC1D,CAAA,CACD,CACH,CAEO,SAASI,GAAmB,CACjC,MAAMJ,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,IAAAJ,EAAK,GAAGK,CAAA,IACrBP,EAAS,aAAa,mBAAmBE,CAAG,CAAC,GAAI,CAAE,OAAQ,QAAS,KAAM,KAAK,UAAUK,CAAI,EAAG,EAClG,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,CAC1D,CAAA,CACD,CACH,CAEO,SAASK,GAAmB,CACjC,MAAML,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAaJ,GACXF,EAAS,aAAa,mBAAmBE,CAAG,CAAC,GAAI,CAAE,OAAQ,QAAA,CAAU,EACvE,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,EAExDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,CACvD,CAAA,CACD,CACH,CAEO,SAASM,GAAqB,CACnC,MAAMN,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,IAAAJ,EAAK,KAAAS,EAAM,aAAAC,KACxBZ,EAAS,aAAa,mBAAmBE,CAAG,CAAC,UAAU,mBAAmBS,CAAI,CAAC,GAAI,CACjF,OAAQ,MACR,KAAM,KAAK,UAAU,CAAE,aAAAC,EAAc,CAAA,CACtC,EACH,UAAW,IAAM,CACfR,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,EACxDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,EACrDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,CACvD,CAAA,CACD,CACH,CAEO,SAASS,GAAuB,CACrC,MAAMT,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,IAAAJ,EAAK,KAAAS,KAClBX,EAAS,aAAa,mBAAmBE,CAAG,CAAC,UAAU,mBAAmBS,CAAI,CAAC,GAAI,CACjF,OAAQ,QAAA,CACT,EACH,UAAW,IAAM,CACfP,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,EACxDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,CACvD,CAAA,CACD,CACH,CAEO,SAASU,GAAmB,CACjC,MAAMV,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,OAAAS,EAAQ,IAAAb,KACrBF,EAAS,UAAUe,CAAM,YAAa,CACpC,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,QAASb,EAAK,CAAA,CACtC,EACH,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,EACxDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,CACvD,CAAA,CACD,CACH,CAEO,SAASY,GAAqB,CACnC,MAAMZ,EAAcC,EAAA,EACpB,OAAOC,EAAY,CACjB,WAAY,CAAC,CAAE,OAAAS,EAAQ,IAAAb,CAAA,IACrBF,EAAS,UAAUe,CAAM,aAAa,mBAAmBb,CAAG,CAAC,GAAI,CAAE,OAAQ,SAAU,EACvF,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,UAAU,EAAG,EACxDA,EAAY,kBAAkB,CAAE,SAAU,CAAC,OAAO,EAAG,CACvD,CAAA,CACD,CACH,CAEO,SAASa,EAAgBF,EAA4B,CAC1D,OAAOhB,EAAsE,CAC3E,SAAU,CAAC,QAASgB,EAAQ,UAAU,EACtC,QAAS,IAAMf,EAAS,UAAUe,CAAM,WAAW,EACnD,QAAS,CAAC,CAACA,CAAA,CACZ,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as i,c as s}from"./vendor-query-DvWWuNIB.js";import{m as u}from"./index-
|
|
2
|
-
//# sourceMappingURL=pipelines-
|
|
1
|
+
import{u as i,c as s}from"./vendor-query-DvWWuNIB.js";import{m as u}from"./index-Do9Y6Fgt.js";function p(e={},n){const t=new URLSearchParams;return e.limit&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset)),e.entity&&t.set("entity",e.entity),e.search&&t.set("search",e.search),e.status&&t.set("status",e.status),e.sort_by&&t.set("sort_by",e.sort_by),e.order&&t.set("order",e.order),t.set("app_id",e.app_id||""),i({queryKey:["mcpRuns",e],queryFn:()=>u(`/pipelines?${t}`),enabled:(n==null?void 0:n.enabled)??!0})}function c(e=""){return i({queryKey:["mcpEntities",e],queryFn:()=>u(`/pipelines/entities?app_id=${e}`)})}function o(e,n=""){return i({queryKey:["mcpRunExecution",e,n],queryFn:()=>u(`/pipelines/${e}/execution?app_id=${n}`),enabled:!!e})}function y(){return s({mutationFn:e=>u(`/pipelines/${e.jobId}/interrupt`,{method:"POST",body:JSON.stringify({topic:e.topic,app_id:e.appId})})})}export{c as a,o as b,y as c,p as u};
|
|
2
|
+
//# sourceMappingURL=pipelines-BKNvBMdf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipelines-
|
|
1
|
+
{"version":3,"file":"pipelines-BKNvBMdf.js","sources":["../../src/api/pipelines.ts"],"sourcesContent":["import { useQuery, useMutation } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { LTJob, WorkflowExecution } from './types';\n\ninterface McpRunFilters {\n limit?: number;\n offset?: number;\n entity?: string;\n search?: string;\n status?: string;\n app_id?: string;\n sort_by?: string;\n order?: string;\n}\n\nexport function useMcpRuns(filters: McpRunFilters = {}, options?: { enabled?: boolean }) {\n const params = new URLSearchParams();\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n if (filters.entity) params.set('entity', filters.entity);\n if (filters.search) params.set('search', filters.search);\n if (filters.status) params.set('status', filters.status);\n if (filters.sort_by) params.set('sort_by', filters.sort_by);\n if (filters.order) params.set('order', filters.order);\n params.set('app_id', filters.app_id || '');\n\n return useQuery<{ jobs: LTJob[]; total: number }>({\n queryKey: ['mcpRuns', filters],\n queryFn: () => apiFetch(`/pipelines?${params}`),\n enabled: options?.enabled ?? true,\n });\n}\n\nexport function useMcpEntities(appId = '') {\n return useQuery<{ entities: string[] }>({\n queryKey: ['mcpEntities', appId],\n queryFn: () => apiFetch(`/pipelines/entities?app_id=${appId}`),\n });\n}\n\nexport function useMcpRunExecution(jobId: string, appId = '') {\n return useQuery<WorkflowExecution>({\n queryKey: ['mcpRunExecution', jobId, appId],\n queryFn: () => apiFetch(`/pipelines/${jobId}/execution?app_id=${appId}`),\n enabled: !!jobId,\n });\n}\n\nexport function useInterruptJob() {\n return useMutation({\n mutationFn: (input: { jobId: string; topic: string; appId: string }) =>\n apiFetch(`/pipelines/${input.jobId}/interrupt`, {\n method: 'POST',\n body: JSON.stringify({ topic: input.topic, app_id: input.appId }),\n }),\n });\n}\n"],"names":["useMcpRuns","filters","options","params","useQuery","apiFetch","useMcpEntities","appId","useMcpRunExecution","jobId","useInterruptJob","useMutation","input"],"mappings":"8FAeO,SAASA,EAAWC,EAAyB,CAAA,EAAIC,EAAiC,CACvF,MAAMC,EAAS,IAAI,gBACnB,OAAIF,EAAQ,OAAOE,EAAO,IAAI,QAAS,OAAOF,EAAQ,KAAK,CAAC,EACxDA,EAAQ,SAAW,QAAWE,EAAO,IAAI,SAAU,OAAOF,EAAQ,MAAM,CAAC,EACzEA,EAAQ,QAAQE,EAAO,IAAI,SAAUF,EAAQ,MAAM,EACnDA,EAAQ,QAAQE,EAAO,IAAI,SAAUF,EAAQ,MAAM,EACnDA,EAAQ,QAAQE,EAAO,IAAI,SAAUF,EAAQ,MAAM,EACnDA,EAAQ,SAASE,EAAO,IAAI,UAAWF,EAAQ,OAAO,EACtDA,EAAQ,OAAOE,EAAO,IAAI,QAASF,EAAQ,KAAK,EACpDE,EAAO,IAAI,SAAUF,EAAQ,QAAU,EAAE,EAElCG,EAA2C,CAChD,SAAU,CAAC,UAAWH,CAAO,EAC7B,QAAS,IAAMI,EAAS,cAAcF,CAAM,EAAE,EAC9C,SAASD,GAAA,YAAAA,EAAS,UAAW,EAAA,CAC9B,CACH,CAEO,SAASI,EAAeC,EAAQ,GAAI,CACzC,OAAOH,EAAiC,CACtC,SAAU,CAAC,cAAeG,CAAK,EAC/B,QAAS,IAAMF,EAAS,8BAA8BE,CAAK,EAAE,CAAA,CAC9D,CACH,CAEO,SAASC,EAAmBC,EAAeF,EAAQ,GAAI,CAC5D,OAAOH,EAA4B,CACjC,SAAU,CAAC,kBAAmBK,EAAOF,CAAK,EAC1C,QAAS,IAAMF,EAAS,cAAcI,CAAK,qBAAqBF,CAAK,EAAE,EACvE,QAAS,CAAC,CAACE,CAAA,CACZ,CACH,CAEO,SAASC,GAAkB,CAChC,OAAOC,EAAY,CACjB,WAAaC,GACXP,EAAS,cAAcO,EAAM,KAAK,aAAc,CAC9C,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,MAAOA,EAAM,MAAO,OAAQA,EAAM,KAAA,CAAO,CAAA,CACjE,CAAA,CACJ,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as n}from"./vendor-query-DvWWuNIB.js";import{m as a}from"./index-
|
|
2
|
-
//# sourceMappingURL=tasks-
|
|
1
|
+
import{u as n}from"./vendor-query-DvWWuNIB.js";import{m as a}from"./index-Do9Y6Fgt.js";function y(e){const s=new URLSearchParams;return e.status&&s.set("status",e.status),e.lt_type&&s.set("lt_type",e.lt_type),e.workflow_type&&s.set("workflow_type",e.workflow_type),e.origin_id&&s.set("origin_id",e.origin_id),e.limit&&s.set("limit",String(e.limit)),e.offset!==void 0&&s.set("offset",String(e.offset)),n({queryKey:["tasks",e],queryFn:()=>a(`/tasks?${s}`)})}function c(e){return n({queryKey:["tasks",e],queryFn:()=>a(`/tasks/${e}`),enabled:!!e})}function r(e){return n({queryKey:["tasks","children",e],queryFn:()=>a(`/tasks?parent_workflow_id=${encodeURIComponent(e)}&limit=50`),enabled:!!e})}function k(e){return n({queryKey:["tasks","byWorkflow",e],queryFn:async()=>{const s=await a(`/tasks?workflow_id=${encodeURIComponent(e)}&limit=1`);return s.tasks.length>0?s.tasks[0]:(await a(`/tasks?parent_workflow_id=${encodeURIComponent(e)}&limit=1`)).tasks[0]??null},enabled:!!e})}function p(e,s){const t=new URLSearchParams;return e!=null&&e.limit&&t.set("limit",String(e.limit)),(e==null?void 0:e.offset)!==void 0&&t.set("offset",String(e.offset)),e!=null&&e.workflow_type&&t.set("workflow_type",e.workflow_type),e!=null&&e.status&&t.set("status",e.status),e!=null&&e.search&&t.set("search",e.search),n({queryKey:["processes",e],queryFn:()=>a(`/tasks/processes?${t}`),enabled:!0})}function m(e){return n({queryKey:["processes",e],queryFn:()=>a(`/tasks/processes/${encodeURIComponent(e)}`),enabled:!!e,retry:3,retryDelay:1e3})}export{m as a,k as b,y as c,c as d,r as e,p as u};
|
|
2
|
+
//# sourceMappingURL=tasks-BQSO3Sjv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-
|
|
1
|
+
{"version":3,"file":"tasks-BQSO3Sjv.js","sources":["../../src/api/tasks.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { LTTaskRecord, LTEscalationRecord } from './types';\n\ninterface TaskListResponse {\n tasks: LTTaskRecord[];\n total: number;\n}\n\ninterface TaskFilters {\n status?: string;\n lt_type?: string;\n workflow_type?: string;\n origin_id?: string;\n limit?: number;\n offset?: number;\n}\n\n// ── Process types ─────────────────────────────────────────────────\n\nexport interface ProcessSummary {\n origin_id: string;\n task_count: number;\n completed: number;\n escalated: number;\n workflow_types: string[];\n started_at: string;\n last_activity: string;\n}\n\ninterface ProcessListResponse {\n processes: ProcessSummary[];\n total: number;\n}\n\nexport interface ProcessDetail {\n origin_id: string;\n tasks: LTTaskRecord[];\n escalations: LTEscalationRecord[];\n}\n\nexport function useTasks(filters: TaskFilters) {\n const params = new URLSearchParams();\n if (filters.status) params.set('status', filters.status);\n if (filters.lt_type) params.set('lt_type', filters.lt_type);\n if (filters.workflow_type) params.set('workflow_type', filters.workflow_type);\n if (filters.origin_id) params.set('origin_id', filters.origin_id);\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n\n return useQuery<TaskListResponse>({\n queryKey: ['tasks', filters],\n queryFn: () => apiFetch(`/tasks?${params}`),\n });\n}\n\nexport function useTask(id: string) {\n return useQuery<LTTaskRecord>({\n queryKey: ['tasks', id],\n queryFn: () => apiFetch(`/tasks/${id}`),\n enabled: !!id,\n });\n}\n\n/**\n * Find the task record for a workflow.\n * Tries workflow_id first (leaf workflows), then falls back to\n * parent_workflow_id (orchestrators whose child task carries the envelope).\n */\nexport function useChildTasks(parentWorkflowId: string) {\n return useQuery<TaskListResponse>({\n queryKey: ['tasks', 'children', parentWorkflowId],\n queryFn: () =>\n apiFetch<TaskListResponse>(\n `/tasks?parent_workflow_id=${encodeURIComponent(parentWorkflowId)}&limit=50`,\n ),\n enabled: !!parentWorkflowId,\n });\n}\n\nexport function useTaskByWorkflowId(workflowId: string) {\n return useQuery<LTTaskRecord | null>({\n queryKey: ['tasks', 'byWorkflow', workflowId],\n queryFn: async () => {\n // 1. Direct match — leaf workflows have their own task record\n const direct = await apiFetch<TaskListResponse>(\n `/tasks?workflow_id=${encodeURIComponent(workflowId)}&limit=1`,\n );\n if (direct.tasks.length > 0) return direct.tasks[0];\n\n // 2. Orchestrator fallback — child task has parent_workflow_id = this workflow\n const child = await apiFetch<TaskListResponse>(\n `/tasks?parent_workflow_id=${encodeURIComponent(workflowId)}&limit=1`,\n );\n return child.tasks[0] ?? null;\n },\n enabled: !!workflowId,\n });\n}\n\n// ── Process stats ────────────────────────────────────────────────\n\nexport interface ProcessStats {\n total: number;\n active: number;\n completed: number;\n escalated: number;\n by_workflow_type: {\n workflow_type: string;\n total: number;\n active: number;\n completed: number;\n escalated: number;\n }[];\n}\n\nexport function useProcessStats(period?: string) {\n const params = period ? `?period=${period}` : '';\n return useQuery<ProcessStats>({\n queryKey: ['processStats', period],\n queryFn: () => apiFetch(`/tasks/processes/stats${params}`),\n });\n}\n\n// ── Process hooks ─────────────────────────────────────────────────\n\nexport function useProcesses(filters?: {\n limit?: number;\n offset?: number;\n workflow_type?: string;\n status?: string;\n search?: string;\n}, options?: { enabled?: boolean }) {\n const params = new URLSearchParams();\n if (filters?.limit) params.set('limit', String(filters.limit));\n if (filters?.offset !== undefined) params.set('offset', String(filters.offset));\n if (filters?.workflow_type) params.set('workflow_type', filters.workflow_type);\n if (filters?.status) params.set('status', filters.status);\n if (filters?.search) params.set('search', filters.search);\n\n return useQuery<ProcessListResponse>({\n queryKey: ['processes', filters],\n queryFn: () => apiFetch(`/tasks/processes?${params}`),\n enabled: options?.enabled ?? true,\n });\n}\n\nexport function useProcessDetail(originId: string) {\n return useQuery<ProcessDetail>({\n queryKey: ['processes', originId],\n queryFn: () => apiFetch(`/tasks/processes/${encodeURIComponent(originId)}`),\n enabled: !!originId,\n retry: 3,\n retryDelay: 1000,\n });\n}\n"],"names":["useTasks","filters","params","useQuery","apiFetch","useTask","id","useChildTasks","parentWorkflowId","useTaskByWorkflowId","workflowId","direct","useProcesses","options","useProcessDetail","originId"],"mappings":"uFAyCO,SAASA,EAASC,EAAsB,CAC7C,MAAMC,EAAS,IAAI,gBACnB,OAAID,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,SAASC,EAAO,IAAI,UAAWD,EAAQ,OAAO,EACtDA,EAAQ,eAAeC,EAAO,IAAI,gBAAiBD,EAAQ,aAAa,EACxEA,EAAQ,WAAWC,EAAO,IAAI,YAAaD,EAAQ,SAAS,EAC5DA,EAAQ,OAAOC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EACxDA,EAAQ,SAAW,QAAWC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EAEtEE,EAA2B,CAChC,SAAU,CAAC,QAASF,CAAO,EAC3B,QAAS,IAAMG,EAAS,UAAUF,CAAM,EAAE,CAAA,CAC3C,CACH,CAEO,SAASG,EAAQC,EAAY,CAClC,OAAOH,EAAuB,CAC5B,SAAU,CAAC,QAASG,CAAE,EACtB,QAAS,IAAMF,EAAS,UAAUE,CAAE,EAAE,EACtC,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAOO,SAASC,EAAcC,EAA0B,CACtD,OAAOL,EAA2B,CAChC,SAAU,CAAC,QAAS,WAAYK,CAAgB,EAChD,QAAS,IACPJ,EACE,6BAA6B,mBAAmBI,CAAgB,CAAC,WAAA,EAErE,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAEO,SAASC,EAAoBC,EAAoB,CACtD,OAAOP,EAA8B,CACnC,SAAU,CAAC,QAAS,aAAcO,CAAU,EAC5C,QAAS,SAAY,CAEnB,MAAMC,EAAS,MAAMP,EACnB,sBAAsB,mBAAmBM,CAAU,CAAC,UAAA,EAEtD,OAAIC,EAAO,MAAM,OAAS,EAAUA,EAAO,MAAM,CAAC,GAGpC,MAAMP,EAClB,6BAA6B,mBAAmBM,CAAU,CAAC,UAAA,GAEhD,MAAM,CAAC,GAAK,IAC3B,EACA,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CA4BO,SAASE,EAAaX,EAM1BY,EAAiC,CAClC,MAAMX,EAAS,IAAI,gBACnB,OAAID,GAAA,MAAAA,EAAS,OAAOC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,GACzDA,GAAA,YAAAA,EAAS,UAAW,QAAWC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EAC1EA,GAAA,MAAAA,EAAS,eAAeC,EAAO,IAAI,gBAAiBD,EAAQ,aAAa,EACzEA,GAAA,MAAAA,EAAS,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACpDA,GAAA,MAAAA,EAAS,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EAEjDE,EAA8B,CACnC,SAAU,CAAC,YAAaF,CAAO,EAC/B,QAAS,IAAMG,EAAS,oBAAoBF,CAAM,EAAE,EACpD,QAA6B,EAAA,CAC9B,CACH,CAEO,SAASY,EAAiBC,EAAkB,CACjD,OAAOZ,EAAwB,CAC7B,SAAU,CAAC,YAAaY,CAAQ,EAChC,QAAS,IAAMX,EAAS,oBAAoB,mBAAmBW,CAAQ,CAAC,EAAE,EAC1E,QAAS,CAAC,CAACA,EACX,MAAO,EACP,WAAY,GAAA,CACb,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as i,b as u,c as s}from"./vendor-query-DvWWuNIB.js";import{m as t}from"./index-
|
|
2
|
-
//# sourceMappingURL=topics-
|
|
1
|
+
import{u as i,b as u,c as s}from"./vendor-query-DvWWuNIB.js";import{m as t}from"./index-Do9Y6Fgt.js";function r(e={}){const n=new URLSearchParams;e.category&&n.set("category",e.category),e.search&&n.set("search",e.search),e.limit!=null&&n.set("limit",String(e.limit)),e.offset!=null&&n.set("offset",String(e.offset));const o=n.toString();return i({queryKey:["topics",e],queryFn:()=>t(`/topics${o?`?${o}`:""}`)})}function y(e){return i({queryKey:["topics","detail",e],queryFn:()=>t(`/topics/by-name/${encodeURIComponent(e)}`),enabled:!!e})}function m(){const e=u();return s({mutationFn:({topic:n,...o})=>t(`/topics/by-name/${encodeURIComponent(n)}`,{method:"PUT",body:JSON.stringify(o)}),onSuccess:()=>{e.invalidateQueries({queryKey:["topics"]})}})}function p(){const e=u();return s({mutationFn:n=>t(`/topics/by-name/${encodeURIComponent(n)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["topics"]})}})}function d(){return s({mutationFn:({topic:e,event:n})=>t(`/topics/by-name/${encodeURIComponent(e)}/publish`,{method:"POST",body:JSON.stringify(n)})})}export{y as a,m as b,p as c,d,r as u};
|
|
2
|
+
//# sourceMappingURL=topics-Dr_1TtUM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics-
|
|
1
|
+
{"version":3,"file":"topics-Dr_1TtUM.js","sources":["../../src/api/topics.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\nexport interface TopicCatalogEntry {\n topic: string;\n description?: string;\n category: string;\n payload_schema?: Record<string, any>;\n example_payload?: Record<string, any>;\n source: string;\n tags: string[];\n managed: boolean;\n subscriber_count?: number;\n last_seen_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface TopicSubscriber {\n id: string;\n agent_id: string;\n agent_name: string;\n topic: string;\n reaction_type: string;\n}\n\nexport interface TopicDetail extends TopicCatalogEntry {\n subscribers: TopicSubscriber[];\n}\n\ninterface TopicListResponse {\n topics: TopicCatalogEntry[];\n total: number;\n}\n\ninterface TopicFilters {\n category?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}\n\nexport function useTopics(filters: TopicFilters = {}) {\n const params = new URLSearchParams();\n if (filters.category) params.set('category', filters.category);\n if (filters.search) params.set('search', filters.search);\n if (filters.limit != null) params.set('limit', String(filters.limit));\n if (filters.offset != null) params.set('offset', String(filters.offset));\n const qs = params.toString();\n\n return useQuery<TopicListResponse>({\n queryKey: ['topics', filters],\n queryFn: () => apiFetch(`/topics${qs ? `?${qs}` : ''}`),\n });\n}\n\nexport function useTopic(topic: string | null) {\n return useQuery<TopicDetail>({\n queryKey: ['topics', 'detail', topic],\n queryFn: () => apiFetch(`/topics/by-name/${encodeURIComponent(topic!)}`),\n enabled: !!topic,\n });\n}\n\nexport function useCreateTopic() {\n const queryClient = useQueryClient();\n return useMutation<TopicCatalogEntry, Error, Partial<TopicCatalogEntry> & { topic: string; category: string }>({\n mutationFn: (body) =>\n apiFetch('/topics', {\n method: 'POST',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['topics'] });\n },\n });\n}\n\nexport function useUpdateTopic() {\n const queryClient = useQueryClient();\n return useMutation<TopicCatalogEntry, Error, { topic: string } & Partial<TopicCatalogEntry>>({\n mutationFn: ({ topic, ...body }) =>\n apiFetch(`/topics/by-name/${encodeURIComponent(topic)}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['topics'] });\n },\n });\n}\n\nexport function useDeleteTopic() {\n const queryClient = useQueryClient();\n return useMutation<{ deleted: boolean }, Error, string>({\n mutationFn: (topic) =>\n apiFetch(`/topics/by-name/${encodeURIComponent(topic)}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['topics'] });\n },\n });\n}\n\nexport function usePublishTopic() {\n // The request body IS the event envelope (Partial<LTEvent> + optional subject).\n // The server derives `type` from the subject/topic and mints id/timestamp.\n return useMutation<{ published: boolean; topic: string; timestamp: string }, Error, { topic: string; event: Record<string, any> }>({\n mutationFn: ({ topic, event }) =>\n apiFetch(`/topics/by-name/${encodeURIComponent(topic)}/publish`, {\n method: 'POST',\n body: JSON.stringify(event),\n }),\n });\n}\n"],"names":["useTopics","filters","params","qs","useQuery","apiFetch","useTopic","topic","useUpdateTopic","queryClient","useQueryClient","useMutation","body","useDeleteTopic","usePublishTopic","event"],"mappings":"qGA0CO,SAASA,EAAUC,EAAwB,GAAI,CACpD,MAAMC,EAAS,IAAI,gBACfD,EAAQ,UAAUC,EAAO,IAAI,WAAYD,EAAQ,QAAQ,EACzDA,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,OAAS,MAAMC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EAChEA,EAAQ,QAAU,MAAMC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EACvE,MAAME,EAAKD,EAAO,SAAA,EAElB,OAAOE,EAA4B,CACjC,SAAU,CAAC,SAAUH,CAAO,EAC5B,QAAS,IAAMI,EAAS,UAAUF,EAAK,IAAIA,CAAE,GAAK,EAAE,EAAE,CAAA,CACvD,CACH,CAEO,SAASG,EAASC,EAAsB,CAC7C,OAAOH,EAAsB,CAC3B,SAAU,CAAC,SAAU,SAAUG,CAAK,EACpC,QAAS,IAAMF,EAAS,mBAAmB,mBAAmBE,CAAM,CAAC,EAAE,EACvE,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAgBO,SAASC,GAAiB,CAC/B,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAAsF,CAC3F,WAAY,CAAC,CAAE,MAAAJ,EAAO,GAAGK,CAAA,IACvBP,EAAS,mBAAmB,mBAAmBE,CAAK,CAAC,GAAI,CACvD,OAAQ,MACR,KAAM,KAAK,UAAUK,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASI,GAAiB,CAC/B,MAAMJ,EAAcC,EAAA,EACpB,OAAOC,EAAiD,CACtD,WAAaJ,GACXF,EAAS,mBAAmB,mBAAmBE,CAAK,CAAC,GAAI,CAAE,OAAQ,QAAA,CAAU,EAC/E,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASK,GAAkB,CAGhC,OAAOH,EAA4H,CACjI,WAAY,CAAC,CAAE,MAAAJ,EAAO,MAAAQ,KACpBV,EAAS,mBAAmB,mBAAmBE,CAAK,CAAC,WAAY,CAC/D,OAAQ,OACR,KAAM,KAAK,UAAUQ,CAAK,CAAA,CAC3B,CAAA,CACJ,CACH"}
|
package/dashboard/dist/assets/{useContainerWidth-DSLp1gEm.js → useContainerWidth-D38m8eub.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as t}from"./vendor-query-DvWWuNIB.js";function a(){const[n,r]=t.useState(null),[o,i]=t.useState(null),c=t.useCallback(e=>r(e),[]);return t.useEffect(()=>{if(!n||typeof ResizeObserver>"u")return;const e=new ResizeObserver(u=>{const s=u[0];s&&i(s.contentRect.width)});return e.observe(n),()=>e.disconnect()},[n]),[c,o]}function l(){const[n,r]=t.useState(null),[o,i]=t.useState(null),c=t.useCallback(e=>r(e),[]);return t.useEffect(()=>{if(!n||typeof ResizeObserver>"u")return;const e=new ResizeObserver(u=>{const s=u[0];s&&i({width:s.contentRect.width,height:s.contentRect.height})});return e.observe(n),()=>e.disconnect()},[n]),[c,o]}export{
|
|
2
|
-
//# sourceMappingURL=useContainerWidth-
|
|
1
|
+
import{a as t}from"./vendor-query-DvWWuNIB.js";function a(){const[n,r]=t.useState(null),[o,i]=t.useState(null),c=t.useCallback(e=>r(e),[]);return t.useEffect(()=>{if(!n||typeof ResizeObserver>"u")return;const e=new ResizeObserver(u=>{const s=u[0];s&&i(s.contentRect.width)});return e.observe(n),()=>e.disconnect()},[n]),[c,o]}function l(){const[n,r]=t.useState(null),[o,i]=t.useState(null),c=t.useCallback(e=>r(e),[]);return t.useEffect(()=>{if(!n||typeof ResizeObserver>"u")return;const e=new ResizeObserver(u=>{const s=u[0];s&&i({width:s.contentRect.width,height:s.contentRect.height})});return e.observe(n),()=>e.disconnect()},[n]),[c,o]}export{a,l as u};
|
|
2
|
+
//# sourceMappingURL=useContainerWidth-D38m8eub.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContainerWidth-
|
|
1
|
+
{"version":3,"file":"useContainerWidth-D38m8eub.js","sources":["../../src/hooks/useContainerWidth.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\n/**\n * Measures an element's content-box width via ResizeObserver — the hook form\n * of \"geometry follows the container\". Returns a CALLBACK ref (the observed\n * element can mount late, e.g. after a loading state) and the width: `null`\n * before the first measure and in environments without ResizeObserver\n * (jsdom), which callers treat as \"wide\".\n */\nexport function useContainerWidth<T extends HTMLElement>(): [(node: T | null) => void, number | null] {\n const [el, setEl] = useState<T | null>(null);\n const [width, setWidth] = useState<number | null>(null);\n\n const ref = useCallback((node: T | null) => setEl(node), []);\n\n useEffect(() => {\n if (!el || typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setWidth(entry.contentRect.width);\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, [el]);\n\n return [ref, width];\n}\n\nexport interface ContainerSize {\n width: number;\n height: number;\n}\n\n/**\n * Both content-box dimensions of an element, for drawings that shape\n * themselves to the box they fill rather than to a fixed aspect. Same\n * contract as useContainerWidth: a callback ref and `null` before the first\n * measure or without ResizeObserver.\n */\nexport function useContainerSize<T extends HTMLElement>(): [(node: T | null) => void, ContainerSize | null] {\n const [el, setEl] = useState<T | null>(null);\n const [size, setSize] = useState<ContainerSize | null>(null);\n\n const ref = useCallback((node: T | null) => setEl(node), []);\n\n useEffect(() => {\n if (!el || typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setSize({ width: entry.contentRect.width, height: entry.contentRect.height });\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, [el]);\n\n return [ref, size];\n}\n"],"names":["useContainerWidth","el","setEl","useState","width","setWidth","ref","useCallback","node","useEffect","observer","entries","entry","useContainerSize","size","setSize"],"mappings":"+CASO,SAASA,GAAsF,CACpG,KAAM,CAACC,EAAIC,CAAK,EAAIC,EAAAA,SAAmB,IAAI,EACrC,CAACC,EAAOC,CAAQ,EAAIF,EAAAA,SAAwB,IAAI,EAEhDG,EAAMC,EAAAA,YAAaC,GAAmBN,EAAMM,CAAI,EAAG,EAAE,EAE3DC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAM,OAAO,eAAmB,IAAa,OAClD,MAAMS,EAAW,IAAI,eAAgBC,GAAY,CAC/C,MAAMC,EAAQD,EAAQ,CAAC,EACnBC,GAAOP,EAASO,EAAM,YAAY,KAAK,CAC7C,CAAC,EACD,OAAAF,EAAS,QAAQT,CAAE,EACZ,IAAMS,EAAS,WAAA,CACxB,EAAG,CAACT,CAAE,CAAC,EAEA,CAACK,EAAKF,CAAK,CACpB,CAaO,SAASS,GAA4F,CAC1G,KAAM,CAACZ,EAAIC,CAAK,EAAIC,EAAAA,SAAmB,IAAI,EACrC,CAACW,EAAMC,CAAO,EAAIZ,EAAAA,SAA+B,IAAI,EAErDG,EAAMC,EAAAA,YAAaC,GAAmBN,EAAMM,CAAI,EAAG,EAAE,EAE3DC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAM,OAAO,eAAmB,IAAa,OAClD,MAAMS,EAAW,IAAI,eAAgBC,GAAY,CAC/C,MAAMC,EAAQD,EAAQ,CAAC,EACnBC,GAAOG,EAAQ,CAAE,MAAOH,EAAM,YAAY,MAAO,OAAQA,EAAM,YAAY,MAAA,CAAQ,CACzF,CAAC,EACD,OAAAF,EAAS,QAAQT,CAAE,EACZ,IAAMS,EAAS,WAAA,CACxB,EAAG,CAACT,CAAE,CAAC,EAEA,CAACK,EAAKQ,CAAI,CACnB"}
|
package/dashboard/dist/assets/{useDebouncedValue-CwrY8TpV.js → useDebouncedValue-C5ESASfo.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{e as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=useDebouncedValue-
|
|
1
|
+
import{e as c}from"./index-Do9Y6Fgt.js";import{a as o}from"./vendor-query-DvWWuNIB.js";function i(e,t=c){const[r,s]=o.useState(e);return o.useEffect(()=>{const u=setTimeout(()=>s(e),t);return()=>clearTimeout(u)},[e,t]),r}export{i as u};
|
|
2
|
+
//# sourceMappingURL=useDebouncedValue-C5ESASfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDebouncedValue-
|
|
1
|
+
{"version":3,"file":"useDebouncedValue-C5ESASfo.js","sources":["../../src/hooks/useDebouncedValue.ts"],"sourcesContent":["import { SEARCH_DEBOUNCE_MS } from '../lib/realtime-refresh';\nimport { useEffect, useState } from 'react';\n\n/**\n * Returns a debounced copy of `value` that only updates\n * after `delay` ms of inactivity.\n */\nexport function useDebouncedValue<T>(value: T, delay = SEARCH_DEBOUNCE_MS): T {\n const [debounced, setDebounced] = useState(value);\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounced;\n}\n"],"names":["useDebouncedValue","value","delay","SEARCH_DEBOUNCE_MS","debounced","setDebounced","useState","useEffect","timer"],"mappings":"uFAOO,SAASA,EAAqBC,EAAUC,EAAQC,EAAuB,CAC5E,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAASL,CAAK,EAChDM,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQ,WAAW,IAAMH,EAAaJ,CAAK,EAAGC,CAAK,EACzD,MAAO,IAAM,aAAaM,CAAK,CACjC,EAAG,CAACP,EAAOC,CAAK,CAAC,EACVE,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f}from"./vendor-query-DvWWuNIB.js";import{u as i}from"./controlplane-
|
|
2
|
-
//# sourceMappingURL=useNamespace-
|
|
1
|
+
import{a as f}from"./vendor-query-DvWWuNIB.js";import{u as i}from"./controlplane-Dx20db5g.js";import{f as l}from"./vendor-react-_9U4mKFr.js";function g(a="namespace"){const[m,c]=l(),{data:r,isLoading:n}=i(),o=m.get(a)||"",e=((r==null?void 0:r.apps)??[]).map(s=>s.appId).sort();f.useEffect(()=>{!o&&e.length>0&&!n&&c(s=>{const t=new URLSearchParams(s);return t.set(a,e[0]),t},{replace:!0})},[o,e.length,n]);const u=s=>{c(t=>{const p=new URLSearchParams(t);return p.set(a,s),p})};return{namespace:o||e[0]||"",available:e,isLoading:n,setNamespace:u}}export{g as u};
|
|
2
|
+
//# sourceMappingURL=useNamespace-DLLOJRYY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNamespace-
|
|
1
|
+
{"version":3,"file":"useNamespace-DLLOJRYY.js","sources":["../../src/hooks/useNamespace.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useControlPlaneApps } from '../api/controlplane';\n\n/**\n * Namespace-first hook. Queries available HotMesh namespaces,\n * auto-selects the first one if no URL param, and keeps the URL\n * in sync. Uses replaceState (not pushState) to avoid history spam.\n */\nexport function useNamespace(paramName = 'namespace') {\n const [params, setParams] = useSearchParams();\n const { data: apps, isLoading } = useControlPlaneApps();\n\n const selected = params.get(paramName) || '';\n const available = (apps?.apps ?? []).map((a) => a.appId).sort();\n\n useEffect(() => {\n if (!selected && available.length > 0 && !isLoading) {\n setParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set(paramName, available[0]);\n return next;\n }, { replace: true });\n }\n }, [selected, available.length, isLoading]);\n\n const setNamespace = (ns: string) => {\n setParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set(paramName, ns);\n return next;\n });\n };\n\n return { namespace: selected || available[0] || '', available, isLoading, setNamespace };\n}\n"],"names":["useNamespace","paramName","params","setParams","useSearchParams","apps","isLoading","useControlPlaneApps","selected","available","a","useEffect","prev","next","setNamespace","ns"],"mappings":"6IASO,SAASA,EAAaC,EAAY,YAAa,CACpD,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAA,EACtB,CAAE,KAAMC,EAAM,UAAAC,CAAA,EAAcC,EAAA,EAE5BC,EAAWN,EAAO,IAAID,CAAS,GAAK,GACpCQ,IAAaJ,GAAA,YAAAA,EAAM,OAAQ,CAAA,GAAI,IAAKK,GAAMA,EAAE,KAAK,EAAE,KAAA,EAEzDC,EAAAA,UAAU,IAAM,CACV,CAACH,GAAYC,EAAU,OAAS,GAAK,CAACH,GACxCH,EAAWS,GAAS,CAClB,MAAMC,EAAO,IAAI,gBAAgBD,CAAI,EACrC,OAAAC,EAAK,IAAIZ,EAAWQ,EAAU,CAAC,CAAC,EACzBI,CACT,EAAG,CAAE,QAAS,GAAM,CAExB,EAAG,CAACL,EAAUC,EAAU,OAAQH,CAAS,CAAC,EAE1C,MAAMQ,EAAgBC,GAAe,CACnCZ,EAAWS,GAAS,CAClB,MAAMC,EAAO,IAAI,gBAAgBD,CAAI,EACrC,OAAAC,EAAK,IAAIZ,EAAWc,CAAE,EACfF,CACT,CAAC,CACH,EAEA,MAAO,CAAE,UAAWL,GAAYC,EAAU,CAAC,GAAK,GAAI,UAAAA,EAAW,UAAAH,EAAW,aAAAQ,CAAA,CAC5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as r}from"./vendor-query-DvWWuNIB.js";import{k as y,N as d}from"./index-
|
|
2
|
-
//# sourceMappingURL=useYamlActivityEvents-
|
|
1
|
+
import{a as r}from"./vendor-query-DvWWuNIB.js";import{k as y,N as d}from"./index-Do9Y6Fgt.js";function F(o){const[n,S]=r.useState([]),[p,f]=r.useState("idle"),w=r.useCallback(i=>{var m;if(!o||i.workflowId!==o)return;const c=((m=i.type)==null?void 0:m.split("."))??[];if(c[1]!=="activity")return;const s=i.activityName,t=i.data,a=`activity.${c[c.length-1]}`;S(l=>{const u=l.find(e=>e.activityId===s);return a==="activity.started"?u?l.map(e=>e.activityId===s?{...e,status:"running"}:e):[...l,{activityId:s,title:(t==null?void 0:t.title)||s,toolName:t==null?void 0:t.toolName,toolSource:t==null?void 0:t.toolSource,stepIndex:(t==null?void 0:t.stepIndex)??l.length,totalSteps:(t==null?void 0:t.totalSteps)??0,status:"running"}]:a==="activity.completed"&&u?l.map(e=>e.activityId===s?{...e,status:"completed"}:e):a==="activity.failed"&&u?l.map(e=>e.activityId===s?{...e,status:"failed",error:t==null?void 0:t.error}:e):l})},[o]),k=r.useCallback(i=>{var s;if(!o||i.workflowId!==o)return;const c=(s=i.type)==null?void 0:s.split(".").pop();c==="completed"&&f("completed"),c==="failed"&&f("failed")},[o]);y(o?`${d}.system.activity.>`:"",w),y(o?`${d}.system.workflow.>`:"",k);const v=n.length>0&&n.every(i=>i.status==="completed"||i.status==="failed"),g=n.some(i=>i.status==="failed");return{steps:n,isComplete:v||p==="completed",isFailed:g||p==="failed"}}export{F as u};
|
|
2
|
+
//# sourceMappingURL=useYamlActivityEvents-D0XNXli1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useYamlActivityEvents-
|
|
1
|
+
{"version":3,"file":"useYamlActivityEvents-D0XNXli1.js","sources":["../../src/hooks/useYamlActivityEvents.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useEventSubscription } from './useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../lib/nats/config';\n\nexport interface ActivityStep {\n activityId: string;\n title: string;\n toolName?: string;\n toolSource?: string;\n stepIndex: number;\n totalSteps: number;\n status: 'pending' | 'running' | 'completed' | 'failed';\n error?: string;\n}\n\n/**\n * Subscribe to activity and workflow lifecycle events for a specific graph job.\n * Returns live step progress and overall workflow status.\n *\n * Hook-only flows (no worker activities) produce no activity events, so\n * isComplete/isFailed is derived from workflow.completed/failed events instead.\n */\nexport function useYamlActivityEvents(jobId: string | null): {\n steps: ActivityStep[];\n isComplete: boolean;\n isFailed: boolean;\n} {\n const [steps, setSteps] = useState<ActivityStep[]>([]);\n const [workflowStatus, setWorkflowStatus] = useState<'idle' | 'completed' | 'failed'>('idle');\n\n const activityHandler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n // event.type is the full topic: 'system.activity.{wfId}.{name}.{action}'\n const parts = (event.type as string | undefined)?.split('.') ?? [];\n if (parts[1] !== 'activity') return;\n\n const activityId = event.activityName as string;\n const data = event.data as Record<string, any> | undefined;\n // Normalise to short form for comparisons below (e.g. 'activity.started')\n const eventType = `activity.${parts[parts.length - 1]}`;\n\n setSteps((prev) => {\n const existing = prev.find((s) => s.activityId === activityId);\n\n if (eventType === 'activity.started') {\n if (existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'running' as const } : s);\n }\n return [...prev, {\n activityId,\n title: data?.title || activityId,\n toolName: data?.toolName,\n toolSource: data?.toolSource,\n stepIndex: data?.stepIndex ?? prev.length,\n totalSteps: data?.totalSteps ?? 0,\n status: 'running' as const,\n }];\n }\n\n if (eventType === 'activity.completed' && existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'completed' as const } : s);\n }\n\n if (eventType === 'activity.failed' && existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'failed' as const, error: data?.error } : s);\n }\n\n return prev;\n });\n }, [jobId]);\n\n const workflowHandler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n // event.type is the full topic: 'system.workflow.{wfId}.{action}'\n const action = (event.type as string | undefined)?.split('.').pop();\n if (action === 'completed') setWorkflowStatus('completed');\n if (action === 'failed') setWorkflowStatus('failed');\n }, [jobId]);\n\n useEventSubscription(\n jobId ? `${NATS_SUBJECT_PREFIX}.system.activity.>` : '',\n activityHandler,\n );\n useEventSubscription(\n jobId ? `${NATS_SUBJECT_PREFIX}.system.workflow.>` : '',\n workflowHandler,\n );\n\n const stepsComplete = steps.length > 0 && steps.every((s) => s.status === 'completed' || s.status === 'failed');\n const stepsFailed = steps.some((s) => s.status === 'failed');\n\n const isComplete = stepsComplete || workflowStatus === 'completed';\n const isFailed = stepsFailed || workflowStatus === 'failed';\n\n return { steps, isComplete, isFailed };\n}\n"],"names":["useYamlActivityEvents","jobId","steps","setSteps","useState","workflowStatus","setWorkflowStatus","activityHandler","useCallback","event","parts","_a","activityId","data","eventType","prev","existing","s","workflowHandler","action","useEventSubscription","NATS_SUBJECT_PREFIX","stepsComplete","stepsFailed"],"mappings":"8FAsBO,SAASA,EAAsBC,EAIpC,CACA,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAyB,CAAA,CAAE,EAC/C,CAACC,EAAgBC,CAAiB,EAAIF,EAAAA,SAA0C,MAAM,EAEtFG,EAAkBC,cAAaC,GAAe,OAClD,GAAI,CAACR,GAASQ,EAAM,aAAeR,EAAO,OAE1C,MAAMS,IAASC,EAAAF,EAAM,OAAN,YAAAE,EAAmC,MAAM,OAAQ,CAAA,EAChE,GAAID,EAAM,CAAC,IAAM,WAAY,OAE7B,MAAME,EAAaH,EAAM,aACnBI,EAAOJ,EAAM,KAEbK,EAAY,YAAYJ,EAAMA,EAAM,OAAS,CAAC,CAAC,GAErDP,EAAUY,GAAS,CACjB,MAAMC,EAAWD,EAAK,KAAME,GAAMA,EAAE,aAAeL,CAAU,EAE7D,OAAIE,IAAc,mBACZE,EACKD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,SAAA,EAAuBA,CAAC,EAExF,CAAC,GAAGF,EAAM,CACf,WAAAH,EACA,OAAOC,GAAA,YAAAA,EAAM,QAASD,EACtB,SAAUC,GAAA,YAAAA,EAAM,SAChB,WAAYA,GAAA,YAAAA,EAAM,WAClB,WAAWA,GAAA,YAAAA,EAAM,YAAaE,EAAK,OACnC,YAAYF,GAAA,YAAAA,EAAM,aAAc,EAChC,OAAQ,SAAA,CACT,EAGCC,IAAc,sBAAwBE,EACjCD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,WAAA,EAAyBA,CAAC,EAG7FH,IAAc,mBAAqBE,EAC9BD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,SAAmB,MAAOJ,GAAA,YAAAA,EAAM,KAAA,EAAUI,CAAC,EAG3GF,CACT,CAAC,CACH,EAAG,CAACd,CAAK,CAAC,EAEJiB,EAAkBV,cAAaC,GAAe,OAClD,GAAI,CAACR,GAASQ,EAAM,aAAeR,EAAO,OAE1C,MAAMkB,GAAUR,EAAAF,EAAM,OAAN,YAAAE,EAAmC,MAAM,KAAK,MAC1DQ,IAAW,aAAab,EAAkB,WAAW,EACrDa,IAAW,UAAUb,EAAkB,QAAQ,CACrD,EAAG,CAACL,CAAK,CAAC,EAEVmB,EACEnB,EAAQ,GAAGoB,CAAmB,qBAAuB,GACrDd,CAAA,EAEFa,EACEnB,EAAQ,GAAGoB,CAAmB,qBAAuB,GACrDH,CAAA,EAGF,MAAMI,EAAgBpB,EAAM,OAAS,GAAKA,EAAM,MAAOe,GAAMA,EAAE,SAAW,aAAeA,EAAE,SAAW,QAAQ,EACxGM,EAAcrB,EAAM,KAAMe,GAAMA,EAAE,SAAW,QAAQ,EAK3D,MAAO,CAAE,MAAAf,EAAO,WAHGoB,GAAiBjB,IAAmB,YAG3B,SAFXkB,GAAelB,IAAmB,QAEvB,CAC9B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as p,a as U}from"./vendor-query-DvWWuNIB.js";import{a as j}from"./StatusBadge-DHVwxre2.js";import{r as k}from"./index-C_dAJUzh.js";import{b as P}from"./vendor-icons-ed7mYQw4.js";import{u as q,a as Y}from"./vendor-react-_9U4mKFr.js";function v(t){return!!(t.assigned_to&&t.assigned_until&&new Date(t.assigned_until)>new Date)}function ft(t){return!t.workflow_type}function W(t){return t.replace(/[_\-.]+/g," ").replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/([a-zA-Z])(\d)/g,"$1 $2").trim().split(/\s+/).filter(Boolean).map(e=>e===e.toUpperCase()&&e.length>1?e:e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function mt(t){return t.status==="pending"?v(t)?"bg-status-claimed-graphic":"bg-status-active":j[t.status]??"bg-status-active"}function At(t){const s=e=>{if(!e)return null;try{const o=JSON.parse(e);return o&&typeof o=="object"?o:null}catch{return null}};return{escalation:t,metadata:t.metadata??null,envelope:s(t.envelope),payload:s(t.escalation_payload),resolver:s(t.resolver_payload)}}const pt="200px";function gt(t){return`${Math.max(6,Math.round(t.length*.55+3.5))}rem`}const X=30;function K(t){return t.status==="pending"&&!v(t)}function yt({row:t,def:s,onView:e,prominent:o,forceView:i}){const r=(s==null?void 0:s.action)??"claim",a=i?"view":r,l=r===a&&(s!=null&&s.label)?s.label:a==="claim"?"Claim":"View",A=k(),R=q(),L=Y(),[T,h]=U.useState(""),$=a==="claim"&&!K(t),D=I=>{if(I.stopPropagation(),a==="view"){e==null||e();return}if(s!=null&&s.submitOnClaim){R(`/escalations/detail/${t.id}`,{state:{autoStart:!0,durationMinutes:s==null?void 0:s.durationMinutes,from:L.pathname}});return}h(""),A.mutate({id:t.id,durationMinutes:(s==null?void 0:s.durationMinutes)??X},{onSuccess:()=>e==null?void 0:e(),onError:N=>h(N.message)})},C=o?"btn-primary text-xs shrink-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-accent":"px-2 py-0.5 rounded text-2xs font-medium text-accent/70 border border-accent/30 enabled:hover:text-accent enabled:hover:border-accent/60 enabled:hover:bg-accent/5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap";return p.jsxs("span",{className:"inline-flex flex-col items-end gap-0.5",children:[p.jsx("button",{type:"button",onClick:D,disabled:A.isPending||$,title:$?t.status==="pending"?"claimed":t.status:void 0,className:C,"data-testid":"row-action-button",children:A.isPending?"Claiming…":l}),T&&p.jsx("span",{className:"text-2xs text-status-error","data-testid":"row-action-error",children:T})]})}const Z=/^\{\{\s*metadata\.([a-zA-Z0-9_]+)\s*\}\}$/;function x(t){return typeof t=="string"&&t!==""||typeof t=="number"||typeof t=="boolean"}function Et(t,s){var r;const e=[],o=new Set,i=t.metadata??{};for(const a of s){const l=typeof a.value=="string"?(r=a.value.match(Z))==null?void 0:r[1]:void 0;if(!l||o.has(l))continue;const A=i[l];x(A)&&(o.add(l),e.push({key:l,label:a.label,value:A,bound:!0}))}for(const[a,l]of Object.entries(i))o.has(a)||!x(l)||(o.add(a),e.push({key:a,label:W(a),value:l}));return e}function bt({onOpen:t,className:s=""}){return p.jsx("button",{type:"button",onClick:e=>{e.stopPropagation(),t()},className:`p-1.5 rounded text-text-quaternary/70 hover:text-accent hover:bg-surface-hover transition-colors ${s}`,title:"Refine — filter or search by this row's values","aria-label":"Refine — filter or search by this row's values","data-testid":"row-refine",children:p.jsx(P,{className:"w-3.5 h-3.5",strokeWidth:1.5})})}const g={RELATED:"x-lt-related",COLUMNS:"x-lt-columns",ROW_DETAIL:"x-lt-row-detail",GROUP_BY:"x-lt-group-by",LAYOUT:"x-lt-layout"},f={ITEMS:"items",QUERY:"query"},E={COUNT:"count",MIN:"min",MAX:"max"},z={FIRST:"first",MIN:"min",MAX:"max",SUM:"sum",COUNT:"count",DISTINCT:"distinct"},u={ROLE:"role",METADATA:"metadata.",PAYLOAD:"payload.",RECIPROCAL_METADATA:"reciprocal.metadata."},d={MAX_SETS:4,MAX_QUERY_ROLES:12,MAX_ROW_DETAIL_SECTIONS:4,ROWS_MAX:100},G="facet-table",M="default",F=/^\{\{\s*([^{}]+?)\s*\}\}$/,_="item.",Q=/^[a-zA-Z0-9_]+$/,B=/^[a-zA-Z0-9_]+$/,H=/\{n\}/g;function b(t){return t===E.MIN||t===E.MAX}function O(t,s){var i;if(typeof s!="string")return null;const e=(i=s.match(F))==null?void 0:i[1];if(!e)return null;if(t===f.ITEMS){if(!e.startsWith(`${_}${u.PAYLOAD}`))return null;const r=e.slice(_.length+u.PAYLOAD.length);return r&&r.split(".").every(a=>Q.test(a))?`${u.PAYLOAD}${r}`:null}if(!e.startsWith(u.METADATA))return null;const o=e.slice(u.METADATA.length);return B.test(o)?e:null}function Tt(t,s){return b(t.aggregate)?`${t.aggregate}:${O(s,t.value)??""}`:t.splitBy??""}function ht(t,s){if(!t)return null;const e=t[String(s)]??t[M];return e===void 0?null:e.replace(H,String(s))}function $t(t,s){if(!s.length)return;const e=t===E.MIN;if(s.every(i=>typeof i=="number"))return e?Math.min(...s):Math.max(...s);const o=s.map(String).sort((i,r)=>i<r?-1:i>r?1:0);return e?o[0]:o[o.length-1]}const y=/^[a-zA-Z0-9_]+$/,J=/^[a-zA-Z][a-zA-Z0-9_-]{0,47}$/,w=/^[a-zA-Z0-9_]+$/,V=/^(0|[1-9][0-9]*)$/;class tt extends Error{}function n(t){throw new tt(t)}function c(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function m(t){return typeof t=="string"&&t.trim().length>0}function et(t){return t.length>0&&t.split(".").every(s=>w.test(s))}function st(t,s){return t===f.QUERY?s===u.ROLE||s.startsWith(u.METADATA)&&y.test(s.slice(u.METADATA.length))?null:`splitBy "${s}" on a query set must be "role" or "metadata.<key>"`:s.startsWith(u.PAYLOAD)&&et(s.slice(u.PAYLOAD.length))||s.startsWith(u.RECIPROCAL_METADATA)&&y.test(s.slice(u.RECIPROCAL_METADATA.length))?null:`splitBy "${s}" on an items set must be "payload.<path>" or "reciprocal.metadata.<key>"`}function rt(t,s){if(J.test(t)||n(`x-lt-related name "${t}" must start with a letter (letters, digits, _ or -)`),c(s)||n(`x-lt-related.${t} must be an object`),s.source===f.ITEMS)return s.query!==void 0&&n(`x-lt-related.${t}: an items set takes no query`),{source:f.ITEMS};s.source!==f.QUERY&&n(`x-lt-related.${t}.source must be "items" or "query"`);const e=s.query;c(e)||n(`x-lt-related.${t}.query is required for a query set`);const o=e.roles!==void 0,i=e.segment!==void 0;if(o===i&&n(`x-lt-related.${t}.query takes exactly one of roles or segment`),o){const r=e.roles;(!Array.isArray(r)||r.length===0||r.length>d.MAX_QUERY_ROLES||!r.every(m))&&n(`x-lt-related.${t}.query.roles must be 1..${d.MAX_QUERY_ROLES} role names`)}else m(e.segment)||n(`x-lt-related.${t}.query.segment must be a role name`);(!c(e.facets)||Object.keys(e.facets).length===0)&&n(`x-lt-related.${t}.query.facets must name at least one facet`);for(const[r,a]of Object.entries(e.facets))y.test(r)||n(`x-lt-related.${t}.query.facets key "${r}" must be letters, digits or _`),(a===null||typeof a=="object")&&n(`x-lt-related.${t}.query.facets.${r} must be a scalar or template`);if(e.narrow!==void 0){(!c(e.narrow)||Object.keys(e.narrow).length===0)&&n(`x-lt-related.${t}.query.narrow must name at least one facet`);for(const[r,a]of Object.entries(e.narrow))y.test(r)||n(`x-lt-related.${t}.query.narrow key "${r}" must be letters, digits or _`),r in e.facets&&n(`x-lt-related.${t}.query.narrow.${r} is already a required facet`),(a===null||typeof a=="object")&&n(`x-lt-related.${t}.query.narrow.${r} must be a scalar or template`)}return e.status!==void 0&&!m(e.status)&&n(`x-lt-related.${t}.query.status must be a status`),{source:f.QUERY,query:{...o?{roles:[...e.roles]}:{segment:e.segment},facets:{...e.facets},...e.narrow!==void 0?{narrow:{...e.narrow}}:{},...e.status!==void 0?{status:e.status}:{}}}}function at(t,s,e){const o=t.related;(!m(o)||!s[o])&&n(`${e}.related must name a set declared in x-lt-related`),t.aggregate!==void 0&&t.aggregate!==E.COUNT&&!b(t.aggregate)&&n(`${e}.aggregate must be "count", "min" or "max"`);const i=s[o].source;if(b(t.aggregate)?(O(i,t.value)||n(i===f.ITEMS?`${e}.value must be "{{item.payload.<path>}}" on an items set`:`${e}.value must be "{{metadata.<key>}}" on a query set`),t.splitBy!==void 0&&n(`${e}: a ${t.aggregate} column takes no splitBy`),t.display!==void 0&&n(`${e}: display applies to a count column`)):t.value!==void 0&&n(`${e}.value applies to a min or max column`),t.format!==void 0&&typeof t.format!="string"&&n(`${e}.format must be a format name`),t.display!==void 0&&(!c(t.display)||Object.keys(t.display).length===0||!Object.entries(t.display).every(([r,a])=>(r===M||V.test(r))&&typeof a=="string"))&&n(`${e}.display must map counts (or "default") to display text`),t.splitBy!==void 0){m(t.splitBy)||n(`${e}.splitBy must be a path`);const r=st(s[o].source,t.splitBy);r&&n(`${e}: ${r}`)}return t.labels!==void 0&&(!c(t.labels)||!Object.values(t.labels).every(r=>typeof r=="string"))&&n(`${e}.labels must map values to display text`),t}function nt(t,s){return t===void 0?[]:((!Array.isArray(t)||t.length===0||t.length>d.MAX_ROW_DETAIL_SECTIONS)&&n(`x-lt-row-detail must be 1..${d.MAX_ROW_DETAIL_SECTIONS} sections`),t.map((e,o)=>{const i=`x-lt-row-detail[${o}]`;c(e)||n(`${i} must be an object`),(!m(e.related)||!s[e.related])&&n(`${i}.related must name a set declared in x-lt-related`),(!Array.isArray(e.columns)||e.columns.length===0)&&n(`${i}.columns must list at least one column`);for(const[r,a]of e.columns.entries())(!c(a)||!m(a.label)||typeof a.value!="string")&&n(`${i}.columns[${r}] needs a label and a value template`);return e.limit!==void 0&&(!Number.isInteger(e.limit)||e.limit<1||e.limit>d.ROWS_MAX)&&n(`${i}.limit must be 1..${d.ROWS_MAX}`),e}))}function ot(t){const s=t[g.GROUP_BY];if(s===void 0||t[g.LAYOUT]!==G)return null;const e=typeof s=="string"&&s.startsWith(u.METADATA)?s.slice(u.METADATA.length):"";return y.test(e)||n('x-lt-group-by on a facet-table must be "metadata.<key>"'),e}const S=new Set(Object.values(z));function xt(t){const s={sets:{},columns:[],rowDetail:[],groupKey:null};if(!c(t))return s;const e=t[g.RELATED],o={};if(e!==void 0){c(e)||n("x-lt-related must map set names to declarations");const a=Object.keys(e);(a.length===0||a.length>d.MAX_SETS)&&n(`x-lt-related must declare 1..${d.MAX_SETS} sets`);for(const l of a)o[l]=rt(l,e[l])}const i=[],r=t[g.COLUMNS];return Array.isArray(r)&&r.forEach((a,l)=>{c(a)&&(a.related!==void 0&&i.push(at(a,o,`x-lt-columns[${l}]`)),a.group!==void 0&&(typeof a.group!="string"||!S.has(a.group))&&n(`x-lt-columns[${l}].group must be one of ${[...S].join(", ")}`))}),{sets:o,columns:i,rowDetail:nt(t[g.ROW_DETAIL],o),groupKey:ot(t)}}export{z as G,pt as I,Z as M,bt as R,u as S,W as a,xt as b,b as c,ht as d,mt as e,$t as f,Et as g,yt as h,v as i,gt as j,Tt as k,ft as l,At as r};
|
|
2
|
-
//# sourceMappingURL=validate-
|
|
1
|
+
import{j as p,a as U}from"./vendor-query-DvWWuNIB.js";import{a as j}from"./StatusBadge-DHVwxre2.js";import{r as k}from"./index-Do9Y6Fgt.js";import{b as P}from"./vendor-icons-D48ijXZU.js";import{u as q,a as Y}from"./vendor-react-_9U4mKFr.js";function v(t){return!!(t.assigned_to&&t.assigned_until&&new Date(t.assigned_until)>new Date)}function ft(t){return!t.workflow_type}function W(t){return t.replace(/[_\-.]+/g," ").replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/([a-zA-Z])(\d)/g,"$1 $2").trim().split(/\s+/).filter(Boolean).map(e=>e===e.toUpperCase()&&e.length>1?e:e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function mt(t){return t.status==="pending"?v(t)?"bg-status-claimed-graphic":"bg-status-active":j[t.status]??"bg-status-active"}function At(t){const s=e=>{if(!e)return null;try{const o=JSON.parse(e);return o&&typeof o=="object"?o:null}catch{return null}};return{escalation:t,metadata:t.metadata??null,envelope:s(t.envelope),payload:s(t.escalation_payload),resolver:s(t.resolver_payload)}}const pt="200px";function gt(t){return`${Math.max(6,Math.round(t.length*.55+3.5))}rem`}const X=30;function K(t){return t.status==="pending"&&!v(t)}function yt({row:t,def:s,onView:e,prominent:o,forceView:i}){const r=(s==null?void 0:s.action)??"claim",a=i?"view":r,l=r===a&&(s!=null&&s.label)?s.label:a==="claim"?"Claim":"View",A=k(),R=q(),L=Y(),[T,h]=U.useState(""),$=a==="claim"&&!K(t),D=I=>{if(I.stopPropagation(),a==="view"){e==null||e();return}if(s!=null&&s.submitOnClaim){R(`/escalations/detail/${t.id}`,{state:{autoStart:!0,durationMinutes:s==null?void 0:s.durationMinutes,from:L.pathname}});return}h(""),A.mutate({id:t.id,durationMinutes:(s==null?void 0:s.durationMinutes)??X},{onSuccess:()=>e==null?void 0:e(),onError:N=>h(N.message)})},C=o?"btn-primary text-xs shrink-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-accent":"px-2 py-0.5 rounded text-2xs font-medium text-accent/70 border border-accent/30 enabled:hover:text-accent enabled:hover:border-accent/60 enabled:hover:bg-accent/5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap";return p.jsxs("span",{className:"inline-flex flex-col items-end gap-0.5",children:[p.jsx("button",{type:"button",onClick:D,disabled:A.isPending||$,title:$?t.status==="pending"?"claimed":t.status:void 0,className:C,"data-testid":"row-action-button",children:A.isPending?"Claiming…":l}),T&&p.jsx("span",{className:"text-2xs text-status-error","data-testid":"row-action-error",children:T})]})}const Z=/^\{\{\s*metadata\.([a-zA-Z0-9_]+)\s*\}\}$/;function x(t){return typeof t=="string"&&t!==""||typeof t=="number"||typeof t=="boolean"}function Et(t,s){var r;const e=[],o=new Set,i=t.metadata??{};for(const a of s){const l=typeof a.value=="string"?(r=a.value.match(Z))==null?void 0:r[1]:void 0;if(!l||o.has(l))continue;const A=i[l];x(A)&&(o.add(l),e.push({key:l,label:a.label,value:A,bound:!0}))}for(const[a,l]of Object.entries(i))o.has(a)||!x(l)||(o.add(a),e.push({key:a,label:W(a),value:l}));return e}function bt({onOpen:t,className:s=""}){return p.jsx("button",{type:"button",onClick:e=>{e.stopPropagation(),t()},className:`p-1.5 rounded text-text-quaternary/70 hover:text-accent hover:bg-surface-hover transition-colors ${s}`,title:"Refine — filter or search by this row's values","aria-label":"Refine — filter or search by this row's values","data-testid":"row-refine",children:p.jsx(P,{className:"w-3.5 h-3.5",strokeWidth:1.5})})}const g={RELATED:"x-lt-related",COLUMNS:"x-lt-columns",ROW_DETAIL:"x-lt-row-detail",GROUP_BY:"x-lt-group-by",LAYOUT:"x-lt-layout"},f={ITEMS:"items",QUERY:"query"},E={COUNT:"count",MIN:"min",MAX:"max"},z={FIRST:"first",MIN:"min",MAX:"max",SUM:"sum",COUNT:"count",DISTINCT:"distinct"},u={ROLE:"role",METADATA:"metadata.",PAYLOAD:"payload.",RECIPROCAL_METADATA:"reciprocal.metadata."},d={MAX_SETS:4,MAX_QUERY_ROLES:12,MAX_ROW_DETAIL_SECTIONS:4,ROWS_MAX:100},G="facet-table",M="default",F=/^\{\{\s*([^{}]+?)\s*\}\}$/,_="item.",Q=/^[a-zA-Z0-9_]+$/,B=/^[a-zA-Z0-9_]+$/,H=/\{n\}/g;function b(t){return t===E.MIN||t===E.MAX}function O(t,s){var i;if(typeof s!="string")return null;const e=(i=s.match(F))==null?void 0:i[1];if(!e)return null;if(t===f.ITEMS){if(!e.startsWith(`${_}${u.PAYLOAD}`))return null;const r=e.slice(_.length+u.PAYLOAD.length);return r&&r.split(".").every(a=>Q.test(a))?`${u.PAYLOAD}${r}`:null}if(!e.startsWith(u.METADATA))return null;const o=e.slice(u.METADATA.length);return B.test(o)?e:null}function Tt(t,s){return b(t.aggregate)?`${t.aggregate}:${O(s,t.value)??""}`:t.splitBy??""}function ht(t,s){if(!t)return null;const e=t[String(s)]??t[M];return e===void 0?null:e.replace(H,String(s))}function $t(t,s){if(!s.length)return;const e=t===E.MIN;if(s.every(i=>typeof i=="number"))return e?Math.min(...s):Math.max(...s);const o=s.map(String).sort((i,r)=>i<r?-1:i>r?1:0);return e?o[0]:o[o.length-1]}const y=/^[a-zA-Z0-9_]+$/,J=/^[a-zA-Z][a-zA-Z0-9_-]{0,47}$/,w=/^[a-zA-Z0-9_]+$/,V=/^(0|[1-9][0-9]*)$/;class tt extends Error{}function n(t){throw new tt(t)}function c(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function m(t){return typeof t=="string"&&t.trim().length>0}function et(t){return t.length>0&&t.split(".").every(s=>w.test(s))}function st(t,s){return t===f.QUERY?s===u.ROLE||s.startsWith(u.METADATA)&&y.test(s.slice(u.METADATA.length))?null:`splitBy "${s}" on a query set must be "role" or "metadata.<key>"`:s.startsWith(u.PAYLOAD)&&et(s.slice(u.PAYLOAD.length))||s.startsWith(u.RECIPROCAL_METADATA)&&y.test(s.slice(u.RECIPROCAL_METADATA.length))?null:`splitBy "${s}" on an items set must be "payload.<path>" or "reciprocal.metadata.<key>"`}function rt(t,s){if(J.test(t)||n(`x-lt-related name "${t}" must start with a letter (letters, digits, _ or -)`),c(s)||n(`x-lt-related.${t} must be an object`),s.source===f.ITEMS)return s.query!==void 0&&n(`x-lt-related.${t}: an items set takes no query`),{source:f.ITEMS};s.source!==f.QUERY&&n(`x-lt-related.${t}.source must be "items" or "query"`);const e=s.query;c(e)||n(`x-lt-related.${t}.query is required for a query set`);const o=e.roles!==void 0,i=e.segment!==void 0;if(o===i&&n(`x-lt-related.${t}.query takes exactly one of roles or segment`),o){const r=e.roles;(!Array.isArray(r)||r.length===0||r.length>d.MAX_QUERY_ROLES||!r.every(m))&&n(`x-lt-related.${t}.query.roles must be 1..${d.MAX_QUERY_ROLES} role names`)}else m(e.segment)||n(`x-lt-related.${t}.query.segment must be a role name`);(!c(e.facets)||Object.keys(e.facets).length===0)&&n(`x-lt-related.${t}.query.facets must name at least one facet`);for(const[r,a]of Object.entries(e.facets))y.test(r)||n(`x-lt-related.${t}.query.facets key "${r}" must be letters, digits or _`),(a===null||typeof a=="object")&&n(`x-lt-related.${t}.query.facets.${r} must be a scalar or template`);if(e.narrow!==void 0){(!c(e.narrow)||Object.keys(e.narrow).length===0)&&n(`x-lt-related.${t}.query.narrow must name at least one facet`);for(const[r,a]of Object.entries(e.narrow))y.test(r)||n(`x-lt-related.${t}.query.narrow key "${r}" must be letters, digits or _`),r in e.facets&&n(`x-lt-related.${t}.query.narrow.${r} is already a required facet`),(a===null||typeof a=="object")&&n(`x-lt-related.${t}.query.narrow.${r} must be a scalar or template`)}return e.status!==void 0&&!m(e.status)&&n(`x-lt-related.${t}.query.status must be a status`),{source:f.QUERY,query:{...o?{roles:[...e.roles]}:{segment:e.segment},facets:{...e.facets},...e.narrow!==void 0?{narrow:{...e.narrow}}:{},...e.status!==void 0?{status:e.status}:{}}}}function at(t,s,e){const o=t.related;(!m(o)||!s[o])&&n(`${e}.related must name a set declared in x-lt-related`),t.aggregate!==void 0&&t.aggregate!==E.COUNT&&!b(t.aggregate)&&n(`${e}.aggregate must be "count", "min" or "max"`);const i=s[o].source;if(b(t.aggregate)?(O(i,t.value)||n(i===f.ITEMS?`${e}.value must be "{{item.payload.<path>}}" on an items set`:`${e}.value must be "{{metadata.<key>}}" on a query set`),t.splitBy!==void 0&&n(`${e}: a ${t.aggregate} column takes no splitBy`),t.display!==void 0&&n(`${e}: display applies to a count column`)):t.value!==void 0&&n(`${e}.value applies to a min or max column`),t.format!==void 0&&typeof t.format!="string"&&n(`${e}.format must be a format name`),t.display!==void 0&&(!c(t.display)||Object.keys(t.display).length===0||!Object.entries(t.display).every(([r,a])=>(r===M||V.test(r))&&typeof a=="string"))&&n(`${e}.display must map counts (or "default") to display text`),t.splitBy!==void 0){m(t.splitBy)||n(`${e}.splitBy must be a path`);const r=st(s[o].source,t.splitBy);r&&n(`${e}: ${r}`)}return t.labels!==void 0&&(!c(t.labels)||!Object.values(t.labels).every(r=>typeof r=="string"))&&n(`${e}.labels must map values to display text`),t}function nt(t,s){return t===void 0?[]:((!Array.isArray(t)||t.length===0||t.length>d.MAX_ROW_DETAIL_SECTIONS)&&n(`x-lt-row-detail must be 1..${d.MAX_ROW_DETAIL_SECTIONS} sections`),t.map((e,o)=>{const i=`x-lt-row-detail[${o}]`;c(e)||n(`${i} must be an object`),(!m(e.related)||!s[e.related])&&n(`${i}.related must name a set declared in x-lt-related`),(!Array.isArray(e.columns)||e.columns.length===0)&&n(`${i}.columns must list at least one column`);for(const[r,a]of e.columns.entries())(!c(a)||!m(a.label)||typeof a.value!="string")&&n(`${i}.columns[${r}] needs a label and a value template`);return e.limit!==void 0&&(!Number.isInteger(e.limit)||e.limit<1||e.limit>d.ROWS_MAX)&&n(`${i}.limit must be 1..${d.ROWS_MAX}`),e}))}function ot(t){const s=t[g.GROUP_BY];if(s===void 0||t[g.LAYOUT]!==G)return null;const e=typeof s=="string"&&s.startsWith(u.METADATA)?s.slice(u.METADATA.length):"";return y.test(e)||n('x-lt-group-by on a facet-table must be "metadata.<key>"'),e}const S=new Set(Object.values(z));function xt(t){const s={sets:{},columns:[],rowDetail:[],groupKey:null};if(!c(t))return s;const e=t[g.RELATED],o={};if(e!==void 0){c(e)||n("x-lt-related must map set names to declarations");const a=Object.keys(e);(a.length===0||a.length>d.MAX_SETS)&&n(`x-lt-related must declare 1..${d.MAX_SETS} sets`);for(const l of a)o[l]=rt(l,e[l])}const i=[],r=t[g.COLUMNS];return Array.isArray(r)&&r.forEach((a,l)=>{c(a)&&(a.related!==void 0&&i.push(at(a,o,`x-lt-columns[${l}]`)),a.group!==void 0&&(typeof a.group!="string"||!S.has(a.group))&&n(`x-lt-columns[${l}].group must be one of ${[...S].join(", ")}`))}),{sets:o,columns:i,rowDetail:nt(t[g.ROW_DETAIL],o),groupKey:ot(t)}}export{z as G,pt as I,Z as M,bt as R,u as S,W as a,xt as b,b as c,ht as d,mt as e,$t as f,Et as g,yt as h,v as i,gt as j,Tt as k,ft as l,At as r};
|
|
2
|
+
//# sourceMappingURL=validate-Be4GWnJ1.js.map
|