@hotmeshio/long-tail 0.8.5 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/roles.d.ts +21 -0
- package/build/api/roles.js +50 -0
- package/build/api/settings.js +2 -0
- package/build/index.js +1 -0
- package/build/lib/db/schemas/021_role_list_schema.sql +27 -0
- package/build/modules/branding.d.ts +13 -0
- package/build/modules/branding.js +19 -0
- package/build/routes/roles.js +20 -0
- package/build/services/role/index.d.ts +13 -1
- package/build/services/role/index.js +27 -0
- package/build/services/role/sql.d.ts +14 -2
- package/build/services/role/sql.js +51 -3
- package/build/services/role/types.d.ts +27 -0
- package/build/start/adapters.js +2 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/startup.d.ts +8 -0
- package/dashboard/dist/assets/{AdminDashboard-RrSvb8d-.js → AdminDashboard-JobmypiO.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-RrSvb8d-.js.map → AdminDashboard-JobmypiO.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-5RMdI0ku.js → AgentConfigPage-D_HuaRN9.js} +6 -6
- package/dashboard/dist/assets/{AgentConfigPage-5RMdI0ku.js.map → AgentConfigPage-D_HuaRN9.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-C_-sIBcr.js → AgentDetailPage-Cj22NZLI.js} +4 -4
- package/dashboard/dist/assets/{AgentDetailPage-C_-sIBcr.js.map → AgentDetailPage-Cj22NZLI.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-CxNNtSsf.js → AgentsPage-DTKto-gL.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-CxNNtSsf.js.map → AgentsPage-DTKto-gL.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-CUvrKkgS.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-CUvrKkgS.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-BQVz6bye.js → BotPicker-AwKouk26.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-BQVz6bye.js.map → BotPicker-AwKouk26.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-DlZ8SgO3.js → CapabilitiesPage-1ZMO_0UU.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-DlZ8SgO3.js.map → CapabilitiesPage-1ZMO_0UU.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-lo8Qx4zb.js → CollapsibleSection-D6kUTrq4.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-lo8Qx4zb.js.map → CollapsibleSection-D6kUTrq4.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-blg-gZvT.js → CopyableId-uot2mE_g.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-blg-gZvT.js.map → CopyableId-uot2mE_g.js.map} +1 -1
- package/dashboard/dist/assets/CountdownTimer-Bj9YbInO.js +2 -0
- package/dashboard/dist/assets/CountdownTimer-Bj9YbInO.js.map +1 -0
- package/dashboard/dist/assets/CredentialsPage-D5H_kyRL.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DJ9DyXsO.js.map → CredentialsPage-D5H_kyRL.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-o0dbisw1.js → CronLabel-DvmJ0EFz.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-o0dbisw1.js.map → CronLabel-DvmJ0EFz.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-DT_g8Hr4.js +2 -0
- package/dashboard/dist/assets/CustomDurationPicker-DT_g8Hr4.js.map +1 -0
- package/dashboard/dist/assets/DataTable-Byn3oyT9.js +2 -0
- package/dashboard/dist/assets/DataTable-Byn3oyT9.js.map +1 -0
- package/dashboard/dist/assets/{DropZone-SgiK1WOl.js → DropZone-wJqP4zA4.js} +2 -2
- package/dashboard/dist/assets/{DropZone-SgiK1WOl.js.map → DropZone-wJqP4zA4.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-N22STQcg.js → ElapsedCell-7_8YpC3D.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-N22STQcg.js.map → ElapsedCell-7_8YpC3D.js.map} +1 -1
- package/dashboard/dist/assets/EscalationListSchemaPage-ClFRLeKV.js +20 -0
- package/dashboard/dist/assets/EscalationListSchemaPage-ClFRLeKV.js.map +1 -0
- package/dashboard/dist/assets/{EscalationSchemaPage-Zsmewko2.js → EscalationSchemaPage-BcYcj-b8.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-Zsmewko2.js.map → EscalationSchemaPage-BcYcj-b8.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CE2p70Ct.js → EscalationsOverview-uHb8ni_5.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CE2p70Ct.js.map → EscalationsOverview-uHb8ni_5.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-CkdWqmEL.js +2 -0
- package/dashboard/dist/assets/EventTable-CkdWqmEL.js.map +1 -0
- package/dashboard/dist/assets/{FilterBar-B4Mk2PvT.js → FilterBar-DDIn8TOs.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-B4Mk2PvT.js.map → FilterBar-DDIn8TOs.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-DywWVSdj.js → GraphInvokePage-C6sfPjSc.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-DywWVSdj.js.map → GraphInvokePage-C6sfPjSc.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-CUHZxihq.js +2 -0
- package/dashboard/dist/assets/{HomePage-CxtBiULd.js.map → HomePage-CUHZxihq.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-Ok2O0wmC.js → ListToolbar-nWxpujpH.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-Ok2O0wmC.js.map → ListToolbar-nWxpujpH.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CTCYZXIp.js → McpOverview-DXrkDkU-.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CTCYZXIp.js.map → McpOverview-DXrkDkU-.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-BOaXf0bZ.js → McpQueryDetailPage-CnLYE26v.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-BOaXf0bZ.js.map → McpQueryDetailPage-CnLYE26v.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-BbYojoHu.js → McpQueryPage-oE9eWAus.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-BbYojoHu.js.map → McpQueryPage-oE9eWAus.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-B7e6AVl1.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-CXGCVmPq.js.map → McpRunDetailPage-B7e6AVl1.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-Df1GqxUg.js → McpRunsPage-Bx5DiGk7.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-Df1GqxUg.js.map → McpRunsPage-Bx5DiGk7.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill-SErKwgkb.js → NamespacePill-BlhSWa5S.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-SErKwgkb.js.map → NamespacePill-BlhSWa5S.js.map} +1 -1
- package/dashboard/dist/assets/OperationsPage-BmG3qzdR.js +2 -0
- package/dashboard/dist/assets/OperationsPage-BmG3qzdR.js.map +1 -0
- package/dashboard/dist/assets/OperatorDashboard-r6hQ57eO.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-DIR7XDeD.js.map → OperatorDashboard-r6hQ57eO.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-Ji1AtA4f.js +2 -0
- package/dashboard/dist/assets/PageHeader-Ji1AtA4f.js.map +1 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-W3akV6nB.js → PageHeaderWithStats-B2qrFAaG.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-W3akV6nB.js.map → PageHeaderWithStats-B2qrFAaG.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-BuSi654J.js → ProcessDetailPage-C3gE4OHq.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-BuSi654J.js.map → ProcessDetailPage-C3gE4OHq.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-Dhik7XpW.js → ProcessesListPage-DSsIGmBB.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-Dhik7XpW.js.map → ProcessesListPage-DSsIGmBB.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-DiFISbnq.js +8 -0
- package/dashboard/dist/assets/RoleDetailPage-DiFISbnq.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-DHWixsQR.js → RolePill-ColM_ynA.js} +2 -2
- package/dashboard/dist/assets/{RolePill-DHWixsQR.js.map → RolePill-ColM_ynA.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-BRicD5mx.js → RolesPage-CE5fui18.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-BRicD5mx.js.map → RolesPage-CE5fui18.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-DipyBf_T.js → RunAsSelector-Ct8NNadu.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-DipyBf_T.js.map → RunAsSelector-Ct8NNadu.js.map} +1 -1
- package/dashboard/dist/assets/SlidePanel-BzeKveus.js +2 -0
- package/dashboard/dist/assets/SlidePanel-BzeKveus.js.map +1 -0
- package/dashboard/dist/assets/{StatusBadge-DZ9137bI.js → StatusBadge-CEQMRmSQ.js} +2 -2
- package/dashboard/dist/assets/StatusBadge-CEQMRmSQ.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-CD4W450h.js → StickyPagination-BfgBtP_B.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CD4W450h.js.map → StickyPagination-BfgBtP_B.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-BbDdWDUY.js → StreamMessageDetail-2rwp7Ynx.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-BbDdWDUY.js.map → StreamMessageDetail-2rwp7Ynx.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-Bktv2vi5.js → SwimlaneTimeline-BwWyYBCo.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-Bktv2vi5.js.map → SwimlaneTimeline-BwWyYBCo.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-CGGC3DTR.js → TagInput-By0E_Jym.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CGGC3DTR.js.map → TagInput-By0E_Jym.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-pSU3xuG9.js → TaskDetailPage-BUKHu2oD.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-pSU3xuG9.js.map → TaskDetailPage-BUKHu2oD.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-D6omQJNY.js → TaskQueuePill-CY1ZSwWu.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-D6omQJNY.js.map → TaskQueuePill-CY1ZSwWu.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-M6ok-Nfd.js → TasksListPage-C_PwExQC.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-M6ok-Nfd.js.map → TasksListPage-C_PwExQC.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-DVWhRNbi.js → TimeAgo-Bagm-L2o.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-DVWhRNbi.js.map → TimeAgo-Bagm-L2o.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-rG7pmIkW.js → TimestampCell-BwDo7knq.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-rG7pmIkW.js.map → TimestampCell-BwDo7knq.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-BW0iRwZu.js → ToolPill-D0IzqLEe.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-BW0iRwZu.js.map → ToolPill-D0IzqLEe.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-CLcMA8OE.js → ToolTestPanel-CVZ2M1yv.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-CLcMA8OE.js.map → ToolTestPanel-CVZ2M1yv.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-C9gvoWYu.js → TopicDetailPage-DKAvbkxD.js} +3 -3
- package/dashboard/dist/assets/{TopicDetailPage-C9gvoWYu.js.map → TopicDetailPage-DKAvbkxD.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-CIGi3TdT.js → TopicsPage-BZknsApe.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-CIGi3TdT.js.map → TopicsPage-BZknsApe.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-CifbOahk.js → UserName-ByDxLHPZ.js} +2 -2
- package/dashboard/dist/assets/{UserName-CifbOahk.js.map → UserName-ByDxLHPZ.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DrwKB2x8.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-DrwKB2x8.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowPill-BtNBSplz.js → WorkflowPill-BXmmLR0t.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-BtNBSplz.js.map → WorkflowPill-BXmmLR0t.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-CSYrYQsO.js → WorkflowsDashboard-DEq9fkhl.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-CSYrYQsO.js.map → WorkflowsDashboard-DEq9fkhl.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CaXWYZuw.js → WorkflowsOverview-l-0KYP7Y.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CaXWYZuw.js.map → WorkflowsOverview-l-0KYP7Y.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CRBXahFJ.js → YamlWorkflowDetailPage-BgimL3VT.js} +25 -25
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CRBXahFJ.js.map → YamlWorkflowDetailPage-BgimL3VT.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-D5zc8Lta.js → YamlWorkflowsPage-CabXXA9r.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-D5zc8Lta.js.map → YamlWorkflowsPage-CabXXA9r.js.map} +1 -1
- package/dashboard/dist/assets/{agents-D7vYXeLj.js → agents-D_L6lV0f.js} +2 -2
- package/dashboard/dist/assets/{agents-D7vYXeLj.js.map → agents-D_L6lV0f.js.map} +1 -1
- package/dashboard/dist/assets/{bots-CKaYN2fL.js → bots-wdZz1nJw.js} +2 -2
- package/dashboard/dist/assets/{bots-CKaYN2fL.js.map → bots-wdZz1nJw.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-BknM6oFm.js → capabilities-C35_V8eu.js} +2 -2
- package/dashboard/dist/assets/{capabilities-BknM6oFm.js.map → capabilities-C35_V8eu.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-BodNGCr-.js → controlplane-kR2P6zYv.js} +2 -2
- package/dashboard/dist/assets/{controlplane-BodNGCr-.js.map → controlplane-kR2P6zYv.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-BVj16HuR.js +2 -0
- package/dashboard/dist/assets/escalation-columns-BVj16HuR.js.map +1 -0
- package/dashboard/dist/assets/{index-Bwofyfi8.js → index-1WCiN-pF.js} +2 -2
- package/dashboard/dist/assets/{index-Bwofyfi8.js.map → index-1WCiN-pF.js.map} +1 -1
- package/dashboard/dist/assets/{index-B-LQ8fsJ.js → index-B4zWCfQr.js} +2 -2
- package/dashboard/dist/assets/{index-B-LQ8fsJ.js.map → index-B4zWCfQr.js.map} +1 -1
- package/dashboard/dist/assets/{index-BH67e1Ah.js → index-BMQopgAx.js} +3 -3
- package/dashboard/dist/assets/{index-BH67e1Ah.js.map → index-BMQopgAx.js.map} +1 -1
- package/dashboard/dist/assets/{index-C3QKGY5C.js → index-BZfX_ziz.js} +2 -2
- package/dashboard/dist/assets/{index-C3QKGY5C.js.map → index-BZfX_ziz.js.map} +1 -1
- package/dashboard/dist/assets/{index-Gt2Rebs9.js → index-BfDn7j4K.js} +2 -2
- package/dashboard/dist/assets/{index-Gt2Rebs9.js.map → index-BfDn7j4K.js.map} +1 -1
- package/dashboard/dist/assets/{index-CdN-Z8-r.js → index-BmbO85oT.js} +2 -2
- package/dashboard/dist/assets/{index-CdN-Z8-r.js.map → index-BmbO85oT.js.map} +1 -1
- package/dashboard/dist/assets/{index-D7NHjvA4.js → index-C75E0-Wd.js} +2 -2
- package/dashboard/dist/assets/{index-D7NHjvA4.js.map → index-C75E0-Wd.js.map} +1 -1
- package/dashboard/dist/assets/{index-DHhz71yv.js → index-CJFA7aLp.js} +2 -2
- package/dashboard/dist/assets/{index-DHhz71yv.js.map → index-CJFA7aLp.js.map} +1 -1
- package/dashboard/dist/assets/index-CsMAT5cs.css +1 -0
- package/dashboard/dist/assets/index-DIrYjyRG.js +5 -0
- package/dashboard/dist/assets/index-DIrYjyRG.js.map +1 -0
- package/dashboard/dist/assets/{index-_gh2K9DU.js → index-QOTnrFd1.js} +2 -2
- package/dashboard/dist/assets/{index-_gh2K9DU.js.map → index-QOTnrFd1.js.map} +1 -1
- package/dashboard/dist/assets/index-so192yXP.js +63 -0
- package/dashboard/dist/assets/index-so192yXP.js.map +1 -0
- package/dashboard/dist/assets/index-wZzl3bcK.js +2 -0
- package/dashboard/dist/assets/index-wZzl3bcK.js.map +1 -0
- package/dashboard/dist/assets/{index-CV8soXIM.js → index-xBNf5aFb.js} +3 -3
- package/dashboard/dist/assets/{index-CV8soXIM.js.map → index-xBNf5aFb.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-CE6gjN3G.js → knowledge-DDt599ea.js} +2 -2
- package/dashboard/dist/assets/{knowledge-CE6gjN3G.js.map → knowledge-DDt599ea.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B4F-T-7R.js → mcp-BPXRXEje.js} +2 -2
- package/dashboard/dist/assets/{mcp-B4F-T-7R.js.map → mcp-BPXRXEje.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CYOarL1K.js → mcp-query-HUZuboi-.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CYOarL1K.js.map → mcp-query-HUZuboi-.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-B4gB9qMx.js → pipelines-CH8q3ok_.js} +2 -2
- package/dashboard/dist/assets/{pipelines-B4gB9qMx.js.map → pipelines-CH8q3ok_.js.map} +1 -1
- package/dashboard/dist/assets/roles-B7rzw8wD.js +2 -0
- package/dashboard/dist/assets/roles-B7rzw8wD.js.map +1 -0
- package/dashboard/dist/assets/{tasks-GG8c_U9w.js → tasks-j-mVt2EA.js} +2 -2
- package/dashboard/dist/assets/{tasks-GG8c_U9w.js.map → tasks-j-mVt2EA.js.map} +1 -1
- package/dashboard/dist/assets/{topics-C7-6oOgA.js → topics-DATyaYWW.js} +2 -2
- package/dashboard/dist/assets/{topics-C7-6oOgA.js.map → topics-DATyaYWW.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-82IiMmOc.js → useEventHooks-CwIAhqJk.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-82IiMmOc.js.map → useEventHooks-CwIAhqJk.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-DQEqD2LA.js → useNamespace-hV7rcAfa.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-DQEqD2LA.js.map → useNamespace-hV7rcAfa.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-Bm0-ewLx.js → useYamlActivityEvents-Dwuuu3F0.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-Bm0-ewLx.js.map → useYamlActivityEvents-Dwuuu3F0.js.map} +1 -1
- package/dashboard/dist/assets/{users-DHx2ium7.js → users-DS9yeHe4.js} +2 -2
- package/dashboard/dist/assets/{users-DHx2ium7.js.map → users-DS9yeHe4.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-DOIDKgo6.js → vendor-icons-BX2Vih4L.js} +176 -121
- package/dashboard/dist/assets/vendor-icons-BX2Vih4L.js.map +1 -0
- package/dashboard/dist/assets/{workflows-qIbkeQ_5.js → workflows-FF8WUHaC.js} +2 -2
- package/dashboard/dist/assets/{workflows-qIbkeQ_5.js.map → workflows-FF8WUHaC.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-FibyeHpo.js → yaml-workflows-y-eo6Rwj.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-FibyeHpo.js.map → yaml-workflows-y-eo6Rwj.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/settings.md +4 -0
- package/docs/api/sdk/settings.md +2 -1
- package/docs/dashboard.md +15 -2
- package/docs/hitl-guide.md +132 -22
- package/package.json +2 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BcbhA6NE.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BcbhA6NE.js.map +0 -1
- package/dashboard/dist/assets/CredentialsPage-DJ9DyXsO.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-CGiwKSVJ.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-CGiwKSVJ.js.map +0 -1
- package/dashboard/dist/assets/DataTable-ZWgVQg7F.js +0 -2
- package/dashboard/dist/assets/DataTable-ZWgVQg7F.js.map +0 -1
- package/dashboard/dist/assets/EventTable-B3Gj7Ayg.js +0 -2
- package/dashboard/dist/assets/EventTable-B3Gj7Ayg.js.map +0 -1
- package/dashboard/dist/assets/HomePage-CxtBiULd.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-CXGCVmPq.js +0 -2
- package/dashboard/dist/assets/OperationsPage-DgZYi-BC.js +0 -2
- package/dashboard/dist/assets/OperationsPage-DgZYi-BC.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-DIR7XDeD.js +0 -2
- package/dashboard/dist/assets/PageHeader-DJo7yMUR.js +0 -2
- package/dashboard/dist/assets/PageHeader-DJo7yMUR.js.map +0 -1
- package/dashboard/dist/assets/RoleDetailPage-BfzqQxMU.js +0 -8
- package/dashboard/dist/assets/RoleDetailPage-BfzqQxMU.js.map +0 -1
- package/dashboard/dist/assets/StatusBadge-DZ9137bI.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BR0oVx_p.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-BR0oVx_p.js.map +0 -1
- package/dashboard/dist/assets/escalation-CH_XK2XM.js +0 -2
- package/dashboard/dist/assets/escalation-CH_XK2XM.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-CcbLKRI4.js +0 -2
- package/dashboard/dist/assets/escalation-columns-CcbLKRI4.js.map +0 -1
- package/dashboard/dist/assets/index--xNp5rx6.css +0 -1
- package/dashboard/dist/assets/index-B_aFcGv9.js +0 -63
- package/dashboard/dist/assets/index-B_aFcGv9.js.map +0 -1
- package/dashboard/dist/assets/index-CJpywoA8.js +0 -2
- package/dashboard/dist/assets/index-CJpywoA8.js.map +0 -1
- package/dashboard/dist/assets/index-IIq5Tkqs.js +0 -6
- package/dashboard/dist/assets/index-IIq5Tkqs.js.map +0 -1
- package/dashboard/dist/assets/roles-LZf98ePg.js +0 -2
- package/dashboard/dist/assets/roles-LZf98ePg.js.map +0 -1
- package/dashboard/dist/assets/useCollapsedSections-BU5HULGs.js +0 -2
- package/dashboard/dist/assets/useCollapsedSections-BU5HULGs.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-DOIDKgo6.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as p,j as a}from"./vendor-query-B2UbickB.js";import{a as N}from"./vendor-react-CXumBFUA.js";import{u as P,a as T,b as F,S as C,c as M,d as O,e as $}from"./StreamMessageDetail-BbDdWDUY.js";import{u as z}from"./useFilterParams-x-Dg0Vgz.js";import{u as A}from"./useNamespace-DQEqD2LA.js";import{b as D}from"./api-path-u2Jf9QXS.js";import{D as R}from"./DataTable-ZWgVQg7F.js";import{S as E}from"./StickyPagination-CD4W450h.js";import{F as L,b as u,a as b}from"./FilterBar-B4Mk2PvT.js";import{T as x}from"./TimestampCell-rG7pmIkW.js";import{P as U}from"./PageHeader-DJo7yMUR.js";import{L as I}from"./ListToolbar-Ok2O0wmC.js";import{X as f}from"./vendor-icons-DOIDKgo6.js";import"./index-B_aFcGv9.js";import"./controlplane-BodNGCr-.js";import"./EmptyState-BcsfPq9T.js";function B(o,i){if(o.length<=i)return o;const s=Math.floor((i-1)/2);return`${o.slice(0,s)}…${o.slice(-s)}`}function oe(){const{namespace:o,available:i}=A("namespace"),{filters:s,setFilter:t,pagination:r,sort:n,setSort:_}=z({filters:{namespace:"",source:"worker",status:"",stream_name:"",msg_type:"",topic:"",workflow_name:"",jid:"",aid:""}}),[m,g]=p.useState(null),h=p.useMemo(()=>i.map(e=>({value:e,label:e})),[i]),{data:l,isLoading:j,refetch:v,isFetching:k}=P({namespace:s.namespace||o,source:s.source||"worker",limit:r.pageSize,offset:r.offset,sort_by:n.sort_by||"created_at",order:n.order||"desc",status:s.status||void 0,stream_name:s.stream_name||void 0,msg_type:s.msg_type||void 0,topic:s.topic||void 0,workflow_name:s.workflow_name||void 0,jid:s.jid||void 0,aid:s.aid||void 0}),d=(l==null?void 0:l.messages)??[],y=(l==null?void 0:l.total)??0,c=p.useMemo(()=>m?d.find(e=>e.id===m.id&&e.source===m.source)??m:null,[d,m]),S=!!c,w=[{key:"status",label:"Status",render:e=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:`w-2 h-2 rounded-full dot-ring shrink-0 ${M[e.status]}`}),a.jsx("span",{className:"text-xs",children:O[e.status]})]}),className:"w-28"},{key:"source",label:"Source",render:e=>a.jsx("span",{className:$,children:e.source}),className:"w-20"},{key:"stream_name",label:"Stream",sortable:!0,render:e=>a.jsx("span",{className:"font-mono text-xs text-text-secondary truncate block max-w-[240px]",title:e.stream_name,children:e.stream_name})},{key:"msg_type",label:"Type",render:e=>a.jsx("span",{className:"text-xs text-text-secondary",children:e.msg_type||"—"}),className:"w-24"},{key:"created_at",label:"Created",sortable:!0,render:e=>a.jsx(x,{date:e.created_at}),className:"w-44"},{key:"reserved_at",label:"Reserved",render:e=>e.reserved_at?a.jsx(x,{date:e.reserved_at}):a.jsx("span",{className:"text-xs text-text-tertiary",children:"—"}),className:"w-44"},{key:"expired_at",label:"Processed",render:e=>e.expired_at?a.jsx(x,{date:e.expired_at}):a.jsx("span",{className:"text-xs text-text-tertiary",children:"—"}),className:"w-44"},{key:"priority",label:"Pri",sortable:!0,render:e=>a.jsx("span",{className:"text-xs text-text-secondary",children:e.priority}),className:"w-12 text-right"},{key:"retry_attempt",label:"Retries",render:e=>a.jsxs("span",{className:"text-xs text-text-secondary",children:[e.retry_attempt,"/",e.max_retry_attempts]}),className:"w-16"}];return a.jsxs("div",{children:[a.jsx(U,{title:"Messages",docsHash:"#docs:dashboard.md:messages"}),a.jsxs(L,{actions:a.jsx(I,{onRefresh:()=>v(),isFetching:k,apiPath:D("/controlplane/stream-messages",{namespace:s.namespace||o,source:s.source||"worker",limit:r.pageSize,offset:r.offset,sort_by:n.sort_by||"created_at",order:n.order||"desc",status:s.status||void 0,stream_name:s.stream_name||void 0,msg_type:s.msg_type||void 0,topic:s.topic||void 0,workflow_name:s.workflow_name||void 0,jid:s.jid||void 0,aid:s.aid||void 0})}),children:[a.jsx(u,{label:"Namespace",value:s.namespace,onChange:e=>t("namespace",e),options:h,required:!0}),a.jsx(u,{label:"Source",value:s.source,onChange:e=>t("source",e),options:T,required:!0}),a.jsx(u,{label:"Status",value:s.status,onChange:e=>t("status",e),options:F}),a.jsx(b,{label:"Stream",value:s.stream_name,onChange:e=>t("stream_name",e),placeholder:"Filter by stream name…"}),a.jsx(b,{label:"Job ID",value:s.jid,onChange:e=>t("jid",e),placeholder:"Filter by jid…"}),[{key:"topic",label:"Topic",value:s.topic},{key:"workflow_name",label:"Workflow",value:s.workflow_name},{key:"aid",label:"Activity",value:s.aid},{key:"msg_type",label:"Type",value:s.msg_type}].filter(e=>e.value).map(e=>a.jsxs("button",{onClick:()=>t(e.key,""),className:"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-mono rounded-full bg-accent/15 text-accent hover:bg-accent/25 transition-colors",title:`Clear ${e.label} filter: ${e.value}`,children:[e.label,": ",B(e.value,12),a.jsx(f,{className:"w-2.5 h-2.5"})]},e.key))]}),a.jsx(R,{columns:w,data:d,keyFn:e=>`${e.source}:${e.id}`,isLoading:j,emptyMessage:"No stream messages found",onRowClick:e=>g(e),activeRowKey:c?`${c.source}:${c.id}`:null,sort:n,onSort:_}),a.jsx(E,{page:r.page,totalPages:r.totalPages(y),onPageChange:r.setPage,total:y,pageSize:r.pageSize,onPageSizeChange:r.setPageSize}),S&&N.createPortal(a.jsxs("div",{className:"fixed right-0 bottom-0 w-[400px] z-40 border-l border-surface-border bg-surface overflow-y-auto shadow-lg",style:{top:"3.5rem"},children:[a.jsxs("div",{className:"sticky top-0 z-10 flex items-center justify-between px-4 py-3 bg-surface border-b border-surface-border/50",children:[a.jsx("span",{className:"text-xs font-medium text-text-primary",children:"Message Detail"}),a.jsx("button",{onClick:()=>g(null),className:"p-1 rounded hover:bg-surface-hover text-text-tertiary hover:text-text-primary transition-colors",title:"Close",children:a.jsx(f,{className:"w-4 h-4"})})]}),a.jsx("div",{className:"px-4 py-4",children:a.jsx(C,{message:c,filters:{onFilterStatus:e=>t("status",e),onFilterStreamName:e=>t("stream_name",e),onFilterMsgType:e=>t("msg_type",e),onFilterTopic:e=>t("topic",e),onFilterWorkflow:e=>t("workflow_name",e),onFilterJid:e=>t("jid",e),onFilterAid:e=>t("aid",e)}})})]}),document.body)]})}export{oe as StreamMessagesPage};
|
|
2
|
-
//# sourceMappingURL=index-CJpywoA8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CJpywoA8.js","sources":["../../src/pages/admin/streams/StreamMessagesPage.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport { useStreamMessages, type StreamMessage } from '../../../api/stream-messages';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport { useNamespace } from '../../../hooks/useNamespace';\nimport { buildApiPath } from '../../../lib/api-path';\nimport { DataTable, type Column } from '../../../components/common/data/DataTable';\nimport { StickyPagination } from '../../../components/common/data/StickyPagination';\nimport { FilterBar, FilterSelect, FilterInput } from '../../../components/common/data/FilterBar';\nimport { TimestampCell } from '../../../components/common/display/TimestampCell';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { ListToolbar } from '../../../components/common/data/ListToolbar';\nimport { StreamMessageDetail } from './StreamMessageDetail';\nimport { STATUS_DOT, STATUS_LABEL, STATUS_OPTIONS, SOURCE_OPTIONS, SOURCE_BADGE } from './constants';\n\nfunction truncateMiddle(str: string, max: number): string {\n if (str.length <= max) return str;\n const half = Math.floor((max - 1) / 2);\n return `${str.slice(0, half)}…${str.slice(-half)}`;\n}\n\nexport function StreamMessagesPage() {\n const { namespace, available } = useNamespace('namespace');\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { namespace: '', source: 'worker', status: '', stream_name: '', msg_type: '', topic: '', workflow_name: '', jid: '', aid: '' },\n });\n\n const [selected, setSelected] = useState<StreamMessage | null>(null);\n\n const namespaceOptions = useMemo(\n () => available.map((id) => ({ value: id, label: id })),\n [available],\n );\n\n const { data, isLoading, refetch, isFetching } = useStreamMessages({\n namespace: filters.namespace || namespace,\n source: (filters.source as 'engine' | 'worker') || 'worker',\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n status: (filters.status as any) || undefined,\n stream_name: filters.stream_name || undefined,\n msg_type: filters.msg_type || undefined,\n topic: filters.topic || undefined,\n workflow_name: filters.workflow_name || undefined,\n jid: filters.jid || undefined,\n aid: filters.aid || undefined,\n });\n\n const messages = data?.messages ?? [];\n const total = data?.total ?? 0;\n\n const activeMessage = useMemo(() => {\n if (!selected) return null;\n return messages.find((m) => m.id === selected.id && m.source === selected.source) ?? selected;\n }, [messages, selected]);\n\n const panelOpen = !!activeMessage;\n\n const columns: Column<StreamMessage>[] = [\n {\n key: 'status',\n label: 'Status',\n render: (row) => (\n <div className=\"flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full dot-ring shrink-0 ${STATUS_DOT[row.status]}`} />\n <span className=\"text-xs\">{STATUS_LABEL[row.status]}</span>\n </div>\n ),\n className: 'w-28',\n },\n {\n key: 'source',\n label: 'Source',\n render: (row) => <span className={SOURCE_BADGE}>{row.source}</span>,\n className: 'w-20',\n },\n {\n key: 'stream_name',\n label: 'Stream',\n sortable: true,\n render: (row) => (\n <span className=\"font-mono text-xs text-text-secondary truncate block max-w-[240px]\" title={row.stream_name}>\n {row.stream_name}\n </span>\n ),\n },\n {\n key: 'msg_type',\n label: 'Type',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">{row.msg_type || '—'}</span>\n ),\n className: 'w-24',\n },\n {\n key: 'created_at',\n label: 'Created',\n sortable: true,\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-44',\n },\n {\n key: 'reserved_at',\n label: 'Reserved',\n render: (row) => row.reserved_at ? <TimestampCell date={row.reserved_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'expired_at',\n label: 'Processed',\n render: (row) => row.expired_at ? <TimestampCell date={row.expired_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'priority',\n label: 'Pri',\n sortable: true,\n render: (row) => <span className=\"text-xs text-text-secondary\">{row.priority}</span>,\n className: 'w-12 text-right',\n },\n {\n key: 'retry_attempt',\n label: 'Retries',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">\n {row.retry_attempt}/{row.max_retry_attempts}\n </span>\n ),\n className: 'w-16',\n },\n ];\n\n return (\n <div>\n <PageHeader title=\"Messages\" docsHash=\"#docs:dashboard.md:messages\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={buildApiPath('/controlplane/stream-messages', {\n namespace: filters.namespace || namespace,\n source: filters.source || 'worker',\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n status: filters.status || undefined,\n stream_name: filters.stream_name || undefined,\n msg_type: filters.msg_type || undefined,\n topic: filters.topic || undefined,\n workflow_name: filters.workflow_name || undefined,\n jid: filters.jid || undefined,\n aid: filters.aid || undefined,\n })}\n />\n }>\n <FilterSelect\n label=\"Namespace\"\n value={filters.namespace}\n onChange={(v) => setFilter('namespace', v)}\n options={namespaceOptions}\n required\n />\n <FilterSelect\n label=\"Source\"\n value={filters.source}\n onChange={(v) => setFilter('source', v)}\n options={SOURCE_OPTIONS}\n required\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={STATUS_OPTIONS}\n />\n <FilterInput\n label=\"Stream\"\n value={filters.stream_name}\n onChange={(v) => setFilter('stream_name', v)}\n placeholder=\"Filter by stream name…\"\n />\n <FilterInput\n label=\"Job ID\"\n value={filters.jid}\n onChange={(v) => setFilter('jid', v)}\n placeholder=\"Filter by jid…\"\n />\n {/* Active dimension filter pills — inline in the sticky bar */}\n {[\n { key: 'topic', label: 'Topic', value: filters.topic },\n { key: 'workflow_name', label: 'Workflow', value: filters.workflow_name },\n { key: 'aid', label: 'Activity', value: filters.aid },\n { key: 'msg_type', label: 'Type', value: filters.msg_type },\n ].filter((f) => f.value).map((f) => (\n <button\n key={f.key}\n onClick={() => setFilter(f.key as any, '')}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-mono rounded-full bg-accent/15 text-accent hover:bg-accent/25 transition-colors\"\n title={`Clear ${f.label} filter: ${f.value}`}\n >\n {f.label}: {truncateMiddle(f.value, 12)}\n <X className=\"w-2.5 h-2.5\" />\n </button>\n ))}\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={messages}\n keyFn={(row) => `${row.source}:${row.id}`}\n isLoading={isLoading}\n emptyMessage=\"No stream messages found\"\n onRowClick={(row) => setSelected(row)}\n activeRowKey={activeMessage ? `${activeMessage.source}:${activeMessage.id}` : null}\n sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n\n {/* Detail panel — portaled to body so fixed positioning works */}\n {panelOpen && createPortal(\n <div className=\"fixed right-0 bottom-0 w-[400px] z-40 border-l border-surface-border bg-surface overflow-y-auto shadow-lg\" style={{ top: '3.5rem' }}>\n <div className=\"sticky top-0 z-10 flex items-center justify-between px-4 py-3 bg-surface border-b border-surface-border/50\">\n <span className=\"text-xs font-medium text-text-primary\">Message Detail</span>\n <button\n onClick={() => setSelected(null)}\n className=\"p-1 rounded hover:bg-surface-hover text-text-tertiary hover:text-text-primary transition-colors\"\n title=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"px-4 py-4\">\n <StreamMessageDetail\n message={activeMessage}\n filters={{\n onFilterStatus: (v) => setFilter('status', v),\n onFilterStreamName: (v) => setFilter('stream_name', v),\n onFilterMsgType: (v) => setFilter('msg_type', v),\n onFilterTopic: (v) => setFilter('topic', v),\n onFilterWorkflow: (v) => setFilter('workflow_name', v),\n onFilterJid: (v) => setFilter('jid', v),\n onFilterAid: (v) => setFilter('aid', v),\n }}\n />\n </div>\n </div>,\n document.body,\n )}\n </div>\n );\n}\n"],"names":["truncateMiddle","str","max","half","StreamMessagesPage","namespace","available","useNamespace","filters","setFilter","pagination","sort","setSort","useFilterParams","selected","setSelected","useState","namespaceOptions","useMemo","id","data","isLoading","refetch","isFetching","useStreamMessages","messages","total","activeMessage","m","panelOpen","columns","row","jsxs","jsx","STATUS_DOT","STATUS_LABEL","SOURCE_BADGE","TimestampCell","PageHeader","FilterBar","ListToolbar","buildApiPath","FilterSelect","v","SOURCE_OPTIONS","STATUS_OPTIONS","FilterInput","f","X","DataTable","StickyPagination","createPortal","StreamMessageDetail"],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{a as h,j as e,b as lt}from"./vendor-query-B2UbickB.js";import{z as pe,v as ye,b as V,C as ot,J as ae,M as Se,j as ct,A as dt,g as xt,h as ut,B as mt,E as pt,u as ht}from"./index-B_aFcGv9.js";import{u as ft}from"./useCollapsedSections-BU5HULGs.js";import{u as gt,C as jt,a as bt}from"./CustomDurationPicker-CGiwKSVJ.js";import{a as yt}from"./roles-LZf98ePg.js";import{P as vt}from"./PageHeader-DJo7yMUR.js";import{a as Ve,C as je,i as wt}from"./escalation-CH_XK2XM.js";import{L as Nt}from"./ListToolbar-Ok2O0wmC.js";import{u as kt}from"./workflows-qIbkeQ_5.js";import{g as _t}from"./useEventHooks-82IiMmOc.js";import{U as be}from"./UserName-CifbOahk.js";import{S as Me}from"./StatusBadge-DZ9137bI.js";import{R as Ie}from"./RolePill-DHWixsQR.js";import{C as M}from"./CopyableId-blg-gZvT.js";import{U as Ae,a9 as Ct,a7 as Tt,aa as We}from"./vendor-icons-DOIDKgo6.js";import{C as le}from"./CollapsibleSection-lo8Qx4zb.js";import{L as Be,e as Et,c as Rt}from"./vendor-react-CXumBFUA.js";import"./Modal-CSrxpXeM.js";import"./constants-BHkpVaqx.js";import"./users-DHx2ium7.js";const Pe="lt_view_mode";function $t(t){const[a,r]=h.useState(()=>{try{const s=localStorage.getItem(Pe);if(s!==null)return s==="dev"}catch{}return t}),n=h.useCallback(()=>{r(s=>{const l=!s;try{localStorage.setItem(Pe,l?"dev":"user")}catch{}return l})},[]);return{isDevMode:a,toggleMode:n}}const he=4;function Oe({pct:t,place:a,label:r,title:n,emphasis:s}){const l=e.jsx("span",{className:"w-px h-1.5 bg-surface-border","aria-hidden":!0}),c=e.jsx("span",{className:`whitespace-nowrap leading-none ${s?"text-text-secondary":"text-text-tertiary"}`,children:r});return e.jsx("div",{title:n,className:`absolute ${a==="above"?"bottom-0":"top-0"} flex flex-col items-center gap-0.5 -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 St({esc:t,className:a=""}){const r=new Date(t.created_at).getTime(),n=t.claimed_at?new Date(t.claimed_at).getTime():null,s=t.status==="resolved",l=t.status==="cancelled",c=s||l,x=Ve(t),i=!!n&&(x||c),o=s&&t.resolved_at?new Date(t.resolved_at).getTime():l?new Date(t.updated_at).getTime():Date.now(),d=Math.max(o-r,1),p=i&&n?Math.max(n-r,0):d,j=i&&n?Math.max(o-n,0):0,g=Math.min(100,Math.max(0,p/d*100)),u=i?Math.max(0,100-g):0,f=s?"bg-status-success":l?"bg-status-error":"bg-status-active",m=s?"Worked":l?"Open before cancel":"In progress",y=pe(p),b=pe(d),$=s?`Resolved in ${b} total`:l?`Cancelled after ${b}`:`Open ${b} so far (current age)`,C=`Lifecycle: amber = time spent waiting to be claimed, the colored end = ${m.toLowerCase()} after the claim. Top label is time-to-claim, bottom is total time.`;return e.jsxs("div",{className:a,title:C,children:[e.jsx("div",{className:"relative h-3.5 text-[9px] font-mono",children:i&&e.jsx(Oe,{pct:g,place:"above",label:y,title:`Time to claim: ${y} (created → claimed)`})}),e.jsxs("div",{className:"flex w-full rounded-full overflow-hidden bg-surface-sunken cursor-help",style:{height:he},title:C,children:[e.jsx("div",{style:{width:`${g}%`,minWidth:he},className:"bg-status-pending",title:`Waiting ${y} — created → claimed`}),i&&e.jsx("div",{style:{width:`${u}%`,minWidth:he},className:f,title:`${m} ${pe(j)} — claimed → ${s?"resolved":l?"cancelled":"now"}`})]}),e.jsx("div",{className:"relative h-3.5 text-[9px] font-mono",children:e.jsx(Oe,{pct:100,place:"below",emphasis:!0,label:b,title:$})})]})}const Mt=new Set(["__proto__","constructor","prototype"]);function ze(t){const a=[];for(const r of t.split(".")){const n=r.match(/^([^[\]]*)((?:\[\d+\])*)$/);if(!n)throw new Error(`invalid x-lt-bind path segment: "${r}"`);const[,s,l]=n;if(s){if(Mt.has(s))throw new Error(`x-lt-bind path may not target "${s}"`);a.push({key:s})}for(const c of l.match(/\d+/g)??[])a.push({index:Number(c)})}if(a.length===0)throw new Error(`empty x-lt-bind path: "${t}"`);return a}function It(t,a,r){const n=ze(a);let s=t;for(let c=0;c<n.length-1;c++){const x=n[c],i=n[c+1],o="key"in x?x.key:x.index,d="index"in i;(s[o]==null||typeof s[o]!="object")&&(s[o]=d?[]:{}),s=s[o]}const l=n[n.length-1];s["key"in l?l.key:l.index]=r}function At(t,a){let r=t;for(const n of ze(a)){if(r==null||typeof r!="object")return;r=r["key"in n?n.key:n.index]}return r}function qe(t,a){const r=a==null?void 0:a["x-lt-bind"];return typeof r=="string"&&r.length>0?r:t}function Wt(t,a){const r=a==null?void 0:a.properties;if(!r)return{...t};const n={};for(const[s,l]of Object.entries(r))s in t&&It(n,qe(s,l),t[s]);return n}function Pt(t,a){const r=a==null?void 0:a.properties;if(!r)return t?{...t}:{};const n={};for(const[s,l]of Object.entries(r)){const c=At(t,qe(s,l));c!==void 0&&(n[s]=c)}return n}function Ot(t){const{mode:a,activeView:r,onActiveViewChange:n,onClaim:s,claimPending:l,workflowType:c,json:x,onResolve:i,resolvePending:o,resolveError:d,requestTriage:p,triageNotes:j,currentRole:g,escalationTargets:u,onEscalate:f,escalatePending:m,escalateError:y,onRelease:b,releasePending:$,onCancel:C,assignedTo:O,assignedUntil:I,onSubmitAttempt:T}=t,E=gt(),[v,N]=h.useState("30"),[k,R]=h.useState(0),[A,J]=h.useState(""),[B,D]=h.useState(""),L=v==="custom",z=h.useCallback(w=>R(w),[]);if(a==="terminal")return null;const de=()=>{const w=L?k:parseInt(v);!w||w<=0||s(w)},q=()=>{if(J(""),p){const U={_lt:{needsTriage:!0}};j.trim()&&(U.notes=j.trim()),i(U);return}let w;try{w=JSON.parse(x)}catch{J("Invalid JSON");return}const H=w._form_schema,X=H==null?void 0:H.required;if(X!=null&&X.length){const U=X.filter(P=>{const K=w[P];return K==null||typeof K=="string"&&K.trim()===""});if(U.length>0){T==null||T();const P=U.map(ee=>ee.replace(/[_-]/g," ")),K=P.length<=2?P.join(", "):`${P.slice(0,2).join(", ")}...`;J(`Required: ${K}`);return}}const{_form_schema:re,...ie}=w;i(Wt(ie,H))},W=w=>`text-xs transition-colors ${w?"text-accent font-medium":"text-text-tertiary hover:text-accent"}`;return e.jsxs("div",{className:"sticky bottom-0 h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-10","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:[E.map(w=>e.jsx("button",{onClick:()=>{N(w.value),R(0)},className:W(!L&&v===w.value),children:w.label},w.value)),e.jsx("button",{onClick:()=>N("custom"),className:W(L),children:"Other"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{onClick:C,className:"text-xs text-text-tertiary hover:text-status-error transition-colors",children:"Cancel escalation"}),e.jsx("div",{className:"flex-1"}),L&&e.jsx(jt,{onChange:z,compact:!0,autoFocus:!0}),e.jsx("button",{onClick:de,disabled:l||L&&k<=0,className:"btn-primary text-xs",children:l?"Claiming...":"Claim"})]})]}),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:O?e.jsx(be,{userId:O}):"unknown"})]}),I&&e.jsx(je,{until:I})]}),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:()=>n("resolve"),className:W(r==="resolve"),children:c?"Resolve":"Acknowledge"}),u.length>0&&e.jsx("button",{onClick:()=>n("escalate"),className:W(r==="escalate"),children:"Escalate"}),e.jsx("button",{onClick:()=>n("release"),className:`text-xs transition-colors ${r==="release"?"text-status-error font-medium":"text-text-tertiary hover:text-status-error"}`,children:"Release"}),e.jsx("button",{onClick:C,className:"text-xs transition-colors text-text-tertiary hover:text-status-error",children:"Cancel"})]}),r==="resolve"&&(c?e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex-1"}),A&&e.jsx("span",{className:"text-xs text-status-error",children:A}),d&&e.jsx("span",{className:"text-xs text-status-error",children:d.message}),e.jsx("button",{onClick:q,disabled:o,className:"btn-primary text-xs",children:o?"Submitting...":p?"Send to Triage":"Submit"})]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{className:"text-xs text-text-secondary",children:"Notification — acknowledge to resolve"}),e.jsx("div",{className:"flex-1"}),d&&e.jsx("span",{className:"text-xs text-status-error mr-3",children:d.message}),e.jsx("button",{onClick:()=>i({acknowledged:!0}),disabled:o,className:"btn-primary text-xs",children:o?"Acknowledging...":"Acknowledge"})]})),r==="escalate"&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"text-xs text-text-secondary",children:["From ",e.jsx("span",{className:"font-medium text-text-primary",children:g})," to"]}),e.jsxs("select",{value:B,onChange:w=>D(w.target.value),className:"select text-xs","data-testid":"escalate-select",children:[e.jsx("option",{value:"",children:"Select role..."}),u.map(w=>e.jsx("option",{value:w,children:w},w))]}),e.jsx("div",{className:"flex-1"}),y&&e.jsx("span",{className:"text-xs text-status-error",children:y.message}),e.jsx("button",{onClick:()=>f(B),disabled:!B||m,className:"btn-primary text-xs",children:m?"Escalating...":"Escalate"})]}),r==="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:()=>n("resolve"),className:"btn-secondary text-xs",children:"Back"}),e.jsx("button",{onClick:b,disabled:$,className:"btn-primary text-xs bg-status-error hover:bg-status-error/80",children:$?"Releasing...":"Yes, Release"})]})]})]})}const Dt={1:{pad:"px-3 py-2.5",label:"text-[9px] mb-1.5",value:"text-xs",bg:"bg-surface-sunken/60"},2:{pad:"px-3 py-2",label:"text-[8px] mb-1",value:"text-[11px]",bg:"bg-surface-sunken/30"},3:{pad:"px-2.5 py-1.5",label:"text-[8px] mb-0.5",value:"text-[10px]",bg:"bg-surface-sunken/15"}};function S({label:t,children:a,tier:r=1,className:n=""}){const s=Dt[r];return e.jsxs("div",{className:`flex-1 min-w-0 rounded-lg ${s.bg} ${s.pad} ${n}`,children:[e.jsx("p",{className:`font-semibold uppercase tracking-widest text-text-tertiary leading-none ${s.label}`,children:t}),e.jsx("div",{className:`text-text-secondary leading-tight min-w-0 ${s.value}`,children:a})]})}const De=56;function Lt({value:t}){const[a,r]=h.useState(!1),n=typeof t=="object"?JSON.stringify(t):String(t??"");return n.length<=De?e.jsx("span",{className:"font-mono break-all",title:n,children:n}):e.jsx("button",{onClick:()=>r(s=>!s),title:n,className:"font-mono break-all text-left hover:text-accent transition-colors",children:a?n:`${n.slice(0,De)}…`})}function Ft({esc:t,claimedByMe:a,claimed:r,isTerminal:n,traceUrl:s,isDevMode:l,showDetails:c,onToggleDetails:x}){const{isBuilder:i}=ye(),o=wt(t);return l?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[o&&e.jsx(Tt,{className:"w-5 h-5 text-text-tertiary shrink-0"}),e.jsxs("p",{className:"text-[1.5rem] leading-snug font-light text-text-secondary",children:[t.type,t.subtype?` / ${t.subtype}`:""]})]}),t.description&&e.jsx("p",{className:"text-sm leading-relaxed text-text-tertiary mb-4",children:t.description}),e.jsxs("div",{className:"flex flex-wrap items-end gap-x-6 gap-y-3 mt-4 mb-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Status"}),e.jsx("span",{className:"mb-1 inline-block",children:e.jsx(Me,{status:t.status})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Role"}),e.jsx(Ie,{role:t.role,size:"md"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Created"}),e.jsx("span",{className:"inline-flex items-center mb-1 text-xs text-text-secondary",children:e.jsx(V,{date:t.created_at})})]}),(r||n)&&t.assigned_to&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Claimed by"}),e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-text-primary",children:[e.jsx(Ae,{className:"w-3 h-3 shrink-0 text-accent/75"}),e.jsx(be,{userId:t.assigned_to})]})]}),r&&!n&&t.assigned_until&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Time left"}),e.jsx("span",{className:"inline-flex items-center h-5",children:e.jsx(je,{until:t.assigned_until})})]}),t.resolved_at&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Resolved"}),e.jsx("span",{className:"inline-flex items-center h-5 text-xs text-text-secondary",children:e.jsx(V,{date:t.resolved_at})})]})]})]}):e.jsxs("div",{className:"-mt-6 mb-2",children:[t.description&&e.jsx("p",{className:"text-2xl font-light text-text-primary leading-relaxed mb-5",children:t.description}),e.jsxs("div",{className:"flex gap-1 items-stretch",children:[e.jsx(S,{label:"Status",children:e.jsx(Me,{status:t.status})}),e.jsx(S,{label:"Assigned to Role",children:e.jsx(Ie,{role:t.role,size:"md"})}),(r||n)&&t.assigned_to&&e.jsx(S,{label:"Claimed By",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-medium text-text-primary",children:[e.jsx(Ae,{className:"w-3 h-3 shrink-0 text-accent/75"}),e.jsx(be,{userId:t.assigned_to})]})}),e.jsx(S,{label:"Created",children:e.jsx(V,{date:t.created_at})}),(r||n)&&t.claimed_at&&e.jsx(S,{label:"Claimed",children:e.jsx(V,{date:t.claimed_at})}),r&&!n&&t.assigned_until&&e.jsx(S,{label:"Time Remaining",children:e.jsx(je,{until:t.assigned_until})}),t.resolved_at&&e.jsx(S,{label:"Completed",children:e.jsx("span",{className:"text-status-success",children:e.jsx(V,{date:t.resolved_at})})}),e.jsxs(S,{label:"Priority",children:["P",t.priority]}),i&&e.jsx("button",{onClick:x,title:c?"Hide details":"Show details",className:"shrink-0 rounded-lg bg-surface-sunken/60 px-3 flex items-center text-text-tertiary/60 hover:text-accent transition-colors",children:e.jsx(Ct,{className:`w-3.5 h-3.5 ${c?"text-accent":""}`})})]}),i&&e.jsxs(ot,{open:c,children:[e.jsxs("div",{className:"flex gap-1 mt-1",children:[e.jsx(S,{tier:2,label:"Escalation ID",children:e.jsx(M,{bare:!0,value:t.id})}),t.task_id&&e.jsx(S,{tier:2,label:"Task ID",children:e.jsx(M,{bare:!0,value:t.task_id,href:`/workflows/tasks/detail/${t.task_id}`})}),t.workflow_type&&e.jsx(S,{tier:2,label:"Workflow Name",children:e.jsx(M,{bare:!0,value:t.workflow_type,href:`/workflows/executions?entity=${encodeURIComponent(t.workflow_type)}`})}),t.workflow_id&&e.jsx(S,{tier:2,label:"Workflow ID",children:e.jsx(M,{bare:!0,value:t.workflow_id,href:`/workflows/executions/${t.workflow_id}`})}),t.task_queue&&e.jsx(S,{tier:2,label:"Task Queue",children:e.jsx(M,{bare:!0,value:t.task_queue,href:`/admin/controlplane?queue=${encodeURIComponent(t.task_queue)}`})}),t.origin_id&&t.origin_id!==t.workflow_id&&e.jsx(S,{tier:2,label:"Origin",children:e.jsx(M,{bare:!0,value:t.origin_id,href:`/processes/detail/${t.origin_id}`})}),t.trace_id&&e.jsx(S,{tier:2,label:"Trace",children:e.jsx(M,{bare:!0,value:t.trace_id,href:s?s.replace("{traceId}",t.trace_id):void 0,external:!0})})]}),t.metadata&&Object.keys(t.metadata).filter(d=>!d.startsWith("_")).length>0&&e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-1 mt-1",children:Object.entries(t.metadata).filter(([d])=>!d.startsWith("_")).map(([d,p])=>e.jsx(S,{tier:3,label:d,children:e.jsx(Lt,{value:p})},d))})]})]})}function Q(t){return t.replace(/`([^`]+)`/g,'<code class="px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono">$1</code>').replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-accent-primary hover:underline" target="_blank" rel="noopener noreferrer">$1</a>')}function fe({content:t,compact:a}){const r=[],n=/^```(\w*)\n([\s\S]*?)^```$/gm;let s=0,l;for(;(l=n.exec(t))!==null;)l.index>s&&r.push({type:"text",text:t.slice(s,l.index)}),r.push({type:"code",lang:l[1],code:l[2].replace(/\n$/,"")}),s=l.index+l[0].length;s<t.length&&r.push({type:"text",text:t.slice(s)});const c=a?{text:"text-xs",heading:"text-xs",list:"text-xs",code:"text-[11px]"}:{text:"text-sm",heading:"text-sm",list:"text-sm",code:"text-xs"},x=[];for(const i of r){if(i.type==="code"){const o=i.code.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");x.push(`<pre class="my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto"><code class="${c.code} font-mono text-text-secondary leading-relaxed">${o}</code></pre>`);continue}x.push(...Jt(i.text,c))}return e.jsx("div",{className:"prose-sm",dangerouslySetInnerHTML:{__html:x.join(`
|
|
2
|
-
`)}})}function Jt(t,a){const r=t.split(`
|
|
3
|
-
`),n=[];let s=!1,l=!1,c=[];for(const x of r){const i=x.trim();if(i.startsWith("|")&&i.endsWith("|")){const o=i.slice(1,-1).split("|").map(d=>d.trim());if(o.every(d=>/^[-:]+$/.test(d)))continue;l||(l=!0,c=[]),c.push(o);continue}if(l){l=!1;const[o,...d]=c;n.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const p of o)n.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${Q(p)}</th>`);n.push("</tr></thead><tbody>");for(const p of d){n.push("<tr>");for(const j of p)n.push(`<td class="py-1 px-2 border-b border-border/50">${Q(j)}</td>`);n.push("</tr>")}n.push("</tbody></table></div>"),c=[]}if(!i){s&&(n.push("</ul>"),s=!1);continue}if(i.startsWith("### ")){s&&(n.push("</ul>"),s=!1),n.push(`<h4 class="${a.heading} font-semibold text-text-primary mt-3 mb-1">${Q(i.slice(4))}</h4>`);continue}if(i.startsWith("## ")){s&&(n.push("</ul>"),s=!1),n.push(`<h3 class="${a.heading} font-semibold text-text-primary mt-3 mb-1">${Q(i.slice(3))}</h3>`);continue}if(/^[-*_]{3,}$/.test(i)){s&&(n.push("</ul>"),s=!1),n.push('<hr class="border-border my-3" />');continue}if(/^[-*] /.test(i)){s||(n.push('<ul class="space-y-1 my-1">'),s=!0),n.push(`<li class="${a.list} text-text-secondary flex gap-2"><span class="text-text-tertiary shrink-0">-</span><span>${Q(i.slice(2))}</span></li>`);continue}s&&(n.push("</ul>"),s=!1),n.push(`<p class="${a.text} text-text-secondary my-1">${Q(i)}</p>`)}if(l&&c.length){const[x,...i]=c;n.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const o of x)n.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${Q(o)}</th>`);n.push("</tr></thead><tbody>");for(const o of i){n.push("<tr>");for(const d of o)n.push(`<td class="py-1 px-2 border-b border-border/50">${Q(d)}</td>`);n.push("</tr>")}n.push("</tbody></table></div>")}return s&&n.push("</ul>"),n}function ge({children:t}){return e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:t})}function Ut({payload:t,isTerminal:a,resolverPayload:r,onRetryTriage:n,isRetrying:s}){const l=t.title,c=t.summary,x=t.diagnosis,i=t.tool_calls_made,o=t.result,d=r==null?void 0:r._lt,p=(d==null?void 0:d.triaged)===!0,j=d==null?void 0:d.triageWorkflowId,g=a&&p,[u,f]=h.useState(!1);return g?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 i=="number"&&e.jsxs("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success",children:[i," 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(ge,{children:"Triage diagnosis"}),e.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsx(fe,{content:x})})]}),e.jsx("div",{className:"flex items-center gap-3",children:j&&e.jsx(Be,{to:`/workflows/executions/${j}`,className:"text-[10px] 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 i=="number"&&e.jsxs("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning",children:[i," 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(ge,{children:"What happened"}),e.jsx("div",{className:"text-xs text-text-secondary leading-relaxed",children:e.jsx(fe,{content:c})})]}),x&&e.jsxs("div",{children:[e.jsx(ge,{children:"What went wrong"}),e.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsx(fe,{content:x})})]}),o!=null&&e.jsxs("div",{children:[e.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1 text-[10px] 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 ${u?"rotate-90":""}`,viewBox:"0 0 12 12",fill:"currentColor",children:e.jsx("path",{d:"M4.5 2l4 4-4 4"})}),"Partial results"]}),u&&e.jsx("div",{className:"mt-2",children:e.jsx(ae,{data:o,defaultMode:"tree"})})]}),n&&!a&&e.jsx("div",{className:"pt-2",children:e.jsxs("button",{onClick:n,disabled:s,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"})}),s?"Sending to triage...":"Retry with AI Triage"]})})]})]})}function Vt({triage:t,payload:a}){const r=t.confidence??0,n=r>=.8?"text-status-success":r>=.5?"text-status-pending":"text-status-error",s=Bt(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 ${n}`,children:[Math.round(r*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-[11px]
|
|
4
|
-
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-[11px] text-text-tertiary italic",children:t.recommendation}),s.length>0&&e.jsx("div",{className:"space-y-4 pt-2",children:s.map(l=>e.jsx(zt,{diff:l},l.key))})]})}function Bt(t,a){if(!t)return[];const r=[];for(const n of Object.keys(t)){if(n.startsWith("_"))continue;const s=t[n],l=a[n];l!==void 0&&JSON.stringify(s)!==JSON.stringify(l)&&r.push({key:n,label:n.replace(/[_-]/g," "),original:s,corrected:l})}return r}function zt({diff:t}){const a=Le(t.original),r=Le(t.corrected);return a!==null&&r!==null?e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-[10px] 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-[10px] 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:r})]})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-[10px] 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-[10px] 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 Le(t){return t==null?"null":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):null}function Fe({src:t,escalation:a,schema:r,onResolve:n,onEscalate:s,submitAttempted:l}){const c=h.useRef(null),x=h.useRef("");h.useEffect(()=>{try{const o=new URL(t);x.current=o.origin}catch{x.current=""}},[t]);const i=h.useCallback(()=>{const o=c.current;if(!(o!=null&&o.contentWindow)||!x.current)return;const p={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},schema:r};o.contentWindow.postMessage(p,x.current)},[a,r]);return h.useEffect(()=>{const o=d=>{if(d.origin!==x.current)return;const p=d.data;if(!(!p||typeof p!="object"||typeof p.type!="string"))switch(p.type){case"lt:ready":i();break;case"lt:submit":p.payload&&typeof p.payload=="object"&&n(p.payload);break;case"lt:escalate":typeof p.target=="string"&&p.target&&s(p.target);break;case"lt:resize":{const j=c.current;j&&typeof p.height=="number"&&p.height>0&&(j.style.height=`${Math.min(p.height,2e3)}px`);break}}};return window.addEventListener("message",o),()=>window.removeEventListener("message",o)},[i,n,s]),h.useEffect(()=>{if(!l)return;const o=c.current;o!=null&&o.contentWindow&&x.current&&o.contentWindow.postMessage({type:"lt:validate"},x.current)},[l]),e.jsx("div",{className:"rounded-md border border-surface-border overflow-hidden bg-white",children:e.jsx("iframe",{ref:c,src:t,sandbox:"allow-scripts allow-same-origin allow-forms",className:"w-full border-0",style:{minHeight:"400px"},title:"HITL Viewport",onLoad:i})})}function qt({fieldKey:t,value:a,onChange:r,schema:n}){const s=h.useRef(null),l=(n==null?void 0:n.accept)??void 0,c=t.replace(/[_-]/g," "),x=n==null?void 0:n.description,i=h.useCallback(d=>{var g;const p=(g=d.target.files)==null?void 0:g[0];if(!p)return;const j=new FileReader;j.onload=()=>{typeof j.result=="string"&&r(j.result)},j.readAsDataURL(p)},[r]),o=a.startsWith("data:");return e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:c}),x&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:x}),e.jsxs("div",{className:"mt-1",children:[e.jsx("input",{ref:s,type:"file",accept:l,onChange:i,className:"hidden"}),e.jsx("button",{type:"button",onClick:()=>{var d;return(d=s.current)==null?void 0:d.click()},className:"btn-secondary text-xs px-3 py-1.5",children:o?"Replace file":"Choose file"}),o&&e.jsx("span",{className:"ml-2 text-xs text-status-success",children:"File attached"})]})]})}function Ht({fieldKey:t,value:a,onChange:r,schema:n}){const s=t.replace(/[_-]/g," "),l=n==null?void 0:n.description,c=(n==null?void 0:n["x-lt-language"])??"",x=h.useCallback(i=>{if(i.key==="Tab"){i.preventDefault();const o=i.currentTarget,d=o.selectionStart,p=o.selectionEnd,j=a.substring(0,d)+" "+a.substring(p);r(j),requestAnimationFrame(()=>{o.selectionStart=o.selectionEnd=d+2})}},[a,r]);return e.jsxs("div",{children:[e.jsxs("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:[s,c&&e.jsx("span",{className:"ml-2 text-text-tertiary/60 normal-case font-normal",children:c})]}),l&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:l}),e.jsx("textarea",{value:a,onChange:i=>r(i.target.value),onKeyDown:x,className:"input w-full mt-1 font-mono text-xs leading-relaxed",rows:10,spellCheck:!1})]})}function Kt({fieldKey:t,value:a,onChange:r,schema:n}){const s=h.useRef(null),[l,c]=h.useState(!1),x=t.replace(/[_-]/g," "),i=n==null?void 0:n.description;h.useEffect(()=>{const u=s.current;if(!u)return;const f=u.getContext("2d");if(f&&(f.lineWidth=2,f.lineCap="round",f.strokeStyle="#1E1535",a&&a.startsWith("data:"))){const m=new Image;m.onload=()=>f.drawImage(m,0,0),m.src=a}},[]);const o=h.useCallback(u=>{const m=s.current.getBoundingClientRect();return"touches"in u?{x:u.touches[0].clientX-m.left,y:u.touches[0].clientY-m.top}:{x:u.clientX-m.left,y:u.clientY-m.top}},[]),d=h.useCallback(u=>{var y;c(!0);const f=(y=s.current)==null?void 0:y.getContext("2d");if(!f)return;const m=o(u);f.beginPath(),f.moveTo(m.x,m.y)},[o]),p=h.useCallback(u=>{var y;if(!l)return;const f=(y=s.current)==null?void 0:y.getContext("2d");if(!f)return;const m=o(u);f.lineTo(m.x,m.y),f.stroke()},[l,o]),j=h.useCallback(()=>{c(!1);const u=s.current;u&&r(u.toDataURL("image/png"))},[r]),g=h.useCallback(()=>{const u=s.current;if(!u)return;const f=u.getContext("2d");f&&(f.clearRect(0,0,u.width,u.height),r(""))},[r]);return e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:x}),i&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:i}),e.jsx("div",{className:"mt-1 border border-surface-border rounded-md overflow-hidden bg-white",children:e.jsx("canvas",{ref:s,width:400,height:150,className:"w-full cursor-crosshair touch-none",onMouseDown:d,onMouseMove:p,onMouseUp:j,onMouseLeave:j,onTouchStart:d,onTouchMove:p,onTouchEnd:j})}),e.jsx("button",{type:"button",onClick:g,className:"mt-1 text-[10px] text-text-tertiary hover:text-accent transition-colors",children:"Clear"})]})}function Yt({fieldKey:t,value:a,onChange:r,schema:n}){const s=t.replace(/[_-]/g," "),l=n==null?void 0:n.description;return e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:s}),l&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:l}),e.jsx("textarea",{value:a,onChange:c=>r(c.target.value),className:"input w-full mt-1 text-sm leading-relaxed",rows:8,placeholder:"Supports plain text. Markdown formatting is preserved."})]})}function Qt({fieldKey:t,value:a,onChange:r,schema:n}){const[s,l]=h.useState("write"),c=t.replace(/[_-]/g," "),x=n==null?void 0:n.description;return(n==null?void 0:n.readOnly)===!0?e.jsx(Se,{content:a,className:"my-1"}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:c}),e.jsx("div",{className:"flex items-center gap-0.5",children:["write","preview"].map(o=>e.jsx("button",{type:"button",onClick:()=>l(o),className:`px-2 py-0.5 text-[10px] rounded transition-colors ${s===o?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:o==="write"?"Write":"Preview"},o))})]}),x&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:x}),s==="write"?e.jsx("textarea",{value:a,onChange:o=>r(o.target.value),className:"input w-full mt-1 text-sm font-mono leading-relaxed",rows:10,placeholder:"Write markdown — headings, lists, tables, code blocks, and links all render."}):e.jsx("div",{className:"mt-1 px-3 py-2 border border-surface-border rounded min-h-[120px]",children:a.trim()?e.jsx(Se,{content:a}):e.jsx("p",{className:"text-xs text-text-quaternary italic",children:"Nothing to preview."})})]})}const Je={"file-upload":qt,"code-editor":Ht,signature:Kt,"rich-text":Yt,markdown:Qt};function He({value:t,onChange:a,disabled:r,submitAttempted:n}){const[s,l]=h.useState({}),[c,x]=h.useState({}),[i,o]=h.useState(null),[d,p]=h.useState(!1),[j,g]=h.useState(new Set);h.useEffect(()=>{try{const v=JSON.parse(t);if(typeof v=="object"&&v!==null&&!Array.isArray(v)){const N={},k={};for(const[R,A]of Object.entries(v))R.startsWith("_")?k[R]=A:N[R]=A;l(N),x(k),o(k._form_schema&&typeof k._form_schema=="object"?k._form_schema:null),p(!1)}}catch{p(!0)}},[t]);const u=h.useCallback(v=>{l(v),a(JSON.stringify({...v,...c},null,2))},[c,a]),f=h.useCallback((v,N)=>{u({...s,[v]:N})},[s,u]),m=h.useCallback(v=>{g(N=>{if(N.has(v))return N;const k=new Set(N);return k.add(v),k})},[]);if(d)return e.jsx("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."});const y=Object.entries(s);if(y.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."});const b=i==null?void 0:i["x-lt-order"],$=b?[...y].sort((v,N)=>{const k=b.indexOf(v[0]),R=b.indexOf(N[0]);return(k===-1?1/0:k)-(R===-1?1/0:R)}):y,C=new Set((i==null?void 0:i.required)??[]),O=i==null?void 0:i["x-lt-layout"],I=i==null?void 0:i.title,T=i==null?void 0:i.description,E=$.map(([v,N])=>{var L;const k=(L=i==null?void 0:i.properties)==null?void 0:L[v],R=(k==null?void 0:k.readOnly)===!0,A=(k==null?void 0:k["x-lt-span"])??1,J=C.has(v),B=j.has(v)||!!n;let D;if(J&&B&&(N==null||typeof N=="string"&&N.trim()==="")&&(D="Required"),B&&typeof N=="string"&&N.trim()!==""&&k){const z=k.format;z==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(N)&&(D="Enter a valid email address"),z==="uri"&&!/^https?:\/\/.+/.test(N)&&(D="Enter a valid URL")}return e.jsx("div",{className:O==="two-column"&&A>=2?"col-span-2":"",children:e.jsx(Ke,{fieldKey:v,value:N,onChange:z=>f(v,z),onBlur:()=>m(v),schema:i,isRequired:J,isReadOnly:R,error:D})},v)});return e.jsxs("div",{className:`pb-8 ${r?"opacity-60 pointer-events-none":""}`,children:[I&&e.jsx("h3",{className:"text-lg font-light text-text-primary mb-1",children:I}),T&&e.jsx("p",{className:"text-sm text-text-secondary leading-relaxed mb-6",children:T}),O==="two-column"?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-14 gap-y-6",children:E}):e.jsx("div",{className:"space-y-6",children:E})]})}function Ke({fieldKey:t,value:a,onChange:r,onBlur:n,schema:s,isRequired:l,isReadOnly:c,error:x}){var j;const i=t.replace(/[_-]/g," "),o=(j=s==null?void 0:s.properties)==null?void 0:j[t],d=o==null?void 0:o["x-lt-widget"];if(c&&!(d==="markdown"&&typeof a=="string")){const g=a===null?"null":typeof a=="object"?JSON.stringify(a,null,2):String(a);return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),e.jsx("p",{className:"text-sm text-text-secondary mt-0.5 whitespace-pre-wrap",children:g})]})}if(d&&d in Je&&typeof a=="string"){const g=Je[d];return e.jsx(g,{fieldKey:t,value:a,onChange:u=>r(u),schema:o})}if(typeof a=="boolean")return e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:a,onChange:g=>{r(g.target.checked),n==null||n()},className:"w-3.5 h-3.5 rounded accent-accent"}),e.jsxs("span",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-secondary",children:[i,l&&e.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})]}),e.jsx(Z,{error:x})]});if(typeof a=="number")return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),e.jsx("input",{type:"number",value:a,onChange:g=>r(parseFloat(g.target.value)||0),onBlur:n,step:"any",className:te(!!x)}),e.jsx(Z,{error:x})]});if(typeof a=="string"){const g=(o==null?void 0:o.format)==="password",u=o==null?void 0:o.enum,f=o==null?void 0:o.description;if(u!=null&&u.length)return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),f&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:f}),e.jsx("select",{value:a,onChange:b=>r(b.target.value),onBlur:n,className:te(!!x),children:u.map(b=>e.jsx("option",{value:b,children:b},b))}),e.jsx(Z,{error:x})]});if(g)return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),f&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:f}),e.jsx("input",{type:"password",value:a,onChange:b=>r(b.target.value),onBlur:n,className:te(!!x),autoComplete:"off"}),e.jsx(Z,{error:x})]});const m=o==null?void 0:o.format,y={date:"date","date-time":"datetime-local",email:"email",uri:"url"};return m&&m in y?e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),f&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:f}),e.jsx("input",{type:y[m],value:a,onChange:b=>r(b.target.value),onBlur:n,className:te(!!x)}),e.jsx(Z,{error:x})]}):m==="textarea"||a.length>80?e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),f&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:f}),e.jsx("textarea",{value:a,onChange:b=>r(b.target.value),onBlur:n,className:`${te(!!x)} leading-relaxed`,rows:Math.min(6,Math.max(3,Math.ceil(a.length/60)))}),e.jsx(Z,{error:x})]}):e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),f&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:f}),e.jsx("input",{type:"text",value:a,onChange:b=>r(b.target.value),onBlur:n,className:te(!!x)}),e.jsx(Z,{error:x})]})}if(a===null)return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),e.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"})]});if(Array.isArray(a))return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1",children:a.map((g,u)=>e.jsx("span",{className:"px-2 py-0.5 text-[11px] font-mono bg-surface-sunken rounded text-text-secondary",children:String(g)},u))})]});if(typeof a=="object"){const g=Object.entries(a);return e.jsxs("div",{children:[e.jsx(F,{isRequired:l,children:i}),e.jsx("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:g.map(([u,f])=>e.jsx(Ke,{fieldKey:u,value:f,onChange:m=>r({...a,[u]:m})},u))})]})}return null}function F({children:t,isRequired:a}){return e.jsxs("label",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-secondary",children:[t,a&&e.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})}function Z({error:t}){return t?e.jsx("p",{className:"text-[10px] text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:t}):null}function te(t){return t?"input text-sm w-full mt-1 border-status-error/50 focus:border-status-error animate-[field-shake_0.4s_ease-in-out]":"input text-sm w-full mt-1"}function Ue({json:t,onJsonChange:a,requestTriage:r,onRequestTriageChange:n,triageNotes:s,onTriageNotesChange:l,isDevMode:c=!0,disabled:x=!1,submitAttempted:i=!1,showTriage:o=!1}){const[d,p]=h.useState("form"),{visibleJson:j,hiddenFields:g}=h.useMemo(()=>{try{const m=JSON.parse(t);if(typeof m=="object"&&m!==null&&!Array.isArray(m)){const y={},b={};for(const[$,C]of Object.entries(m))$.startsWith("_")?y[$]=C:b[$]=C;return{visibleJson:JSON.stringify(b,null,2),hiddenFields:y}}}catch{}return{visibleJson:t,hiddenFields:{}}},[t]),u=h.useCallback(m=>{try{const y=JSON.parse(m);a(JSON.stringify({...y,...g},null,2))}catch{a(m)}},[g,a]),f=Object.keys(g).length>0;return e.jsxs(e.Fragment,{children:[(o||c)&&e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[o?r?e.jsxs("button",{onClick:()=>n(!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:()=>n(!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-[13px] 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.jsx("span",{}),c&&!r&&e.jsx("button",{onClick:()=>p(d==="form"?"json":"form"),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:d==="form"?"Raw JSON":"Form"})]}),e.jsxs("div",{className:"relative min-h-[200px]",children:[e.jsx("div",{className:r?"pointer-events-none select-none":"",children:d==="form"?e.jsx(He,{value:t,onChange:a,disabled:x,submitAttempted:i}):e.jsxs("div",{children:[f&&e.jsx("p",{className:"text-[10px] text-text-quaternary mb-2 italic",children:"Form schema hidden. Edit the resolver values below — they will be merged with the schema on submit."}),e.jsx("textarea",{value:j,onChange:m=>u(m.target.value),className:"input-json w-full",rows:Math.max(8,j.split(`
|
|
5
|
-
`).length+2),spellCheck:!1,"data-testid":"resolve-json"})]})}),r&&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:s,onChange:m=>l(m.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 G({children:t}){return e.jsx("span",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:t})}function oe({children:t}){return e.jsx("p",{className:"text-[12px] text-text-secondary mt-0.5 font-mono",children:t})}function Gt({esc:t}){const{isBuilder:a}=ye();return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-accent/60 mb-3",children:"Classification"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-x-8 gap-y-4",children:[e.jsxs("div",{children:[e.jsx(G,{children:"Type"}),e.jsx(oe,{children:t.type})]}),t.subtype&&e.jsxs("div",{children:[e.jsx(G,{children:"Subtype"}),e.jsx(oe,{children:t.subtype})]}),e.jsxs("div",{children:[e.jsx(G,{children:"Priority"}),e.jsxs(oe,{children:["P",t.priority]})]}),e.jsxs("div",{children:[e.jsx(G,{children:"Status"}),e.jsx(oe,{children:t.status})]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-accent/60 mb-3",children:"References"}),e.jsxs("div",{className:"flex flex-wrap gap-x-8 gap-y-4",children:[e.jsx(M,{label:"Escalation ID",value:t.id}),t.task_id&&e.jsx(M,{label:"Task ID",value:t.task_id,href:a?`/workflows/tasks/detail/${t.task_id}`:void 0}),t.workflow_type&&e.jsx(M,{label:"Workflow Name",value:t.workflow_type,href:a?`/workflows/executions?entity=${encodeURIComponent(t.workflow_type)}`:void 0}),t.workflow_id&&e.jsx(M,{label:"Workflow ID",value:t.workflow_id,href:a?`/workflows/executions/${t.workflow_id}`:void 0}),t.task_queue&&e.jsx(M,{label:"Task Queue",value:t.task_queue,href:a?`/admin/controlplane?queue=${encodeURIComponent(t.task_queue)}`:void 0}),t.origin_id&&t.origin_id!==t.workflow_id&&e.jsx(M,{label:"Origin ID",value:t.origin_id}),t.parent_id&&e.jsx(M,{label:"Parent ID",value:t.parent_id}),t.trace_id&&e.jsx(M,{label:"Trace ID",value:t.trace_id}),t.span_id&&e.jsx(M,{label:"Span ID",value:t.span_id})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-accent/60 mb-3",children:"Timeline"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-x-8 gap-y-4",children:[e.jsxs("div",{children:[e.jsx(G,{children:"Created"}),e.jsx("p",{className:"text-[12px] text-text-secondary mt-0.5",children:e.jsx(V,{date:t.created_at})})]}),t.claimed_at&&e.jsxs("div",{children:[e.jsx(G,{children:"Claimed"}),e.jsx("p",{className:"text-[12px] text-text-secondary mt-0.5",children:e.jsx(V,{date:t.claimed_at})})]}),t.resolved_at&&e.jsxs("div",{children:[e.jsx(G,{children:"Resolved"}),e.jsx("p",{className:"text-[12px] text-text-secondary mt-0.5",children:e.jsx(V,{date:t.resolved_at})})]}),e.jsxs("div",{children:[e.jsx(G,{children:"Updated"}),e.jsx("p",{className:"text-[12px] text-text-secondary mt-0.5",children:e.jsx(V,{date:t.updated_at})})]})]})]}),t.metadata&&Object.keys(t.metadata).length>0&&e.jsx("div",{children:e.jsx(ae,{data:t.metadata,label:"Metadata"})})]})}function Xt({isRoundsExhausted:t,payloadObj:a,isTerminal:r,resolverPayload:n,onRetryTriage:s,isRetrying:l}){return e.jsxs(e.Fragment,{children:[t&&a&&e.jsx("div",{className:"mt-8",children:e.jsx(Ut,{payload:a,isTerminal:r,resolverPayload:n,onRetryTriage:s,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(We,{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(Be,{to:"/credentials",className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsx(We,{size:12}),"Go to Credentials"]})]})]})]})}function Zt({isCollapsed:t,toggleSection:a,esc:r,escalationPayload:n,resolverPayload:s,triageData:l,payloadObj:c,isTerminal:x,claimedByMe:i,activeView:o,metadataFormSchema:d,json:p,onJsonChange:j,requestTriage:g,onRequestTriageChange:u,triageNotes:f,onTriageNotesChange:m,isDevMode:y,onResolve:b,onEscalate:$,submitAttempted:C,isCertified:O,hasAI:I}){return e.jsxs("div",{className:"mt-8 space-y-6",children:[y&&e.jsx(le,{title:"Escalation Record",sectionKey:"record",isCollapsed:t("record"),onToggle:a,contentClassName:"mt-4 ml-9",children:e.jsx(Gt,{esc:r})}),y&&e.jsx(le,{title:"Input / Output",sectionKey:"context",isCollapsed:t("context"),onToggle:a,contentClassName:"mt-4 ml-9",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[!!r.envelope&&e.jsx("div",{children:e.jsx(ae,{data:r.envelope,label:"Input Envelope"})}),n!=null&&e.jsx("div",{children:e.jsx(ae,{data:n,label:"Escalation Context"})})]}),s!=null&&e.jsx("div",{className:"max-w-xl",children:e.jsx(ae,{data:s,label:"Resolver Payload"})})]})}),y&&l&&c&&e.jsx(le,{title:"AI Triage",sectionKey:"triage",isCollapsed:t("triage"),onToggle:a,contentClassName:"mt-4 ml-9",children:e.jsx(Vt,{triage:l,payload:c})}),!y&&x&&s!=null&&(()=>{const T=typeof s=="object"&&s!==null?s:{},E=d,v=E?{...T,_form_schema:E}:T;return e.jsx("div",{className:"pt-6",children:e.jsx(He,{value:JSON.stringify(v,null,2),onChange:()=>{},disabled:!0})})})(),!x&&(i||!y)&&o==="resolve"&&!!(r.workflow_type||d)&&(()=>{const T=d,E=T==null?void 0:T["x-lt-viewport"],v=(E==null?void 0:E.type)==="iframe"&&!!E.src&&b&&$;return y?e.jsx(le,{title:"Submit Your Resolution",sectionKey:"resolver",isCollapsed:t("resolver"),onToggle:a,contentClassName:"mt-4 ml-9",children:v?e.jsx(Fe,{src:E.src,escalation:r,schema:T,onResolve:b,onEscalate:$}):e.jsx(Ue,{json:p,onJsonChange:j,requestTriage:g,onRequestTriageChange:u,triageNotes:f,onTriageNotesChange:m,isDevMode:y,submitAttempted:C,showTriage:!!O&&!!I})}):e.jsx("div",{className:"pt-6",children:v?e.jsx(Fe,{src:E.src,escalation:r,schema:T,onResolve:b,onEscalate:$}):e.jsx(Ue,{json:p,onJsonChange:j,requestTriage:g,onRequestTriageChange:u,triageNotes:f,onTriageNotesChange:m,isDevMode:y,disabled:!i,submitAttempted:C,showTriage:!!O&&!!I})})})()]})}function ce(t){if(!t)return null;try{return JSON.parse(t)}catch{return t}}function es(t){if(!t)return!1;try{const a=JSON.parse(t);return!!(a&&typeof a=="object"&&a._triage)}catch{return!1}}function vs(){var _e,Ce,Te,Ee;const{id:t}=Et(),{user:a}=ct(),r=Rt(),n=lt(),{data:s,isLoading:l,refetch:c,isFetching:x}=dt(t);_t(t);const i=xt(),o=ut(),d=mt(),p=pt(),[j,g]=h.useState(!1),{data:u}=yt((s==null?void 0:s.role)??""),{data:f}=kt(),{data:m}=ht(),{isBuilder:y}=ye(),{isDevMode:b,toggleMode:$}=$t(!1),C=f==null?void 0:f.find(_=>_.workflow_type===(s==null?void 0:s.workflow_type)),O=((_e=m==null?void 0:m.telemetry)==null?void 0:_e.traceUrl)??null,[I,T]=h.useState("resolve"),[E,v]=h.useState("{}"),{isCollapsed:N,toggle:k,collapse:R,expand:A}=ft("escalation-detail"),[J,B]=h.useState(!1),[D,L]=h.useState(""),[z,de]=h.useState(!1),q=((Ce=s==null?void 0:s.metadata)==null?void 0:Ce.form_schema)??null,W=(s==null?void 0:s.form_schema)??(C==null?void 0:C.resolver_schema)??null,w=q??W,H=h.useRef(!1);h.useEffect(()=>{if(H.current)return;const _=q??(W!=null&&W.properties?W:null);if(_!=null&&_.properties){H.current=!0;const ue=ce(s==null?void 0:s.envelope),me=ue==null?void 0:ue.formDefaults,at=me&&typeof me=="object"?Pt(me,_):{},Re={_form_schema:_};for(const[$e,rt]of Object.entries(_.properties)){const it=rt;Re[$e]=at[$e]??it.default??""}v(JSON.stringify(Re,null,2))}else w&&(H.current=!0,v(JSON.stringify(w,null,2)))},[w,q,W,s==null?void 0:s.envelope]);const X=es(s==null?void 0:s.escalation_payload),re=(s==null?void 0:s.subtype)==="rounds_exhausted",ie=(s==null?void 0:s.subtype)==="wait_for_human";if(h.useEffect(()=>{(X||re)&&R("context"),ie&&q&&(R("context"),A("resolver"))},[X,re,ie,q,R,A]),l)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 U=Ve(s),P=U&&s.assigned_to===(a==null?void 0:a.userId),K=U&&!P,ee=s.status==="resolved"||s.status==="cancelled",se=ce(s.escalation_payload),ve=ce(s.resolver_payload),xe=ce(s.envelope),Ye=!!((Te=xe==null?void 0:xe.metadata)!=null&&Te.certified),Qe=!!((Ee=m==null?void 0:m.ai)!=null&&Ee.enabled),Y=typeof se=="object"&&se!==null&&!Array.isArray(se)?se:null,Ge=Y==null?void 0:Y._triage,Xe=ee?"terminal":P?"claimed_by_me":K?"claimed_by_other":"available",Ze=_=>{i.mutate({id:s.id,durationMinutes:_}),R("context"),R("triage"),A("resolver")},ne=()=>{n.resetQueries({queryKey:["escalations"]}),n.resetQueries({queryKey:["escalationStats"]}),r(-1)},we=async _=>{await o.mutateAsync({id:s.id,resolverPayload:_}),ne()},Ne=async _=>{_&&(await d.mutateAsync({id:s.id,targetRole:_}),ne())},et=async()=>{P||await i.mutateAsync({id:s.id,durationMinutes:30});const _=(Y==null?void 0:Y.diagnosis)||s.description||"";await o.mutateAsync({id:s.id,resolverPayload:{_lt:{needsTriage:!0},notes:_}}),ne()},tt=async()=>{await i.mutateAsync({id:s.id,durationMinutes:0}),ne()},st=async()=>{await p.mutateAsync(s.id),g(!1),ne()},ke=y?e.jsx("button",{onClick:$,className:"text-text-tertiary hover:text-accent transition-colors",title:b?"Switch to user view":"Switch to developer view",children:b?e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"})}):e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"})})}):void 0,nt=e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Nt,{onRefresh:()=>c(),isFetching:x,apiPath:`/escalations/${s.id}`}),ke&&e.jsx("div",{className:"ml-4",children:ke})]});return e.jsxs("div",{className:"min-h-[calc(100vh-9rem)] flex flex-col",children:[e.jsx(vt,{title:"Escalation",actions:nt,center:e.jsx(St,{esc:s,className:"w-[25%] shrink-0"})}),e.jsx(Ft,{esc:s,claimedByMe:P,claimed:U,isTerminal:ee,traceUrl:O,isDevMode:b,showDetails:!N("details"),onToggleDetails:()=>k("details")}),e.jsx(Xt,{isRoundsExhausted:re,payloadObj:Y,isTerminal:ee,resolverPayload:ve,onRetryTriage:et,isRetrying:i.isPending||o.isPending}),e.jsx(Zt,{isCollapsed:N,toggleSection:k,esc:s,escalationPayload:se,resolverPayload:ve,triageData:Ge,payloadObj:Y,isTerminal:ee,claimedByMe:P,activeView:I,metadataFormSchema:q,json:E,onJsonChange:v,requestTriage:J,onRequestTriageChange:B,triageNotes:D,onTriageNotesChange:L,isDevMode:b,onResolve:we,onEscalate:Ne,submitAttempted:z,isCertified:Ye,hasAI:Qe}),e.jsx("div",{className:"flex-1"}),e.jsx(Ot,{mode:Xe,activeView:I,onActiveViewChange:T,onClaim:Ze,claimPending:i.isPending,workflowType:s.workflow_type,json:E,onResolve:we,resolvePending:o.isPending,resolveError:o.error,requestTriage:J,triageNotes:D,currentRole:s.role,escalationTargets:((u==null?void 0:u.targets)??[]).filter(_=>_!==s.role),onEscalate:Ne,escalatePending:d.isPending,escalateError:d.error,onRelease:tt,releasePending:i.isPending,onCancel:()=>g(!0),assignedTo:s.assigned_to,assignedUntil:s.assigned_until,onSubmitAttempt:()=>de(!0)}),e.jsx(bt,{open:j,onClose:()=>g(!1),onConfirm:st,isPending:p.isPending,error:p.error})]})}export{vs as EscalationDetailPage};
|
|
6
|
-
//# sourceMappingURL=index-IIq5Tkqs.js.map
|