@hotmeshio/long-tail 0.30.4 → 0.31.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/index.d.ts +1 -0
- package/build/api/escalations/index.js +5 -2
- package/build/api/escalations/roster-action.d.ts +11 -0
- package/build/api/escalations/roster-action.js +47 -30
- package/build/api/escalations/roster-scan.d.ts +26 -0
- package/build/api/escalations/roster-scan.js +114 -0
- package/build/api/labels/errors.d.ts +3 -0
- package/build/api/labels/errors.js +15 -0
- package/build/api/labels/index.d.ts +2 -0
- package/build/api/labels/index.js +17 -0
- package/build/api/labels/issue.d.ts +54 -0
- package/build/api/labels/issue.js +144 -0
- package/build/api/labels/templates.d.ts +29 -0
- package/build/api/labels/templates.js +98 -0
- package/build/api/scan-codes/context.d.ts +9 -1
- package/build/api/scan-codes/context.js +16 -1
- package/build/api/scan-codes/execute.js +6 -1
- package/build/api/scan-codes/fill-labels.d.ts +8 -0
- package/build/api/scan-codes/fill-labels.js +23 -2
- package/build/api/scan-codes/hold.js +2 -0
- package/build/api/scan-codes/located.d.ts +10 -0
- package/build/api/scan-codes/located.js +74 -0
- package/build/api/scan-codes/open.d.ts +9 -0
- package/build/api/scan-codes/open.js +99 -0
- package/build/api/scan-codes/present.js +1 -0
- package/build/api/scan-codes/verb-fill.js +1 -1
- package/build/api/users.d.ts +8 -4
- package/build/api/users.js +51 -13
- package/build/index.d.ts +1 -0
- package/build/index.js +4 -2
- package/build/lib/db/schemas/044_label_sheets.sql +65 -0
- package/build/lib/db/schemas/045_label_job_delivery.sql +14 -0
- package/build/lib/labels/transports.d.ts +23 -0
- package/build/lib/labels/transports.js +39 -0
- package/build/modules/auth.d.ts +2 -0
- package/build/modules/auth.js +3 -1
- package/build/modules/capabilities.d.ts +5 -1
- package/build/modules/capabilities.js +38 -8
- package/build/modules/config.d.ts +10 -0
- package/build/modules/config.js +10 -0
- package/build/routes/escalations/resolve.js +18 -0
- package/build/routes/index.js +2 -0
- package/build/routes/labels.d.ts +2 -0
- package/build/routes/labels.js +135 -0
- package/build/routes/users.js +1 -1
- package/build/services/labels/content.d.ts +13 -0
- package/build/services/labels/content.js +81 -0
- package/build/services/labels/errors.d.ts +5 -0
- package/build/services/labels/errors.js +12 -0
- package/build/services/labels/index.d.ts +11 -0
- package/build/services/labels/index.js +52 -0
- package/build/services/labels/issue.d.ts +38 -0
- package/build/services/labels/issue.js +181 -0
- package/build/services/labels/jobs.d.ts +37 -0
- package/build/services/labels/jobs.js +75 -0
- package/build/services/labels/media.d.ts +11 -0
- package/build/services/labels/media.js +44 -0
- package/build/services/labels/reissue.d.ts +13 -0
- package/build/services/labels/reissue.js +65 -0
- package/build/services/labels/render-pdf.d.ts +11 -0
- package/build/services/labels/render-pdf.js +138 -0
- package/build/services/labels/targets.d.ts +18 -0
- package/build/services/labels/targets.js +216 -0
- package/build/services/labels/templates/index.d.ts +3 -0
- package/build/services/labels/templates/index.js +18 -0
- package/build/services/labels/templates/read.d.ts +4 -0
- package/build/services/labels/templates/read.js +36 -0
- package/build/services/labels/templates/sql.d.ts +8 -0
- package/build/services/labels/templates/sql.js +50 -0
- package/build/services/labels/templates/validate.d.ts +19 -0
- package/build/services/labels/templates/validate.js +93 -0
- package/build/services/labels/templates/write.d.ts +16 -0
- package/build/services/labels/templates/write.js +75 -0
- package/build/services/labels/token.d.ts +9 -0
- package/build/services/labels/token.js +28 -0
- package/build/services/labels/verify.d.ts +4 -0
- package/build/services/labels/verify.js +38 -0
- package/build/services/role/index.d.ts +2 -0
- package/build/services/role/index.js +7 -0
- package/build/services/role/scan-done.js +4 -1
- package/build/services/role/sql.d.ts +1 -0
- package/build/services/role/sql.js +3 -1
- package/build/services/role/types.d.ts +2 -0
- package/build/services/scan-code/index.d.ts +1 -1
- package/build/services/scan-code/index.js +2 -1
- package/build/services/scan-code/parse.d.ts +5 -1
- package/build/services/scan-code/parse.js +8 -2
- package/build/services/scan-code/validate-station.d.ts +13 -0
- package/build/services/scan-code/validate-station.js +81 -0
- package/build/services/scan-code/validate-subject.js +33 -6
- package/build/services/scan-code/validate.d.ts +3 -0
- package/build/services/scan-code/validate.js +22 -18
- package/build/services/user/crud.d.ts +13 -1
- package/build/services/user/crud.js +42 -11
- package/build/services/user/index.d.ts +3 -2
- package/build/services/user/index.js +7 -1
- package/build/services/user/redact.d.ts +17 -0
- package/build/services/user/redact.js +32 -0
- package/build/services/user/sql.d.ts +8 -15
- package/build/services/user/sql.js +27 -3
- package/build/services/user/types.d.ts +21 -1
- package/build/shared/labels/compose.d.ts +12 -0
- package/build/shared/labels/compose.js +43 -0
- package/build/shared/labels/index.d.ts +9 -0
- package/build/shared/labels/index.js +54 -0
- package/build/shared/labels/label-content.d.ts +17 -0
- package/build/shared/labels/label-content.js +137 -0
- package/build/shared/labels/layout.d.ts +23 -0
- package/build/shared/labels/layout.js +81 -0
- package/build/shared/labels/media.d.ts +22 -0
- package/build/shared/labels/media.js +116 -0
- package/build/shared/labels/render-svg.d.ts +10 -0
- package/build/shared/labels/render-svg.js +58 -0
- package/build/shared/labels/render-zpl.d.ts +9 -0
- package/build/shared/labels/render-zpl.js +63 -0
- package/build/shared/labels/symbol.d.ts +18 -0
- package/build/shared/labels/symbol.js +74 -0
- package/build/shared/labels/tokens.d.ts +18 -0
- package/build/shared/labels/tokens.js +43 -0
- package/build/shared/labels/types.d.ts +105 -0
- package/build/shared/labels/types.js +11 -0
- package/build/start/adapters.js +16 -0
- package/build/start/workers.js +18 -2
- package/build/system/mcp-servers/admin/index.js +2 -0
- package/build/system/mcp-servers/admin/labels-schemas.d.ts +192 -0
- package/build/system/mcp-servers/admin/labels-schemas.js +46 -0
- package/build/system/mcp-servers/admin/labels.d.ts +9 -0
- package/build/system/mcp-servers/admin/labels.js +101 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +491 -24
- package/build/system/mcp-servers/admin/schemas.js +32 -4
- package/build/system/mcp-servers/admin/users.js +1 -1
- package/build/system/seed/tool-manifests-admin.js +5 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/capability.d.ts +2 -1
- package/build/types/index.d.ts +3 -2
- package/build/types/labels/index.d.ts +4 -0
- package/build/types/labels/index.js +2 -0
- package/build/types/labels/job.d.ts +51 -0
- package/build/types/labels/job.js +2 -0
- package/build/types/labels/source.d.ts +44 -0
- package/build/types/labels/source.js +2 -0
- package/build/types/labels/template.d.ts +46 -0
- package/build/types/labels/template.js +2 -0
- package/build/types/labels/transport.d.ts +24 -0
- package/build/types/labels/transport.js +2 -0
- package/build/types/scan-choice.d.ts +2 -4
- package/build/types/scan-code/constants.d.ts +1 -0
- package/build/types/scan-code/constants.js +1 -0
- package/build/types/scan-code/response.d.ts +22 -4
- package/build/types/scan-code/rule.d.ts +66 -3
- package/build/types/startup.d.ts +37 -0
- package/build/types/user.d.ts +2 -0
- package/dashboard/dist/assets/{AdminDashboard-VQ1fhhJP.js → AdminDashboard-BafKaq50.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-VQ1fhhJP.js.map → AdminDashboard-BafKaq50.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-BOe_W2Ij.js → AgentConfigPage-CFHf31DT.js} +6 -6
- package/dashboard/dist/assets/{AgentConfigPage-BOe_W2Ij.js.map → AgentConfigPage-CFHf31DT.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-5ov5D9V2.js → AgentDetailPage-CEvz5rJr.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-5ov5D9V2.js.map → AgentDetailPage-CEvz5rJr.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-DDFMKHhI.js → AgentsPage-DjQaio0O.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-DDFMKHhI.js.map → AgentsPage-DjQaio0O.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-UB03VTJx.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-UB03VTJx.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-Dqpo36dM.js → BotPicker-C7MNWOF7.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Dqpo36dM.js.map → BotPicker-C7MNWOF7.js.map} +1 -1
- package/dashboard/dist/assets/BulkAssignModal-h5fX-_cV.js +2 -0
- package/dashboard/dist/assets/{BulkAssignModal-CmLVxkz-.js.map → BulkAssignModal-h5fX-_cV.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-Dfkip6_b.js → CapabilitiesPage-BIzDl-ZT.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-Dfkip6_b.js.map → CapabilitiesPage-BIzDl-ZT.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CYNYMYSa.js → CollapsibleSection-B5TivtEg.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CYNYMYSa.js.map → CollapsibleSection-B5TivtEg.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpJNP-8w.js → ConfirmDeleteModal-CB4nKePb.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpJNP-8w.js.map → ConfirmDeleteModal-CB4nKePb.js.map} +1 -1
- package/dashboard/dist/assets/{ConnectedAppsPage-DXIp2Dpl.js → ConnectedAppsPage-B3S5gVWw.js} +2 -2
- package/dashboard/dist/assets/{ConnectedAppsPage-DXIp2Dpl.js.map → ConnectedAppsPage-B3S5gVWw.js.map} +1 -1
- package/dashboard/dist/assets/{CountdownTimer-CuPY7zkb.js → CountdownTimer-BHVIq3kA.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-CuPY7zkb.js.map → CountdownTimer-BHVIq3kA.js.map} +1 -1
- package/dashboard/dist/assets/CredentialConfirmModal-w0AGmCIe.js +2 -0
- package/dashboard/dist/assets/CredentialConfirmModal-w0AGmCIe.js.map +1 -0
- package/dashboard/dist/assets/{CredentialsPage-CtrnkHcj.js → CredentialsPage-BtCGBJrT.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-CtrnkHcj.js.map → CredentialsPage-BtCGBJrT.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-DVjTw5Ri.js → CronLabel-BG1rZK-5.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-DVjTw5Ri.js.map → CronLabel-BG1rZK-5.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-DefYTYQy.js → DropZone-D8ZVdEb5.js} +2 -2
- package/dashboard/dist/assets/{DropZone-DefYTYQy.js.map → DropZone-D8ZVdEb5.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-gY_mGMTF.js → ElapsedCell-l4m8Yvfv.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-gY_mGMTF.js.map → ElapsedCell-l4m8Yvfv.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-DJN_ZEQa.js → EntityTimelinePanel-BOHlIaxF.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-DJN_ZEQa.js.map → EntityTimelinePanel-BOHlIaxF.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-A4KpTdJA.js → EscalationListSchemaPage-BotlwlX3.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-A4KpTdJA.js.map → EscalationListSchemaPage-BotlwlX3.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-nfCn42hT.js → EscalationSchemaPage-CfZSVOSD.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-nfCn42hT.js.map → EscalationSchemaPage-CfZSVOSD.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-CLvSr1SD.js → EscalationTimeline-CCKpuRBU.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-CLvSr1SD.js.map → EscalationTimeline-CCKpuRBU.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-CT7mYHkb.js → EscalationTitleSelect-cpTzPHiW.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-CT7mYHkb.js.map → EscalationTitleSelect-cpTzPHiW.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CKaGRh-E.js → EscalationsOverview-DS-nK0qV.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CKaGRh-E.js.map → EscalationsOverview-DS-nK0qV.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-2ywJsOLy.js → EventTable-UfebhJf0.js} +2 -2
- package/dashboard/dist/assets/{EventTable-2ywJsOLy.js.map → EventTable-UfebhJf0.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-Dy0b7wwf.js → FilterBar-newA5l-X.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-Dy0b7wwf.js.map → FilterBar-newA5l-X.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-yOVpraAy.js → GraphInvokePage-6SCDyQcK.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-yOVpraAy.js.map → GraphInvokePage-6SCDyQcK.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-BEc-XdKj.js +2 -0
- package/dashboard/dist/assets/{HomePage-67xXjKjN.js.map → HomePage-BEc-XdKj.js.map} +1 -1
- package/dashboard/dist/assets/LabelJobsPage-BO50zXT5.js +2 -0
- package/dashboard/dist/assets/LabelJobsPage-BO50zXT5.js.map +1 -0
- package/dashboard/dist/assets/{LinePage-CMsYtukW.js → LinePage-NYxJQ-ex.js} +3 -3
- package/dashboard/dist/assets/{LinePage-CMsYtukW.js.map → LinePage-NYxJQ-ex.js.map} +1 -1
- package/dashboard/dist/assets/{LinesPage-pwL46mOS.js → LinesPage-RbWTaQRh.js} +3 -3
- package/dashboard/dist/assets/{LinesPage-pwL46mOS.js.map → LinesPage-RbWTaQRh.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-CJmvGy2B.js → ListToolbar-B-E9-toh.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-CJmvGy2B.js.map → ListToolbar-B-E9-toh.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-DA9LLvNG.js → McpOverview-Shcf9QhZ.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-DA9LLvNG.js.map → McpOverview-Shcf9QhZ.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-N7qLmfE8.js → McpQueryDetailPage-D8kmjy2v.js} +3 -3
- package/dashboard/dist/assets/{McpQueryDetailPage-N7qLmfE8.js.map → McpQueryDetailPage-D8kmjy2v.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-CpsP3w7x.js → McpQueryPage-ck-o5m8A.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-CpsP3w7x.js.map → McpQueryPage-ck-o5m8A.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-BJKkM9-3.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-qHRQ1pEY.js.map → McpRunDetailPage-BJKkM9-3.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-BRDDYpTM.js → McpRunsPage-DqhHfD5G.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-BRDDYpTM.js.map → McpRunsPage-DqhHfD5G.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill-CeSfHH-j.js → NamespacePill--uIaGtrN.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-CeSfHH-j.js.map → NamespacePill--uIaGtrN.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-zUaab-CL.js → OperationsPage-D6B9Vv__.js} +3 -3
- package/dashboard/dist/assets/{OperationsPage-zUaab-CL.js.map → OperationsPage-D6B9Vv__.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-CIH1cxjQ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-el5BquXN.js.map → OperatorDashboard-CIH1cxjQ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-DiGWAQlR.js → PageHeader-DClJ33fV.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-DiGWAQlR.js.map → PageHeader-DClJ33fV.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-DwnKQ06j.js → PageHeaderWithStats-C-TrbKQL.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-DwnKQ06j.js.map → PageHeaderWithStats-C-TrbKQL.js.map} +1 -1
- package/dashboard/dist/assets/PersonaDetailPage-DjvfyIph.js +2 -0
- package/dashboard/dist/assets/{PersonaDetailPage-B_tb8gfl.js.map → PersonaDetailPage-DjvfyIph.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-BPI7mqM8.js → PersonasPage-D7ryA8Vc.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-BPI7mqM8.js.map → PersonasPage-D7ryA8Vc.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-e_rBb1do.js → PortalPage-D3ybr0mo.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-e_rBb1do.js.map → PortalPage-D3ybr0mo.js.map} +1 -1
- package/dashboard/dist/assets/PrintLabelsPanel-D0HF5x8b.js +2 -0
- package/dashboard/dist/assets/PrintLabelsPanel-D0HF5x8b.js.map +1 -0
- package/dashboard/dist/assets/{ProcessDetailPage-D35RX1bB.js → ProcessDetailPage-0xS9EdHe.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-D35RX1bB.js.map → ProcessDetailPage-0xS9EdHe.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-CT81miI5.js → ProcessesListPage-93SMj1Fd.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-CT81miI5.js.map → ProcessesListPage-93SMj1Fd.js.map} +1 -1
- package/dashboard/dist/assets/{ResolverForm-BxJkoKAO.js → ResolverForm-DfogHDzl.js} +5 -5
- package/dashboard/dist/assets/{ResolverForm-BxJkoKAO.js.map → ResolverForm-DfogHDzl.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-DlUOJWSB.js +8 -0
- package/dashboard/dist/assets/{RoleDetailPage-DtU7vsJm.js.map → RoleDetailPage-DlUOJWSB.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D3hkAdKf.js → RolePill-BjD1Qw5y.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D3hkAdKf.js.map → RolePill-BjD1Qw5y.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DqhHSvaw.js +2 -0
- package/dashboard/dist/assets/{RolesPage-BE7RWt9q.js.map → RolesPage-DqhHSvaw.js.map} +1 -1
- package/dashboard/dist/assets/{RosterWidget-BJMx0a8Z.js → RosterWidget-BrIq61HR.js} +2 -2
- package/dashboard/dist/assets/RosterWidget-BrIq61HR.js.map +1 -0
- package/dashboard/dist/assets/RunAsSelector-D6zQrCNr.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-Co6s9bqA.js.map → RunAsSelector-D6zQrCNr.js.map} +1 -1
- package/dashboard/dist/assets/ScanCodesPage-B2S9DR2f.js +2 -0
- package/dashboard/dist/assets/{ScanCodesPage-C2TETaj5.js.map → ScanCodesPage-B2S9DR2f.js.map} +1 -1
- package/dashboard/dist/assets/ScanSchemeDetailPage-gpxKN-pL.js +5 -0
- package/dashboard/dist/assets/ScanSchemeDetailPage-gpxKN-pL.js.map +1 -0
- package/dashboard/dist/assets/ScanStationPage-B-UTgXsG.js +2 -0
- package/dashboard/dist/assets/ScanStationPage-B-UTgXsG.js.map +1 -0
- package/dashboard/dist/assets/{SchemeMatchFields-9H7SmbED.js → SchemeMatchFields-BK24aa7K.js} +2 -2
- package/dashboard/dist/assets/{SchemeMatchFields-9H7SmbED.js.map → SchemeMatchFields-BK24aa7K.js.map} +1 -1
- package/dashboard/dist/assets/{ScopeBadge-DGz79rmG.js → ScopeBadge-ofLQ6HW-.js} +2 -2
- package/dashboard/dist/assets/{ScopeBadge-DGz79rmG.js.map → ScopeBadge-ofLQ6HW-.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-miUdVAKw.js → StickyPagination-CgVv7vc_.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-miUdVAKw.js.map → StickyPagination-CgVv7vc_.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-D5Rk7pn7.js → StreamMessageDetail-B9sxDVw4.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-D5Rk7pn7.js.map → StreamMessageDetail-B9sxDVw4.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-B1QY1ZzH.js → SwimlaneTimeline-DQc0CYSL.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-B1QY1ZzH.js.map → SwimlaneTimeline-DQc0CYSL.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-DaIdhv3h.js → TagInput-47qVYzke.js} +2 -2
- package/dashboard/dist/assets/{TagInput-DaIdhv3h.js.map → TagInput-47qVYzke.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-DKUM37o8.js → TaskDetailPage-D6VOsA1f.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-DKUM37o8.js.map → TaskDetailPage-D6VOsA1f.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-sUA1nZe-.js → TaskQueuePill-C5KmdXAl.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-sUA1nZe-.js.map → TaskQueuePill-C5KmdXAl.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CUulwvm-.js → TasksListPage-DG8hvO8G.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CUulwvm-.js.map → TasksListPage-DG8hvO8G.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-CHTelacB.js → TimeAgo-CL02EhFi.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-CHTelacB.js.map → TimeAgo-CL02EhFi.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-NanLWLKo.js → TimestampCell-BE7oKVJg.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-NanLWLKo.js.map → TimestampCell-BE7oKVJg.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-CpBAFdEX.js → ToolPill-Cp9Drk1s.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-CpBAFdEX.js.map → ToolPill-Cp9Drk1s.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-CF1CHzgz.js → ToolTestPanel-CRecLh6S.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-CF1CHzgz.js.map → ToolTestPanel-CRecLh6S.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-CGO8XV_a.js → TopicDetailPage-QzkinTfN.js} +3 -3
- package/dashboard/dist/assets/{TopicDetailPage-CGO8XV_a.js.map → TopicDetailPage-QzkinTfN.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-Bt8gOKYr.js → TopicsPage-D8dW6J65.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-Bt8gOKYr.js.map → TopicsPage-D8dW6J65.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DKXnK7DD.js → UserName-Dw3R_zrl.js} +2 -2
- package/dashboard/dist/assets/{UserName-DKXnK7DD.js.map → UserName-Dw3R_zrl.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BTocv8or.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-Crf7AIFc.js.map → WorkflowExecutionPage-BTocv8or.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CKHip3hH.js → WorkflowPill-BiLYq__w.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CKHip3hH.js.map → WorkflowPill-BiLYq__w.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-CIPEt3et.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard--isjt06C.js.map → WorkflowsDashboard-CIPEt3et.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-D7Oqf4-V.js → WorkflowsOverview-Bj4MJIE-.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-D7Oqf4-V.js.map → WorkflowsOverview-Bj4MJIE-.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-B0wxgrGP.js → YamlWorkflowDetailPage-DMEk5k9-.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-B0wxgrGP.js.map → YamlWorkflowDetailPage-DMEk5k9-.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-BVdLnm6K.js → YamlWorkflowsPage-F2yyyoiB.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-BVdLnm6K.js.map → YamlWorkflowsPage-F2yyyoiB.js.map} +1 -1
- package/dashboard/dist/assets/{agents-CHjbjHXA.js → agents-mSgxEPpI.js} +2 -2
- package/dashboard/dist/assets/{agents-CHjbjHXA.js.map → agents-mSgxEPpI.js.map} +1 -1
- package/dashboard/dist/assets/{bots-WrUhEPWs.js → bots-p4Hp0CV6.js} +2 -2
- package/dashboard/dist/assets/{bots-WrUhEPWs.js.map → bots-p4Hp0CV6.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-CunMmkj8.js → capabilities-D_-I_SXR.js} +2 -2
- package/dashboard/dist/assets/{capabilities-CunMmkj8.js.map → capabilities-D_-I_SXR.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-D6IZIZoh.js → controlplane-DjdoQnRU.js} +2 -2
- package/dashboard/dist/assets/{controlplane-D6IZIZoh.js.map → controlplane-DjdoQnRU.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-Bvo6JI4Z.js → escalation-columns-R_IEVQjQ.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-Bvo6JI4Z.js.map → escalation-columns-R_IEVQjQ.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-items-DFGRwo49.js → escalation-items-BGZlJMpk.js} +2 -2
- package/dashboard/dist/assets/{escalation-items-DFGRwo49.js.map → escalation-items-BGZlJMpk.js.map} +1 -1
- package/dashboard/dist/assets/{index-OuKQ_0eB.js → index-BEMdD58x.js} +2 -2
- package/dashboard/dist/assets/{index-OuKQ_0eB.js.map → index-BEMdD58x.js.map} +1 -1
- package/dashboard/dist/assets/index-BUmz0NMg.css +1 -0
- package/dashboard/dist/assets/{index-C7EIu1mG.js → index-BuCEhhnl.js} +2 -2
- package/dashboard/dist/assets/{index-C7EIu1mG.js.map → index-BuCEhhnl.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bo8QU31k.js → index-BxbQmeqh.js} +2 -2
- package/dashboard/dist/assets/{index-Bo8QU31k.js.map → index-BxbQmeqh.js.map} +1 -1
- package/dashboard/dist/assets/index-C5osluV3.js +2 -0
- package/dashboard/dist/assets/{index-DRK7M1_9.js.map → index-C5osluV3.js.map} +1 -1
- package/dashboard/dist/assets/{index-ygxyAKcc.js → index-C_dAJUzh.js} +27 -27
- package/dashboard/dist/assets/index-C_dAJUzh.js.map +1 -0
- package/dashboard/dist/assets/{index-DRw0FXdX.js → index-D-FYj9jT.js} +2 -2
- package/dashboard/dist/assets/{index-DRw0FXdX.js.map → index-D-FYj9jT.js.map} +1 -1
- package/dashboard/dist/assets/{index-B8qrHwp9.js → index-D6K_IgCz.js} +2 -2
- package/dashboard/dist/assets/{index-B8qrHwp9.js.map → index-D6K_IgCz.js.map} +1 -1
- package/dashboard/dist/assets/index-D7L_VoBD.js +2 -0
- package/dashboard/dist/assets/index-D7L_VoBD.js.map +1 -0
- package/dashboard/dist/assets/{index-BZFSXEkr.js → index-D9RAN9sA.js} +2 -2
- package/dashboard/dist/assets/{index-BZFSXEkr.js.map → index-D9RAN9sA.js.map} +1 -1
- package/dashboard/dist/assets/{index-DCJ483vt.js → index-DUYAGxwc.js} +2 -2
- package/dashboard/dist/assets/{index-DCJ483vt.js.map → index-DUYAGxwc.js.map} +1 -1
- package/dashboard/dist/assets/{index-boT612Jo.js → index-Dk2KKo0z.js} +2 -2
- package/dashboard/dist/assets/{index-boT612Jo.js.map → index-Dk2KKo0z.js.map} +1 -1
- package/dashboard/dist/assets/{index-CpCchhQv.js → index-DlJkZ12b.js} +2 -2
- package/dashboard/dist/assets/{index-CpCchhQv.js.map → index-DlJkZ12b.js.map} +1 -1
- package/dashboard/dist/assets/index-FiNThtNU.js +3 -0
- package/dashboard/dist/assets/index-FiNThtNU.js.map +1 -0
- package/dashboard/dist/assets/{knowledge-BubJBTwg.js → knowledge-DSsPTqkK.js} +2 -2
- package/dashboard/dist/assets/{knowledge-BubJBTwg.js.map → knowledge-DSsPTqkK.js.map} +1 -1
- package/dashboard/dist/assets/{machines-DSm5NFgs.js → machines-DSgGtqqr.js} +2 -2
- package/dashboard/dist/assets/{machines-DSm5NFgs.js.map → machines-DSgGtqqr.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-D6MckqOV.js → mcp-Cg-_uLw8.js} +2 -2
- package/dashboard/dist/assets/{mcp-D6MckqOV.js.map → mcp-Cg-_uLw8.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-VyCdOag6.js → mcp-query-DQombEK_.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-VyCdOag6.js.map → mcp-query-DQombEK_.js.map} +1 -1
- package/dashboard/dist/assets/{personas-CyJc10xe.js → personas-DYrcoVBu.js} +2 -2
- package/dashboard/dist/assets/{personas-CyJc10xe.js.map → personas-DYrcoVBu.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-B2inDtx3.js → pipelines-wdb4xsey.js} +2 -2
- package/dashboard/dist/assets/{pipelines-B2inDtx3.js.map → pipelines-wdb4xsey.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-DOP4d3M6.js → tasks-Bil7gvm9.js} +2 -2
- package/dashboard/dist/assets/{tasks-DOP4d3M6.js.map → tasks-Bil7gvm9.js.map} +1 -1
- package/dashboard/dist/assets/{topics-CNOjSWpX.js → topics-wBqaVhRR.js} +2 -2
- package/dashboard/dist/assets/{topics-CNOjSWpX.js.map → topics-wBqaVhRR.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CgO0TGMd.js → useDebouncedValue-CwrY8TpV.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CgO0TGMd.js.map → useDebouncedValue-CwrY8TpV.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-BWHvUKtK.js → useNamespace-Sod_xApz.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-BWHvUKtK.js.map → useNamespace-Sod_xApz.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BZQ__ZGD.js → useYamlActivityEvents-CKLInV3C.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BZQ__ZGD.js.map → useYamlActivityEvents-CKLInV3C.js.map} +1 -1
- package/dashboard/dist/assets/{validate-CAin6WM_.js → validate-CYhW1xMJ.js} +2 -2
- package/dashboard/dist/assets/{validate-CAin6WM_.js.map → validate-CYhW1xMJ.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-en0_uSRD.js → vendor-icons-ed7mYQw4.js} +2 -2
- package/dashboard/dist/assets/{vendor-icons-en0_uSRD.js.map → vendor-icons-ed7mYQw4.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Dyln3od-.js → yaml-workflows-C20qHo3L.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Dyln3od-.js.map → yaml-workflows-C20qHo3L.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/escalations.md +15 -0
- package/docs/api/http/labels.md +115 -0
- package/docs/api/http/users.md +2 -0
- package/docs/api/mcp/admin.md +76 -1
- package/docs/code-owned-configuration.md +1 -1
- package/docs/dashboard.md +2 -2
- package/docs/hitl/x-lt-roster.md +2 -0
- package/docs/hitl/x-lt-scan.md +12 -0
- package/docs/iam.md +12 -0
- package/docs/label-sheets.md +267 -0
- package/docs/scan-codes.md +93 -9
- package/package.json +4 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-GFn8Sgg1.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-GFn8Sgg1.js.map +0 -1
- package/dashboard/dist/assets/BulkAssignModal-CmLVxkz-.js +0 -2
- package/dashboard/dist/assets/HomePage-67xXjKjN.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-qHRQ1pEY.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-el5BquXN.js +0 -2
- package/dashboard/dist/assets/PersonaDetailPage-B_tb8gfl.js +0 -2
- package/dashboard/dist/assets/RoleDetailPage-DtU7vsJm.js +0 -8
- package/dashboard/dist/assets/RolesPage-BE7RWt9q.js +0 -2
- package/dashboard/dist/assets/RosterWidget-BJMx0a8Z.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-Co6s9bqA.js +0 -2
- package/dashboard/dist/assets/ScanCodesPage-C2TETaj5.js +0 -2
- package/dashboard/dist/assets/ScanSchemeDetailPage-C2UgU8l-.js +0 -5
- package/dashboard/dist/assets/ScanSchemeDetailPage-C2UgU8l-.js.map +0 -1
- package/dashboard/dist/assets/ScanStationPage-nWYz-OD3.js +0 -2
- package/dashboard/dist/assets/ScanStationPage-nWYz-OD3.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-Crf7AIFc.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard--isjt06C.js +0 -2
- package/dashboard/dist/assets/index-B95LbYhW.js +0 -2
- package/dashboard/dist/assets/index-B95LbYhW.js.map +0 -1
- package/dashboard/dist/assets/index-BmzscsXK.css +0 -1
- package/dashboard/dist/assets/index-DRK7M1_9.js +0 -2
- package/dashboard/dist/assets/index-P-DlgAWj.js +0 -3
- package/dashboard/dist/assets/index-P-DlgAWj.js.map +0 -1
- package/dashboard/dist/assets/index-ygxyAKcc.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{b as zt,a as d,j as e}from"./vendor-query-DvWWuNIB.js";import{ad as Is,M as mt,ae as he,m as ye,a6 as lt,af as Ms,ag as Ps,g as Qe,ah as Xt,J as Ce,h as Ds,i as Ls,P as Z,ai as Dt,aj as ot,a1 as Qt,ab as Os,ak as $s,z as Ws,al as Bs,am as Fs,an as Vs,ao as qs,ap as Js,aq as Us,ar as Ks,as as Gs,r as Hs,at as zs,s as Xs,au as Qs,av as Ys,W as Zs,X as ea,a as ta,c as sa,R as aa,aw as Lt,y as na,ax as ra,ay as Ot}from"./index-C_dAJUzh.js";import{E as ia,d as la,b as Ye,R as Yt,r as oa,p as ca,a as da,w as ua,s as ma,v as xa,c as fa,F as pa,i as ha}from"./ResolverForm-DfogHDzl.js";import{u as Zt,C as es,r as ga,B as ya,a as ba}from"./BulkAssignModal-h5fX-_cV.js";import{a as ts,u as xt,L as Ee,b as ja,e as va}from"./vendor-react-_9U4mKFr.js";import{P as Na}from"./PageHeader-DClJ33fV.js";import{L as wa}from"./ListToolbar-B-E9-toh.js";import{i as _e}from"./validate-CYhW1xMJ.js";import{S as ka}from"./StatusBadge-DHVwxre2.js";import{R as Sa}from"./RolePill-BjD1Qw5y.js";import{C as tt}from"./CountdownTimer-BHVIq3kA.js";import{C as ie}from"./CopyableId-Bn02zYxt.js";import{U as je}from"./UserName-Dw3R_zrl.js";import{i as Ca,s as _a,b as Ea,d as Ra,e as Aa,I as Ta,m as Ia,a as ft}from"./escalation-items-BGZlJMpk.js";import{d as Ma}from"./metadata-display-B7X5hGxG.js";import{U as ss,X as as,h as Pa,a8 as Da,_ as La,S as Oa,as as $a,at as Wa,a4 as Ba,q as Fa,al as Va,au as qa,b as Ja,av as ns,aw as $t,ax as Ua,a as Ka,$ as Wt,a0 as Bt,ay as Ga}from"./vendor-icons-ed7mYQw4.js";import{r as Ha,u as za,a as Xa,E as Qa}from"./RosterWidget-BrIq61HR.js";import"./constants-CeBBTzf5.js";import"./WorkflowPill-BiLYq__w.js";import"./useDebouncedValue-CwrY8TpV.js";function Ya({escalationId:t}){var p;const a=ts(),n=xt(),o=zt(),i=(p=a.state)==null?void 0:p[Is],[l,c]=d.useState(!1),[x,g]=d.useState(null),[h,m]=d.useState(!1);if(!i||i.escalationId!==t||h)return null;const y=()=>{m(!0),n(a.pathname,{replace:!0,state:null})},f=async()=>{var s,j,w;c(!0),g(null);try{switch(i.verb){case he.CANCEL:await ye(`/escalations/${t}/cancel`,{method:"POST"});break;case he.CLAIM:case he.CLAIM_SHOW_DETAIL:await ye(`/escalations/${t}/claim`,{method:"POST",body:JSON.stringify({durationMinutes:((s=i.params)==null?void 0:s.durationMinutes)??30})});break;case he.RELEASE:await ye(`/escalations/${t}/release`,{method:"POST"});break;case he.RESOLVE:await ye(`/escalations/${t}/resolve`,{method:"POST",body:JSON.stringify({resolverPayload:((j=i.params)==null?void 0:j.resolverPayload)??{}})});break;case he.ESCALATE:await ye(`/escalations/${t}/escalate`,{method:"PATCH",body:JSON.stringify({targetRole:(w=i.params)==null?void 0:w.targetRole})});break;default:throw new Error(`Unsupported confirm verb "${i.verb}"`)}o.resetQueries({queryKey:["escalations"]}),o.resetQueries({queryKey:["escalationStats"]}),y()}catch(C){g(C.message)}finally{c(!1)}};return e.jsx(mt,{open:!0,onClose:y,title:"Confirm scan action",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-text-secondary",children:i.prompt}),x&&e.jsx("p",{className:"text-xs text-status-error",children:x}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:y,disabled:l,className:"btn-secondary text-xs",children:"No, go back"}),e.jsx("button",{onClick:f,disabled:l,className:"btn-primary text-xs",children:l?"Working…":"Yes, continue"})]})]})})}const Xe={pending:"rgb(var(--lt-status-queued-graphic))",claimed:"rgb(var(--lt-status-claimed-graphic))",resolved:"rgb(var(--lt-status-success-graphic))",cancelled:"rgb(var(--lt-status-error))"},ct=4;function Ft({pct:t,place:a,label:n,title:o,emphasis:i}){const l=e.jsx("span",{className:"w-px h-1 bg-text-quaternary/70","aria-hidden":!0}),c=e.jsx("span",{className:`whitespace-nowrap leading-none tabular-nums text-[10px] ${i?"text-text-tertiary":"text-text-quaternary"}`,children:n});return e.jsx("div",{title:o,className:`absolute ${a==="above"?"bottom-0":"top-0"} flex flex-col items-center gap-0 -translate-x-1/2 cursor-help`,style:{left:`${t}%`},children:a==="above"?e.jsxs(e.Fragment,{children:[c,l]}):e.jsxs(e.Fragment,{children:[l,c]})})}function Za({esc:t,className:a=""}){const n=new Date(t.created_at).getTime(),o=t.claimed_at?new Date(t.claimed_at).getTime():null,i=t.status==="resolved",l=t.status==="cancelled"||t.status==="expired",c=i||l,x=_e(t),g=!!o&&(x||c),h=i&&t.resolved_at?new Date(t.resolved_at).getTime():l?new Date(t.updated_at).getTime():Date.now(),m=Math.max(h-n,1),y=g&&o?Math.max(o-n,0):m,f=g&&o?Math.max(h-o,0):0,p=Math.min(100,Math.max(0,y/m*100)),s=g?Math.max(0,100-p):0,j=i?Xe.resolved:l?Xe.cancelled:Xe.claimed,w=i?"Resolved after":l?"Cancelled after":"In progress",C=lt(y),k=lt(m),R=i?`Resolved in ${k} total`:l?`Cancelled after ${k}`:`Open ${k} so far`,S=`Lifecycle bar: blue = time waiting to be claimed, ${i?"green":l?"red":"orange"} = ${w.toLowerCase()} the claim.`;return e.jsxs("div",{className:a,title:S,children:[e.jsx("div",{className:"relative h-2.5 font-mono",children:g&&e.jsx(Ft,{pct:p,place:"above",label:C,title:`Time to claim: ${C}`})}),e.jsxs("div",{className:"flex w-full rounded-full overflow-hidden",style:{height:ct,backgroundColor:"rgb(var(--lt-surface-sunken))"},title:S,children:[e.jsx("div",{style:{width:`${p}%`,minWidth:ct,backgroundColor:Xe.pending,opacity:.75},title:`Waiting ${C} — created → claimed`}),g&&s>0&&e.jsx("div",{style:{width:`${s}%`,minWidth:ct,backgroundColor:j,opacity:.75},title:`${w} ${lt(f)}`})]}),e.jsx("div",{className:"relative h-2.5 font-mono",children:e.jsx(Ft,{pct:100,place:"below",emphasis:!0,label:k,title:R})})]})}function en({triage:t,payload:a}){const n=t.confidence??0,o=n>=.8?"text-status-success":n>=.5?"text-status-pending":"text-status-error",i=tn(t.originalData,a);return e.jsxs("div",{className:"space-y-5",children:[t.diagnosis&&e.jsx("p",{className:"text-sm text-text-primary leading-relaxed",children:t.diagnosis}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-xs text-text-tertiary",children:[t.tool_calls_made!=null&&e.jsxs("span",{children:[t.tool_calls_made," tool call",t.tool_calls_made!==1?"s":""]}),t.tool_calls_made!=null&&e.jsx("span",{className:"text-text-quaternary",children:"·"}),e.jsxs("span",{className:`font-medium ${o}`,children:[Math.round(n*100),"% confidence"]})]}),t.actions_taken&&t.actions_taken.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:t.actions_taken.map((l,c)=>e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-2xs
|
|
2
|
+
text-text-secondary`,children:[e.jsx("svg",{className:"w-3 h-3 text-status-success shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),l]},c))}),t.recommendation&&e.jsx("p",{className:"text-2xs text-text-tertiary italic",children:t.recommendation}),i.length>0&&e.jsx("div",{className:"space-y-4 pt-2",children:i.map(l=>e.jsx(sn,{diff:l},l.key))})]})}function tn(t,a){if(!t)return[];const n=[];for(const o of Object.keys(t)){if(o.startsWith("_"))continue;const i=t[o],l=a[o];l!==void 0&&JSON.stringify(i)!==JSON.stringify(l)&&n.push({key:o,label:o.replace(/[_-]/g," "),original:i,corrected:l})}return n}function sn({diff:t}){const a=Vt(t.original),n=Vt(t.corrected);return a!==null&&n!==null?e.jsx("div",{className:"@container",children:e.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-x-8 gap-y-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[t.label," ",e.jsx("span",{className:"normal-case font-normal",children:"(original)"})]}),e.jsx("p",{className:"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30",children:a})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[t.label," ",e.jsx("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"})]}),e.jsx("p",{className:"text-sm text-text-primary leading-relaxed",children:n})]})]})}):e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[t.label," ",e.jsx("span",{className:"normal-case font-normal",children:"(original)"})]}),e.jsx("pre",{className:"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed",children:typeof t.original=="object"?JSON.stringify(t.original,null,2):String(t.original)})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[t.label," ",e.jsx("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"})]}),e.jsx("pre",{className:"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed",children:typeof t.corrected=="object"?JSON.stringify(t.corrected,null,2):String(t.corrected)})]})]})}function Vt(t){return t==null?"null":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):null}function an({escalationId:t,items:a,canWrite:n,labelTemplate:o,labelContext:i,guardWrite:l}){var S,_;const c=Ms(),x=Ps(),[g,h]=d.useState(""),[m,y]=d.useState(""),[f,p]=d.useState(null),s=n&&a.kind==="accumulate",j=(b,v)=>l?l(b,v):v(),w=a.max!==null&&a.count>=a.max,C=()=>{const b=g.trim();if(!b){p("An item key is required.");return}let v;if(m.trim())try{const E=JSON.parse(m);if(!E||typeof E!="object"||Array.isArray(E))throw new Error("object");v=E}catch{p("Payload must be a JSON object.");return}p(null),j("add an item",()=>c.mutate({id:t,itemKey:b,payload:v},{onSuccess:()=>{h(""),y("")}}))},k=a.kind==="batch"?"filled":"held",R=a.max===null?`${a.count} ${k}`:`${a.count} of ${a.max} ${k}`;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[e.jsx("span",{className:"text-xs font-medium text-text-primary","data-testid":"items-headline",children:R}),e.jsx("span",{className:"text-2xs uppercase tracking-wide text-text-tertiary",children:a.kind==="batch"?"Batch":a.max===null?"Open":"Accumulator"})]}),a.items.length===0?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Nothing held yet."}):e.jsx("ol",{className:"divide-y divide-surface-border/60","data-testid":"items-list",children:a.items.map((b,v)=>{const E=Ca(o,b,i);return e.jsxs("li",{className:"py-2 flex items-start gap-2 group",children:[e.jsx("span",{className:"text-2xs text-text-quaternary font-mono w-5 shrink-0 text-right pt-0.5",children:v+1}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{className:`text-xs text-text-primary truncate ${E?"":"font-mono"}`,title:b.itemKey,"data-testid":"item-label",children:E??b.itemKey}),b.reciprocalId&&e.jsx(Ee,{to:`/escalations/detail/${b.reciprocalId}`,className:"icon-link text-2xs shrink-0",title:"Open the reciprocal escalation",children:"linked"})]}),b.payload&&e.jsx("div",{className:"text-2xs text-text-secondary truncate",title:JSON.stringify(b.payload),children:_a(b.payload)}),e.jsxs("div",{className:"flex items-center gap-2 text-2xs text-text-tertiary",children:[b.at&&e.jsx(Qe,{date:b.at}),b.actor&&e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(ss,{className:"w-2.5 h-2.5"}),e.jsx(je,{userId:b.actor})]})]})]}),s&&e.jsx("button",{type:"button",onClick:()=>j("remove an item",()=>x.mutate({id:t,itemKey:b.itemKey})),disabled:x.isPending,className:"icon-link opacity-50 group-hover:opacity-100 shrink-0 p-0.5",title:`Remove ${E??b.itemKey}`,"aria-label":`Remove ${E??b.itemKey}`,children:e.jsx(as,{className:"w-3 h-3"})})]},b.itemKey)})}),a.kind==="batch"&&a.pending.length>0&&e.jsxs("p",{className:"text-2xs text-text-tertiary",children:["Awaiting: ",e.jsx("span",{className:"font-mono",children:a.pending.join(", ")})]}),s&&e.jsxs("form",{className:"space-y-2 pt-2 border-t border-surface-border/60",onSubmit:b=>{b.preventDefault(),C()},"data-testid":"add-item-form",children:[e.jsx("label",{className:"block text-2xs uppercase tracking-wide text-text-secondary",children:"Add item"}),e.jsx("input",{value:g,onChange:b=>h(b.target.value),placeholder:"Item key","aria-label":"Item key",disabled:w||c.isPending,className:"w-full text-xs font-mono px-2 py-1.5 rounded-md bg-surface-base border border-surface-border text-text-primary placeholder:text-text-quaternary focus:outline-none focus:border-accent disabled:opacity-50"}),e.jsx("textarea",{value:m,onChange:b=>y(b.target.value),placeholder:'Payload JSON (optional), e.g. {"weight": 2}',"aria-label":"Item payload",rows:2,disabled:w||c.isPending,className:"w-full text-xs font-mono px-2 py-1.5 rounded-md bg-surface-base border border-surface-border text-text-primary placeholder:text-text-quaternary focus:outline-none focus:border-accent disabled:opacity-50"}),e.jsxs("div",{className:"flex items-center justify-end gap-3",children:[w&&e.jsx("span",{className:"text-2xs text-text-tertiary",children:"Every slot is held."}),e.jsxs("button",{type:"submit",disabled:w||c.isPending,className:"btn-secondary text-xs inline-flex items-center gap-1",children:[e.jsx(Pa,{className:"w-3 h-3"}),c.isPending?"Adding…":"Add"]})]}),(f||c.error||x.error)&&e.jsx("p",{className:"text-2xs text-status-error",role:"alert",children:f??((S=c.error)==null?void 0:S.message)??((_=x.error)==null?void 0:_.message)})]})]})}const L={HELP:"help",DETAILS:"details",TRIAGE:"triage",METADATA:"metadata",ITEMS:"items",CONTEXT:"context",RECORD:"record",ERRORS:"errors"},rs="lt:escalation:panel:view";function nn(t){try{const a=localStorage.getItem(rs);if(a&&t.includes(a))return a}catch{}return L.HELP}function rn({metadata:t,role:a}){const n=Ma(t);return n.length===0?e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No metadata on this escalation."}):e.jsx("dl",{className:"space-y-3.5",children:n.map(([o,i])=>{const l=typeof i=="object"&&i!==null?JSON.stringify(i):String(i),c=Dt(o,i,a),x=Dt(o,i);return e.jsxs("div",{className:"group relative",children:[e.jsx("dt",{className:"text-2xs font-medium text-text-secondary uppercase tracking-wide",children:la(o)}),e.jsxs("dd",{className:"mt-0.5 flex items-center gap-1",children:[e.jsx("span",{className:"text-xs text-text-primary font-mono break-all flex-1",children:l}),e.jsx(Ee,{to:c,title:`Filter this queue: ${o} = ${l}`,className:"opacity-50 group-hover:opacity-100 transition-opacity shrink-0 p-0.5 text-text-quaternary hover:text-accent",children:e.jsx(qa,{className:"w-3 h-3"})}),e.jsx(Ee,{to:x,title:`Search all queues: ${o} = ${l}`,className:"opacity-50 group-hover:opacity-100 transition-opacity shrink-0 p-0.5 text-text-quaternary hover:text-accent",children:e.jsx(Ja,{className:"w-3 h-3"})})]})]},o)})})}function ln({esc:t,claimed:a,isTerminal:n,isBuilder:o,traceUrl:i}){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("dl",{className:"space-y-3.5",children:[e.jsx(Z,{label:"Status",children:e.jsx(ka,{status:t.status})}),e.jsx(Z,{label:"Assigned to Role",children:e.jsx(Sa,{role:t.role,size:"md"})}),e.jsxs(Z,{label:"Priority",children:["P",t.priority]}),(a||n)&&t.assigned_to&&e.jsx(Z,{label:"Claimed By",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-medium text-text-primary",children:[e.jsx(ss,{className:"w-3 h-3 shrink-0 text-accent/75"}),e.jsx(je,{userId:t.assigned_to})]})}),e.jsx(Z,{label:"Created",children:e.jsx(Qe,{date:t.created_at})}),(a||n)&&t.claimed_at&&e.jsx(Z,{label:"Claimed",children:e.jsx(Qe,{date:t.claimed_at})}),a&&!n&&t.assigned_until&&e.jsx(Z,{label:"Time Remaining",children:e.jsx(tt,{until:t.assigned_until})}),t.resolved_at&&e.jsx(Z,{label:"Completed",children:e.jsx("span",{className:"text-status-success",children:e.jsx(Qe,{date:t.resolved_at})})})]}),o&&e.jsxs(e.Fragment,{children:[e.jsx("hr",{className:"border-surface-border/60"}),e.jsxs("div",{className:"space-y-3.5",children:[e.jsx(ie,{label:"Escalation ID",value:t.id}),t.task_id&&e.jsx(ie,{label:"Task ID",value:t.task_id,href:`/workflows/tasks/detail/${t.task_id}`}),t.workflow_type&&e.jsx(ie,{label:"Workflow Name",value:t.workflow_type,href:`/workflows/executions?entity=${encodeURIComponent(t.workflow_type)}`}),t.workflow_id&&e.jsx(ie,{label:"Workflow ID",value:t.workflow_id,href:`/workflows/executions/${t.workflow_id}`}),t.task_queue&&e.jsx(ie,{label:"Task Queue",value:t.task_queue,href:`/admin/controlplane?queue=${encodeURIComponent(t.task_queue)}`}),t.origin_id&&t.origin_id!==t.workflow_id&&e.jsx(ie,{label:"Origin",value:t.origin_id,href:`/processes/detail/${t.origin_id}`}),t.trace_id&&e.jsx(ie,{label:"Trace",value:t.trace_id,href:i?i.replace("{traceId}",t.trace_id):void 0,external:!0})]})]})]})}function on({esc:t,schema:a,envelope:n,payload:o,resolver:i,triage:l,hasAI:c,claimed:x,claimedByMe:g,isTerminal:h,isBuilder:m,traceUrl:y,open:f,noGutter:p,formErrors:s,activePanel:j,onPanelChange:w,canWriteItems:C,guardItemWrite:k}){const R=xt(),S=Object.values(L),[_,b]=d.useState(()=>nn(S)),v=j??_,E=d.useCallback(A=>{try{localStorage.setItem(rs,A)}catch{}b(A),w==null||w(A)},[w]);d.useEffect(()=>{j&&j!==_&&b(j)},[j]);const O=d.useMemo(()=>Ea(a,{escalation:t,metadata:t.metadata??null,envelope:n,payload:o,resolver:i})??Ra({isTerminal:h,status:t.status,claimed:x,claimedByMe:g}),[a,t,n,o,i,h,x,g]),D=d.useCallback(A=>{const V=A.target.closest("a"),M=V==null?void 0:V.getAttribute("href");M!=null&&M.startsWith("/")&&(A.preventDefault(),R(M))},[R]),B=d.useMemo(()=>Aa(t,n),[t,n]),te=[{id:L.HELP,icon:Da,label:"Instructions",content:e.jsx(Xt,{content:O,onClick:D})},{id:L.DETAILS,icon:La,label:"Details",content:e.jsx(ln,{esc:t,claimed:x,isTerminal:h,isBuilder:m,traceUrl:y})},...c&&l?[{id:L.TRIAGE,icon:Oa,label:"AI Analysis",content:e.jsx(en,{triage:l,payload:o??{}})}]:[],{id:L.METADATA,icon:$a,label:"Metadata",content:e.jsx(rn,{metadata:t.metadata,role:t.role})},...B?[{id:L.ITEMS,icon:Wa,label:"Items",content:e.jsx(an,{escalationId:t.id,items:B,canWrite:!!C&&t.status==="pending",guardWrite:k,labelTemplate:a==null?void 0:a[Ta],labelContext:{escalation:t,metadata:t.metadata??null,envelope:n,payload:o}})}]:[],{id:L.CONTEXT,icon:Ba,label:"Context",content:e.jsxs("div",{className:"space-y-5",children:[n!=null&&e.jsx(Ce,{data:n,label:"Input Envelope"}),o!=null&&e.jsx(Ce,{data:o,label:"Escalation Context"}),i!=null&&e.jsx(Ce,{data:i,label:"Resolver Payload"}),n==null&&o==null&&i==null&&e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No context on this escalation."})]})},...m?[{id:L.RECORD,icon:Fa,label:"Record",content:e.jsx(Ce,{data:t,label:"Escalation Record"})}]:[],...s&&s.length>0?[{id:L.ERRORS,icon:(({className:A})=>e.jsx(Va,{className:`${A??""} text-status-error`})),label:"Errors",content:e.jsx(ia,{errors:s,schema:a})}]:[]];return e.jsx(Ds,{open:f,width:384,className:"h-full",children:e.jsx("div",{className:`h-full${p?"":" pl-6"}`,children:e.jsxs("div",{className:"h-full flex flex-col bg-surface-hover",children:[e.jsx("div",{className:"shrink-0 pt-2 pb-0 flex justify-center",children:e.jsx(Za,{esc:t,className:"w-[80%]"})}),e.jsx("div",{className:"flex-1 min-h-0",children:e.jsx(Ls,{views:te,activeId:v,onViewChange:E,stickyClassName:"h-full min-h-0"})})]})})})}function cn(t){const{mode:a,activeView:n,onActiveViewChange:o,onClaim:i,claimPending:l,claimNudge:c,claimError:x,workflowType:g,json:h,onResolve:m,resolvePending:y,resolveError:f,requestTriage:p,triageNotes:s,onRelease:j,releasePending:w,onCancel:C,assignedTo:k,assignedUntil:R,onSubmitAttempt:S,onValidationErrors:_,escalationContext:b,labels:v={},submitBlocked:E,submitBlockedMessage:O,actingName:D,submitNeedsBadge:B,canManage:te,onReassign:A,onUnassign:V,unassignPending:M}=t,se=Zt(),[W,Re]=d.useState("30"),[le,Ae]=d.useState(0),[ve,Te]=d.useState(""),T=W==="custom",ae=d.useCallback(I=>Ae(I),[]),K=!!E&&!p;if(a==="terminal")return null;const G=()=>{const I=T?le:parseInt(W);!I||I<=0||i(I)},Ie=()=>{if(Te(""),p){const Me={_lt:{needsTriage:!0}};s.trim()&&(Me.notes=s.trim()),m(Me);return}const I=Ye(h,b);if(I.parseError){Te(I.parseError);return}if(I.errors.length>0){S==null||S(),_==null||_(I.errors);return}m(I.payload)},Ne=I=>`text-xs transition-colors ${I?"text-accent font-medium":"text-text-tertiary hover:text-accent"}`;return e.jsxs("div",{className:"shrink-0 h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -ml-10 pl-10 pr-10 pt-3 pb-5","data-testid":"escalation-action-bar",children:[a==="available"&&e.jsxs("div",{"data-testid":"claim-bar",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-2",children:[se.map(I=>e.jsx("button",{onClick:()=>{Re(I.value),Ae(0)},className:Ne(!T&&W===I.value),children:I.label},I.value)),e.jsx("button",{onClick:()=>Re("custom"),className:Ne(T),children:"Other"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[v.cancel!==!1&&e.jsx("button",{onClick:C,className:"text-xs text-text-tertiary hover:text-status-error transition-colors",children:v.cancel??"Cancel escalation"}),e.jsx("div",{className:"flex-1"}),x&&!l&&e.jsx("p",{className:"text-xs text-status-error",role:"alert","data-testid":"claim-error",children:x.message}),T&&e.jsx(es,{onChange:ae,compact:!0,autoFocus:!0}),e.jsx("button",{onClick:G,disabled:l||T&&le<=0,className:`btn-primary text-xs ${c?"animate-[field-shake_0.4s_ease-in-out]":""}`,"data-testid":"claim-button",children:l?"Claiming...":v.claim??"Claim"},c)]})]}),a==="claimed_by_other"&&e.jsxs("div",{className:"flex items-center gap-4","data-testid":"claimed-other-bar",children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Claimed by ",e.jsx("span",{className:"font-medium text-text-primary",children:k?e.jsx(je,{userId:k}):"unknown"})]}),R&&e.jsx(tt,{until:R}),f&&e.jsx("span",{className:"text-xs text-status-error",children:f.message}),te&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex-1"}),e.jsx("button",{onClick:A,className:"text-xs text-text-tertiary hover:text-accent transition-colors","data-testid":"admin-reassign",children:"Reassign…"}),e.jsx("button",{onClick:V,disabled:M,className:"text-xs text-text-tertiary hover:text-status-error transition-colors disabled:opacity-50","data-testid":"admin-unassign",children:M?"Returning…":"Return to queue"})]})]}),a==="claimed_by_me"&&e.jsxs("div",{"data-testid":"action-bar",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-2",children:[e.jsx("button",{onClick:()=>o("resolve"),className:Ne(n==="resolve"),children:g?"Resolve":"Acknowledge"}),e.jsx("button",{onClick:()=>o("release"),className:`text-xs transition-colors ${n==="release"?"text-status-error font-medium":"text-text-tertiary hover:text-status-error"}`,children:v.release??"Release"}),v.cancel!==!1&&e.jsx("button",{onClick:C,className:"text-xs transition-colors text-text-tertiary hover:text-status-error",children:v.cancel??"Cancel"})]}),n==="resolve"&&e.jsxs("div",{className:"flex items-center gap-4",children:[B?e.jsxs("p",{className:"flex items-center gap-1.5 text-sm text-text-secondary","data-testid":"submit-badge-warning",children:[e.jsx(ns,{className:"w-4 h-4 text-accent-muted shrink-0",strokeWidth:1.5}),"When you submit, you'll scan your badge to confirm you're"," ",e.jsx("span",{className:"font-medium text-text-primary",children:k?e.jsx(je,{userId:k}):"the claimant"}),"."]}):D&&e.jsxs("p",{className:"text-sm text-text-secondary","data-testid":"acting-claim-note",children:["Claimed by you ",e.jsxs("span",{className:"font-medium text-text-primary",children:["(",D,")"]})]}),!B&&D&&R&&e.jsx(tt,{until:R}),e.jsx("div",{className:"flex-1"}),ve&&e.jsx("span",{className:"text-xs text-status-error",children:ve}),f&&e.jsx("span",{className:"text-xs text-status-error",children:f.message}),K&&O&&e.jsx("span",{className:"text-xs text-status-pending","data-testid":"submit-guard-message",children:O}),e.jsx("button",{onClick:Ie,disabled:y||K,className:"btn-primary text-xs",children:y?g?"Submitting...":"Acknowledging...":p?"Send to Triage":v.submit??(g?"Submit":"Acknowledge")})]}),n==="release"&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-xs text-text-secondary",children:"Release back to pool?"}),e.jsx("div",{className:"flex-1"}),e.jsx("button",{onClick:()=>o("resolve"),className:"btn-secondary text-xs",children:"Back"}),e.jsx("button",{onClick:j,disabled:w,className:"btn-primary text-xs bg-status-error hover:bg-status-error/80",children:w?"Releasing...":"Yes, Release"})]})]})]})}function dt({children:t}){return e.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:t})}function dn({payload:t,isTerminal:a,resolverPayload:n,onRetryTriage:o,isRetrying:i}){const l=t.title,c=t.summary,x=t.diagnosis,g=t.tool_calls_made,h=t.result,m=n==null?void 0:n._lt,y=(m==null?void 0:m.triaged)===!0,f=m==null?void 0:m.triageWorkflowId,p=a&&y,[s,j]=d.useState(!1);return p?e.jsxs("div",{className:"rounded-md border border-status-success/30 bg-surface-raised",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("svg",{className:"w-4 h-4 text-status-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"})}),e.jsx("span",{className:"text-xs font-medium text-status-success",children:"Resolved by AI Triage"})]}),typeof g=="number"&&e.jsxs("span",{className:"text-2xs font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success",children:[g," tool calls used"]})]}),e.jsxs("div",{className:"px-4 py-4 space-y-4",children:[l&&e.jsx("p",{className:"text-sm font-medium text-text-primary",children:l}),x&&e.jsxs("div",{children:[e.jsx(dt,{children:"Triage diagnosis"}),e.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsx(ot,{content:x})})]}),e.jsx("div",{className:"flex items-center gap-3",children:f&&e.jsx(Ee,{to:`/workflows/executions/${f}`,className:"text-2xs text-accent hover:underline",children:"View triage execution"})})]})]}):e.jsxs("div",{className:"rounded-md border border-status-warning/30 bg-surface-raised",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("svg",{className:"w-4 h-4 text-status-warning shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z"})}),e.jsx("span",{className:"text-xs font-medium text-status-warning",children:"Tool Rounds Exhausted"})]}),typeof g=="number"&&e.jsxs("span",{className:"text-2xs font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning",children:[g," tool calls used"]})]}),e.jsxs("div",{className:"px-4 py-4 space-y-4",children:[l&&e.jsx("p",{className:"text-sm font-medium text-text-primary",children:l}),c&&e.jsxs("div",{children:[e.jsx(dt,{children:"What happened"}),e.jsx("div",{className:"text-xs text-text-secondary leading-relaxed",children:e.jsx(ot,{content:c})})]}),x&&e.jsxs("div",{children:[e.jsx(dt,{children:"What went wrong"}),e.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsx(ot,{content:x})})]}),h!=null&&e.jsxs("div",{children:[e.jsxs("button",{onClick:()=>j(!s),className:"flex items-center gap-1 text-2xs font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[e.jsx("svg",{className:`w-3 h-3 transition-transform ${s?"rotate-90":""}`,viewBox:"0 0 12 12",fill:"currentColor",children:e.jsx("path",{d:"M4.5 2l4 4-4 4"})}),"Partial results"]}),s&&e.jsx("div",{className:"mt-2",children:e.jsx(Ce,{data:h,defaultMode:"tree"})})]}),o&&!a&&e.jsx("div",{className:"pt-2",children:e.jsxs("button",{onClick:o,disabled:i,className:"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[e.jsx("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 14 14",fill:"currentColor",children:e.jsx("path",{d:"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z"})}),i?"Sending to triage...":"Retry with AI Triage"]})})]})]})}const ee={PENDING:"pending",CLAIMED:"claimed",RESOLVED:"resolved"};function is(t){const a=t==null?void 0:t["x-lt-viewport"];return(a==null?void 0:a.type)!=="iframe"||typeof a.src!="string"||!a.src?null:a}function qt(t,a){return a===ee.CLAIMED?t.src:a===ee.PENDING?t.onPending??null:t.onResolved??null}function Ze(t,a){if(!t.includes("{"))return t;try{const n=i=>{if(!i)return{};try{return JSON.parse(i)}catch{return{}}},o={...a.metadata??{},...n(a.envelope),...n(a.escalation_payload),...n(a.resolver_payload)};return t.replace(/\{([^}]+)\}/g,(i,l)=>Object.prototype.hasOwnProperty.call(o,l)?String(o[l]):`{${l}}`)}catch{return t}}function Jt(t){if(!t)return null;try{return JSON.parse(t)}catch{return null}}function et({src:t,escalation:a,schema:n,stage:o=ee.CLAIMED,onResolve:i,onEscalate:l,readOnly:c=!1,submitAttempted:x,fill:g}){const h=d.useRef(null),m=d.useRef("");d.useEffect(()=>{try{const f=new URL(t);m.current=f.origin}catch{m.current=""}},[t]);const y=d.useCallback(()=>{const f=h.current;if(!(f!=null&&f.contentWindow)||!m.current)return;const s={type:"lt:init",escalation:{id:a.id,type:a.type,subtype:a.subtype,description:a.description,status:a.status,priority:a.priority,role:a.role,workflow_type:a.workflow_type,envelope:Jt(a.envelope),metadata:a.metadata??null,escalation_payload:Jt(a.escalation_payload)},schema:n,stage:o};f.contentWindow.postMessage(s,m.current)},[a,n,o]);return d.useEffect(()=>{const f=p=>{if(p.origin!==m.current)return;const s=p.data;if(!(!s||typeof s!="object"||typeof s.type!="string"))switch(s.type){case"lt:ready":y();break;case"lt:submit":!c&&s.payload&&typeof s.payload=="object"&&(i==null||i(s.payload));break;case"lt:escalate":!c&&typeof s.target=="string"&&s.target&&(l==null||l(s.target));break;case"lt:resize":{const j=h.current;j&&typeof s.height=="number"&&s.height>0&&(j.style.height=`${Math.min(s.height,2e3)}px`);break}}};return window.addEventListener("message",f),()=>window.removeEventListener("message",f)},[y,i,l,c]),d.useEffect(()=>{if(!x||c)return;const f=h.current;f!=null&&f.contentWindow&&m.current&&f.contentWindow.postMessage({type:"lt:validate"},m.current)},[x,c]),g?e.jsx("div",{className:"absolute inset-0 overflow-hidden",children:e.jsx("iframe",{ref:h,src:t,sandbox:"allow-scripts allow-same-origin allow-forms allow-pointer-lock allow-downloads",className:"w-full h-full border-0 block",title:"HITL Viewport",onLoad:y})}):e.jsx("div",{className:"rounded-md border border-surface-border overflow-hidden bg-white",children:e.jsx("iframe",{ref:h,src:t,sandbox:"allow-scripts allow-same-origin allow-forms allow-pointer-lock allow-downloads",className:"w-full border-0",style:{minHeight:"600px"},title:"HITL Viewport",onLoad:y})})}function un({json:t,onJsonChange:a,requestTriage:n,onRequestTriageChange:o,triageNotes:i,onTriageNotesChange:l,disabled:c=!1,submitAttempted:x=!1,showTriage:g=!1,escalationContext:h,onOpenHelp:m,onDisabledClick:y,disabledHint:f}){return e.jsxs(e.Fragment,{children:[g&&e.jsx("div",{className:"flex items-center justify-between mb-3",children:n?e.jsxs("button",{onClick:()=>o(!1),className:"group flex items-center gap-2 text-left","data-testid":"triage-cancel",children:[e.jsx("span",{className:"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})}),e.jsxs("span",{className:"text-xs text-text-secondary group-hover:text-text-primary transition-colors",children:["AI Triage active."," ",e.jsx("span",{className:"text-accent group-hover:underline",children:"Cancel"})]})]}):e.jsxs("button",{onClick:()=>o(!0),className:"group flex items-center gap-2.5 text-left my-4","data-testid":"triage-callout",children:[e.jsx("span",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]",children:e.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),e.jsxs("span",{className:"text-sm text-text-secondary group-hover:text-text-primary transition-colors",children:["This form doesn't capture the issue?"," ",e.jsx("span",{className:"text-accent group-hover:underline",children:"Request AI Triage"})]})]})}),e.jsxs("div",{className:"relative min-h-[200px]",children:[e.jsx("div",{className:n?"pointer-events-none select-none":"",children:e.jsx(Yt,{value:t,onChange:a,disabled:c,submitAttempted:x,escalationContext:h,onOpenHelp:m,onDisabledClick:y,disabledHint:f})}),n&&e.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5","data-testid":"triage-overlay",children:[e.jsx("p",{className:"text-xs text-text-secondary mb-3 leading-relaxed",children:"The resolution form will not be submitted. Describe the issue so AI triage can diagnose and fix it using available tools. The corrected result will come back as a new escalation for your review."}),e.jsx("textarea",{value:i,onChange:p=>l(p.target.value),placeholder:"e.g. Content is in Spanish — needs translation to English before review...",className:"input text-xs w-full flex-1 min-h-[80px] resize-none",autoFocus:!0,"data-testid":"triage-notes"})]})]})]})}function Ut(t){if(!t)return null;try{return JSON.parse(t)}catch{return null}}function J(t,a,n){return{escalation:t,metadata:t.metadata??null,envelope:Ut(t.envelope),payload:Ut(t.escalation_payload),resolver:null,...a?{lookup:a}:{},...n?{roster:n}:{}}}function mn({isRoundsExhausted:t,payloadObj:a,isTerminal:n,resolverPayload:o,onRetryTriage:i,isRetrying:l}){return e.jsxs(e.Fragment,{children:[t&&a&&e.jsx("div",{className:"mt-8",children:e.jsx(dn,{payload:a,isTerminal:n,resolverPayload:o,onRetryTriage:i,isRetrying:l})}),(a==null?void 0:a.category)==="missing_credential"&&e.jsxs("div",{className:"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3",children:[e.jsx($t,{size:20,className:"text-status-warning mt-0.5 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-text-primary mb-1",children:"Missing Credential"}),e.jsxs("p",{className:"text-xs text-text-secondary mb-3",children:["This workflow requires a ",e.jsx("span",{className:"font-medium capitalize",children:String(a.provider)})," credential to continue. Register one and then resolve this escalation to retry."]}),e.jsxs(Ee,{to:"/credentials",className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsx($t,{size:12}),"Go to Credentials"]})]})]})]})}function xn({esc:t,resolverPayload:a,isTerminal:n,editable:o,activeView:i,metadataFormSchema:l,effectiveSchema:c,lookup:x,roster:g,json:h,onJsonChange:m,requestTriage:y,onRequestTriageChange:f,triageNotes:p,onTriageNotesChange:s,onResolve:j,onEscalate:w,onClaim:C,submitAttempted:k,isCertified:R,hasAI:S,onOpenHelp:_,onDisabledClick:b,disabledHint:v}){const E=c,O=J(t,x,g),D=is(E);if(n){const A=D&&t.status==="resolved"?qt(D,ee.RESOLVED):null;if(A)return e.jsx("div",{className:"mt-3",children:e.jsx(et,{src:Ze(A,t),escalation:t,schema:E,stage:ee.RESOLVED,readOnly:!0})});if(a==null)return null;const V=typeof a=="object"&&a!==null?a:{};if(!Object.keys(V).some(W=>!W.startsWith("$")&&!W.startsWith("_")))return null;const M=c??l,se=M!=null&&M.properties?{...Ia(V,M),_form_schema:M}:V;return e.jsx("div",{className:"mt-3",children:e.jsx(Yt,{value:JSON.stringify(se,null,2),onChange:()=>{},disabled:!0,escalationContext:O,disabledHint:v})})}if(i!=="resolve"||!(t.workflow_type||c))return null;const B=!!D&&!!j&&!!w;if(B&&!o){const A=qt(D,ee.PENDING);return A?e.jsx("div",{className:"mt-3",children:e.jsx(et,{src:Ze(A,t),escalation:t,schema:E,stage:ee.PENDING,readOnly:!0})}):e.jsxs("button",{onClick:()=>C==null?void 0:C(),disabled:!C,className:"flex flex-col items-center justify-center min-h-[55vh] w-full gap-3 text-center group disabled:opacity-50 disabled:cursor-default",children:[e.jsx(Ua,{className:"w-10 h-10 text-text-tertiary group-hover:text-accent transition-colors",strokeWidth:1}),e.jsx("p",{className:"text-base font-medium text-text-primary group-hover:text-accent transition-colors",children:"Claim to launch the editor"})]})}const te=B?Ze(D.src,t):"";return e.jsx("div",{className:"mt-3",children:B?e.jsx(et,{src:te,escalation:t,schema:E,onResolve:j,onEscalate:w,submitAttempted:k}):e.jsx(un,{json:h,onJsonChange:m,requestTriage:y,onRequestTriageChange:f,triageNotes:p,onTriageNotesChange:s,disabled:!o,submitAttempted:k,showTriage:!!R&&!!S,escalationContext:O,onOpenHelp:_,onDisabledClick:b,disabledHint:v})})}function fn({open:t,assignedUntil:a,onClose:n,onExtend:o,isPending:i}){const l=Zt(),[c,x]=d.useState("30"),[g,h]=d.useState(0),m=c==="custom",y=m?g:parseInt(c),f=d.useCallback(p=>h(p),[]);return e.jsx(mt,{open:t,onClose:n,title:"Claim Expiring",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Your claim on this escalation expires in"," ",e.jsx(tt,{until:a}),". When it lapses, the form locks and the item returns to the queue — your edits are kept as a draft. Extend to keep working."]}),e.jsxs("select",{value:c,onChange:p=>{x(p.target.value),h(0)},className:"select w-full text-sm","aria-label":"Extension duration",children:[l.map(p=>e.jsx("option",{value:p.value,children:p.label},p.value)),e.jsx("option",{value:"custom",children:"Other..."})]}),m&&e.jsx(es,{onChange:f,autoFocus:!0}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:n,className:"btn-secondary text-xs",children:"Dismiss"}),e.jsx("button",{onClick:()=>o(y),className:"btn-primary text-xs",disabled:i||!y||y<=0,children:i?"Extending...":"Extend Claim"})]})]})})}const pn=9e4;function hn(t,a=pn){const[,n]=d.useState(0);if(d.useEffect(()=>{if(!t)return;const i=new Date(t).getTime()-Date.now();if(i<=0)return;const l=()=>n(g=>g+1),c=[],x=i-a;return x>0&&c.push(window.setTimeout(l,x)),c.push(window.setTimeout(l,i)),()=>c.forEach(g=>window.clearTimeout(g))},[t,a]),!t)return{expired:!1,expiringSoon:!1,msRemaining:0};const o=Math.max(0,new Date(t).getTime()-Date.now());return{expired:o<=0,expiringSoon:o>0&&o<=a,msRemaining:o}}const gn="lt:escalation:draft:";function pt(t){return`${gn}${t}`}function yn(t){try{return localStorage.getItem(pt(t))}catch{return null}}function bn(t,a){try{localStorage.setItem(pt(t),a)}catch{}}function ut(t){try{localStorage.removeItem(pt(t))}catch{}}const jn="x-lt-transition",vn="x-lt-transition-message",Nn="x-lt-transition-max-wait-seconds",wn="x-lt-transition-done",kn="Submitted. Preparing your next step…",Sn=30,Cn=5,_n=300;function En(t){const a=typeof t=="number"?t:Number(t);return!Number.isFinite(a)||a<=0?Sn:Math.min(_n,Math.max(Cn,Math.round(a)))}function Kt(t){if(!t||!t[jn])return null;const a=t[vn];return{message:typeof a=="string"&&a.trim().length>0?a:kn,maxWaitSeconds:En(t[Nn])}}function Rn(t){const a=t==null?void 0:t[wn];return typeof a=="string"&&a.trim().length>0?a:null}const An="x-lt-submit-on-claim";function Tn(t){return!!(t!=null&&t[An])}const In="x-lt-submit-guard",Mn="{{count}} related items are still pending",Pn="{{count}} expected items are still outstanding";function Dn(t){const a=t==null?void 0:t[In];if(!a||typeof a!="object"||Array.isArray(a))return;const n=a;if(typeof n.roster=="string"&&n.roster)return n;if(!(!n.query||typeof n.query!="object"))return n}function Ln(t,a,n={}){const{user:o}=Qt(),i=oa((t==null?void 0:t.query)??{},a??{},o==null?void 0:o.userId),l=!!(t!=null&&t.roster),{data:c,isSuccess:x}=Os({role:i.role,status:i.status,facets:i.facets,assigned_to:i.assigned_to,available:i.available,limit:1,enabled:!!t&&!l&&i.enabled});if(t&&l)return On(t,n,a);const g=!!t&&t.mustBeEmpty!==!1&&i.enabled,h=(c==null?void 0:c.total)??0,m=g&&x&&h===0,y=g&&!m;let f="";if(y)if(h>0){const p=(t==null?void 0:t.message)??Mn;f=ft(p.replace(/\{\{count\}\}/g,String(h)),a??{})}else f="Checking related items…";return{blocked:y,count:h,message:f,confirmedEmpty:m}}function On(t,a,n){const o=t.roster;if(!(o in a))return{blocked:!0,count:0,message:`Submit guard names roster "${o}", which the form does not declare`,confirmedEmpty:!1};const i=a[o];if(!i)return{blocked:!0,count:0,message:"Checking expected items…",confirmedEmpty:!1};const l=i.counts.outstanding;if(l<=0)return{blocked:!1,count:0,message:"",confirmedEmpty:!1};const c=t.message??Pn;return{blocked:!0,count:l,message:ft(c.replace(/\{\{count\}\}/g,String(l)),n??{}),confirmedEmpty:!1}}function $n({open:t,message:a}){return t?ja.createPortal(e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center px-4",children:[e.jsx("div",{className:"absolute inset-0 bg-text-primary/40 backdrop-blur-sm"}),e.jsxs("div",{role:"status","aria-live":"polite",className:"relative w-full max-w-sm bg-surface-raised border border-surface-border rounded-lg shadow-xl px-6 py-7 text-center",children:[e.jsx("div",{className:"flex justify-center mb-4","aria-hidden":"true",children:e.jsx("span",{className:"inline-block w-7 h-7 rounded-full border-2 border-surface-border border-t-accent animate-spin"})}),e.jsx("div",{className:"text-sm text-text-secondary [&_p]:m-0 [&_p+p]:mt-2",children:e.jsx(Xt,{content:a})})]})]}),document.body):null}function Gt({open:t,verb:a="submit",claimantId:n,wrongBadgeName:o,anyBadge:i,message:l,onCancel:c}){return t?e.jsx(mt,{open:!0,onClose:c,title:`Scan your badge to ${a}`,children:e.jsxs("div",{className:"flex flex-col items-center text-center py-6","data-testid":"station-write-challenge",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsx(Ka,{className:"w-7 h-7 text-text-quaternary",strokeWidth:1}),e.jsx(ns,{className:"w-9 h-9 text-accent-muted",strokeWidth:1})]}),e.jsx("p",{className:"text-lg text-text-secondary",children:i?e.jsxs(e.Fragment,{children:["Scan your badge to ",a,"."]}):e.jsxs(e.Fragment,{children:["Scan your badge to ",a," as"," ",e.jsx("span",{className:"font-medium text-text-primary",children:n?e.jsx(je,{userId:n}):"the claimant"}),"."]})}),l&&e.jsx("p",{className:"text-sm text-status-warning mt-3","data-testid":"badge-message",children:l}),o&&e.jsxs("p",{className:"text-sm text-status-error mt-3","data-testid":"wrong-badge",children:["That badge is ",o,"'s — scan the claimant's badge to ",a,"."]}),e.jsx("div",{className:"w-16 border-t border-surface-border my-6"}),e.jsx("button",{type:"button",onClick:c,className:"text-sm text-text-tertiary hover:text-text-secondary hover:underline",children:"Cancel"})]})}):null}function Wn(){var a;const t=typeof document<"u"?document.activeElement:null;return t instanceof HTMLElement?((a=t.closest("[data-field-key]"))==null?void 0:a.getAttribute("data-field-key"))??null:null}function Bn({enabled:t,json:a,onJsonChange:n,context:o,onScanSubmit:i,onRosterScan:l}){var y;const c=(y=$s())==null?void 0:y.pushCodeInterceptor,{data:x}=Ws({enabled:t,staleTime:6e4}),[g,h]=d.useState(null),m=d.useRef({json:a,onJsonChange:n,context:o,onScanSubmit:i,onRosterScan:l,schemes:(x==null?void 0:x.schemes)??[]});return m.current={json:a,onJsonChange:n,context:o,onScanSubmit:i,onRosterScan:l,schemes:(x==null?void 0:x.schemes)??[]},d.useEffect(()=>{if(!(!t||!c))return c(f=>{const{json:p,schemes:s}=m.current,j=Bs(f,s);if(!j.ok||j.scheme.kind!=="action")return!1;let w;try{w=JSON.parse(p)}catch{return!1}const C=w._form_schema,k=ca(C,w,j.parsed.version,Wn());if(!C||!k)return!1;const R=C.properties[k],S=Ha(R);if(S&&"batch"in S.expected){const O=m.current.onRosterScan;return O?(O(k,f.trim()).then(D=>h({field:k,error:D,at:Date.now()})),!0):!1}const _={version:j.parsed.version,target:j.parsed.target,code:j.parsed.raw??f.trim()},b=da(w[k],_,R,m.current.context);if(!b.ok)return h({field:k,error:b.error,at:Date.now()}),!0;const v={...w,[k]:b.value},E=JSON.stringify(v,null,2);return m.current.onJsonChange(E),h({field:k,error:null,at:Date.now()}),ua(C)&&ma(C,v)&&m.current.onScanSubmit(E),!0})},[t,c]),g}const ls="lt:escalation:panel:open";function Fn(){try{const t=localStorage.getItem(ls);return t===null?!0:t==="true"}catch{return!0}}function ge(t){try{localStorage.setItem(ls,String(t))}catch{}}function be(t){if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Vn(t){const a=be(t);return!a||typeof a!="object"||Array.isArray(a)?{}:Object.fromEntries(Object.entries(a).filter(([n])=>!n.startsWith("_")&&!n.startsWith("$")))}function dr(){const{id:t}=va();return e.jsx(qn,{id:t},t)}function qn({id:t}){var At,Tt,It,Mt,Pt;const{user:a,isSuperAdmin:n,hasRoleType:o}=Qt(),i=n||o("admin"),{identity:l,clear:c}=Fs(),x=Vs(),{data:g}=qs((a==null?void 0:a.userId)??null),{viewerId:h,isViewer:m}=Js(),y=xt(),f=ts(),p=zt(),{data:s,isLoading:j,refetch:w,isFetching:C}=Us(t);Ks(t);const k=d.useMemo(()=>{if(!(s!=null&&s.envelope))return!1;try{const r=JSON.parse(s.envelope);return Array.isArray(r==null?void 0:r.lookups)&&r.lookups.length>0}catch{return!1}},[s==null?void 0:s.envelope]),{data:R}=Gs(t,k),S=d.useMemo(()=>{var r;return(r=R==null?void 0:R.lookups)!=null&&r.length?Object.fromEntries(R.lookups.filter(u=>!u.missing).map(u=>[u.as??u.key,u.data])):null},[R]),_=Hs(),b=zs(),v=Xs(),E=Qs(),O=Ys(),D=Zs(),B=ea(),[te,A]=d.useState(!1),[V,M]=d.useState(!1),{data:se}=ta(),{data:W}=sa(),{isBuilder:Re}=aa(),le=se==null?void 0:se.find(r=>r.workflow_type===(s==null?void 0:s.workflow_type)),Ae=((At=W==null?void 0:W.telemetry)==null?void 0:At.traceUrl)??null,[ve,Te]=d.useState("resolve"),[T,ae]=d.useState("{}"),[K,G]=d.useState(Fn),[Ie,Ne]=d.useState(!1),[I,Me]=d.useState(""),[Pe,De]=d.useState(!1),[os,oe]=d.useState([]),[cs,ds]=d.useState(0),[us,ce]=d.useState(void 0),[H,st]=d.useState(null),[ms,ht]=d.useState(!1),gt=d.useRef(!1),Le=d.useRef(null),yt=d.useRef(!1),Oe=d.useRef(null),bt=d.useRef(()=>{}),[ne,$e]=d.useState(null),[q,We]=d.useState(null),xs=hn(s==null?void 0:s.assigned_until),[fs,ps]=d.useState(null);d.useEffect(()=>{if(!(!Pe||!s))try{const r=JSON.parse(T),u=r._form_schema;if(!u){oe([]);return}oe(xa(u,r,J(s,S,U)))}catch{}},[T,Pe,s]);const Be=((Tt=s==null?void 0:s.metadata)==null?void 0:Tt.form_schema)??null,de=(s==null?void 0:s.form_schema)??(le==null?void 0:le.resolver_schema)??null,P=Be??de,jt=Tn(P),z=ga(P),vt=d.useMemo(()=>Vn(T),[T]),Nt=za(P,s?{...J(s,S),resolver:vt,input:vt}:void 0),U=Xa(Nt),we=Dn(P),ue=Ln(we,s?J(s,S,U):void 0,Nt),Fe=d.useRef(!1),Ve=d.useRef(null);d.useEffect(()=>{if(Fe.current)return;const r=Be??(de!=null&&de.properties?de:null);if(r!=null&&r.properties){Fe.current=!0;const u=be(s==null?void 0:s.envelope),N=u==null?void 0:u.formDefaults,$={...(s==null?void 0:s.metadata)??{},...typeof N=="object"&&N!==null?N:{}};Ve.current=fa(r,$);const Y=!((s==null?void 0:s.status)==="resolved"||(s==null?void 0:s.status)==="cancelled")&&(s!=null&&s.id)?yn(s.id):null,pe=Y?be(Y):null;pe&&typeof pe=="object"&&!Array.isArray(pe)?ae(JSON.stringify({...pe,_form_schema:r},null,2)):ae(Ve.current)}else P&&(Fe.current=!0,ae(JSON.stringify(P,null,2)))},[P,Be,de,s==null?void 0:s.envelope,s==null?void 0:s.metadata,s==null?void 0:s.id,s==null?void 0:s.status]),d.useEffect(()=>{if(!Fe.current||Ve.current===null||!(s!=null&&s.id)||s.status!=="pending")return;const r=s.id,u=window.setTimeout(()=>{T===Ve.current?ut(r):bn(r,T)},400);return()=>window.clearTimeout(u)},[T,s==null?void 0:s.id,s==null?void 0:s.status]),d.useEffect(()=>{if(!H)return;const r=window.setTimeout(async()=>{var N;try{const $=new URLSearchParams({parent_id:t,assigned_to:h??"",status:"pending",limit:"1"}),fe=await ye(`/escalations?${$}`),Y=(N=fe==null?void 0:fe.escalations)==null?void 0:N.find(pe=>m(pe.assigned_to));if(Y!=null&&Y.id&&Y.parent_id===t){st(null),y(`/escalations/detail/${Y.id}`);return}}catch{}st(null),p.resetQueries({queryKey:["escalations"]}),p.resetQueries({queryKey:["escalationStats"]});const u=H.doneDest;u?u.startsWith("/")?y(u):window.location.assign(u):y(-1)},H.maxWaitSeconds*1e3);return()=>window.clearTimeout(r)},[H,t,h,m,y,p]),d.useEffect(()=>{var r,u;gt.current||(r=f.state)!=null&&r.autoStart&&(!s||s.status!=="pending"||_e(s)||T!=="{}"&&(gt.current=!0,(u=Le.current)==null||u.call(Le)))},[s,T,f.state]),d.useEffect(()=>{var r;yt.current||!(we!=null&&we.autoResolveWhenEmpty)||!ue.confirmedEmpty||!s||s.status!=="pending"||!_e(s)||s.assigned_to===h&&T!=="{}"&&(yt.current=!0,(r=Oe.current)==null||r.call(Oe))},[ue.confirmedEmpty,we,s,T,h]),d.useEffect(()=>{if(!(!ne||!s)&&l&&l.actorId===s.assigned_to){const{run:r}=ne;$e(null),Promise.resolve().then(r).finally(()=>c())}},[l,ne,s==null?void 0:s.assigned_to,c]),d.useEffect(()=>{if(!q||!l)return;const{run:r,keepBadge:u}=q;We(null),r().finally(()=>{u||c()})},[l,q,c]);const hs=(s==null?void 0:s.subtype)==="rounds_exhausted",gs=!!s&&_e(s),ys=(s==null?void 0:s.status)==="resolved"||(s==null?void 0:s.status)==="cancelled",F=Bn({enabled:x&&!!s&&gs&&!ys&&(s.assigned_to===h||Lt(g)),json:T,onJsonChange:ae,context:s?J(s,S,U):void 0,onScanSubmit:r=>bt.current(r),onRosterScan:(r,u)=>new Promise(N=>{ze("check this off",async()=>{try{await b.mutateAsync({id:t,field:r,code:u}),N(null)}catch($){N($.message)}},{keepBadge:!0})})}),[bs,js]=d.useState(!1),wt=d.useMemo(()=>F&&{...F,message:`Scanned into ${Ht(P,F.field)}`},[F,P]);if(d.useLayoutEffect(()=>{var N;if(!F)return;const r=F.field.replace(/["\\]/g,$=>`\\${$}`),u=document.querySelector(`[data-field-key="${r}"]`);js(!!u),(N=u==null?void 0:u.scrollIntoView)==null||N.call(u,{block:"nearest",behavior:"smooth"})},[F]),j)return e.jsxs("div",{className:"animate-pulse space-y-8",children:[e.jsx("div",{className:"h-8 bg-surface-sunken rounded w-64"}),e.jsx("div",{className:"h-32 bg-surface-sunken rounded w-full"})]});if(!s)return e.jsx("p",{className:"text-sm text-text-secondary",children:"Escalation not found."});const qe=_e(s),X=qe&&s.assigned_to===h,vs=qe&&!X,re=s.status==="resolved"||s.status==="cancelled",Je=x&&Lt(g)&&qe&&!re,Ue=X||Je,at=Je&&s.assigned_to!==(a==null?void 0:a.userId),kt=is(P),nt=!!kt&&Ue&&!re,Ke=be(s.escalation_payload),me=be(s.resolver_payload),Ge=be(s.envelope),Ns=!!((It=Ge==null?void 0:Ge.metadata)!=null&&It.certified),St=na(),Ct=St!==null?St:!!((Mt=W==null?void 0:W.ai)!=null&&Mt.enabled),Q=typeof Ke=="object"&&Ke!==null&&!Array.isArray(Ke)?Ke:null,ws=Q==null?void 0:Q._triage,ks=typeof me=="object"&&me!==null&&!Array.isArray(me)?me:null,He=re?"terminal":X||Je?"claimed_by_me":vs?"claimed_by_other":"available",Ss=He==="available"?`${typeof z.claim=="string"?z.claim:"Claim"} this escalation to edit the form`:He==="claimed_by_other"?e.jsxs(e.Fragment,{children:["Claimed by ",s.assigned_to?e.jsx(je,{userId:s.assigned_to}):"another user"]}):s.status==="cancelled"?"This escalation is cancelled":s.status==="resolved"?"This escalation is resolved — the submitted values are shown":null,rt=r=>{ze("claim",async()=>{await _.mutateAsync({id:t,durationMinutes:r}).catch(()=>{})},{keepBadge:!0})},ke=()=>{p.resetQueries({queryKey:["escalations"]}),p.resetQueries({queryKey:["escalationStats"]}),y(-1)},Cs=()=>{const r=Rn(P);return r&&ft(r,J(s,S,U))||null},_s=r=>{p.resetQueries({queryKey:["escalations"]}),p.resetQueries({queryKey:["escalationStats"]}),r.startsWith("/")?y(r):window.location.assign(r)},Es=async r=>{try{await v.mutateAsync({id:t,resolverPayload:r})}catch($){if($ instanceof Ot&&ha($.body)){De(!0),oe($.body.violations),ce(L.ERRORS);return}throw $}ut(t);const u=Kt(P),N=Cs();if(u){st({...u,doneDest:N});return}if(N){_s(N);return}ke()},it=!!l&&l.actorId===s.assigned_to&&!l.subjectScoped,Se=(r,u)=>{if(at&&!(it&&r==="submit")){c(),$e({verb:r,run:u});return}if(!at){u();return}Promise.resolve().then(u).catch(N=>{N instanceof Ot&&N.status===401&&$e({verb:r,run:u})})},ze=(r,u,N)=>{if(N!=null&&N.badge){c(),x&&We({verb:r,run:u,message:N.badge,keepBadge:N.keepBadge});return}if(ra(g,x,l)){u();return}c(),We({verb:r,run:u,keepBadge:N==null?void 0:N.keepBadge})},xe=async r=>{Se("submit",()=>Es(r))},_t=async r=>{try{await _.mutateAsync({id:t,durationMinutes:r})}catch{return}if(ue.blocked)return;const u=Ye(T,J(s,S,U));if(!u.parseError){if(u.errors.length>0){De(!0),oe(u.errors),G(!0),ge(!0),ce(L.ERRORS);return}await xe(u.payload)}};Le.current=async()=>{var u;const r=(u=f.state)==null?void 0:u.durationMinutes;ht(!0),await _t(typeof r=="number"&&r>0?r:30),ht(!1)},Oe.current=()=>{const r=Ye(T,J(s,S,U));r.parseError||r.errors.length>0||xe(r.payload)},bt.current=r=>{if(ue.blocked)return;const u=Ye(r,J(s,S,U));if(!u.parseError){if(u.errors.length>0){De(!0),oe(u.errors),G(!0),ge(!0),ce(L.ERRORS);return}xe(u.payload)}};const Et=r=>{r&&Se("escalate",async()=>{await E.mutateAsync({id:t,targetRole:r}),ke()})},Rs=async()=>{X||await _.mutateAsync({id:t,durationMinutes:30});const r=(Q==null?void 0:Q.diagnosis)||s.description||"";await v.mutateAsync({id:t,resolverPayload:{_lt:{needsTriage:!0},notes:r}}),ke()},Rt=()=>{Se("release",async()=>{await _.mutateAsync({id:t,durationMinutes:0}),ke()})},As=()=>{A(!1),Se("cancel",async()=>{await O.mutateAsync(t),ut(t),ke()})},Ts=e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(wa,{onRefresh:()=>w(),isFetching:C,apiPath:`/escalations/${s.id}`,standalone:!0}),e.jsx("button",{onClick:()=>G(r=>(ge(!r),!r)),className:"ml-2 text-accent/60 hover:text-accent transition-colors",title:K?"Hide side panel":"Show side panel",children:K?e.jsx(Wt,{className:"w-5 h-5",strokeWidth:1.5}):e.jsx(Bt,{className:"w-5 h-5",strokeWidth:1.5})})]});return e.jsxs("div",{className:"flex-1 min-h-0 min-w-0 flex items-stretch -mt-8 -mr-page-x -mb-16",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col min-h-0",children:[nt?e.jsxs("div",{className:"relative flex-1 min-h-0 -ml-page-x",children:[e.jsx("div",{className:"absolute top-3 right-3 z-50 flex items-center gap-0.5 bg-surface/90 backdrop-blur-sm rounded-lg px-1.5 py-1 shadow-sm border border-surface-border/40",children:[{onClick:Rt,disabled:_.isPending,label:z.release??"Release",hoverClass:"hover:text-accent",icon:e.jsx(Ga,{className:"w-4 h-4",strokeWidth:1.5})},...z.cancel===!1?[]:[{onClick:()=>A(!0),disabled:!1,label:z.cancel??"Cancel",hoverClass:"hover:text-status-error",icon:e.jsx(as,{className:"w-4 h-4",strokeWidth:1.5})}],{onClick:()=>G(r=>(ge(!r),!r)),disabled:!1,label:K?"Hide panel":"Show panel",hoverClass:"hover:text-accent",icon:K?e.jsx(Wt,{className:"w-4 h-4",strokeWidth:1.5}):e.jsx(Bt,{className:"w-4 h-4",strokeWidth:1.5})}].map(({onClick:r,disabled:u,label:N,hoverClass:$,icon:fe})=>e.jsxs("div",{className:"relative group/tip",children:[e.jsx("button",{onClick:r,disabled:u,className:`text-text-tertiary ${$} transition-colors disabled:opacity-40 disabled:cursor-default p-1.5 rounded-md`,children:fe}),e.jsx("span",{className:"pointer-events-none absolute top-full left-1/2 -translate-x-1/2 mt-1.5 px-2 py-0.5 rounded text-2xs bg-surface-sunken text-text-primary whitespace-nowrap opacity-0 group-hover/tip:opacity-100 transition-opacity",children:N})]},N))}),e.jsx(et,{src:Ze(kt.src,s),escalation:s,schema:P,stage:ee.CLAIMED,onResolve:xe,onEscalate:Et,submitAttempted:Pe,fill:!0})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"shrink-0 pt-8 pr-page-x",children:e.jsx(Na,{title:s.description||"Escalation",actions:Ts})}),e.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto pr-page-x",children:[e.jsx(mn,{isRoundsExhausted:hs,payloadObj:Q,isTerminal:re,resolverPayload:me,onRetryTriage:Rs,isRetrying:_.isPending||v.isPending}),F&&Ue&&!bs&&e.jsx("p",{role:"status",className:`text-sm mb-3 ${F.error?"text-status-error":"text-status-success"}`,children:F.error??`Scanned into ${Ht(P,F.field)}`},F.at),e.jsx(pa,{value:Ue&&wt?wt:null,children:e.jsx(Qa.Provider,{value:ze,children:e.jsx(xn,{esc:s,resolverPayload:me,isTerminal:re,editable:Ue,activeView:ve,lookup:S,roster:U,metadataFormSchema:Be,effectiveSchema:P,json:T,onJsonChange:ae,requestTriage:Ie,onRequestTriageChange:Ne,triageNotes:I,onTriageNotesChange:Me,onResolve:xe,onEscalate:Et,onClaim:()=>rt(30),submitAttempted:Pe,isCertified:Ns,hasAI:Ct,onOpenHelp:()=>{G(!0),ge(!0),ce(L.HELP)},onDisabledClick:()=>ds(r=>r+1),disabledHint:Ss})})}),e.jsx("div",{className:"h-10"})]})]}),!nt&&e.jsx(cn,{escalationContext:J(s,S,U),mode:He,activeView:ve,onActiveViewChange:Te,onClaim:jt?r=>ze("claim",()=>_t(r),{keepBadge:!0}):rt,claimError:_.error,claimPending:_.isPending||jt&&v.isPending,claimNudge:cs,workflowType:s.workflow_type,json:T,onResolve:xe,resolvePending:v.isPending||v.isSuccess,resolveError:v.error,requestTriage:Ie,triageNotes:I,onRelease:Rt,releasePending:_.isPending,onCancel:()=>A(!0),assignedTo:s.assigned_to,assignedUntil:s.assigned_until,actingName:l&&(X||it)?l.displayName:null,submitNeedsBadge:at&&!it,onSubmitAttempt:()=>De(!0),onValidationErrors:r=>{oe(r),G(!0),ge(!0),ce(L.ERRORS)},labels:z,submitBlocked:ue.blocked,submitBlockedMessage:ue.message,canManage:i,onReassign:()=>M(!0),onUnassign:()=>B.mutate({ids:[t]}),unassignPending:B.isPending})]}),e.jsx(on,{esc:s,schema:P,envelope:Ge,payload:Q,resolver:ks,triage:ws??null,hasAI:Ct,claimed:qe,claimedByMe:X,isTerminal:re,isBuilder:Re,traceUrl:Ae,open:K,noGutter:nt,formErrors:os,activePanel:us,onPanelChange:ce,canWriteItems:He==="available"||X||i||Je,guardItemWrite:Se}),e.jsx(ya,{open:V,onClose:()=>M(!1),selectedCount:1,selectedRoles:s?[s.role]:[],onSubmit:(r,u)=>D.mutate({ids:[t],targetUserId:r,durationMinutes:u,reassign:!0},{onSuccess:()=>M(!1)}),isPending:D.isPending}),e.jsx(ba,{open:te,onClose:()=>A(!1),onConfirm:As,isPending:O.isPending,error:O.error,actionLabel:typeof z.cancel=="string"?z.cancel:void 0}),e.jsx(Ya,{escalationId:t}),e.jsx(Gt,{open:!!q,verb:(q==null?void 0:q.verb)??"continue",message:q==null?void 0:q.message,anyBadge:!0,onCancel:()=>We(null)}),e.jsx(Gt,{open:!!ne,verb:(ne==null?void 0:ne.verb)??"submit",claimantId:s.assigned_to,wrongBadgeName:l&&l.actorId!==s.assigned_to?l.displayName:null,onCancel:()=>$e(null)}),e.jsx($n,{open:!!H||ms,message:(H==null?void 0:H.message)??((Pt=Kt(P))==null?void 0:Pt.message)??"Starting…"}),X&&!re&&s.assigned_until&&e.jsx(fn,{open:xs.expiringSoon&&s.assigned_until!==fs,assignedUntil:s.assigned_until,onClose:()=>ps(s.assigned_until??null),onExtend:rt,isPending:_.isPending})]})}function Ht(t,a){var i;const n=t==null?void 0:t.properties,o=(i=n==null?void 0:n[a])==null?void 0:i.title;return typeof o=="string"&&o?o:a}export{dr as EscalationDetailPage};
|
|
3
|
+
//# sourceMappingURL=index-FiNThtNU.js.map
|