@hotmeshio/long-tail 0.2.10 → 0.3.1
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/topics.d.ts +22 -0
- package/build/api/topics.js +104 -0
- package/build/index.d.ts +3 -1
- package/build/index.js +7 -2
- package/build/lib/db/schemas/007_topic_catalog.sql +27 -0
- package/build/routes/index.js +2 -0
- package/build/routes/topics.d.ts +2 -0
- package/build/routes/topics.js +90 -0
- package/build/services/topics/index.d.ts +77 -0
- package/build/services/topics/index.js +116 -0
- package/build/services/topics/sql.d.ts +10 -0
- package/build/services/topics/sql.js +80 -0
- package/build/services/topics/system-topics.d.ts +11 -0
- package/build/services/topics/system-topics.js +270 -0
- package/build/start/workers.js +5 -0
- package/build/system/mcp-servers/events.js +73 -1
- package/build/system/seed/tool-manifests-events.d.ts +75 -0
- package/build/system/seed/tool-manifests-events.js +27 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +2 -2
- package/build/types/startup.d.ts +27 -0
- package/dashboard/dist/assets/AdminDashboard-CbeSejVX.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-45Ya2uzl.js.map → AdminDashboard-CbeSejVX.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js +13 -0
- package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js.map +1 -0
- package/dashboard/dist/assets/{AgentsPage--I4d5y9J.js → AgentsPage-Bz61Nl-x.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage--I4d5y9J.js.map → AgentsPage-Bz61Nl-x.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-DgbzCesR.js → BotPicker-kKBifD1w.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-DgbzCesR.js.map → BotPicker-kKBifD1w.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-B2S8_Gsc.js → CapabilitiesPage-Ch5qY0I7.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-B2S8_Gsc.js.map → CapabilitiesPage-Ch5qY0I7.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-4Eo3b5ha.js → CollapsibleSection-kYTBL7dT.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-4Eo3b5ha.js.map → CollapsibleSection-kYTBL7dT.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-Bac7RmDD.js → ConfirmDeleteModal-CcaAapMl.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-Bac7RmDD.js.map → ConfirmDeleteModal-CcaAapMl.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-BhwdwAJN.js → CopyableId-B4CL12pv.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-BhwdwAJN.js.map → CopyableId-B4CL12pv.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-CSEBaYx1.js → CredentialsPage-D1VAlwid.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-CSEBaYx1.js.map → CredentialsPage-D1VAlwid.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-DV2v2FlP.js → CronLabel-DRmO5rH0.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-DV2v2FlP.js.map → CronLabel-DRmO5rH0.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-C06QDDir.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-B_Oxq_nK.js.map → CustomDurationPicker-C06QDDir.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-etck0Zmp.js → DataTable-J5R6mepB.js} +2 -2
- package/dashboard/dist/assets/{DataTable-etck0Zmp.js.map → DataTable-J5R6mepB.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-BDpzHWsI.js → DropZone-DwNj3GiG.js} +2 -2
- package/dashboard/dist/assets/{DropZone-BDpzHWsI.js.map → DropZone-DwNj3GiG.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-D35Z-HSJ.js → ElapsedCell-ChyMzl9n.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-D35Z-HSJ.js.map → ElapsedCell-ChyMzl9n.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-Bk3_P-b8.js → EmptyState-BXGvOADa.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-Bk3_P-b8.js.map → EmptyState-BXGvOADa.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-Bt6gGFW4.js → EscalationsOverview-DM6zmE4g.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-Bt6gGFW4.js.map → EscalationsOverview-DM6zmE4g.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-BMk93q8A.js → EventTable-CvJ98E8s.js} +2 -2
- package/dashboard/dist/assets/{EventTable-BMk93q8A.js.map → EventTable-CvJ98E8s.js.map} +1 -1
- package/dashboard/dist/assets/{EventTopicPill-9LcMnLF0.js → EventTopicPill-CB_rIGlL.js} +2 -2
- package/dashboard/dist/assets/{EventTopicPill-9LcMnLF0.js.map → EventTopicPill-CB_rIGlL.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CZGTOMoo.js → FilterBar-Bdssa-Xn.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CZGTOMoo.js.map → FilterBar-Bdssa-Xn.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-Dtk7mgmf.js → HomePage-BuZkdXZt.js} +2 -2
- package/dashboard/dist/assets/{HomePage-Dtk7mgmf.js.map → HomePage-BuZkdXZt.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-CJEzypCM.js → ListToolbar-jy8NL6ll.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-CJEzypCM.js.map → ListToolbar-jy8NL6ll.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-ChUa4l3t.js → McpOverview-xkaKuHbX.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-ChUa4l3t.js.map → McpOverview-xkaKuHbX.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-04CTIN0v.js → McpQueryDetailPage-D5ICn6cR.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-04CTIN0v.js.map → McpQueryDetailPage-D5ICn6cR.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-DFnHFdbr.js → McpQueryPage-C46fzfm5.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-DFnHFdbr.js.map → McpQueryPage-C46fzfm5.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-Znsl4Yc-.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-B95c3bFw.js.map → McpRunDetailPage-Znsl4Yc-.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-DS43YmLU.js → McpRunsPage-DT-armx5.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-DS43YmLU.js.map → McpRunsPage-DT-armx5.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-EUrK2c_A.js → Modal-C6k6_5KB.js} +2 -2
- package/dashboard/dist/assets/{Modal-EUrK2c_A.js.map → Modal-C6k6_5KB.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-DBF_AbRH.js → OperatorDashboard-e5N3_dVl.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-DBF_AbRH.js.map → OperatorDashboard-e5N3_dVl.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-BuUnJ5NY.js → PageHeader-COcgWWf-.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-BuUnJ5NY.js.map → PageHeader-COcgWWf-.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-cQKaJBAM.js → PageHeaderWithStats-C0PCY3aJ.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-cQKaJBAM.js.map → PageHeaderWithStats-C0PCY3aJ.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-Bl0_pgex.js → PriorityBadge-BQCsYMpM.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-Bl0_pgex.js.map → PriorityBadge-BQCsYMpM.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-C03LOgI0.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-DgeXrHon.js.map → ProcessDetailPage-C03LOgI0.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-BGiiH4dW.js → ProcessesListPage-iyPsmlhm.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-BGiiH4dW.js.map → ProcessesListPage-iyPsmlhm.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-DsYF2JN9.js → RolePill-CHwys1f9.js} +2 -2
- package/dashboard/dist/assets/{RolePill-DsYF2JN9.js.map → RolePill-CHwys1f9.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-CQ7vPamb.js → RolesPage-Bmc3XaUk.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-CQ7vPamb.js.map → RolesPage-Bmc3XaUk.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-DBpvm3Jy.js → RowActions-Bs4PF-Gd.js} +2 -2
- package/dashboard/dist/assets/{RowActions-DBpvm3Jy.js.map → RowActions-Bs4PF-Gd.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-ZLKGTYP_.js → RunAsSelector-DXzAr2WW.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-ZLKGTYP_.js.map → RunAsSelector-DXzAr2WW.js.map} +1 -1
- package/dashboard/dist/assets/{ServerName-B5-E7gZD.js → ServerName-BIdLC1Ay.js} +2 -2
- package/dashboard/dist/assets/{ServerName-B5-E7gZD.js.map → ServerName-BIdLC1Ay.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-B7ySTryP.js → StatCard-OKzRSSx4.js} +2 -2
- package/dashboard/dist/assets/{StatCard-B7ySTryP.js.map → StatCard-OKzRSSx4.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-DNXTk01O.js → StatusBadge-CQlF46RR.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-DNXTk01O.js.map → StatusBadge-CQlF46RR.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-ftNmaJsu.js → StepIndicator-CP7eycjI.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-ftNmaJsu.js.map → StepIndicator-CP7eycjI.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-CI5AyVVd.js → StickyPagination-CGk8VAKt.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CI5AyVVd.js.map → StickyPagination-CGk8VAKt.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-BA4aFrHf.js → SwimlaneTimeline-MEUPc3yJ.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-BA4aFrHf.js.map → SwimlaneTimeline-MEUPc3yJ.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-DfbVwc27.js → TagInput-BGxXKiWD.js} +2 -2
- package/dashboard/dist/assets/{TagInput-DfbVwc27.js.map → TagInput-BGxXKiWD.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-A_kHjYRn.js → TaskDetailPage-pN5BXzYA.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-A_kHjYRn.js.map → TaskDetailPage-pN5BXzYA.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-Dtsa8CPO.js → TaskQueuePill-bw8ieKsf.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-Dtsa8CPO.js.map → TaskQueuePill-bw8ieKsf.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-Cw46VTuA.js → TasksListPage-D1INzcrA.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-Cw46VTuA.js.map → TasksListPage-D1INzcrA.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Cx1kK1id.js → TimeAgo-CywLVIBA.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Cx1kK1id.js.map → TimeAgo-CywLVIBA.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-VDp4nVn6.js → TimestampCell-B4Pc6f3A.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-VDp4nVn6.js.map → TimestampCell-B4Pc6f3A.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-BNaTJhu8.js → ToolPill-DdLN3JOT.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-BNaTJhu8.js.map → ToolPill-DdLN3JOT.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-BickLBjP.js → ToolTestPanel-DusbUka5.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-BickLBjP.js.map → ToolTestPanel-DusbUka5.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js.map +1 -0
- package/dashboard/dist/assets/TopicsPage-DbtrnQON.js +2 -0
- package/dashboard/dist/assets/TopicsPage-DbtrnQON.js.map +1 -0
- package/dashboard/dist/assets/{UserName-DCdb6xnk.js → UserName-CLbusknU.js} +2 -2
- package/dashboard/dist/assets/{UserName-DCdb6xnk.js.map → UserName-CLbusknU.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BZfxY1iB.js → WorkflowExecutionPage-C61R-3Gg.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BZfxY1iB.js.map → WorkflowExecutionPage-C61R-3Gg.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-BzhfqGa-.js → WorkflowPill-7vt2F6wR.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-BzhfqGa-.js.map → WorkflowPill-7vt2F6wR.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-B7M8kPoH.js → WorkflowsDashboard-BWiUNvyl.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-B7M8kPoH.js.map → WorkflowsDashboard-BWiUNvyl.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-1V8vQ-mo.js → WorkflowsOverview-DA2ZOs7D.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-1V8vQ-mo.js.map → WorkflowsOverview-DA2ZOs7D.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js.map +1 -0
- package/dashboard/dist/assets/{agents-SXs4tMLb.js → agents-Dga6NU7U.js} +2 -2
- package/dashboard/dist/assets/{agents-SXs4tMLb.js.map → agents-Dga6NU7U.js.map} +1 -1
- package/dashboard/dist/assets/{bots-Ci5aCzDK.js → bots-CtU4i4OQ.js} +2 -2
- package/dashboard/dist/assets/{bots-Ci5aCzDK.js.map → bots-CtU4i4OQ.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-BiPTCZeL.js → controlplane-BVoALhbL.js} +2 -2
- package/dashboard/dist/assets/{controlplane-BiPTCZeL.js.map → controlplane-BVoALhbL.js.map} +1 -1
- package/dashboard/dist/assets/escalation-_N5GfuIi.js +2 -0
- package/dashboard/dist/assets/escalation-_N5GfuIi.js.map +1 -0
- package/dashboard/dist/assets/{escalation-columns-Bpp7Sdbd.js → escalation-columns-CoTmTpHp.js} +2 -2
- package/dashboard/dist/assets/escalation-columns-CoTmTpHp.js.map +1 -0
- package/dashboard/dist/assets/{helpers-CQZkvg6D.js → helpers-Dz2U3Ctb.js} +2 -2
- package/dashboard/dist/assets/{helpers-CQZkvg6D.js.map → helpers-Dz2U3Ctb.js.map} +1 -1
- package/dashboard/dist/assets/{index-C7FUIcaY.js → index-6Kd78p_v.js} +2 -2
- package/dashboard/dist/assets/{index-C7FUIcaY.js.map → index-6Kd78p_v.js.map} +1 -1
- package/dashboard/dist/assets/{index-DOE7HCzb.js → index-B9ealjkt.js} +4 -4
- package/dashboard/dist/assets/{index-DOE7HCzb.js.map → index-B9ealjkt.js.map} +1 -1
- package/dashboard/dist/assets/index-BIUHY2Jz.css +1 -0
- package/dashboard/dist/assets/{index-hfravTJF.js → index-BWHDW_CF.js} +2 -2
- package/dashboard/dist/assets/{index-hfravTJF.js.map → index-BWHDW_CF.js.map} +1 -1
- package/dashboard/dist/assets/{index-DtbAmRkr.js → index-BYwPVJv0.js} +2 -2
- package/dashboard/dist/assets/{index-DtbAmRkr.js.map → index-BYwPVJv0.js.map} +1 -1
- package/dashboard/dist/assets/index-CCOSf1PY.js +281 -0
- package/dashboard/dist/assets/index-CCOSf1PY.js.map +1 -0
- package/dashboard/dist/assets/{index-DV0_tQW3.js → index-CS61sh5q.js} +2 -2
- package/dashboard/dist/assets/{index-DV0_tQW3.js.map → index-CS61sh5q.js.map} +1 -1
- package/dashboard/dist/assets/index-CtbG3UN-.js +5 -0
- package/dashboard/dist/assets/index-CtbG3UN-.js.map +1 -0
- package/dashboard/dist/assets/{index-CSsOukxa.js → index-DWUunWxh.js} +2 -2
- package/dashboard/dist/assets/{index-CSsOukxa.js.map → index-DWUunWxh.js.map} +1 -1
- package/dashboard/dist/assets/{index-COiEQlp9.js → index-D_H_Prht.js} +2 -2
- package/dashboard/dist/assets/{index-COiEQlp9.js.map → index-D_H_Prht.js.map} +1 -1
- package/dashboard/dist/assets/{index-q4T_i7zT.js → index-Dpjguclc.js} +2 -2
- package/dashboard/dist/assets/{index-q4T_i7zT.js.map → index-Dpjguclc.js.map} +1 -1
- package/dashboard/dist/assets/{index-OTsFiHXP.js → index-QicYdUsl.js} +2 -2
- package/dashboard/dist/assets/index-QicYdUsl.js.map +1 -0
- package/dashboard/dist/assets/{index-Bp5f2OWJ.js → index-dM-OgCY3.js} +2 -2
- package/dashboard/dist/assets/{index-Bp5f2OWJ.js.map → index-dM-OgCY3.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-D8osen1O.js → knowledge-DJlebU82.js} +2 -2
- package/dashboard/dist/assets/{knowledge-D8osen1O.js.map → knowledge-DJlebU82.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CUFhWTyT.js → mcp-CsLJ5SRm.js} +2 -2
- package/dashboard/dist/assets/{mcp-CUFhWTyT.js.map → mcp-CsLJ5SRm.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-n1t4sNm7.js → mcp-query-WNK1ItRV.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-n1t4sNm7.js.map → mcp-query-WNK1ItRV.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-BkRnXbcq.js → mcp-runs-DtTTsuPH.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-BkRnXbcq.js.map → mcp-runs-DtTTsuPH.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-CacF05ft.js → namespaces-iRejH3_A.js} +2 -2
- package/dashboard/dist/assets/{namespaces-CacF05ft.js.map → namespaces-iRejH3_A.js.map} +1 -1
- package/dashboard/dist/assets/{roles-CjLCgM_6.js → roles-3Jm5KtKc.js} +2 -2
- package/dashboard/dist/assets/{roles-CjLCgM_6.js.map → roles-3Jm5KtKc.js.map} +1 -1
- package/dashboard/dist/assets/settings-DmN2I-c6.js +2 -0
- package/dashboard/dist/assets/settings-DmN2I-c6.js.map +1 -0
- package/dashboard/dist/assets/{tasks-BLCzIHol.js → tasks-Cc-QoITQ.js} +2 -2
- package/dashboard/dist/assets/{tasks-BLCzIHol.js.map → tasks-Cc-QoITQ.js.map} +1 -1
- package/dashboard/dist/assets/topics-p8anbgi0.js +2 -0
- package/dashboard/dist/assets/topics-p8anbgi0.js.map +1 -0
- package/dashboard/dist/assets/{useEventHooks-AwwZnweF.js → useEventHooks-VaJ52jMm.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-AwwZnweF.js.map → useEventHooks-VaJ52jMm.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-9Zs0PXY6.js → useYamlActivityEvents-BU4Uhksl.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-9Zs0PXY6.js.map → useYamlActivityEvents-BU4Uhksl.js.map} +1 -1
- package/dashboard/dist/assets/{users-BtLRzvZE.js → users-oXOlnold.js} +2 -2
- package/dashboard/dist/assets/{users-BtLRzvZE.js.map → users-oXOlnold.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-1qQ3NKfa.js → vendor-icons-CBOM6Es0.js} +99 -94
- package/dashboard/dist/assets/vendor-icons-CBOM6Es0.js.map +1 -0
- package/dashboard/dist/assets/{workflows-B9xdIsfM.js → workflows-Yq7cK-vR.js} +2 -2
- package/dashboard/dist/assets/{workflows-B9xdIsfM.js.map → workflows-Yq7cK-vR.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-xOJxyEsQ.js → yaml-workflows-Ch53yD43.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-xOJxyEsQ.js.map → yaml-workflows-Ch53yD43.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/agents.md +6 -0
- package/docs/api/http/topics.md +164 -0
- package/docs/api/sdk/topics.md +204 -0
- package/docs/dashboard.md +22 -0
- package/docs/events.md +7 -0
- package/docs/sdk.md +15 -0
- package/docs/topics.md +154 -0
- package/package.json +2 -2
- package/dashboard/dist/assets/AdminDashboard-45Ya2uzl.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-BOASC5vi.js +0 -13
- package/dashboard/dist/assets/AgentConfigPage-BOASC5vi.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-5M7JTcFz.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-5M7JTcFz.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-CXUkRz18.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-CXUkRz18.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-B_Oxq_nK.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-B95c3bFw.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-DgeXrHon.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BteCRoV5.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BteCRoV5.js.map +0 -1
- package/dashboard/dist/assets/escalation-D-zr9D9G.js +0 -2
- package/dashboard/dist/assets/escalation-D-zr9D9G.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-Bpp7Sdbd.js.map +0 -1
- package/dashboard/dist/assets/index-BciXgS35.css +0 -1
- package/dashboard/dist/assets/index-Da8R5Fn_.js +0 -281
- package/dashboard/dist/assets/index-Da8R5Fn_.js.map +0 -1
- package/dashboard/dist/assets/index-DzL5pT70.js +0 -5
- package/dashboard/dist/assets/index-DzL5pT70.js.map +0 -1
- package/dashboard/dist/assets/index-OTsFiHXP.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-1qQ3NKfa.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{k as re,j as e,l as q,g as me,m as ce,n as de,o as ue,p as pe,q as be,r as he,s as Ne}from"./index-Da8R5Fn_.js";import{a as m}from"./vendor-query-DLp59M9_.js";import{f as xe}from"./useEventHooks-AwwZnweF.js";import{u as ge}from"./roles-CjLCgM_6.js";import{u as fe}from"./useFilterParams-CGRYFw_A.js";import{D as ve}from"./DataTable-etck0Zmp.js";import{S as Ee}from"./StickyPagination-CI5AyVVd.js";import{P as ke}from"./PageHeader-BuUnJ5NY.js";import{P as Be}from"./constants-BHkpVaqx.js";import{u as $,C as G}from"./CustomDurationPicker-B_Oxq_nK.js";import{M as O}from"./Modal-EUrK2c_A.js";import{u as ye}from"./users-BtLRzvZE.js";import{E as Ce,a as Ae}from"./escalation-columns-Bpp7Sdbd.js";import{R as De,a as je}from"./RowActions-DBpvm3Jy.js";import{L as Ve}from"./ListToolbar-CJEzypCM.js";import{_ as Me}from"./vendor-icons-1qQ3NKfa.js";import{c as Pe}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-Bk3_P-b8.js";import"./FilterBar-CZGTOMoo.js";import"./PriorityBadge-Bl0_pgex.js";import"./RolePill-DsYF2JN9.js";import"./WorkflowPill-BzhfqGa-.js";import"./TimestampCell-VDp4nVn6.js";import"./escalation-D-zr9D9G.js";const Se=a=>a.isPriorityPending||a.isClaimPending||a.isAssignPending||a.isEscalatePending||a.isTriagePending;function Te(a){const i=Se(a),c=$(),t=re();return e.jsxDEV("div",{className:"flex flex-wrap items-center gap-3 px-4 py-3 bg-accent/5 border border-accent/20 rounded-lg mb-4",children:[e.jsxDEV("span",{className:"text-xs font-medium text-accent",children:[a.selectedCount," selected"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:31,columnNumber:7},this),e.jsxDEV("div",{className:"w-px h-5 bg-surface-border"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:35,columnNumber:7},this),e.jsxDEV("select",{onChange:o=>{o.target.value&&(a.onSetPriority(parseInt(o.target.value)),o.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsxDEV("option",{value:"",disabled:!0,children:"Priority..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:48,columnNumber:9},this),Be.map(o=>e.jsxDEV("option",{value:o.value,children:o.label},o.value,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:50,columnNumber:11},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:38,columnNumber:7},this),e.jsxDEV("select",{onChange:o=>{o.target.value&&(a.onClaim(parseInt(o.target.value)),o.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsxDEV("option",{value:"",disabled:!0,children:"Claim for..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:65,columnNumber:9},this),c.map(o=>e.jsxDEV("option",{value:o.value,children:o.label},o.value,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:67,columnNumber:11},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:55,columnNumber:7},this),e.jsxDEV("button",{onClick:a.onAssign,disabled:i,className:"btn-secondary text-xs py-1.5",children:a.isAssignPending?"Assigning...":"Assign to..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:72,columnNumber:7},this),a.availableRoles.length>0&&e.jsxDEV("select",{onChange:o=>{o.target.value&&(a.onEscalate(o.target.value),o.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsxDEV("option",{value:"",disabled:!0,children:"Escalate to..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:92,columnNumber:11},this),a.availableRoles.map(o=>e.jsxDEV("option",{value:o,children:o},o,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:94,columnNumber:13},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:82,columnNumber:9},this),t&&e.jsxDEV("button",{onClick:a.onTriage,disabled:i,className:"btn-secondary text-xs py-1.5",children:a.isTriagePending?"Triaging...":"Triage"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:101,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:110,columnNumber:7},this),e.jsxDEV("button",{onClick:a.onClearSelection,className:"text-xs text-text-tertiary hover:text-text-primary transition-colors",children:"Clear"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:113,columnNumber:7},this),i&&e.jsxDEV("span",{className:"text-xs text-text-tertiary animate-pulse",children:"Processing..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:121,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkActionBar.tsx",lineNumber:30,columnNumber:5},this)}function we({open:a,onClose:i,selectedCount:c,selectedRoles:t,onSubmit:o,isPending:n}){const{isSuperAdmin:p}=q(),r=$(),[d,f]=m.useState("user"),[x,B]=m.useState(null),[y,V]=m.useState(""),[k,_]=m.useState("30"),[u,h]=m.useState(0),L=m.useCallback(l=>h(l),[]),M=!p&&t.length===1?t[0]:void 0,{data:v,isLoading:C}=ye({role:M,status:"active",limit:200}),P=m.useMemo(()=>{const l=(v==null?void 0:v.users)??[];if(!y.trim())return l;const g=y.toLowerCase();return l.filter(A=>{var N,D;return((N=A.display_name)==null?void 0:N.toLowerCase().includes(g))||((D=A.email)==null?void 0:D.toLowerCase().includes(g))})},[v==null?void 0:v.users,y]),S=()=>{f("user"),B(null),V(""),_("30"),h(0),i()},I=l=>{B(l),f("duration")},T=()=>{f("user")},z=()=>{if(!x)return;const l=k==="custom"?u:parseInt(k);!l||l<=0||o(x.id,l)};return e.jsxDEV(O,{open:a,onClose:S,title:"Assign Escalations",children:e.jsxDEV("div",{className:"space-y-4",children:[d==="user"&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Select a user to assign"," ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:89,columnNumber:15},this)," ","escalation(s) to:"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:87,columnNumber:13},this),e.jsxDEV("input",{type:"text",value:y,onChange:l=>V(l.target.value),placeholder:"Search by name or email...",className:"input text-xs w-full",autoFocus:!0},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:95,columnNumber:13},this),e.jsxDEV("div",{className:"max-h-60 overflow-y-auto border border-surface-border rounded-lg divide-y divide-surface-border",children:[C&&e.jsxDEV("p",{className:"text-xs text-text-tertiary p-3",children:"Loading users..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:106,columnNumber:17},this),!C&&P.length===0&&e.jsxDEV("p",{className:"text-xs text-text-tertiary p-3",children:"No users found"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:111,columnNumber:17},this),P.map(l=>e.jsxDEV("button",{onClick:()=>I(l),className:"w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors",children:[e.jsxDEV("p",{className:"text-xs font-medium text-text-primary",children:l.display_name||l.external_id},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:121,columnNumber:19},this),l.email&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:l.email},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:125,columnNumber:21},this)]},l.id,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:116,columnNumber:17},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:104,columnNumber:13},this),e.jsxDEV("div",{className:"flex justify-end pt-2",children:e.jsxDEV("button",{onClick:S,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:134,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:133,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:86,columnNumber:11},this),d==="duration"&&x&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Assign to"," ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:x.display_name||x.external_id},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:145,columnNumber:15},this)," ","for:"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:143,columnNumber:13},this),e.jsxDEV("select",{value:k,onChange:l=>{_(l.target.value),h(0)},className:"select w-full text-sm",children:[r.map(l=>e.jsxDEV("option",{value:l.value,children:l.label},l.value,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:157,columnNumber:17},this)),e.jsxDEV("option",{value:"custom",children:"Other..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:161,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:151,columnNumber:13},this),k==="custom"&&e.jsxDEV(G,{onChange:L,autoFocus:!0},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:164,columnNumber:15},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:T,className:"btn-secondary text-xs",children:"Back"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:168,columnNumber:15},this),e.jsxDEV("button",{onClick:z,disabled:n,className:"btn-primary text-xs",children:n?"Assigning...":"Assign"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:171,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:167,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:142,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:84,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkAssignModal.tsx",lineNumber:83,columnNumber:5},this)}function _e({open:a,onClose:i,selectedCount:c,onSubmit:t,isPending:o}){const[n,p]=m.useState(""),r=()=>{t(n||void 0)};return e.jsxDEV(O,{open:a,onClose:i,title:"Submit for AI Triage",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Submit ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:29,columnNumber:18},this)," escalation(s) for AI triage? The triage orchestrator will take over resolution."]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:28,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"text-xs font-medium text-text-secondary block mb-1",children:["Triage hint ",e.jsxDEV("span",{className:"text-text-tertiary",children:"(optional)"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:35,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:n,onChange:d=>p(d.target.value),placeholder:"e.g., image_orientation",className:"input text-xs font-mono w-full"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:37,columnNumber:11},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1",children:"Guides the triage workflow on what remediation to apply"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:i,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:50,columnNumber:11},this),e.jsxDEV("button",{onClick:r,disabled:o,className:"btn-primary text-xs",children:o?"Submitting...":"Submit for Triage"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:53,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:49,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:27,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/BulkTriageModal.tsx",lineNumber:26,columnNumber:5},this)}function w(a,i,c){return t=>{a.mutate(t,{onSuccess:()=>{i(),c==null||c()}})}}function Ie(a){const i=()=>[...a.selectedIds];return{handleSetPriority:r=>{w(a.setPriority,a.clearSelection)({ids:i(),priority:r})},handleBulkClaim:r=>{w(a.bulkClaim,a.clearSelection)({ids:i(),durationMinutes:r})},handleBulkEscalate:r=>{w(a.bulkEscalate,a.clearSelection)({ids:i(),targetRole:r})},handleBulkTriage:r=>{w(a.bulkTriage,a.clearSelection,a.closeTriageModal)({ids:i(),hint:r})},handleBulkAssign:(r,d)=>{w(a.bulkAssign,a.clearSelection,a.closeAssignModal)({ids:i(),targetUserId:r,durationMinutes:d})}}}function ze({claimTarget:a,onClose:i,claimDuration:c,onDurationChange:t,claimDurations:o,onCustomClaimChange:n,onClaim:p,isPending:r}){return e.jsxDEV(O,{open:!!a,onClose:i,title:"Claim Escalation",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Claim ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:a==null?void 0:a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:35,columnNumber:17},this)," for:"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:34,columnNumber:9},this),e.jsxDEV("select",{value:c,onChange:d=>{t(d.target.value)},className:"select w-full text-sm",children:[o.map(d=>e.jsxDEV("option",{value:d.value,children:d.label},d.value,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:43,columnNumber:13},this)),e.jsxDEV("option",{value:"custom",children:"Other..."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:37,columnNumber:9},this),c==="custom"&&e.jsxDEV(G,{onChange:n,autoFocus:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:48,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:i,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:51,columnNumber:11},this),e.jsxDEV("button",{onClick:p,className:"btn-primary text-xs",disabled:r,children:r?"Claiming...":"Claim"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:54,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:50,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:33,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/ClaimModal.tsx",lineNumber:28,columnNumber:5},this)}function ra(){xe();const a=Pe(),{user:i,isSuperAdmin:c}=q(),{filters:t,setFilter:o,pagination:n,sort:p,setSort:r}=fe({filters:{role:"",type:"",priority:"",status:"available"}}),d=$(),[f,x]=m.useState(null),[B,y]=m.useState("30"),[V,k]=m.useState(0),_=m.useCallback(s=>k(s),[]),[u,h]=m.useState(new Set),[L,M]=m.useState(!1),[v,C]=m.useState(!1),P=me(),S=ce(),I=de(),T=ue(),z=pe(),l=be(),{data:g}=ge(),{data:A}=he();m.useEffect(()=>{h(new Set)},[t.role,t.type,t.priority,t.status,n.page,n.pageSize]);const N=t.status||"",D=N==="available"||N==="claimed"?"pending":N==="resolved"?"resolved":void 0,{data:j,isLoading:Y,error:F,refetch:J,isFetching:K}=Ne({status:D,role:t.role||void 0,type:t.type||void 0,priority:t.priority?parseInt(t.priority):void 0,limit:n.pageSize,offset:n.offset,sort_by:p.sort_by||void 0,order:p.sort_by?p.order:void 0}),U=new Date,R=(j==null?void 0:j.escalations)??[],E=N==="available"?R.filter(s=>!s.assigned_to||!s.assigned_until||new Date(s.assigned_until)<=U):N==="claimed"?R.filter(s=>s.assigned_to&&s.assigned_until&&new Date(s.assigned_until)>U):R,H=N==="available"||N==="claimed"?E.length:(j==null?void 0:j.total)??0,Q=c||(i==null?void 0:i.roles.some(s=>s.type==="admin")),W=m.useMemo(()=>{const s=new Set;for(const b of E)u.has(b.id)&&s.add(b.role);return[...s]},[E,u]),X=m.useCallback(()=>h(new Set),[]),Z=()=>{if(!f)return;const s=B==="custom"?V:parseInt(B);!s||s<=0||P.mutate({id:f.id,durationMinutes:s},{onSuccess:()=>{x(null),a(`/escalations/detail/${f.id}`)}})},{handleSetPriority:ee,handleBulkClaim:ae,handleBulkEscalate:se,handleBulkTriage:oe,handleBulkAssign:le}=Ie({selectedIds:u,clearSelection:X,setPriority:S,bulkClaim:I,bulkEscalate:z,bulkTriage:l,bulkAssign:T,closeTriageModal:()=>M(!1),closeAssignModal:()=>C(!1)}),te=s=>{const b=new Set(u);b.has(s)?b.delete(s):b.add(s),h(b)},ie=()=>{u.size===E.length?h(new Set):h(new Set(E.map(s=>s.id)))},ne=[Q?{key:"select",label:e.jsxDEV("input",{type:"checkbox",checked:E.length>0&&u.size===E.length,onChange:ie,className:"rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:153,columnNumber:9},this),render:s=>e.jsxDEV("input",{type:"checkbox",checked:u.has(s.id),onChange:b=>{b.stopPropagation(),te(s.id)},onClick:b=>b.stopPropagation(),className:"rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:161,columnNumber:9},this),className:"w-10"}:{key:"spacer",label:"",render:()=>null,className:"w-10"},...Ce,{key:"actions",label:"",render:s=>e.jsxDEV(De,{children:e.jsxDEV(je,{icon:Me,title:"Claim escalation",onClick:()=>x(s)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:185,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:184,columnNumber:9},this),className:"w-16 text-right"}];return e.jsxDEV("div",{children:[e.jsxDEV(ke,{title:"All Escalations",docsHash:"#docs:dashboard.md:all-escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:198,columnNumber:7},this),e.jsxDEV(Ae,{filters:t,setFilter:o,roles:(g==null?void 0:g.roles)??[],types:(A==null?void 0:A.types)??[],showStatus:!0,actions:e.jsxDEV(Ve,{onRefresh:()=>J(),isFetching:K,apiPath:`/escalations?limit=${n.pageSize}&offset=${n.offset}${D?`&status=${D}`:""}${t.role?`&role=${t.role}`:""}${t.type?`&type=${t.type}`:""}${t.priority?`&priority=${t.priority}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:207,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:200,columnNumber:7},this),u.size>0&&e.jsxDEV(Te,{selectedCount:u.size,onClearSelection:()=>h(new Set),onSetPriority:ee,onClaim:ae,onAssign:()=>C(!0),onEscalate:se,onTriage:()=>M(!0),isPriorityPending:S.isPending,isClaimPending:I.isPending,isAssignPending:T.isPending,isEscalatePending:z.isPending,isTriagePending:l.isPending,availableRoles:(g==null?void 0:g.roles)??[]},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:216,columnNumber:9},this),F&&e.jsxDEV("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:F.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${F.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:234,columnNumber:9},this),e.jsxDEV(ve,{columns:ne,data:E,keyFn:s=>s.id,onRowClick:s=>a(`/escalations/detail/${s.id}`,{state:{from:"/escalations/available"}}),isLoading:Y,emptyMessage:F?"Unable to load data":"No available escalations",sort:p,onSort:r},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:241,columnNumber:7},this),e.jsxDEV(Ee,{page:n.page,totalPages:n.totalPages(H),onPageChange:n.setPage,total:H,pageSize:n.pageSize,onPageSizeChange:n.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:252,columnNumber:7},this),e.jsxDEV(ze,{claimTarget:f,onClose:()=>x(null),claimDuration:B,onDurationChange:s=>{y(s),k(0)},claimDurations:d,customClaimMinutes:V,onCustomClaimChange:_,onClaim:Z,isPending:P.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:261,columnNumber:7},this),e.jsxDEV(_e,{open:L,onClose:()=>M(!1),selectedCount:u.size,onSubmit:oe,isPending:l.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:273,columnNumber:7},this),e.jsxDEV(we,{open:v,onClose:()=>C(!1),selectedCount:u.size,selectedRoles:W,onSubmit:le,isPending:T.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:281,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/AvailableEscalationsPage.tsx",lineNumber:197,columnNumber:5},this)}export{ra as AvailableEscalationsPage};
|
|
2
|
-
//# sourceMappingURL=AvailableEscalationsPage-CXUkRz18.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AvailableEscalationsPage-CXUkRz18.js","sources":["../../src/components/common/modal/BulkActionBar.tsx","../../src/components/common/modal/BulkAssignModal.tsx","../../src/components/common/modal/BulkTriageModal.tsx","../../src/pages/operator/helpers.ts","../../src/pages/operator/ClaimModal.tsx","../../src/pages/operator/AvailableEscalationsPage.tsx"],"sourcesContent":["import { PRIORITY_OPTIONS } from '../../../lib/constants';\nimport { useClaimDurations } from '../../../hooks/useClaimDurations';\nimport { useAI } from '../../../hooks/useAI';\n\ninterface BulkActionBarProps {\n selectedCount: number;\n onClearSelection: () => void;\n onSetPriority: (priority: 1 | 2 | 3 | 4) => void;\n onClaim: (durationMinutes: number) => void;\n onAssign: () => void;\n onEscalate: (targetRole: string) => void;\n onTriage: () => void;\n isPriorityPending: boolean;\n isClaimPending: boolean;\n isAssignPending: boolean;\n isEscalatePending: boolean;\n isTriagePending: boolean;\n availableRoles: string[];\n}\n\nconst anyPending = (props: BulkActionBarProps) =>\n props.isPriorityPending || props.isClaimPending || props.isAssignPending || props.isEscalatePending || props.isTriagePending;\n\nexport function BulkActionBar(props: BulkActionBarProps) {\n const disabled = anyPending(props);\n const claimDurations = useClaimDurations();\n const aiEnabled = useAI();\n\n return (\n <div className=\"flex flex-wrap items-center gap-3 px-4 py-3 bg-accent/5 border border-accent/20 rounded-lg mb-4\">\n <span className=\"text-xs font-medium text-accent\">\n {props.selectedCount} selected\n </span>\n\n <div className=\"w-px h-5 bg-surface-border\" />\n\n {/* Priority */}\n <select\n onChange={(e) => {\n if (!e.target.value) return;\n props.onSetPriority(parseInt(e.target.value) as 1 | 2 | 3 | 4);\n e.target.value = '';\n }}\n disabled={disabled}\n className=\"select text-xs py-1.5\"\n defaultValue=\"\"\n >\n <option value=\"\" disabled>Priority...</option>\n {PRIORITY_OPTIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n\n {/* Claim */}\n <select\n onChange={(e) => {\n if (!e.target.value) return;\n props.onClaim(parseInt(e.target.value));\n e.target.value = '';\n }}\n disabled={disabled}\n className=\"select text-xs py-1.5\"\n defaultValue=\"\"\n >\n <option value=\"\" disabled>Claim for...</option>\n {claimDurations.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n\n {/* Assign */}\n <button\n onClick={props.onAssign}\n disabled={disabled}\n className=\"btn-secondary text-xs py-1.5\"\n >\n {props.isAssignPending ? 'Assigning...' : 'Assign to...'}\n </button>\n\n {/* Escalate */}\n {props.availableRoles.length > 0 && (\n <select\n onChange={(e) => {\n if (!e.target.value) return;\n props.onEscalate(e.target.value);\n e.target.value = '';\n }}\n disabled={disabled}\n className=\"select text-xs py-1.5\"\n defaultValue=\"\"\n >\n <option value=\"\" disabled>Escalate to...</option>\n {props.availableRoles.map((role) => (\n <option key={role} value={role}>{role}</option>\n ))}\n </select>\n )}\n\n {/* Triage */}\n {aiEnabled && (\n <button\n onClick={props.onTriage}\n disabled={disabled}\n className=\"btn-secondary text-xs py-1.5\"\n >\n {props.isTriagePending ? 'Triaging...' : 'Triage'}\n </button>\n )}\n\n <div className=\"flex-1\" />\n\n {/* Clear */}\n <button\n onClick={props.onClearSelection}\n className=\"text-xs text-text-tertiary hover:text-text-primary transition-colors\"\n >\n Clear\n </button>\n\n {disabled && (\n <span className=\"text-xs text-text-tertiary animate-pulse\">Processing...</span>\n )}\n </div>\n );\n}\n","import { useState, useMemo, useCallback } from 'react';\nimport { Modal } from './Modal';\nimport { CustomDurationPicker } from '../form/CustomDurationPicker';\nimport { useUsers } from '../../../api/users';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { useClaimDurations } from '../../../hooks/useClaimDurations';\nimport type { LTUserRecord } from '../../../api/types';\n\ninterface BulkAssignModalProps {\n open: boolean;\n onClose: () => void;\n selectedCount: number;\n /** Distinct roles of the selected escalations; scopes user list for admins */\n selectedRoles: string[];\n onSubmit: (targetUserId: string, durationMinutes: number) => void;\n isPending: boolean;\n}\n\nexport function BulkAssignModal({\n open,\n onClose,\n selectedCount,\n selectedRoles,\n onSubmit,\n isPending,\n}: BulkAssignModalProps) {\n const { isSuperAdmin } = useAuth();\n const claimDurations = useClaimDurations();\n const [step, setStep] = useState<'user' | 'duration'>('user');\n const [selectedUser, setSelectedUser] = useState<LTUserRecord | null>(null);\n const [search, setSearch] = useState('');\n const [duration, setDuration] = useState('30');\n const [customMinutes, setCustomMinutes] = useState(0);\n const onCustomChange = useCallback((m: number) => setCustomMinutes(m), []);\n\n // Admins with a single role: scope to that role. Otherwise show all active users.\n const roleFilter =\n !isSuperAdmin && selectedRoles.length === 1 ? selectedRoles[0] : undefined;\n\n const { data: usersData, isLoading: usersLoading } = useUsers({\n role: roleFilter,\n status: 'active',\n limit: 200,\n });\n\n const filteredUsers = useMemo(() => {\n const users = usersData?.users ?? [];\n if (!search.trim()) return users;\n const q = search.toLowerCase();\n return users.filter(\n (u) =>\n u.display_name?.toLowerCase().includes(q) ||\n u.email?.toLowerCase().includes(q),\n );\n }, [usersData?.users, search]);\n\n const handleClose = () => {\n setStep('user');\n setSelectedUser(null);\n setSearch('');\n setDuration('30');\n setCustomMinutes(0);\n onClose();\n };\n\n const handleSelectUser = (user: LTUserRecord) => {\n setSelectedUser(user);\n setStep('duration');\n };\n\n const handleBack = () => {\n setStep('user');\n };\n\n const handleSubmit = () => {\n if (!selectedUser) return;\n const minutes = duration === 'custom' ? customMinutes : parseInt(duration);\n if (!minutes || minutes <= 0) return;\n onSubmit(selectedUser.id, minutes);\n };\n\n return (\n <Modal open={open} onClose={handleClose} title=\"Assign Escalations\">\n <div className=\"space-y-4\">\n {step === 'user' && (\n <>\n <p className=\"text-sm text-text-secondary\">\n Select a user to assign{' '}\n <span className=\"font-medium text-text-primary\">\n {selectedCount}\n </span>{' '}\n escalation(s) to:\n </p>\n\n <input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search by name or email...\"\n className=\"input text-xs w-full\"\n autoFocus\n />\n\n <div className=\"max-h-60 overflow-y-auto border border-surface-border rounded-lg divide-y divide-surface-border\">\n {usersLoading && (\n <p className=\"text-xs text-text-tertiary p-3\">\n Loading users...\n </p>\n )}\n {!usersLoading && filteredUsers.length === 0 && (\n <p className=\"text-xs text-text-tertiary p-3\">\n No users found\n </p>\n )}\n {filteredUsers.map((user) => (\n <button\n key={user.id}\n onClick={() => handleSelectUser(user)}\n className=\"w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors\"\n >\n <p className=\"text-xs font-medium text-text-primary\">\n {user.display_name || user.external_id}\n </p>\n {user.email && (\n <p className=\"text-[10px] text-text-tertiary\">\n {user.email}\n </p>\n )}\n </button>\n ))}\n </div>\n\n <div className=\"flex justify-end pt-2\">\n <button onClick={handleClose} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n </div>\n </>\n )}\n\n {step === 'duration' && selectedUser && (\n <>\n <p className=\"text-sm text-text-secondary\">\n Assign to{' '}\n <span className=\"font-medium text-text-primary\">\n {selectedUser.display_name || selectedUser.external_id}\n </span>{' '}\n for:\n </p>\n\n <select\n value={duration}\n onChange={(e) => { setDuration(e.target.value); setCustomMinutes(0); }}\n className=\"select w-full text-sm\"\n >\n {claimDurations.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n <option value=\"custom\">Other...</option>\n </select>\n {duration === 'custom' && (\n <CustomDurationPicker onChange={onCustomChange} autoFocus />\n )}\n\n <div className=\"flex justify-end gap-3 pt-2\">\n <button onClick={handleBack} className=\"btn-secondary text-xs\">\n Back\n </button>\n <button\n onClick={handleSubmit}\n disabled={isPending}\n className=\"btn-primary text-xs\"\n >\n {isPending ? 'Assigning...' : 'Assign'}\n </button>\n </div>\n </>\n )}\n </div>\n </Modal>\n );\n}\n","import { useState } from 'react';\nimport { Modal } from './Modal';\n\ninterface BulkTriageModalProps {\n open: boolean;\n onClose: () => void;\n selectedCount: number;\n onSubmit: (hint?: string) => void;\n isPending: boolean;\n}\n\nexport function BulkTriageModal({\n open,\n onClose,\n selectedCount,\n onSubmit,\n isPending,\n}: BulkTriageModalProps) {\n const [hint, setHint] = useState('');\n\n const handleSubmit = () => {\n onSubmit(hint || undefined);\n };\n\n return (\n <Modal open={open} onClose={onClose} title=\"Submit for AI Triage\">\n <div className=\"space-y-4\">\n <p className=\"text-sm text-text-secondary\">\n Submit <span className=\"font-medium text-text-primary\">{selectedCount}</span> escalation(s)\n for AI triage? The triage orchestrator will take over resolution.\n </p>\n\n <div>\n <label className=\"text-xs font-medium text-text-secondary block mb-1\">\n Triage hint <span className=\"text-text-tertiary\">(optional)</span>\n </label>\n <input\n type=\"text\"\n value={hint}\n onChange={(e) => setHint(e.target.value)}\n placeholder=\"e.g., image_orientation\"\n className=\"input text-xs font-mono w-full\"\n />\n <p className=\"text-[10px] text-text-tertiary mt-1\">\n Guides the triage workflow on what remediation to apply\n </p>\n </div>\n\n <div className=\"flex justify-end gap-3 pt-2\">\n <button onClick={onClose} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n <button\n onClick={handleSubmit}\n disabled={isPending}\n className=\"btn-primary text-xs\"\n >\n {isPending ? 'Submitting...' : 'Submit for Triage'}\n </button>\n </div>\n </div>\n </Modal>\n );\n}\n","import type { UseMutationResult } from '@tanstack/react-query';\n\n/**\n * Create a bulk-action handler that calls a mutation and clears selection on success.\n */\nfunction bulkHandler<TData, TVariables>(\n mutation: UseMutationResult<TData, Error, TVariables>,\n clearSelection: () => void,\n afterSuccess?: () => void,\n) {\n return (variables: TVariables) => {\n mutation.mutate(variables, {\n onSuccess: () => {\n clearSelection();\n afterSuccess?.();\n },\n });\n };\n}\n\nexport function createBulkHandlers(deps: {\n selectedIds: Set<string>;\n clearSelection: () => void;\n setPriority: UseMutationResult<{ updated: number }, Error, { ids: string[]; priority: 1 | 2 | 3 | 4 }>;\n bulkClaim: UseMutationResult<{ claimed: number; skipped: number }, Error, { ids: string[]; durationMinutes: number }>;\n bulkEscalate: UseMutationResult<{ updated: number }, Error, { ids: string[]; targetRole: string }>;\n bulkTriage: UseMutationResult<{ triaged: number }, Error, { ids: string[]; hint?: string }>;\n bulkAssign: UseMutationResult<{ assigned: number; skipped: number }, Error, { ids: string[]; targetUserId: string; durationMinutes: number }>;\n closeTriageModal: () => void;\n closeAssignModal: () => void;\n}) {\n const ids = () => [...deps.selectedIds];\n\n const handleSetPriority = (priority: 1 | 2 | 3 | 4) => {\n bulkHandler(\n deps.setPriority,\n deps.clearSelection,\n )({ ids: ids(), priority });\n };\n\n const handleBulkClaim = (durationMinutes: number) => {\n bulkHandler(\n deps.bulkClaim,\n deps.clearSelection,\n )({ ids: ids(), durationMinutes });\n };\n\n const handleBulkEscalate = (targetRole: string) => {\n bulkHandler(\n deps.bulkEscalate,\n deps.clearSelection,\n )({ ids: ids(), targetRole });\n };\n\n const handleBulkTriage = (hint?: string) => {\n bulkHandler(\n deps.bulkTriage,\n deps.clearSelection,\n deps.closeTriageModal,\n )({ ids: ids(), hint });\n };\n\n const handleBulkAssign = (targetUserId: string, durationMinutes: number) => {\n bulkHandler(\n deps.bulkAssign,\n deps.clearSelection,\n deps.closeAssignModal,\n )({ ids: ids(), targetUserId, durationMinutes });\n };\n\n return { handleSetPriority, handleBulkClaim, handleBulkEscalate, handleBulkTriage, handleBulkAssign };\n}\n","import { Modal } from '../../components/common/modal/Modal';\nimport { CustomDurationPicker } from '../../components/common/form/CustomDurationPicker';\nimport type { LTEscalationRecord } from '../../api/types';\n\ninterface ClaimModalProps {\n claimTarget: LTEscalationRecord | null;\n onClose: () => void;\n claimDuration: string;\n onDurationChange: (value: string) => void;\n claimDurations: Array<{ value: string; label: string }>;\n customClaimMinutes: number;\n onCustomClaimChange: (minutes: number) => void;\n onClaim: () => void;\n isPending: boolean;\n}\n\nexport function ClaimModal({\n claimTarget,\n onClose,\n claimDuration,\n onDurationChange,\n claimDurations,\n onCustomClaimChange,\n onClaim,\n isPending,\n}: ClaimModalProps) {\n return (\n <Modal\n open={!!claimTarget}\n onClose={onClose}\n title=\"Claim Escalation\"\n >\n <div className=\"space-y-4\">\n <p className=\"text-sm text-text-secondary\">\n Claim <span className=\"font-medium text-text-primary\">{claimTarget?.type}</span> for:\n </p>\n <select\n value={claimDuration}\n onChange={(e) => { onDurationChange(e.target.value); }}\n className=\"select w-full text-sm\"\n >\n {claimDurations.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n <option value=\"custom\">Other...</option>\n </select>\n {claimDuration === 'custom' && (\n <CustomDurationPicker onChange={onCustomClaimChange} autoFocus />\n )}\n <div className=\"flex justify-end gap-3 pt-2\">\n <button onClick={onClose} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n <button\n onClick={onClaim}\n className=\"btn-primary text-xs\"\n disabled={isPending}\n >\n {isPending ? 'Claiming...' : 'Claim'}\n </button>\n </div>\n </div>\n </Modal>\n );\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAuth } from '../../hooks/useAuth';\nimport { useEscalationListEvents } from '../../hooks/useEventHooks';\nimport {\n useEscalations,\n useEscalationTypes,\n useClaimEscalation,\n useSetEscalationPriority,\n useBulkClaimEscalations,\n useBulkAssignEscalations,\n useBulkEscalateToRole,\n useBulkTriageEscalations,\n} from '../../api/escalations';\nimport { useRoles } from '../../api/roles';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { BulkActionBar } from '../../components/common/modal/BulkActionBar';\nimport { BulkAssignModal } from '../../components/common/modal/BulkAssignModal';\nimport { BulkTriageModal } from '../../components/common/modal/BulkTriageModal';\nimport { useClaimDurations } from '../../hooks/useClaimDurations';\nimport { Lock } from 'lucide-react';\nimport { ESCALATION_COLUMNS, EscalationFilterBar } from './escalation-columns';\nimport { RowAction, RowActionGroup } from '../../components/common/layout/RowActions';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\nimport { createBulkHandlers } from './helpers';\nimport { ClaimModal } from './ClaimModal';\nimport type { LTEscalationRecord } from '../../api/types';\n\nexport function AvailableEscalationsPage() {\n useEscalationListEvents();\n const navigate = useNavigate();\n const { user, isSuperAdmin } = useAuth();\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { role: '', type: '', priority: '', status: 'available' },\n });\n const claimDurations = useClaimDurations();\n const [claimTarget, setClaimTarget] = useState<LTEscalationRecord | null>(null);\n const [claimDuration, setClaimDuration] = useState('30');\n const [customClaimMinutes, setCustomClaimMinutes] = useState(0);\n const onCustomClaimChange = useCallback((m: number) => setCustomClaimMinutes(m), []);\n const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());\n const [triageModalOpen, setTriageModalOpen] = useState(false);\n const [assignModalOpen, setAssignModalOpen] = useState(false);\n\n const claim = useClaimEscalation();\n const setPriority = useSetEscalationPriority();\n const bulkClaim = useBulkClaimEscalations();\n const bulkAssign = useBulkAssignEscalations();\n const bulkEscalate = useBulkEscalateToRole();\n const bulkTriage = useBulkTriageEscalations();\n const { data: rolesData } = useRoles();\n const { data: typesData } = useEscalationTypes();\n\n // Clear selections on filter/page changes\n useEffect(() => {\n setSelectedIds(new Set());\n }, [filters.role, filters.type, filters.priority, filters.status, pagination.page, pagination.pageSize]);\n\n const statusFilter = filters.status || '';\n const apiStatus = statusFilter === 'available' ? 'pending'\n : statusFilter === 'claimed' ? 'pending'\n : statusFilter === 'resolved' ? 'resolved'\n : undefined;\n\n const { data, isLoading, error: queryError, refetch, isFetching } = useEscalations({\n status: apiStatus,\n role: filters.role || undefined,\n type: filters.type || undefined,\n priority: filters.priority ? parseInt(filters.priority) : undefined,\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || undefined,\n order: sort.sort_by ? sort.order : undefined,\n });\n\n const now = new Date();\n const rawEscalations = data?.escalations ?? [];\n const escalations = statusFilter === 'available'\n ? rawEscalations.filter((e) => !e.assigned_to || !e.assigned_until || new Date(e.assigned_until) <= now)\n : statusFilter === 'claimed'\n ? rawEscalations.filter((e) => e.assigned_to && e.assigned_until && new Date(e.assigned_until) > now)\n : rawEscalations;\n const total = statusFilter === 'available' || statusFilter === 'claimed'\n ? escalations.length\n : data?.total ?? 0;\n const canBulkManage = isSuperAdmin || user?.roles.some((r) => r.type === 'admin');\n\n const selectedRoles = useMemo(() => {\n const roles = new Set<string>();\n for (const esc of escalations) {\n if (selectedIds.has(esc.id)) roles.add(esc.role);\n }\n return [...roles];\n }, [escalations, selectedIds]);\n\n const clearSelection = useCallback(() => setSelectedIds(new Set()), []);\n\n const handleClaim = () => {\n if (!claimTarget) return;\n const minutes = claimDuration === 'custom' ? customClaimMinutes : parseInt(claimDuration);\n if (!minutes || minutes <= 0) return;\n claim.mutate(\n { id: claimTarget.id, durationMinutes: minutes },\n {\n onSuccess: () => {\n setClaimTarget(null);\n navigate(`/escalations/detail/${claimTarget.id}`);\n },\n },\n );\n };\n\n const {\n handleSetPriority,\n handleBulkClaim,\n handleBulkEscalate,\n handleBulkTriage,\n handleBulkAssign,\n } = createBulkHandlers({\n selectedIds,\n clearSelection,\n setPriority,\n bulkClaim,\n bulkEscalate,\n bulkTriage,\n bulkAssign,\n closeTriageModal: () => setTriageModalOpen(false),\n closeAssignModal: () => setAssignModalOpen(false),\n });\n\n const toggleSelect = (id: string) => {\n const next = new Set(selectedIds);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n setSelectedIds(next);\n };\n\n const toggleAll = () => {\n if (selectedIds.size === escalations.length) {\n setSelectedIds(new Set());\n } else {\n setSelectedIds(new Set(escalations.map((e) => e.id)));\n }\n };\n\n const columns: Column<LTEscalationRecord>[] = [\n canBulkManage ? {\n key: 'select',\n label: (\n <input\n type=\"checkbox\"\n checked={escalations.length > 0 && selectedIds.size === escalations.length}\n onChange={toggleAll}\n className=\"rounded\"\n />\n ) as any,\n render: (row: LTEscalationRecord) => (\n <input\n type=\"checkbox\"\n checked={selectedIds.has(row.id)}\n onChange={(e) => {\n e.stopPropagation();\n toggleSelect(row.id);\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"rounded\"\n />\n ),\n className: 'w-10',\n } : {\n key: 'spacer',\n label: '',\n render: () => null,\n className: 'w-10',\n },\n ...ESCALATION_COLUMNS,\n {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n <RowAction\n icon={Lock}\n title=\"Claim escalation\"\n onClick={() => setClaimTarget(row)}\n />\n </RowActionGroup>\n ),\n className: 'w-16 text-right',\n },\n ];\n\n return (\n <div>\n <PageHeader title=\"All Escalations\" docsHash=\"#docs:dashboard.md:all-escalations\" />\n\n <EscalationFilterBar\n filters={filters}\n setFilter={setFilter}\n roles={rolesData?.roles ?? []}\n types={typesData?.types ?? []}\n showStatus\n actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/escalations?limit=${pagination.pageSize}&offset=${pagination.offset}${apiStatus ? `&status=${apiStatus}` : ''}${filters.role ? `&role=${filters.role}` : ''}${filters.type ? `&type=${filters.type}` : ''}${filters.priority ? `&priority=${filters.priority}` : ''}`}\n />\n }\n />\n\n {selectedIds.size > 0 && (\n <BulkActionBar\n selectedCount={selectedIds.size}\n onClearSelection={() => setSelectedIds(new Set())}\n onSetPriority={handleSetPriority}\n onClaim={handleBulkClaim}\n onAssign={() => setAssignModalOpen(true)}\n onEscalate={handleBulkEscalate}\n onTriage={() => setTriageModalOpen(true)}\n isPriorityPending={setPriority.isPending}\n isClaimPending={bulkClaim.isPending}\n isAssignPending={bulkAssign.isPending}\n isEscalatePending={bulkEscalate.isPending}\n isTriagePending={bulkTriage.isPending}\n availableRoles={rolesData?.roles ?? []}\n />\n )}\n\n {queryError && (\n <div className=\"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error\">\n {(queryError as Error).message === 'Session expired'\n ? 'Your session has expired. Please log in again.'\n : `Failed to load escalations: ${(queryError as Error).message}`}\n </div>\n )}\n\n <DataTable\n columns={columns}\n data={escalations}\n keyFn={(row) => row.id}\n onRowClick={(row) => navigate(`/escalations/detail/${row.id}`, { state: { from: '/escalations/available' } })}\n isLoading={isLoading}\n emptyMessage={queryError ? 'Unable to load data' : 'No available escalations'}\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 <ClaimModal\n claimTarget={claimTarget}\n onClose={() => setClaimTarget(null)}\n claimDuration={claimDuration}\n onDurationChange={(v) => { setClaimDuration(v); setCustomClaimMinutes(0); }}\n claimDurations={claimDurations}\n customClaimMinutes={customClaimMinutes}\n onCustomClaimChange={onCustomClaimChange}\n onClaim={handleClaim}\n isPending={claim.isPending}\n />\n\n <BulkTriageModal\n open={triageModalOpen}\n onClose={() => setTriageModalOpen(false)}\n selectedCount={selectedIds.size}\n onSubmit={handleBulkTriage}\n isPending={bulkTriage.isPending}\n />\n\n <BulkAssignModal\n open={assignModalOpen}\n onClose={() => setAssignModalOpen(false)}\n selectedCount={selectedIds.size}\n selectedRoles={selectedRoles}\n onSubmit={handleBulkAssign}\n isPending={bulkAssign.isPending}\n />\n </div>\n );\n}\n"],"names":["anyPending","props","BulkActionBar","disabled","claimDurations","useClaimDurations","aiEnabled","useAI","jsxDEV","e","PRIORITY_OPTIONS","opt","role","BulkAssignModal","open","onClose","selectedCount","selectedRoles","onSubmit","isPending","isSuperAdmin","useAuth","step","setStep","useState","selectedUser","setSelectedUser","search","setSearch","duration","setDuration","customMinutes","setCustomMinutes","onCustomChange","useCallback","m","roleFilter","usersData","usersLoading","useUsers","filteredUsers","useMemo","users","q","u","_a","_b","handleClose","handleSelectUser","user","handleBack","handleSubmit","minutes","Modal","Fragment","CustomDurationPicker","BulkTriageModal","hint","setHint","bulkHandler","mutation","clearSelection","afterSuccess","variables","createBulkHandlers","deps","ids","priority","durationMinutes","targetRole","targetUserId","ClaimModal","claimTarget","claimDuration","onDurationChange","onCustomClaimChange","onClaim","AvailableEscalationsPage","useEscalationListEvents","navigate","useNavigate","filters","setFilter","pagination","sort","setSort","useFilterParams","setClaimTarget","setClaimDuration","customClaimMinutes","setCustomClaimMinutes","selectedIds","setSelectedIds","triageModalOpen","setTriageModalOpen","assignModalOpen","setAssignModalOpen","claim","useClaimEscalation","setPriority","useSetEscalationPriority","bulkClaim","useBulkClaimEscalations","bulkAssign","useBulkAssignEscalations","bulkEscalate","useBulkEscalateToRole","bulkTriage","useBulkTriageEscalations","rolesData","useRoles","typesData","useEscalationTypes","useEffect","statusFilter","apiStatus","data","isLoading","queryError","refetch","isFetching","useEscalations","now","rawEscalations","escalations","total","canBulkManage","r","roles","esc","handleClaim","handleSetPriority","handleBulkClaim","handleBulkEscalate","handleBulkTriage","handleBulkAssign","toggleSelect","id","next","toggleAll","columns","row","ESCALATION_COLUMNS","RowActionGroup","RowAction","Lock","PageHeader","EscalationFilterBar","ListToolbar","DataTable","StickyPagination","v"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i}from"./vendor-query-DLp59M9_.js";import{u as d,j as n}from"./index-Da8R5Fn_.js";import{D as f,f as x}from"./constants-BHkpVaqx.js";function v(){const{data:e}=d();return i.useMemo(()=>{var o;return(((o=e==null?void 0:e.escalation)==null?void 0:o.claimDurations)??f).map(a=>({value:String(a),label:x(a)}))},[e])}const b=[{value:1,label:"minutes"},{value:60,label:"hours"}];function C({onChange:e,compact:r,autoFocus:o,"data-testid":a="custom-duration-input"}){const[u,l]=i.useState(""),[s,c]=i.useState(1);i.useEffect(()=>{const t=parseInt(u);e(t>0?t*s:0)},[u,s,e]);const m=r?"text-xs":"text-sm",p=r?"w-16":"w-20";return n.jsxDEV("div",{className:"flex items-center gap-2","data-testid":a,children:[n.jsxDEV("input",{type:"number",min:1,max:s===60?24:1440,value:u,onChange:t=>l(t.target.value),placeholder:s===60?"hrs":"min",className:`input ${m} ${p} text-center`,autoFocus:o,"data-testid":`${a}-quantity`},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CustomDurationPicker.tsx",lineNumber:37,columnNumber:7},this),n.jsxDEV("select",{value:s,onChange:t=>c(parseInt(t.target.value)),className:`select ${m} py-1`,"data-testid":`${a}-unit`,children:b.map(t=>n.jsxDEV("option",{value:t.value,children:t.label},t.value,!1,{fileName:"/app/dashboard/src/components/common/form/CustomDurationPicker.tsx",lineNumber:55,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CustomDurationPicker.tsx",lineNumber:48,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CustomDurationPicker.tsx",lineNumber:36,columnNumber:5},this)}export{C,v as u};
|
|
2
|
-
//# sourceMappingURL=CustomDurationPicker-B_Oxq_nK.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as k,c as S,j as e,D as _,d as E,J as P,N as C}from"./index-Da8R5Fn_.js";import{b as T,a as I}from"./vendor-query-DLp59M9_.js";import{b as K}from"./mcp-runs-BkRnXbcq.js";import{S as U}from"./StatusBadge-DNXTk01O.js";import{P as R}from"./PageHeader-BuUnJ5NY.js";import{C as $}from"./CopyableId-BhwdwAJN.js";import{C as x}from"./CollapsibleSection-4Eo3b5ha.js";import{u as J,E as L}from"./EventTable-BMk93q8A.js";import{L as q}from"./ListToolbar-CJEzypCM.js";import{S as B}from"./SwimlaneTimeline-BA4aFrHf.js";import{e as F,f as H}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-1qQ3NKfa.js";import"./FilterBar-CZGTOMoo.js";const Q={running:"in_progress",completed:"completed",failed:"failed"};function le(){var f,D;const{jobId:s}=F(),[p]=H(),l=p.get("namespace")||"longtail",N=T(),{data:a,isLoading:j,error:i,refetch:M,isFetching:V}=K(s,l),{data:n}=k(),{isCollapsed:u,toggle:o}=J("mcp-run-detail"),h=((f=n==null?void 0:n.telemetry)==null?void 0:f.traceUrl)??null,y=I.useCallback(c=>{!s||c.workflowId!==s||N.invalidateQueries({queryKey:["mcpRunExecution",s]})},[s,N]);if(S(`${C}.activity.>`,y),j)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:52,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:62,columnNumber:9},this),e.jsxDEV("div",{className:"mt-4 text-center py-8",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:(D=i==null?void 0:i.message)!=null&&D.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:64,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:(i==null?void 0:i.message)??"The run could not be resolved."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:61,columnNumber:7},this);const{events:d,summary:t}=a,b=d.find(c=>{var v;return c.category==="activity"&&((v=c.attributes.kind)==null?void 0:v.includes("completed"))}),w=(b==null?void 0:b.attributes.result)??null,m=a.result,g=(m==null?void 0:m.data)??m??null;return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution",actions:e.jsxDEV(q,{onRefresh:()=>M(),isFetching:V,apiPath:`/mcp-runs/${s}/execution?app_id=${l}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:92,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-raised border border-surface-border rounded-md p-5 mb-8",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4",children:[e.jsxDEV("h2",{className:"text-sm font-mono text-text-primary truncate flex-1",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:107,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-4 shrink-0",children:[e.jsxDEV(r,{label:"Tools",value:t.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:109,columnNumber:13},this),e.jsxDEV(r,{label:"System",value:t.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:110,columnNumber:13},this),t.child_workflows.total>0&&e.jsxDEV(r,{label:"Children",value:t.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:112,columnNumber:15},this),t.timers>0&&e.jsxDEV(r,{label:"Timers",value:t.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:114,columnNumber:36},this),t.signals>0&&e.jsxDEV(r,{label:"Signals",value:t.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,columnNumber:37},this),e.jsxDEV(U,{status:Q[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:116,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-6 gap-x-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:123,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:124,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:122,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:127,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:a.workflow_type||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:128,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:126,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:131,columnNumber:13},this),e.jsxDEV(_,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:132,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:130,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:135,columnNumber:13},this),a.start_time?e.jsxDEV(E,{date:a.start_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:137,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:138,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Completed"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:141,columnNumber:13},this),a.close_time?e.jsxDEV(E,{date:a.close_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:143,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:144,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:140,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:147,columnNumber:13},this),a.trace_id?e.jsxDEV($,{label:"",value:a.trace_id,href:h?h.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:149,columnNumber:15},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:156,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:121,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:104,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(x,{title:"Details",sectionKey:"details",isCollapsed:u("details"),onToggle:o,children:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[e.jsxDEV("div",{children:e.jsxDEV(P,{data:w??{},label:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:168,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,columnNumber:13},this),g!==null&&e.jsxDEV("div",{children:e.jsxDEV(P,{data:g,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:172,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:171,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:166,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:165,columnNumber:9},this),e.jsxDEV(x,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:u("timeline"),onToggle:o,children:e.jsxDEV(B,{events:d,outline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:180,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:179,columnNumber:9},this),e.jsxDEV(x,{title:"Events",sectionKey:"events",isCollapsed:u("events"),onToggle:o,children:e.jsxDEV(L,{events:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:185,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:163,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:91,columnNumber:5},this)}function r({label:s,value:p,muted:l}){return e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsxDEV("span",{className:"text-text-tertiary",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${l?"text-text-tertiary":"text-text-primary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:198,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:196,columnNumber:5},this)}export{le as McpRunDetailPage};
|
|
2
|
-
//# sourceMappingURL=McpRunDetailPage-B95c3bFw.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,D as _,f as y,C as U,u as z,a as J,J as M,S}from"./index-Da8R5Fn_.js";import{a as D}from"./vendor-query-DLp59M9_.js";import{a as q}from"./tasks-BLCzIHol.js";import{a as G}from"./useEventHooks-AwwZnweF.js";import{P as K}from"./PageHeaderWithStats-cQKaJBAM.js";import{S as I}from"./StatusBadge-DNXTk01O.js";import{W as Q}from"./WorkflowPill-BzhfqGa-.js";import{T as V}from"./TimestampCell-VDp4nVn6.js";import{L as k,e as X}from"./vendor-react-Co3Y8ikm.js";import{R as Y}from"./RolePill-DsYF2JN9.js";import{U as Z}from"./UserName-DCdb6xnk.js";import"./vendor-icons-1qQ3NKfa.js";import"./users-BtLRzvZE.js";const ee="bg-stripes animate-pulse opacity-70";function L(s){switch(s){case"completed":return"text-status-success";case"in_progress":case"pending":return"text-status-warning";case"needs_intervention":return"text-status-error";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function C(s){switch(s){case"resolved":return"text-status-success";case"pending":return"text-status-warning";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function se(s,t,n){return`${s==="task"?"Task":n?"Notification":"Escalation"} is ${t.replace(/_/g," ")}`}function ae(s,t){if(t)return ee;switch(s){case"completed":case"resolved":return"bg-status-success";case"pending":case"in_progress":case"needs_intervention":return"bg-status-warning";case"cancelled":return"bg-status-error";default:return"bg-text-tertiary"}}function te(s){return s.startsWith("mcp")||s.startsWith("Mcp")}function $(s){return!s.workflow_type}function R(s,t){if(s.length<=t)return s;const n=Math.floor((t-1)/2);return`${s.slice(0,n)}…${s.slice(s.length-n)}`}function re(s,t){const n=Date.now(),c=new Map,p=[];for(const a of t)a.task_id?(c.has(a.task_id)||c.set(a.task_id,[]),c.get(a.task_id).push(a)):p.push(a);const i=[...s].sort((a,m)=>new Date(a.created_at).getTime()-new Date(m.created_at).getTime()),l=[];for(const a of s)l.push(new Date(a.created_at).getTime()),a.completed_at&&l.push(new Date(a.completed_at).getTime());for(const a of t)l.push(new Date(a.created_at).getTime()),a.resolved_at&&l.push(new Date(a.resolved_at).getTime()),a.claimed_at&&l.push(new Date(a.claimed_at).getTime());if(l.length===0)return{lanes:[],timeMin:0,timeMax:1};const o=Math.min(...l),N=s.some(a=>!a.completed_at)||t.some(a=>!a.resolved_at)?Math.max(n,Math.max(...l)):Math.max(...l),b=N-o||1,d=a=>(a-o)/b*100,h=[];for(const a of i){const m=new Date(a.created_at).getTime(),f=a.completed_at?new Date(a.completed_at).getTime():n,x=!a.completed_at;h.push({kind:"task",id:a.id,label:a.workflow_type,taskId:a.id,startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:x,task:a});const g=(c.get(a.id)||[]).sort((r,u)=>new Date(r.created_at).getTime()-new Date(u.created_at).getTime());for(const r of g){const u=new Date(r.created_at).getTime(),v=r.resolved_at?new Date(r.resolved_at).getTime():n,P=!r.resolved_at;let w=null;if(r.claimed_at){const O=new Date(r.claimed_at).getTime(),F=v-u||1;w=(O-u)/F*100}h.push({kind:"escalation",id:r.id,label:r.role,taskId:a.id,startMs:u,endMs:v,startPct:d(u),widthPct:Math.max((v-u)/b*100,.5),durationMs:v-u,isOpen:P,escalation:r,claimPct:w})}}for(const a of p){const m=new Date(a.created_at).getTime(),f=a.resolved_at?new Date(a.resolved_at).getTime():n;let x=null;if(a.claimed_at){const g=new Date(a.claimed_at).getTime(),r=f-m||1;x=(g-m)/r*100}h.push({kind:"escalation",id:a.id,label:a.role,taskId:"",startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:!a.resolved_at,escalation:a,claimPct:x})}return{lanes:h,timeMin:o,timeMax:N}}function ie(s,t,n,c=500){const[p,i]=D.useState(0),l=D.useRef(null),o=n-t||1;D.useEffect(()=>{if(s===0)return;l.current=null,i(0);let N;const b=d=>{l.current===null&&(l.current=d);const h=d-l.current,a=Math.min(h/c,1),m=1-Math.pow(1-a,3);i(m),a<1&&(N=requestAnimationFrame(b))};return N=requestAnimationFrame(b),()=>cancelAnimationFrame(N)},[s,c]);const E=D.useCallback(N=>{const b=(N.startMs-t)/o,d=(N.endMs-t)/o;if(p<b)return{width:0,opacity:0};const h=d-b||.001,a=Math.min((p-b)/h,1),m=N.widthPct*a,f=Math.min(a/.1,1);return{width:m,opacity:f}},[p,t,o]);return{progress:p,animatedBar:E}}function H({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:4,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:3,columnNumber:5},this)}function A({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:13,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:12,columnNumber:5},this)}function W({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:22,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:21,columnNumber:5},this)}function B({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:30,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:29,columnNumber:5},this)}function le({allExpanded:s,onToggleAll:t}){return e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("button",{onClick:t,className:"text-[10px] text-accent hover:underline",children:s?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-4 ml-auto",children:[e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(H,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:18,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:19,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:17,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(A,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"AI Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:23,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(B,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(W,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:30,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Notification"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:31,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:29,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Done"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:35,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:38,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Active"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:39,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:37,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:16,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:10,columnNumber:5},this)}function oe({ticks:s}){return e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-52 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:s.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1 whitespace-nowrap",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:16,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:12,columnNumber:5},this)}function j({label:s,children:t}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:10,columnNumber:5},this)}function ne({traceId:s,href:t}){const[n,c]=D.useState(!1),p=l=>{l.stopPropagation(),navigator.clipboard.writeText(s),c(!0),setTimeout(()=>c(!1),1500)},i=l=>{l.stopPropagation(),t&&window.open(t,"_blank","noopener,noreferrer")};return e.jsxDEV("span",{className:"group/trace inline-flex items-center gap-1.5",children:[t&&e.jsxDEV("button",{onClick:i,title:"Open trace",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:"w-3 h-3 text-text-tertiary hover:text-accent",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-4.5-4.5h6m0 0v6m0-6L10.5 15"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:27,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:26,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("button",{onClick:p,title:"Copy trace ID",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:`w-3 h-3 transition-colors ${n?"text-status-success":"text-text-tertiary hover:text-accent"}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:n?e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:41,columnNumber:15},this):e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:42,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:31,columnNumber:7},this),e.jsxDEV("span",{className:"text-[11px] text-accent",children:"Trace Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:46,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:19,columnNumber:5},this)}function ce({task:s,traceUrl:t}){const n=s.completed_at?new Date(s.completed_at).getTime()-new Date(s.created_at).getTime():Date.now()-new Date(s.created_at).getTime();return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV(Q,{type:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Started",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:32,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:31,columnNumber:11},this),e.jsxDEV(j,{label:"Completed",children:s.completed_at?e.jsxDEV(V,{date:s.completed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:37,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"In progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:39,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:35,columnNumber:11},this),e.jsxDEV(j,{label:"Duration",children:e.jsxDEV(_,{ms:n,className:"font-mono text-sm"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:44,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:30,columnNumber:9},this),s.milestones.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Milestones"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:50,columnNumber:13},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:s.milestones.map((c,p)=>e.jsxDEV("span",{className:"px-2 py-0.5 text-[10px] font-mono bg-accent-faint/50 rounded text-text-secondary",children:[c.name,": ",String(c.value)]},p,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:55,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV(k,{to:`/workflows/tasks/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Task Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:75,columnNumber:9},this),s.trace_id&&e.jsxDEV(ne,{traceId:s.trace_id,href:t?t.replace("{traceId}",s.trace_id):void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:82,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:68,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:22,columnNumber:5},this)}function me({escalation:s}){const t=new Date(s.created_at).getTime(),n=s.claimed_at?new Date(s.claimed_at).getTime()-t:null,c=s.resolved_at?new Date(s.resolved_at).getTime()-t:null;return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV(Y,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:29,columnNumber:11},this),s.type&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:[s.type,s.subtype?` / ${s.subtype}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:31,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Created",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:40,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:39,columnNumber:11},this),e.jsxDEV(j,{label:"Claimed",children:s.claimed_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.claimed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:46,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:["after ",e.jsxDEV(_,{ms:n},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:48,columnNumber:25},this),s.assigned_to&&e.jsxDEV(e.Fragment,{children:[" ","by"," ",e.jsxDEV("span",{className:"text-text-secondary font-medium",children:e.jsxDEV(Z,{userId:s.assigned_to},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:53,columnNumber:25},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:52,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:50,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:47,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:45,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Unclaimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:60,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV(j,{label:"Resolved",children:s.resolved_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.resolved_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:67,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:[e.jsxDEV(_,{ms:c},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:69,columnNumber:19},this)," total"]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:68,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:66,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:73,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:64,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:38,columnNumber:9},this),s.description&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:80,columnNumber:13},this),e.jsxDEV("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[s.workflow_id&&e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:93,columnNumber:11},this),e.jsxDEV(k,{to:`/escalations/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Escalation Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:91,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:24,columnNumber:5},this)}function pe({lane:s,ticks:t,isExpanded:n,onToggle:c,anim:p,animDone:i,traceUrl:l}){var d,h;const o=s.kind==="task",E=o?s.task.status:s.escalation.status,N=ae(E,s.isOpen),b=p.opacity>0;return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border cursor-pointer hover:bg-surface-sunken/40 transition-colors",onClick:c,children:[e.jsxDEV("div",{className:`w-52 shrink-0 py-3 pr-4 flex items-center gap-2 ${o?"":"pl-6"}`,style:{opacity:b?1:0,transition:"opacity 0.15s ease-out"},children:[o?te(s.task.workflow_type)?e.jsxDEV(A,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:59,columnNumber:15},this):e.jsxDEV(H,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:63,columnNumber:15},this):$(s.escalation)?e.jsxDEV(W,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:68,columnNumber:13},this):e.jsxDEV(B,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:se(s.kind,o?s.task.status:s.escalation.status,!o&&$(s.escalation)),children:o?R(s.label,24):R(((d=s.escalation)==null?void 0:d.role)??s.label,20)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:76,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:51,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[t.map(a=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${a.pct}%`}},a.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:90,columnNumber:13},this)),e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm ${n?`${N} ring-2 ring-accent ring-offset-1`:`${N} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:b?`${Math.max(p.width,.3)}%`:"0%",minWidth:b?"4px":"0px",opacity:p.opacity},title:`${s.label} — ${y(s.durationMs)} — ${new Date(s.startMs).toLocaleTimeString()}`,children:[p.width>8&&i&&e.jsxDEV("span",{className:"absolute inset-0 flex items-center px-1.5 text-[9px] font-mono text-white truncate",children:y(s.durationMs)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:114,columnNumber:15},this),s.claimPct!=null&&i&&e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px border-l border-dashed border-white/70",style:{left:`${s.claimPct}%`},title:(h=s.escalation)!=null&&h.assigned_to?`Claimed by ${s.escalation.assigned_to}`:"Claimed",children:e.jsxDEV("div",{className:"absolute -top-1 -left-[3px] w-[7px] h-[7px] rounded-full bg-white border border-amber-600"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:131,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:121,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:98,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:46,columnNumber:7},this),e.jsxDEV(U,{open:n,children:e.jsxDEV("div",{className:"py-4 px-6 pl-52 border-b border-surface-border bg-surface-sunken/20",children:o&&s.task?e.jsxDEV(ce,{task:s.task,traceUrl:l},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:142,columnNumber:13},this):s.escalation?e.jsxDEV(me,{escalation:s.escalation},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:144,columnNumber:13},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:140,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:139,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:44,columnNumber:5},this)}function de({tasks:s,escalations:t,traceUrl:n}){const[c,p]=D.useState(new Set),{lanes:i,timeMin:l,timeMax:o}=D.useMemo(()=>re(s,t),[s,t]),E=o-l||1,{progress:N,animatedBar:b}=ie(i.length,l,o);if(i.length===0)return e.jsxDEV("p",{className:"text-sm text-text-tertiary py-8 text-center",children:"No events in this process."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:27,columnNumber:7},this);const d=5,h=Array.from({length:d+1},(r,u)=>({pct:u/d*100,label:y(Math.round(u/d*E))})),a=r=>{p(u=>{const v=new Set(u);return v.has(r)?v.delete(r):v.add(r),v})},m=i.map(r=>r.id),f=m.length>0&&m.every(r=>c.has(r)),x=()=>{p(f?new Set:new Set(m))},g=N>=1;return e.jsxDEV("div",{className:"py-2",children:[e.jsxDEV(le,{allExpanded:f,onToggleAll:x},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:60,columnNumber:7},this),e.jsxDEV(oe,{ticks:h},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:61,columnNumber:7},this),i.map(r=>e.jsxDEV(pe,{lane:r,ticks:h,isExpanded:c.has(r.id),onToggle:()=>a(r.id),anim:b(r),animDone:g,traceUrl:n},`${r.kind}-${r.id}`,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:64,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:59,columnNumber:5},this)}function T(s){if(!s)return null;try{return JSON.parse(s)}catch{return null}}function ue(s){return s.length===0?null:[...s].sort((t,n)=>new Date(t.created_at).getTime()-new Date(n.created_at).getTime())[0]}function ke(){var f;const{originId:s}=X();G(s);const{data:t,isLoading:n}=q(s??""),{data:c}=z(),p=((f=c==null?void 0:c.telemetry)==null?void 0:f.traceUrl)??null,i=(t==null?void 0:t.tasks)??[],l=(t==null?void 0:t.escalations)??[],o=D.useMemo(()=>ue(i),[i]),E=D.useMemo(()=>T(o==null?void 0:o.envelope),[o]),N=D.useMemo(()=>{if(o!=null&&o.data)return T(o.data);const x=i.filter(g=>g.status==="completed"&&g.data).sort((g,r)=>new Date(r.completed_at).getTime()-new Date(g.completed_at).getTime());return x.length>0?T(x[0].data):null},[o,i]),b=D.useMemo(()=>i.length>0&&i.some(x=>x.status!=="completed"&&x.status!=="cancelled"),[i]),d=D.useMemo(()=>{const x=i.filter(u=>u.status==="completed").length,g=i.filter(u=>u.status==="needs_intervention").length,r=l.filter(u=>u.status==="resolved").length;return{tasks:i.length,completed:x,escalated:g,escalations:l.length,resolved:r}},[i,l]),h=D.useMemo(()=>{if(i.length===0&&l.length===0)return null;const g=[...i.map(w=>w.created_at),...l.map(w=>w.created_at)].sort()[0],r=i.every(w=>w.status==="completed"||w.status==="cancelled"),u=l.every(w=>w.status==="resolved"),v=i.length>0&&r&&u,P=v?[...i.map(w=>w.completed_at),...l.map(w=>w.resolved_at)].filter(Boolean).sort().pop()??null:null;return{startIso:g,endIso:P,isFinished:v,elapsed:J(g,P)}},[i,l]),a=D.useMemo(()=>{const x=[];return h&&x.push({label:h.isFinished?"Completed":"Running",value:h.elapsed,dotClass:h.isFinished?"bg-status-success":"bg-status-pending animate-pulse"}),x.push({label:"Tasks",value:`${d.completed}/${d.tasks}`},{label:"Escalations",value:`${d.resolved}/${d.escalations}`}),x},[h,d]);if(n&&i.length===0)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:96,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:97,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:95,columnNumber:7},this);const m=E||N||b;return e.jsxDEV("div",{children:[e.jsxDEV(K,{title:"Process Detail",docsHash:"#docs:dashboard.md:process-detail",subtitle:s,stats:a},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:106,columnNumber:7},this),m&&e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-10",children:[e.jsxDEV("div",{children:E?e.jsxDEV(M,{data:E,label:"Input",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:117,columnNumber:15},this):e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:120,columnNumber:17},this),e.jsxDEV("div",{className:"font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-tertiary italic mt-2",children:"Waiting for task..."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:121,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:119,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:115,columnNumber:11},this),e.jsxDEV("div",{children:N?e.jsxDEV(M,{data:N,label:"Output",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:129,columnNumber:15},this):b?e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Output"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:132,columnNumber:17},this),e.jsxDEV("div",{className:"flex items-center gap-2 font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-secondary mt-2",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-pending animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:134,columnNumber:19},this),"Processing..."]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:133,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:131,columnNumber:15},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:127,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:114,columnNumber:9},this),e.jsxDEV(S,{className:"mb-6",children:"Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:143,columnNumber:7},this),e.jsxDEV(de,{tasks:i,escalations:l,traceUrl:p},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:145,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:105,columnNumber:5},this)}export{ke as ProcessDetailPage};
|
|
2
|
-
//# sourceMappingURL=ProcessDetailPage-DgeXrHon.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,S as D,k as J}from"./index-Da8R5Fn_.js";import{a as p}from"./vendor-query-DLp59M9_.js";import{l as L,n as R,o as z,u as $}from"./yaml-workflows-xOJxyEsQ.js";import{a as F,d as q}from"./useYamlActivityEvents-9Zs0PXY6.js";import{u as B}from"./useFilterParams-CGRYFw_A.js";import{u as H}from"./useExpandedRows-Cg9iq6Vy.js";import{P}from"./PageHeader-BuUnJ5NY.js";import{F as U,a as G,b as C}from"./FilterBar-CZGTOMoo.js";import{E as W}from"./EmptyState-Bk3_P-b8.js";import{R as _}from"./RunAsSelector-ZLKGTYP_.js";import{b as Y,T as X}from"./ToolPill-BNaTJhu8.js";import{X as O,a0 as K,a7 as Q,P as I,l as Z,f as ee,a1 as se,W as oe,c as re}from"./vendor-icons-1qQ3NKfa.js";import{L as te,c as ae}from"./vendor-react-Co3Y8ikm.js";import{d as S,C as le}from"./helpers-CQZkvg6D.js";import{S as M}from"./StatusBadge-DNXTk01O.js";import{S as ne}from"./ServerName-B5-E7gZD.js";import"./BotPicker-DgbzCesR.js";import"./bots-Ci5aCzDK.js";import"./TimeAgo-Cx1kK1id.js";const T={mcp:{border:"border-blue-500",text:"text-blue-500",icon:"MCP"},db:{border:"border-blue-500",text:"text-blue-500",icon:"DB"},llm:{border:"border-violet-500",text:"text-violet-500",icon:"LLM"},transform:{border:"border-emerald-500",text:"text-emerald-500",icon:"Map"}};function ie({steps:o,manifest:i,isComplete:s}){const t=i.filter(r=>r.type==="worker"),m=t.length,l=t.map(r=>{const n=o.find(c=>c.activityId===r.activity_id),b=r.tool_source||"mcp",x=T[b]||T.mcp;return{activityId:r.activity_id,title:r.title||r.mcp_tool_name||r.activity_id,toolName:r.mcp_tool_name,colors:x,status:(n==null?void 0:n.status)||"pending",error:n==null?void 0:n.error}});return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[11px] text-text-secondary mb-3",children:s?`All ${m} steps completed`:`Running step ${l.filter(r=>r.status==="completed").length+1} of ${m}...`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:41,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-0",children:l.map((r,n)=>{const b=n===l.length-1;return e.jsxDEV("div",{className:"flex items-stretch gap-2",children:[e.jsxDEV("div",{className:"flex flex-col items-center w-4 shrink-0",children:[e.jsxDEV("span",{className:`w-2.5 h-2.5 rounded-full shrink-0 border-2 transition-colors ${r.status==="completed"?"bg-status-success border-status-success":r.status==="running"?`${r.colors.border} bg-transparent animate-pulse`:r.status==="failed"?"bg-status-error border-status-error":"bg-surface-sunken border-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:52,columnNumber:17},this),!b&&e.jsxDEV("span",{className:`w-px flex-1 transition-colors ${r.status==="completed"?"bg-status-success/30":"bg-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:59,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:51,columnNumber:15},this),e.jsxDEV("div",{className:b?"":"pb-3",children:[e.jsxDEV("p",{className:`text-[11px] font-medium ${r.status==="running"?"text-text-primary":r.status==="completed"?"text-text-secondary":r.status==="failed"?"text-status-error":"text-text-tertiary"}`,children:r.title},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:65,columnNumber:17},this),r.toolName&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary font-mono",children:r.toolName},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:72,columnNumber:19},this),r.error&&e.jsxDEV("p",{className:"text-[9px] text-status-error mt-0.5",children:r.error},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:75,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:64,columnNumber:15},this)]},r.activityId,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:50,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:46,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:40,columnNumber:5},this)}function me({workflow:o,onClose:i}){const s=L(),[t,m]=p.useState(!1),[l,r]=p.useState({}),[n,b]=p.useState(""),[x,c]=p.useState(""),[f,g]=p.useState(""),[w,k]=p.useState(null),[y,v]=p.useState(null),{steps:E,isComplete:u}=F(w);p.useEffect(()=>{k(null),v(null),c(""),s.reset();const N=Y(o.input_schema);r(N),b(JSON.stringify(N,null,2)),m(!1)},[o.id]),p.useEffect(()=>{if(u&&w){const N=w,h=setTimeout(()=>{v({jobId:N}),k(null)},800);return()=>clearTimeout(h)}},[u,w]);const a=()=>{if(!t)b(JSON.stringify(l,null,2));else try{r(JSON.parse(n))}catch{}m(!t)},d=async()=>{c(""),v(null);let N;if(t)try{N=JSON.parse(n)}catch{c("Invalid JSON");return}else N={...l};try{const h=await s.mutateAsync({id:o.id,data:N,sync:!1,...f?{execute_as:f}:{}});h.job_id&&k(h.job_id)}catch{}},V=!!w,A=o.app_id||"longtail";return e.jsxDEV("div",{className:"border-l border-surface-border bg-surface-raised flex flex-col h-full",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0",children:[e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("p",{className:"text-xs font-medium text-text-primary truncate",children:o.app_id},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:161,columnNumber:11},this),e.jsxDEV("code",{className:"text-[11px] font-mono text-accent truncate block",children:o.graph_topic},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:162,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:160,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{V||i()},className:"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2",children:e.jsxDEV(O,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:164,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:159,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-4",children:V?e.jsxDEV(ie,{steps:E,manifest:o.activity_manifest,isComplete:u},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:172,columnNumber:11},this):y?e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-success",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("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"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:177,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:176,columnNumber:15},this),e.jsxDEV("p",{className:"text-xs font-medium text-status-success",children:"Workflow completed"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:179,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:175,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV(te,{to:`/mcp/executions/${encodeURIComponent(y.jobId)}?namespace=${encodeURIComponent(A)}`,className:"inline-flex items-center gap-1.5 text-xs text-accent hover:underline",children:[e.jsxDEV(K,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:186,columnNumber:17},this)," View execution"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:182,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>v(null),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(Q,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:192,columnNumber:17},this)," Run again"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:188,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:181,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:174,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(_,{selected:f,onChange:g},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:198,columnNumber:13},this),o.description&&e.jsxDEV("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:o.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:201,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-1",children:[e.jsxDEV("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Input"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:207,columnNumber:17},this),e.jsxDEV("button",{onClick:a,className:"text-[10px] text-accent hover:underline",children:t?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:208,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:206,columnNumber:15},this),t?e.jsxDEV("textarea",{value:n,onChange:N=>b(N.target.value),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y",rows:6,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:214,columnNumber:17},this):e.jsxDEV("div",{className:"space-y-3 max-h-[300px] overflow-y-auto",children:[Object.entries(l).map(([N,h])=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:N},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:225,columnNumber:23},this),typeof h=="boolean"?e.jsxDEV("select",{value:String(h),onChange:j=>r({...l,[N]:j.target.value==="true"}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:232,columnNumber:27},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:233,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:227,columnNumber:25},this):typeof h=="object"?e.jsxDEV("textarea",{value:JSON.stringify(h,null,2),onChange:j=>{try{r({...l,[N]:JSON.parse(j.target.value)})}catch{}},className:"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:236,columnNumber:25},this):e.jsxDEV("input",{type:typeof h=="number"?"number":"text",value:String(h??""),onChange:j=>r({...l,[N]:typeof h=="number"?Number(j.target.value):j.target.value}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:242,columnNumber:25},this)]},N,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:224,columnNumber:21},this)),Object.keys(l).length===0&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:"No input fields defined"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:252,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:222,columnNumber:17},this),x&&e.jsxDEV("p",{className:"text-[11px] text-status-error mt-1",children:x},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:256,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:205,columnNumber:13},this),s.isError&&e.jsxDEV("div",{className:"bg-status-error/10 border border-status-error/20 rounded-md px-3 py-2",children:e.jsxDEV("p",{className:"text-[11px] text-status-error",children:s.error instanceof Error?s.error.message:"Invocation failed"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:261,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:260,columnNumber:15},this),e.jsxDEV("button",{onClick:d,disabled:s.isPending,className:"btn-primary text-xs disabled:opacity-50 inline-flex items-center gap-1.5",children:s.isPending?"Starting...":e.jsxDEV(e.Fragment,{children:[e.jsxDEV(I,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:271,columnNumber:61},this)," Run"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:271,columnNumber:59},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:266,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:197,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:170,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:157,columnNumber:5},this)}function ce({cronInput:o,setCronInput:i,setCron:s,hasCronSchedule:t,onSave:m,onClear:l}){return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:24,columnNumber:9},this),e.jsxDEV("div",{className:"flex gap-3 items-start",children:[e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV("input",{type:"text",value:o,onChange:r=>{i(r.target.value),s.reset()},placeholder:"0 */6 * * *",className:"input-json w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:27,columnNumber:13},this),o.trim()&&S(o.trim())&&e.jsxDEV("p",{className:"text-xs text-text-secondary mt-1.5",children:S(o.trim())},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:38,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV("button",{onClick:m,disabled:s.isPending,className:"btn-primary text-xs shrink-0",children:s.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:43,columnNumber:11},this),t&&e.jsxDEV("button",{onClick:l,disabled:s.isPending,className:"btn-ghost text-xs text-status-error shrink-0",children:"Clear"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:51,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:25,columnNumber:9},this),s.isSuccess&&e.jsxDEV("p",{className:"text-[10px] text-status-success mt-2",children:"Schedule updated"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:62,columnNumber:11},this),s.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:23,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg p-4",children:[e.jsxDEV(D,{className:"mb-2",children:"Common Patterns"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:71,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1.5",children:le.map(([r,n])=>e.jsxDEV("button",{type:"button",onClick:()=>{i(r),s.reset()},className:"flex items-center gap-2 text-left py-0.5 group",children:[e.jsxDEV("code",{className:"font-mono text-[11px] text-accent group-hover:text-accent-hover",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:83,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:86,columnNumber:15},this)]},r,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:74,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:72,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:70,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:22,columnNumber:5},this)}function de({workflow:o,onClose:i}){const s=R(),t=z(),[m,l]=p.useState(""),[r,n]=p.useState(""),[b,x]=p.useState(!1),[c,f]=p.useState({}),[g,w]=p.useState("{}");p.useEffect(()=>{l(o.cron_schedule??""),n(o.execute_as??""),s.reset(),t.reset();const u=o.cron_envelope||{},a=Object.keys(u).length>0?u:Y(o.input_schema);f(a),w(JSON.stringify(a,null,2)),x(!1)},[o.id]);const k=()=>{if(!b)w(JSON.stringify(c,null,2));else try{f(JSON.parse(g))}catch{}x(!b)},y=()=>{let u;if(b)try{u=JSON.parse(g)}catch{return}else u={...c};s.mutate({id:o.id,cron_schedule:m.trim(),cron_envelope:Object.keys(u).length>0?u:null,execute_as:r||null})},v=()=>{t.mutate(o.id,{onSuccess:()=>{l("")}})},E={isPending:s.isPending||t.isPending,isSuccess:s.isSuccess||t.isSuccess,error:s.error||t.error,reset:()=>{s.reset(),t.reset()}};return e.jsxDEV("div",{className:"border-l border-surface-border bg-surface-raised flex flex-col h-full",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0",children:[e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("p",{className:"text-xs font-medium text-text-primary truncate",children:"Cron Schedule"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:87,columnNumber:11},this),e.jsxDEV("code",{className:"text-[11px] font-mono text-accent truncate block",children:o.graph_topic},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:86,columnNumber:9},this),e.jsxDEV("button",{onClick:i,className:"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2",children:e.jsxDEV(O,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:91,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:90,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:85,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-4",children:[e.jsxDEV(_,{selected:r,onChange:n},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:97,columnNumber:9},this),e.jsxDEV(ce,{cronInput:m,setCronInput:l,setCron:E,hasCronSchedule:!!o.cron_schedule,onSave:y,onClear:v},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:99,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-1",children:[e.jsxDEV(D,{children:"Default Input"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("button",{onClick:k,className:"text-[10px] text-accent hover:underline",children:b?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:112,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:110,columnNumber:11},this),b?e.jsxDEV("textarea",{value:g,onChange:u=>w(u.target.value),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y",rows:6,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:118,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-3 max-h-[200px] overflow-y-auto",children:[Object.entries(c).map(([u,a])=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:u},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:129,columnNumber:19},this),typeof a=="boolean"?e.jsxDEV("select",{value:String(a),onChange:d=>f({...c,[u]:d.target.value==="true"}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:136,columnNumber:23},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:137,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:131,columnNumber:21},this):typeof a=="object"?e.jsxDEV("textarea",{value:JSON.stringify(a,null,2),onChange:d=>{try{f({...c,[u]:JSON.parse(d.target.value)})}catch{}},className:"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:140,columnNumber:21},this):e.jsxDEV("input",{type:typeof a=="number"?"number":"text",value:String(a??""),onChange:d=>f({...c,[u]:typeof a=="number"?Number(d.target.value):d.target.value}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:146,columnNumber:21},this)]},u,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:128,columnNumber:17},this)),Object.keys(c).length===0&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:"No input fields defined"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:156,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:126,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:109,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:83,columnNumber:5},this)}function ue(o){const i=new Map;for(const s of o){const t=i.get(s.app_id)??[];t.push(s),i.set(s.app_id,t)}return[...i.entries()].map(([s,t])=>{var x;const m={active:0,deployed:1,draft:2,archived:3},l=t.reduce((c,f)=>(m[f.status]??9)<(m[c]??9)?f.status:c,t[0].status),r=t.reduce((c,f)=>f.updated_at>c?f.updated_at:c,t[0].updated_at),n=t.reduce((c,f)=>{const g=parseInt(f.app_version||"0",10);return g>c?g:c},0),b=((x=t.find(c=>c.set_id))==null?void 0:x.set_id)||null;return{appId:s,workflows:t,toolCount:t.length,status:l,updatedAt:r,appVersion:String(n),setId:b}})}function pe(o,i){if(!i)return!0;const s=i.toLowerCase();return o.appId.toLowerCase().includes(s)?!0:o.workflows.some(t=>{var m,l;return t.graph_topic.toLowerCase().includes(s)||((m=t.name)==null?void 0:m.toLowerCase().includes(s))||((l=t.description)==null?void 0:l.toLowerCase().includes(s))})}function fe(o,i){if(!i)return o;const s=i.toLowerCase();return o.filter(t=>{var m,l;return t.graph_topic.toLowerCase().includes(s)||((m=t.name)==null?void 0:m.toLowerCase().includes(s))||((l=t.description)==null?void 0:l.toLowerCase().includes(s))})}function be({wf:o,onTry:i,onCron:s}){const t=o.status==="active",m=!!o.cron_schedule;return e.jsxDEV("tr",{onClick:t?i:void 0,className:`group/row hover:bg-surface-hover/50 transition-colors border-b border-surface-border/15 ${t?"cursor-pointer":""}`,children:[e.jsxDEV("td",{className:"pl-14 pr-6 py-2.5",children:[e.jsxDEV(X,{name:o.graph_topic,size:"md"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:25,columnNumber:9},this),o.description&&e.jsxDEV("p",{className:"text-[11px] leading-snug text-text-quaternary mt-0.5",children:o.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-20 text-[10px] text-text-quaternary font-mono whitespace-nowrap",children:["v",o.content_version]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:32,columnNumber:7},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-28 whitespace-nowrap",children:e.jsxDEV(M,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:38,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:37,columnNumber:7},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-16",children:e.jsxDEV("div",{className:"flex items-center justify-end gap-1.5",children:[t&&e.jsxDEV("button",{onClick:l=>{l.stopPropagation(),i()},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"Test tool",children:e.jsxDEV(I,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:50,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:45,columnNumber:13},this),e.jsxDEV("button",{onClick:l=>{l.stopPropagation(),s()},className:m?"text-status-success":"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:m?`Cron: ${o.cron_schedule}`:"Schedule cron",children:e.jsxDEV(se,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:60,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:53,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:43,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:42,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:19,columnNumber:5},this)}function Ne({server:o,expanded:i,onToggle:s,onTryTool:t,onWorkbench:m,onCron:l,visibleTools:r}){return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("tr",{onClick:s,className:"group/row border-b border-surface-border/50 transition-colors duration-100 cursor-pointer row-hover",children:[e.jsxDEV("td",{className:"px-6 py-2.5",children:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:`transition-transform duration-150 ${i?"rotate-90":""} text-text-tertiary`,children:e.jsxDEV(Z,{size:14},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:97,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:96,columnNumber:13},this),e.jsxDEV("span",{className:"flex items-center gap-1.5",children:[e.jsxDEV(ne,{name:o.appId,short:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:100,columnNumber:15},this),e.jsxDEV("sup",{className:"text-[9px] font-normal text-accent/70",children:o.toolCount},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:101,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:99,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:94,columnNumber:9},this),e.jsxDEV("td",{className:"px-4 py-2.5 text-[10px] text-text-quaternary font-mono whitespace-nowrap",children:["v",o.appVersion]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:107,columnNumber:9},this),e.jsxDEV("td",{className:"px-4 py-2.5 whitespace-nowrap",children:e.jsxDEV(M,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:113,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:112,columnNumber:9},this),e.jsxDEV("td",{className:"px-4 py-2.5 w-16",children:e.jsxDEV("div",{className:"flex items-center justify-end gap-1.5",children:o.setId&&e.jsxDEV("button",{onClick:n=>{n.stopPropagation(),m()},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"Open workbench",children:e.jsxDEV(ee,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:125,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:120,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:118,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:117,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:89,columnNumber:7},this),i&&r.map(n=>e.jsxDEV(be,{wf:n,onTry:()=>t(n),onCron:()=>l(n)},n.id,!1,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:133,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/yaml-workflow-rows.tsx",lineNumber:88,columnNumber:5},this)}function Ie(){const o=J(),i=ae(),{filters:s,setFilter:t}=B({filters:{status:"",server:"",search:""}}),{data:m,isLoading:l}=$({status:s.status||void 0,app_id:s.server||void 0,search:s.search||void 0,limit:200,offset:0}),r=(m==null?void 0:m.workflows)??[],{data:n}=q({limit:100}),b=p.useMemo(()=>{const a=new Map;for(const d of(n==null?void 0:n.sets)??[])d.source_workflow_id&&a.set(d.id,d.source_workflow_id);return a},[n==null?void 0:n.sets]),x=p.useMemo(()=>ue(r),[r]),c=p.useMemo(()=>[...new Set(r.map(d=>d.app_id))].sort().map(d=>({value:d,label:d})),[r]),f=p.useMemo(()=>s.search?x.filter(a=>pe(a,s.search)):x,[x,s.search]),{expandedIds:g,toggle:w}=H("lt:expanded:yaml-workflows"),[k,y]=p.useState(null),[v,E]=p.useState(null),u=k||v;return l?e.jsxDEV("div",{children:[e.jsxDEV(P,{title:"MCP Pipeline Tools",docsHash:"#docs:dashboard.md:mcp-pipeline-tools"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:73,columnNumber:9},this),e.jsxDEV("div",{className:"animate-pulse space-y-0",children:Array.from({length:4}).map((a,d)=>e.jsxDEV("div",{className:"h-14 border-b last:border-b-0 px-6 flex items-center",children:e.jsxDEV("div",{className:"h-3 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:77,columnNumber:15},this)},d,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:76,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:74,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:72,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(P,{title:"MCP Pipeline Tools",docsHash:"#docs:dashboard.md:mcp-pipeline-tools",actions:o?e.jsxDEV("button",{onClick:()=>i("/mcp/queries/new"),className:"btn-primary text-xs",children:"Design Pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:91,columnNumber:11},this):void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:87,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed",children:"Deterministic tools compiled from dynamic MCP executions. Each tool is a YAML DAG that the router discovers and invokes automatically."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:97,columnNumber:7},this),e.jsxDEV(U,{children:[e.jsxDEV(G,{label:"Search",value:s.search,onChange:a=>t("search",a),placeholder:"Server or tool name…"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:102,columnNumber:9},this),c.length>1&&e.jsxDEV(C,{label:"Server",value:s.server,onChange:a=>t("server",a),options:c},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:109,columnNumber:11},this),e.jsxDEV(C,{label:"Status",value:s.status,onChange:a=>t("status",a),options:[{value:"draft",label:"Draft"},{value:"deployed",label:"Deployed"},{value:"active",label:"Active"},{value:"archived",label:"Archived"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:116,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:101,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-0",children:[e.jsxDEV("div",{className:`${u?"flex-1 min-w-0":"w-full"} transition-all`,children:f.length===0?o?e.jsxDEV("div",{className:"cursor-pointer",onClick:()=>i("/mcp/queries/new"),children:e.jsxDEV(W,{icon:oe,title:"No pipelines yet",description:"Click to open the MCP Tool Designer and create your first deterministic tool."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:134,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:133,columnNumber:15},this):e.jsxDEV(W,{icon:re,title:"No pipelines yet",description:"Deploy a YAML DAG via the API to create your first deterministic tool."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:137,columnNumber:15},this):e.jsxDEV("table",{className:"w-full",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b",children:[e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Server / Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:143,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-20",children:"Version"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:146,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:149,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface w-16"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:152,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:142,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:141,columnNumber:15},this),e.jsxDEV("tbody",{children:f.map(a=>e.jsxDEV(Ne,{server:a,expanded:g.has(a.appId),onToggle:()=>w(a.appId),onTryTool:d=>{E(null),y(d)},onWorkbench:()=>{if(a.setId){const d=b.get(a.setId);d&&i(`/mcp/queries/${d}?mode=plan&set_id=${a.setId}&step=2`)}},onCron:d=>{y(null),E(d)},visibleTools:fe(a.workflows,s.search)},a.appId,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:157,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:155,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:140,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:130,columnNumber:9},this),k&&e.jsxDEV("div",{className:"w-[380px] shrink-0 sticky top-0 max-h-screen overflow-y-auto",children:e.jsxDEV(me,{workflow:k,onClose:()=>y(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:182,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:181,columnNumber:11},this),v&&e.jsxDEV("div",{className:"w-[380px] shrink-0 sticky top-0 max-h-screen overflow-y-auto",children:e.jsxDEV(de,{workflow:v,onClose:()=>E(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:191,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:190,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:129,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:86,columnNumber:5},this)}export{Ie as YamlWorkflowsPage};
|
|
2
|
-
//# sourceMappingURL=YamlWorkflowsPage-BteCRoV5.js.map
|