@hotmeshio/long-tail 0.7.5 → 0.8.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/workflows/config.d.ts +7 -1
- package/build/api/workflows/config.js +7 -1
- package/build/api/workflows/discovery.js +1 -4
- package/build/lib/db/schemas/020_workflow_certified.sql +34 -0
- package/build/modules/ltconfig.d.ts +3 -2
- package/build/modules/ltconfig.js +4 -4
- package/build/routes/workflows/config.js +1 -0
- package/build/services/config/cache.js +1 -0
- package/build/services/config/read.js +2 -0
- package/build/services/config/sql.d.ts +2 -2
- package/build/services/config/sql.js +6 -5
- package/build/services/config/write.js +13 -0
- package/build/services/escalation/bulk.d.ts +3 -1
- package/build/services/escalation/bulk.js +3 -1
- package/build/services/escalation/crud.d.ts +4 -3
- package/build/services/escalation/crud.js +4 -3
- package/build/start/workers.js +1 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +3 -0
- package/build/system/mcp-servers/admin/schemas.js +3 -1
- package/build/system/mcp-servers/admin/workflow-config.js +1 -0
- package/build/types/config.d.ts +16 -0
- package/build/types/startup.d.ts +11 -1
- package/dashboard/dist/assets/AdminDashboard-Ck5-jV9T.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-Bgomc_jH.js.map → AdminDashboard-Ck5-jV9T.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js +16 -0
- package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js.map +1 -0
- package/dashboard/dist/assets/AgentsPage-DxwFuedf.js +2 -0
- package/dashboard/dist/assets/AgentsPage-DxwFuedf.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DNQbeIcn.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-C9DAtNGp.js.map → AvailableEscalationsPage-DNQbeIcn.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-mqwKVOE3.js +2 -0
- package/dashboard/dist/assets/{BotPicker-MnI3OyE7.js.map → BotPicker-mqwKVOE3.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js +2 -0
- package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js.map +1 -0
- package/dashboard/dist/assets/CollapsibleSection-Bn6Ks79X.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-Ne-Q3QFM.js.map → CollapsibleSection-Bn6Ks79X.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-no0-c_1G.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-D9_1b4MW.js.map → ConfirmDeleteModal-no0-c_1G.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DS6IDMIX.js +2 -0
- package/dashboard/dist/assets/{CopyableId-blg-gZvT.js.map → CopyableId-DS6IDMIX.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js.map +1 -0
- package/dashboard/dist/assets/CronLabel-DQWBx57H.js +2 -0
- package/dashboard/dist/assets/CronLabel-DQWBx57H.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-DV42oZ1G.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-Cp1fgzPX.js.map → CustomDurationPicker-DV42oZ1G.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-Bf4dgxll.js +2 -0
- package/dashboard/dist/assets/{DataTable-ZWgVQg7F.js.map → DataTable-Bf4dgxll.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-CTSXBb3c.js +2 -0
- package/dashboard/dist/assets/{DropZone-CZDmNBn-.js.map → DropZone-CTSXBb3c.js.map} +1 -1
- package/dashboard/dist/assets/ElapsedCell-roy4G5SQ.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-Gr5UlUbn.js.map → ElapsedCell-roy4G5SQ.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-CLVm9KmA.js +2 -0
- package/dashboard/dist/assets/{EmptyState-BcsfPq9T.js.map → EmptyState-CLVm9KmA.js.map} +1 -1
- package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js +9 -0
- package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js.map +1 -0
- package/dashboard/dist/assets/EscalationsOverview-DDwxn_mT.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-BIZVnSBF.js.map → EscalationsOverview-DDwxn_mT.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-BaLNvCew.js +2 -0
- package/dashboard/dist/assets/EventTable-BaLNvCew.js.map +1 -0
- package/dashboard/dist/assets/FilterBar-DEAbNQqp.js +2 -0
- package/dashboard/dist/assets/FilterBar-DEAbNQqp.js.map +1 -0
- package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js +2 -0
- package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js.map +1 -0
- package/dashboard/dist/assets/HomePage-Ds3PzWWr.js +2 -0
- package/dashboard/dist/assets/HomePage-Ds3PzWWr.js.map +1 -0
- package/dashboard/dist/assets/ListToolbar-Dviaskni.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-CdmIvEIF.js.map → ListToolbar-Dviaskni.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-BBm66wbF.js +2 -0
- package/dashboard/dist/assets/{McpOverview-C-Ypezuv.js.map → McpOverview-BBm66wbF.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-CSq_0qqi.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-B1sCxKLD.js.map → McpRunDetailPage-CSq_0qqi.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js.map +1 -0
- package/dashboard/dist/assets/Modal-C6HI6btY.js +2 -0
- package/dashboard/dist/assets/{Modal-CSrxpXeM.js.map → Modal-C6HI6btY.js.map} +1 -1
- package/dashboard/dist/assets/NamespacePill-eGsbJBFa.js +2 -0
- package/dashboard/dist/assets/{NamespacePill-DlqBTvFR.js.map → NamespacePill-eGsbJBFa.js.map} +1 -1
- package/dashboard/dist/assets/OperationsPage-DODPFmf2.js +2 -0
- package/dashboard/dist/assets/OperationsPage-DODPFmf2.js.map +1 -0
- package/dashboard/dist/assets/OperatorDashboard-BbmgsOmQ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-YP6kP-f_.js.map → OperatorDashboard-BbmgsOmQ.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-DcgGV0Y2.js +2 -0
- package/dashboard/dist/assets/{PageHeader-CFta2VaS.js.map → PageHeader-DcgGV0Y2.js.map} +1 -1
- package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-a7u8C9uY.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-B4ykBH7f.js.map → PriorityBadge-a7u8C9uY.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-BjW5xUkv.js +2 -0
- package/dashboard/dist/assets/{ProcessesListPage-BNhFwTLl.js.map → ProcessesListPage-BjW5xUkv.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js +11 -0
- package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js.map +1 -0
- package/dashboard/dist/assets/RolePill-BAeaQUXX.js +2 -0
- package/dashboard/dist/assets/RolePill-BAeaQUXX.js.map +1 -0
- package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js +2 -0
- package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js.map +1 -0
- package/dashboard/dist/assets/RowActions--m4F6GW8.js +2 -0
- package/dashboard/dist/assets/{RowActions-BA9L9djf.js.map → RowActions--m4F6GW8.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-DiGzSfiG.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-CokM3Ifp.js.map → RunAsSelector-DiGzSfiG.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DCPGFzCv.js +2 -0
- package/dashboard/dist/assets/StatCard-DCPGFzCv.js.map +1 -0
- package/dashboard/dist/assets/StatusBadge-mk-dJwPT.js +2 -0
- package/dashboard/dist/assets/{StatusBadge-D9MeQHrh.js.map → StatusBadge-mk-dJwPT.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-Clm9H840.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-_H2j2CAH.js.map → StickyPagination-Clm9H840.js.map} +1 -1
- package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js +2 -0
- package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js.map +1 -0
- package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js.map +1 -0
- package/dashboard/dist/assets/TagInput-DmJLnghg.js +2 -0
- package/dashboard/dist/assets/{TagInput-CQg-TrV9.js.map → TagInput-DmJLnghg.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill--1OX6egx.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-DyvtL8X4.js.map → TaskQueuePill--1OX6egx.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-DcYV-GMA.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-B71FxvrY.js.map → TasksListPage-DcYV-GMA.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-pYn3T9IZ.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-JgT0U_sd.js.map → TimeAgo-pYn3T9IZ.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-BPMCscic.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-gEreK8Nn.js.map → TimestampCell-BPMCscic.js.map} +1 -1
- package/dashboard/dist/assets/ToolPill-BnF9lCUX.js +2 -0
- package/dashboard/dist/assets/{ToolPill-miuRcj1Q.js.map → ToolPill-BnF9lCUX.js.map} +1 -1
- package/dashboard/dist/assets/ToolTestPanel-Bw4z_Tya.js +2 -0
- package/dashboard/dist/assets/{ToolTestPanel-ChfHw9Aq.js.map → ToolTestPanel-Bw4z_Tya.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js.map +1 -0
- package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js +2 -0
- package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js.map +1 -0
- package/dashboard/dist/assets/UserName-R96NG6xB.js +2 -0
- package/dashboard/dist/assets/{UserName-uncbaKYf.js.map → UserName-R96NG6xB.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DmRJabMQ.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-DwzLKTkt.js.map → WorkflowExecutionPage-DmRJabMQ.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-BhgE0RS8.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-ihhW8DiS.js.map → WorkflowsOverview-BhgE0RS8.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowDetailPage-CvIgB5y7.js +33 -0
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-C61-8y-E.js.map → YamlWorkflowDetailPage-CvIgB5y7.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DWnsgl2v.js +2 -0
- package/dashboard/dist/assets/{YamlWorkflowsPage-CMpgsLEo.js.map → YamlWorkflowsPage-DWnsgl2v.js.map} +1 -1
- package/dashboard/dist/assets/{agents-27sErp5R.js → agents-BpYMwrsB.js} +2 -2
- package/dashboard/dist/assets/{agents-27sErp5R.js.map → agents-BpYMwrsB.js.map} +1 -1
- package/dashboard/dist/assets/{bots-CPHuAvjW.js → bots-DI6Wqp5X.js} +2 -2
- package/dashboard/dist/assets/{bots-CPHuAvjW.js.map → bots-DI6Wqp5X.js.map} +1 -1
- package/dashboard/dist/assets/capabilities-BKZZb8eM.js +2 -0
- package/dashboard/dist/assets/{capabilities-BBTPqF-V.js.map → capabilities-BKZZb8eM.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-C9j2mwX8.js → controlplane-Djshb7fm.js} +2 -2
- package/dashboard/dist/assets/{controlplane-C9j2mwX8.js.map → controlplane-Djshb7fm.js.map} +1 -1
- package/dashboard/dist/assets/escalation-D8mrXtjS.js +2 -0
- package/dashboard/dist/assets/{escalation-CyJ_wz-f.js.map → escalation-D8mrXtjS.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js +2 -0
- package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js.map +1 -0
- package/dashboard/dist/assets/index-B5MAG4Uv.js +2 -0
- package/dashboard/dist/assets/{index-CCHGKErT.js.map → index-B5MAG4Uv.js.map} +1 -1
- package/dashboard/dist/assets/index-BfxiRwk2.js +6 -0
- package/dashboard/dist/assets/index-BfxiRwk2.js.map +1 -0
- package/dashboard/dist/assets/index-C71I-f5G.js +2 -0
- package/dashboard/dist/assets/{index-D9pi0fs6.js.map → index-C71I-f5G.js.map} +1 -1
- package/dashboard/dist/assets/index-CC4g-6QE.css +1 -0
- package/dashboard/dist/assets/index-CJb3dXku.js +2 -0
- package/dashboard/dist/assets/index-CJb3dXku.js.map +1 -0
- package/dashboard/dist/assets/index-CQtv2rj6.js +2 -0
- package/dashboard/dist/assets/index-CQtv2rj6.js.map +1 -0
- package/dashboard/dist/assets/index-CphzO7b8.js +2 -0
- package/dashboard/dist/assets/{index-CNprOGuS.js.map → index-CphzO7b8.js.map} +1 -1
- package/dashboard/dist/assets/index-CwAmiy_j.js +2 -0
- package/dashboard/dist/assets/index-CwAmiy_j.js.map +1 -0
- package/dashboard/dist/assets/index-DgCS2Frb.js +281 -0
- package/dashboard/dist/assets/index-DgCS2Frb.js.map +1 -0
- package/dashboard/dist/assets/index-DkbnD-Te.js +2 -0
- package/dashboard/dist/assets/{index-Dzqt3g-K.js.map → index-DkbnD-Te.js.map} +1 -1
- package/dashboard/dist/assets/index-Y6yj36QR.js +9 -0
- package/dashboard/dist/assets/index-Y6yj36QR.js.map +1 -0
- package/dashboard/dist/assets/index-eshNd6NY.js +6 -0
- package/dashboard/dist/assets/{index-BiLZJ43R.js.map → index-eshNd6NY.js.map} +1 -1
- package/dashboard/dist/assets/index-xn9fmkHC.js +2 -0
- package/dashboard/dist/assets/index-xn9fmkHC.js.map +1 -0
- package/dashboard/dist/assets/index-yxnQew1X.js +2 -0
- package/dashboard/dist/assets/index-yxnQew1X.js.map +1 -0
- package/dashboard/dist/assets/{knowledge-BErJA3Je.js → knowledge-C_1r0faY.js} +2 -2
- package/dashboard/dist/assets/{knowledge-BErJA3Je.js.map → knowledge-C_1r0faY.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-Cx9L42EN.js → mcp-BtG54ZAx.js} +2 -2
- package/dashboard/dist/assets/{mcp-Cx9L42EN.js.map → mcp-BtG54ZAx.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-Cf6kcBoW.js → mcp-query-CSdQWxmv.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-Cf6kcBoW.js.map → mcp-query-CSdQWxmv.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-CFctrv71.js → pipelines-DVkwxN64.js} +2 -2
- package/dashboard/dist/assets/{pipelines-CFctrv71.js.map → pipelines-DVkwxN64.js.map} +1 -1
- package/dashboard/dist/assets/{roles-CCXZtqDr.js → roles-CpRcUIMm.js} +2 -2
- package/dashboard/dist/assets/{roles-CCXZtqDr.js.map → roles-CpRcUIMm.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BPNj8ZWL.js → tasks-DNdvW5H6.js} +2 -2
- package/dashboard/dist/assets/{tasks-BPNj8ZWL.js.map → tasks-DNdvW5H6.js.map} +1 -1
- package/dashboard/dist/assets/{topics-CR4UBuSV.js → topics-DNC77Chw.js} +2 -2
- package/dashboard/dist/assets/{topics-CR4UBuSV.js.map → topics-DNC77Chw.js.map} +1 -1
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js → useCollapsedSections-CGNA5oKV.js} +2 -2
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js.map → useCollapsedSections-CGNA5oKV.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js → useDebouncedValue-DmL3uNt_.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js.map → useDebouncedValue-DmL3uNt_.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-BgdnN8Rj.js → useEventHooks-CUUeBSH1.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-BgdnN8Rj.js.map → useEventHooks-CUUeBSH1.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js → useFilterParams-Ch-a71bE.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js.map → useFilterParams-Ch-a71bE.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-BDsKfT0f.js → useNamespace-D-AjLnPK.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-BDsKfT0f.js.map → useNamespace-D-AjLnPK.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CWZwHIlR.js → useYamlActivityEvents-DRdetOb_.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CWZwHIlR.js.map → useYamlActivityEvents-DRdetOb_.js.map} +1 -1
- package/dashboard/dist/assets/{users-BqmKVXR1.js → users-BUgdEsec.js} +2 -2
- package/dashboard/dist/assets/{users-BqmKVXR1.js.map → users-BUgdEsec.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js → vendor-icons-CNyYGNsk.js} +3 -3
- package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js.map → vendor-icons-CNyYGNsk.js.map} +1 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-zA2lQFDs.js +26 -0
- package/dashboard/dist/assets/vendor-react-zA2lQFDs.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Dps45zjk.js → workflows-BfyR5VJt.js} +2 -2
- package/dashboard/dist/assets/workflows-BfyR5VJt.js.map +1 -0
- package/dashboard/dist/assets/{yaml-workflows-DhlTkbvY.js → yaml-workflows-Bz7yEnhl.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-DhlTkbvY.js.map → yaml-workflows-Bz7yEnhl.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/docs/api/http/escalations.md +3 -3
- package/docs/api/http/workflows.md +2 -1
- package/docs/api/mcp/admin.md +13 -7
- package/docs/api/sdk/escalations.md +3 -1
- package/docs/api/sdk/workflows.md +3 -2
- package/docs/architecture.md +2 -2
- package/docs/dashboard.md +6 -5
- package/docs/iam.md +3 -3
- package/docs/workflows.md +7 -5
- package/package.json +2 -2
- package/dashboard/dist/assets/AdminDashboard-Bgomc_jH.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-C6gDgz21.js +0 -16
- package/dashboard/dist/assets/AgentConfigPage-C6gDgz21.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-0rrH5FmV.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-0rrH5FmV.js.map +0 -1
- package/dashboard/dist/assets/AgentsPage-DkIU2zed.js +0 -2
- package/dashboard/dist/assets/AgentsPage-DkIU2zed.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-C9DAtNGp.js +0 -2
- package/dashboard/dist/assets/BotPicker-MnI3OyE7.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-Cv_AD_5i.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-Cv_AD_5i.js.map +0 -1
- package/dashboard/dist/assets/CollapsibleSection-Ne-Q3QFM.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-D9_1b4MW.js +0 -2
- package/dashboard/dist/assets/CopyableId-blg-gZvT.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-B3Mfwl22.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-B3Mfwl22.js.map +0 -1
- package/dashboard/dist/assets/CronLabel-CtjUBRPo.js +0 -2
- package/dashboard/dist/assets/CronLabel-CtjUBRPo.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-Cp1fgzPX.js +0 -2
- package/dashboard/dist/assets/DataTable-ZWgVQg7F.js +0 -2
- package/dashboard/dist/assets/DropZone-CZDmNBn-.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-Gr5UlUbn.js +0 -2
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +0 -2
- package/dashboard/dist/assets/EscalationSchemaPage-C5tuV6SJ.js +0 -9
- package/dashboard/dist/assets/EscalationSchemaPage-C5tuV6SJ.js.map +0 -1
- package/dashboard/dist/assets/EscalationsOverview-BIZVnSBF.js +0 -2
- package/dashboard/dist/assets/EventTable-90aUfsNr.js +0 -2
- package/dashboard/dist/assets/EventTable-90aUfsNr.js.map +0 -1
- package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js +0 -2
- package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js.map +0 -1
- package/dashboard/dist/assets/GraphInvokePage-Io5ZucT8.js +0 -2
- package/dashboard/dist/assets/GraphInvokePage-Io5ZucT8.js.map +0 -1
- package/dashboard/dist/assets/HomePage-Cu0vUzTF.js +0 -2
- package/dashboard/dist/assets/HomePage-Cu0vUzTF.js.map +0 -1
- package/dashboard/dist/assets/ListToolbar-CdmIvEIF.js +0 -2
- package/dashboard/dist/assets/McpOverview-C-Ypezuv.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-DdontKcj.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-DdontKcj.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-D-1TaOGG.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-D-1TaOGG.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-B1sCxKLD.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-eWJ7cDa3.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-eWJ7cDa3.js.map +0 -1
- package/dashboard/dist/assets/Modal-CSrxpXeM.js +0 -2
- package/dashboard/dist/assets/NamespacePill-DlqBTvFR.js +0 -2
- package/dashboard/dist/assets/OperationsPage-C5phWL0O.js +0 -2
- package/dashboard/dist/assets/OperationsPage-C5phWL0O.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-YP6kP-f_.js +0 -2
- package/dashboard/dist/assets/PageHeader-CFta2VaS.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-C_BXQvBs.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-C_BXQvBs.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-BNhFwTLl.js +0 -2
- package/dashboard/dist/assets/RoleDetailPage-8GLNjj9I.js +0 -11
- package/dashboard/dist/assets/RoleDetailPage-8GLNjj9I.js.map +0 -1
- package/dashboard/dist/assets/RolePill-CXEyPMqb.js +0 -2
- package/dashboard/dist/assets/RolePill-CXEyPMqb.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-B59tE2lZ.js +0 -2
- package/dashboard/dist/assets/RolesPage-B59tE2lZ.js.map +0 -1
- package/dashboard/dist/assets/RowActions-BA9L9djf.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CokM3Ifp.js +0 -2
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js.map +0 -1
- package/dashboard/dist/assets/StatusBadge-D9MeQHrh.js +0 -2
- package/dashboard/dist/assets/StickyPagination-_H2j2CAH.js +0 -2
- package/dashboard/dist/assets/StreamMessageDetail-sSfHDYIa.js +0 -2
- package/dashboard/dist/assets/StreamMessageDetail-sSfHDYIa.js.map +0 -1
- package/dashboard/dist/assets/SwimlaneTimeline-LZWtfBK3.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-LZWtfBK3.js.map +0 -1
- package/dashboard/dist/assets/TagInput-CQg-TrV9.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CHBV2V6R.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CHBV2V6R.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-DyvtL8X4.js +0 -2
- package/dashboard/dist/assets/TasksListPage-B71FxvrY.js +0 -2
- package/dashboard/dist/assets/TimeAgo-JgT0U_sd.js +0 -2
- package/dashboard/dist/assets/TimestampCell-gEreK8Nn.js +0 -2
- package/dashboard/dist/assets/ToolPill-miuRcj1Q.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-ChfHw9Aq.js +0 -2
- package/dashboard/dist/assets/TopicDetailPage-DigI0HGt.js +0 -9
- package/dashboard/dist/assets/TopicDetailPage-DigI0HGt.js.map +0 -1
- package/dashboard/dist/assets/TopicsPage-BHjlFpPN.js +0 -2
- package/dashboard/dist/assets/TopicsPage-BHjlFpPN.js.map +0 -1
- package/dashboard/dist/assets/UserName-uncbaKYf.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DwzLKTkt.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-BegV-iRF.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-BegV-iRF.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-rpnGhGnl.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-rpnGhGnl.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-ihhW8DiS.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowDetailPage-C61-8y-E.js +0 -33
- package/dashboard/dist/assets/YamlWorkflowsPage-CMpgsLEo.js +0 -2
- package/dashboard/dist/assets/capabilities-BBTPqF-V.js +0 -2
- package/dashboard/dist/assets/escalation-CyJ_wz-f.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DU4Jyxxo.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DU4Jyxxo.js.map +0 -1
- package/dashboard/dist/assets/index-BBQggGcf.js +0 -2
- package/dashboard/dist/assets/index-BBQggGcf.js.map +0 -1
- package/dashboard/dist/assets/index-BHS-ubrT.js +0 -6
- package/dashboard/dist/assets/index-BHS-ubrT.js.map +0 -1
- package/dashboard/dist/assets/index-BVHXREYZ.js +0 -2
- package/dashboard/dist/assets/index-BVHXREYZ.js.map +0 -1
- package/dashboard/dist/assets/index-BiLZJ43R.js +0 -6
- package/dashboard/dist/assets/index-BoZydcaW.js +0 -63
- package/dashboard/dist/assets/index-BoZydcaW.js.map +0 -1
- package/dashboard/dist/assets/index-CCHGKErT.js +0 -2
- package/dashboard/dist/assets/index-CNprOGuS.js +0 -2
- package/dashboard/dist/assets/index-CZ6-l8_0.css +0 -1
- package/dashboard/dist/assets/index-CgeFUhUr.js +0 -2
- package/dashboard/dist/assets/index-CgeFUhUr.js.map +0 -1
- package/dashboard/dist/assets/index-ChniBGqD.js +0 -9
- package/dashboard/dist/assets/index-ChniBGqD.js.map +0 -1
- package/dashboard/dist/assets/index-CjXzZ19T.js +0 -2
- package/dashboard/dist/assets/index-CjXzZ19T.js.map +0 -1
- package/dashboard/dist/assets/index-D9pi0fs6.js +0 -2
- package/dashboard/dist/assets/index-DoivEaUZ.js +0 -2
- package/dashboard/dist/assets/index-DoivEaUZ.js.map +0 -1
- package/dashboard/dist/assets/index-Dzqt3g-K.js +0 -2
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-CXumBFUA.js +0 -22
- package/dashboard/dist/assets/vendor-react-CXumBFUA.js.map +0 -1
- package/dashboard/dist/assets/workflows-Dps45zjk.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u,j as e}from"./index-DgCS2Frb.js";import{u as h}from"./yaml-workflows-Bz7yEnhl.js";import{u as b}from"./useFilterParams-Ch-a71bE.js";import{P as d}from"./PageHeader-DcgGV0Y2.js";import{F as w,a as N,b as x}from"./FilterBar-DEAbNQqp.js";import{E as n}from"./EmptyState-CLVm9KmA.js";import{T as g}from"./ToolPill-BnF9lCUX.js";import{N as k}from"./NamespacePill-eGsbJBFa.js";import{S as v}from"./StatusBadge-mk-dJwPT.js";import{c as W,W as P}from"./vendor-icons-CNyYGNsk.js";import{c as D}from"./vendor-react-zA2lQFDs.js";import"./vendor-query-DLp59M9_.js";function T(){var p;const r=D(),{data:o}=u(),l=!!((p=o==null?void 0:o.ai)!=null&&p.enabled),{filters:a,setFilter:i}=b({filters:{status:"",search:""}}),{data:t,isLoading:c}=h({status:a.status||void 0,search:a.search||void 0,limit:200,offset:0}),m=(t==null?void 0:t.workflows)??[];return c?e.jsxDEV("div",{children:[e.jsxDEV(d,{title:"Configure",docsHash:"#docs:dashboard.md:mcp-pipeline-tools"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:36,columnNumber:9},this),e.jsxDEV("div",{className:"animate-pulse space-y-0",children:Array.from({length:4}).map((s,f)=>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:40,columnNumber:15},this)},f,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:39,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:37,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:35,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(d,{title:"Configure",docsHash:"#docs:dashboard.md:mcp-pipeline-tools",actions:l?e.jsxDEV("button",{onClick:()=>r("/mcp/queries/new"),className:"btn-primary text-xs",children:"Design Flow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:55,columnNumber:13},this):void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:50,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed",children:["The compiled form of a durable workflow — the same guarantees at roughly 3× the speed. Each flow is a graph the router discovers and runs on demand. Open one to inspect or run it",l?", or design a new one from a description.":"."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:62,columnNumber:7},this),e.jsxDEV(w,{children:[e.jsxDEV(N,{label:"Search",value:a.search,onChange:s=>i("search",s),placeholder:"Flow or namespace…"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV(x,{label:"Status",value:a.status,onChange:s=>i("status",s),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:75,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:68,columnNumber:7},this),m.length===0?l?e.jsxDEV("div",{className:"cursor-pointer",onClick:()=>r("/mcp/queries/new"),children:e.jsxDEV(n,{icon:W,title:"No graph flows yet",description:"Open the Designer to compile your first flow from a description, or register flows at startup with the graphWorkflows config."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:91,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:90,columnNumber:11},this):e.jsxDEV(n,{icon:P,title:"No graph flows yet",description:"Register graph flows at startup with the graphWorkflows config — see the docs for an example."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:98,columnNumber:11},this):e.jsxDEV("table",{className:"w-full",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b",children:[e.jsxDEV("th",{className:"px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Flow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:108,columnNumber:15},this),e.jsxDEV("th",{className:"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-40",children:"Namespace"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:111,columnNumber:15},this),e.jsxDEV("th",{className:"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:114,columnNumber:15},this),e.jsxDEV("th",{className:"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:117,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:107,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:106,columnNumber:11},this),e.jsxDEV("tbody",{children:m.map(s=>e.jsxDEV("tr",{onClick:()=>r(`/mcp/workflows/${s.id}`),className:"border-b border-surface-border/50 hover:bg-surface-hover/40 transition-colors duration-100 cursor-pointer",children:[e.jsxDEV("td",{className:"px-6 py-2.5",children:[e.jsxDEV(g,{name:s.graph_topic,size:"md"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:130,columnNumber:19},this),s.description&&e.jsxDEV("p",{className:"text-[11px] leading-snug text-text-quaternary mt-0.5",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:132,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:129,columnNumber:17},this),e.jsxDEV("td",{className:"px-4 py-2.5",children:e.jsxDEV(k,{namespace:s.app_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:136,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:135,columnNumber:17},this),e.jsxDEV("td",{className:"px-4 py-2.5 text-[10px] text-text-quaternary font-mono whitespace-nowrap",children:["v",s.content_version]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:138,columnNumber:17},this),e.jsxDEV("td",{className:"px-4 py-2.5 whitespace-nowrap",children:e.jsxDEV(v,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:142,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:141,columnNumber:17},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:124,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:105,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:49,columnNumber:5},this)}export{T as YamlWorkflowsPage};
|
|
2
|
+
//# sourceMappingURL=YamlWorkflowsPage-DWnsgl2v.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YamlWorkflowsPage-CMpgsLEo.js","sources":["../../src/pages/workflows/YamlWorkflowsPage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport { Wand2, Workflow } from 'lucide-react';\nimport { useYamlWorkflows } from '../../api/yaml-workflows';\nimport { useSettings } from '../../api/settings';\nimport { useFilterParams } from '../../hooks/useFilterParams';\n\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect, FilterInput } from '../../components/common/data/FilterBar';\nimport { EmptyState } from '../../components/common/display/EmptyState';\nimport { ToolPill } from '../../components/common/display/ToolPill';\nimport { NamespacePill } from '../../components/common/display/NamespacePill';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\n\n// ── Page: Graph › Configure ─────────────────────────────────────────────────\n\nexport function YamlWorkflowsPage() {\n const navigate = useNavigate();\n const { data: settings } = useSettings();\n const aiEnabled = !!settings?.ai?.enabled;\n const { filters, setFilter } = useFilterParams({\n filters: { status: '', search: '' },\n });\n\n const { data, isLoading } = useYamlWorkflows({\n status: (filters.status || undefined) as any,\n search: filters.search || undefined,\n limit: 200,\n offset: 0,\n });\n\n const flows = data?.workflows ?? [];\n\n if (isLoading) {\n return (\n <div>\n <PageHeader title=\"Configure\" docsHash=\"#docs:dashboard.md:mcp-pipeline-tools\" />\n <div className=\"animate-pulse space-y-0\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"h-14 border-b last:border-b-0 px-6 flex items-center\">\n <div className=\"h-3 bg-surface-sunken rounded w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"Configure\"\n docsHash=\"#docs:dashboard.md:mcp-pipeline-tools\"\n actions={\n aiEnabled ? (\n <button onClick={() => navigate('/mcp/queries/new')} className=\"btn-primary text-xs\">\n Design Flow\n </button>\n ) : undefined\n }\n />\n\n <p className=\"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed\">\n The compiled form of a durable workflow — the same guarantees at roughly 3× the speed. Each\n flow is a graph the router discovers and runs on demand. Open one to inspect or run it\n {aiEnabled ? ', or design a new one from a description.' : '.'}\n </p>\n\n <FilterBar>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"Flow or namespace…\"\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'draft', label: 'Draft' },\n { value: 'deployed', label: 'Deployed' },\n { value: 'active', label: 'Active' },\n { value: 'archived', label: 'Archived' },\n ]}\n />\n </FilterBar>\n\n {flows.length === 0 ? (\n aiEnabled ? (\n <div className=\"cursor-pointer\" onClick={() => navigate('/mcp/queries/new')}>\n <EmptyState\n icon={Wand2}\n title=\"No graph flows yet\"\n description=\"Open the Designer to compile your first flow from a description, or register flows at startup with the graphWorkflows config.\"\n />\n </div>\n ) : (\n <EmptyState\n icon={Workflow}\n title=\"No graph flows yet\"\n description=\"Register graph flows at startup with the graphWorkflows config — see the docs for an example.\"\n />\n )\n ) : (\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Flow\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-40\">\n Namespace\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-20\">\n Version\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\">\n Status\n </th>\n </tr>\n </thead>\n <tbody>\n {flows.map((flow) => (\n <tr\n key={flow.id}\n onClick={() => navigate(`/mcp/workflows/${flow.id}`)}\n className=\"border-b border-surface-border/50 hover:bg-surface-hover/40 transition-colors duration-100 cursor-pointer\"\n >\n <td className=\"px-6 py-2.5\">\n <ToolPill name={flow.graph_topic} size=\"md\" />\n {flow.description && (\n <p className=\"text-[11px] leading-snug text-text-quaternary mt-0.5\">{flow.description}</p>\n )}\n </td>\n <td className=\"px-4 py-2.5\">\n <NamespacePill namespace={flow.app_id} />\n </td>\n <td className=\"px-4 py-2.5 text-[10px] text-text-quaternary font-mono whitespace-nowrap\">\n v{flow.content_version}\n </td>\n <td className=\"px-4 py-2.5 whitespace-nowrap\">\n <StatusBadge status={flow.status} />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n );\n}\n"],"names":["YamlWorkflowsPage","navigate","useNavigate","settings","useSettings","aiEnabled","_a","filters","setFilter","useFilterParams","data","isLoading","useYamlWorkflows","flows","jsx","PageHeader","_","i","jsxs","FilterBar","FilterInput","v","FilterSelect","EmptyState","Wand2","Workflow","flow","ToolPill","NamespacePill","StatusBadge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YamlWorkflowsPage-DWnsgl2v.js","sources":["../../src/pages/workflows/YamlWorkflowsPage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport { Wand2, Workflow } from 'lucide-react';\nimport { useYamlWorkflows } from '../../api/yaml-workflows';\nimport { useSettings } from '../../api/settings';\nimport { useFilterParams } from '../../hooks/useFilterParams';\n\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect, FilterInput } from '../../components/common/data/FilterBar';\nimport { EmptyState } from '../../components/common/display/EmptyState';\nimport { ToolPill } from '../../components/common/display/ToolPill';\nimport { NamespacePill } from '../../components/common/display/NamespacePill';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\n\n// ── Page: Graph › Configure ─────────────────────────────────────────────────\n\nexport function YamlWorkflowsPage() {\n const navigate = useNavigate();\n const { data: settings } = useSettings();\n const aiEnabled = !!settings?.ai?.enabled;\n const { filters, setFilter } = useFilterParams({\n filters: { status: '', search: '' },\n });\n\n const { data, isLoading } = useYamlWorkflows({\n status: (filters.status || undefined) as any,\n search: filters.search || undefined,\n limit: 200,\n offset: 0,\n });\n\n const flows = data?.workflows ?? [];\n\n if (isLoading) {\n return (\n <div>\n <PageHeader title=\"Configure\" docsHash=\"#docs:dashboard.md:mcp-pipeline-tools\" />\n <div className=\"animate-pulse space-y-0\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"h-14 border-b last:border-b-0 px-6 flex items-center\">\n <div className=\"h-3 bg-surface-sunken rounded w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"Configure\"\n docsHash=\"#docs:dashboard.md:mcp-pipeline-tools\"\n actions={\n aiEnabled ? (\n <button onClick={() => navigate('/mcp/queries/new')} className=\"btn-primary text-xs\">\n Design Flow\n </button>\n ) : undefined\n }\n />\n\n <p className=\"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed\">\n The compiled form of a durable workflow — the same guarantees at roughly 3× the speed. Each\n flow is a graph the router discovers and runs on demand. Open one to inspect or run it\n {aiEnabled ? ', or design a new one from a description.' : '.'}\n </p>\n\n <FilterBar>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"Flow or namespace…\"\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'draft', label: 'Draft' },\n { value: 'deployed', label: 'Deployed' },\n { value: 'active', label: 'Active' },\n { value: 'archived', label: 'Archived' },\n ]}\n />\n </FilterBar>\n\n {flows.length === 0 ? (\n aiEnabled ? (\n <div className=\"cursor-pointer\" onClick={() => navigate('/mcp/queries/new')}>\n <EmptyState\n icon={Wand2}\n title=\"No graph flows yet\"\n description=\"Open the Designer to compile your first flow from a description, or register flows at startup with the graphWorkflows config.\"\n />\n </div>\n ) : (\n <EmptyState\n icon={Workflow}\n title=\"No graph flows yet\"\n description=\"Register graph flows at startup with the graphWorkflows config — see the docs for an example.\"\n />\n )\n ) : (\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Flow\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-40\">\n Namespace\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-20\">\n Version\n </th>\n <th className=\"px-4 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\">\n Status\n </th>\n </tr>\n </thead>\n <tbody>\n {flows.map((flow) => (\n <tr\n key={flow.id}\n onClick={() => navigate(`/mcp/workflows/${flow.id}`)}\n className=\"border-b border-surface-border/50 hover:bg-surface-hover/40 transition-colors duration-100 cursor-pointer\"\n >\n <td className=\"px-6 py-2.5\">\n <ToolPill name={flow.graph_topic} size=\"md\" />\n {flow.description && (\n <p className=\"text-[11px] leading-snug text-text-quaternary mt-0.5\">{flow.description}</p>\n )}\n </td>\n <td className=\"px-4 py-2.5\">\n <NamespacePill namespace={flow.app_id} />\n </td>\n <td className=\"px-4 py-2.5 text-[10px] text-text-quaternary font-mono whitespace-nowrap\">\n v{flow.content_version}\n </td>\n <td className=\"px-4 py-2.5 whitespace-nowrap\">\n <StatusBadge status={flow.status} />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n );\n}\n"],"names":["YamlWorkflowsPage","navigate","useNavigate","settings","useSettings","aiEnabled","_a","filters","setFilter","useFilterParams","data","isLoading","useYamlWorkflows","flows","jsxDEV","PageHeader","_","i","FilterBar","FilterInput","v","FilterSelect","EmptyState","Wand2","Workflow","flow","ToolPill","NamespacePill","StatusBadge"],"mappings":"kjBAeO,SAASA,GAAoB,OAClC,MAAMC,EAAWC,EAAA,EACX,CAAE,KAAMC,CAAA,EAAaC,EAAA,EACrBC,EAAY,CAAC,GAACC,EAAAH,GAAA,YAAAA,EAAU,KAAV,MAAAG,EAAc,SAC5B,CAAE,QAAAC,EAAS,UAAAC,CAAA,EAAcC,EAAgB,CAC7C,QAAS,CAAE,OAAQ,GAAI,OAAQ,EAAA,CAAG,CACnC,EAEK,CAAE,KAAAC,EAAM,UAAAC,CAAA,EAAcC,EAAiB,CAC3C,OAASL,EAAQ,QAAU,OAC3B,OAAQA,EAAQ,QAAU,OAC1B,MAAO,IACP,OAAQ,CAAA,CACT,EAEKM,GAAQH,GAAA,YAAAA,EAAM,YAAa,CAAA,EAEjC,OAAIC,WAEC,MAAA,CACC,SAAA,CAAAG,SAACC,EAAA,CAAW,MAAM,YAAY,SAAS,uCAAA,EAAvC,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA+E,EAC/ED,EAAAA,OAAC,OAAI,UAAU,0BACZ,eAAM,KAAK,CAAE,OAAQ,EAAG,EAAE,IAAI,CAACE,EAAGC,IACjCH,EAAAA,OAAC,MAAA,CAAY,UAAU,uDACrB,SAAAA,SAAC,MAAA,CAAI,UAAU,sCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsD,GAD9CG,EAAV,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CACD,GALH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,WAKD,MAAA,CACC,SAAA,CAAAH,EAAAA,OAACC,EAAA,CACC,MAAM,YACN,SAAS,wCACT,QACEV,EACES,EAAAA,OAAC,SAAA,CAAO,QAAS,IAAMb,EAAS,kBAAkB,EAAG,UAAU,sBAAsB,SAAA,aAAA,EAArF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACE,MAAA,EARR,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAYAa,EAAAA,OAAC,IAAA,CAAE,UAAU,6DAA6D,SAAA,CAAA,qLAGvET,EAAY,4CAA8C,GAAA,CAAA,EAH7D,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,WAECa,EAAA,CACC,SAAA,CAAAJ,EAAAA,OAACK,EAAA,CACC,MAAM,SACN,MAAOZ,EAAQ,OACf,SAAWa,GAAMZ,EAAU,SAAUY,CAAC,EACtC,YAAY,oBAAA,EAJd,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAMAN,EAAAA,OAACO,EAAA,CACC,MAAM,SACN,MAAOd,EAAQ,OACf,SAAWa,GAAMZ,EAAU,SAAUY,CAAC,EACtC,QAAS,CACP,CAAE,MAAO,QAAS,MAAO,OAAA,EACzB,CAAE,MAAO,WAAY,MAAO,UAAA,EAC5B,CAAE,MAAO,SAAU,MAAO,QAAA,EAC1B,CAAE,MAAO,WAAY,MAAO,UAAA,CAAW,CACzC,EATF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAUA,CAAA,EAjBF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAkBA,EAECP,EAAM,SAAW,EAChBR,EACES,EAAAA,OAAC,MAAA,CAAI,UAAU,iBAAiB,QAAS,IAAMb,EAAS,kBAAkB,EACxE,SAAAa,EAAAA,OAACQ,EAAA,CACC,KAAMC,EACN,MAAM,qBACN,YAAY,+HAAA,EAHd,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAIA,EALF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAMA,EAEAT,EAAAA,OAACQ,EAAA,CACC,KAAME,EACN,MAAM,qBACN,YAAY,+FAAA,EAHd,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAOFV,EAAAA,OAAC,QAAA,CAAM,UAAU,SACf,SAAA,CAAAA,SAAC,QAAA,CACC,SAAAA,EAAAA,OAAC,KAAA,CAAG,UAAU,WACZ,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,6FAA6F,SAAA,MAAA,EAA3G,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,KAAA,CAAG,UAAU,kGAAkG,SAAA,WAAA,EAAhH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,KAAA,CAAG,UAAU,kGAAkG,SAAA,SAAA,EAAhH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,KAAA,CAAG,UAAU,kGAAkG,SAAA,QAAA,EAAhH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAZF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,CAAA,EAdF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAeA,EACAA,EAAAA,OAAC,QAAA,CACE,SAAAD,EAAM,IAAKY,GACVX,EAAAA,OAAC,KAAA,CAEC,QAAS,IAAMb,EAAS,kBAAkBwB,EAAK,EAAE,EAAE,EACnD,UAAU,4GAEV,SAAA,CAAAX,EAAAA,OAAC,KAAA,CAAG,UAAU,cACZ,SAAA,CAAAA,SAACY,EAAA,CAAS,KAAMD,EAAK,YAAa,KAAK,IAAA,EAAvC,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4C,EAC3CA,EAAK,aACJX,SAAC,KAAE,UAAU,uDAAwD,WAAK,aAA1E,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsF,CAAA,CAAA,EAH1F,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EACAA,EAAAA,OAAC,MAAG,UAAU,cACZ,kBAACa,EAAA,CAAc,UAAWF,EAAK,MAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuC,CAAA,EADzC,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAX,EAAAA,OAAC,KAAA,CAAG,UAAU,2EAA2E,SAAA,CAAA,IACrFW,EAAK,eAAA,CAAA,EADT,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAX,EAAAA,OAAC,MAAG,UAAU,gCACZ,kBAACc,EAAA,CAAY,OAAQH,EAAK,MAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAkC,CAAA,EADpC,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAlBKA,EAAK,GADZ,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAqBD,CAAA,EAvBH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAwBA,CAAA,CAAA,EAzCF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA0CA,CAAA,CAAA,EAlGJ,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAoGA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as o,b as u,c as a}from"./vendor-query-
|
|
2
|
-
//# sourceMappingURL=agents-
|
|
1
|
+
import{u as o,b as u,c as a}from"./vendor-query-DLp59M9_.js";import{d as t}from"./index-DgCS2Frb.js";function g(e={}){const n=new URLSearchParams;e.status&&n.set("status",e.status),e.knowledge_domain&&n.set("knowledge_domain",e.knowledge_domain),e.limit!=null&&n.set("limit",String(e.limit)),e.offset!=null&&n.set("offset",String(e.offset));const s=n.toString();return o({queryKey:["agents",e],queryFn:()=>t(`/agents${s?`?${s}`:""}`)})}function y(e){return o({queryKey:["agents",e],queryFn:()=>t(`/agents/${e}`),enabled:!!e})}function c(){const e=u();return a({mutationFn:n=>t("/agents",{method:"POST",body:JSON.stringify(n)}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}function m(){const e=u();return a({mutationFn:({id:n,...s})=>t(`/agents/${n}`,{method:"PUT",body:JSON.stringify(s)}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}function d(){const e=u();return a({mutationFn:n=>t(`/agents/${n}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["agents"]})}})}export{y as a,m as b,d as c,c as d,g as u};
|
|
2
|
+
//# sourceMappingURL=agents-BpYMwrsB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-
|
|
1
|
+
{"version":3,"file":"agents-BpYMwrsB.js","sources":["../../src/api/agents.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\nexport interface AgentCapability {\n serverId: string;\n toolNames?: string[];\n}\n\nexport interface AgentTrigger {\n event: string;\n filter?: Record<string, any>;\n}\n\nexport interface AgentSchedule {\n cron: string;\n workflow_type: string;\n envelope?: Record<string, any>;\n execute_as?: string;\n}\n\nexport interface AgentBehaviors {\n cron?: string;\n triggers?: AgentTrigger[];\n schedules?: AgentSchedule[];\n escalationRules?: Record<string, any>;\n}\n\nexport interface Agent {\n /** Agent identifier — human-readable kebab-case name (e.g. 'content-triage') */\n id: string;\n description?: string;\n status: 'inactive' | 'active' | 'paused' | 'error';\n user_id?: string;\n knowledge_domain?: string;\n capabilities: AgentCapability[];\n behaviors: AgentBehaviors;\n goals?: string;\n rules?: string;\n workflow_type?: string;\n pipeline_id?: string;\n metadata: Record<string, any>;\n last_run_at?: string;\n subscription_count?: number;\n sub_topics?: string[];\n created_at: string;\n updated_at: string;\n stats?: {\n knowledge_count: number;\n escalation_count: number;\n last_execution_at?: string;\n };\n}\n\ninterface AgentListResponse {\n agents: Agent[];\n total: number;\n}\n\ninterface AgentFilters {\n status?: string;\n knowledge_domain?: string;\n limit?: number;\n offset?: number;\n}\n\nexport function useAgents(filters: AgentFilters = {}) {\n const params = new URLSearchParams();\n if (filters.status) params.set('status', filters.status);\n if (filters.knowledge_domain) params.set('knowledge_domain', filters.knowledge_domain);\n if (filters.limit != null) params.set('limit', String(filters.limit));\n if (filters.offset != null) params.set('offset', String(filters.offset));\n const qs = params.toString();\n\n return useQuery<AgentListResponse>({\n queryKey: ['agents', filters],\n queryFn: () => apiFetch(`/agents${qs ? `?${qs}` : ''}`),\n });\n}\n\nexport function useAgent(id: string | null) {\n return useQuery<Agent>({\n queryKey: ['agents', id],\n queryFn: () => apiFetch(`/agents/${id}`),\n enabled: !!id,\n });\n}\n\nexport function useCreateAgent() {\n const queryClient = useQueryClient();\n return useMutation<Agent, Error, Partial<Agent> & { id: string }>({\n mutationFn: (body) =>\n apiFetch('/agents', {\n method: 'POST',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n\nexport function useUpdateAgent() {\n const queryClient = useQueryClient();\n return useMutation<Agent, Error, { id: string } & Partial<Agent>>({\n mutationFn: ({ id, ...body }) =>\n apiFetch(`/agents/${id}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n\nexport function useDeleteAgent() {\n const queryClient = useQueryClient();\n return useMutation<{ deleted: boolean }, Error, string>({\n mutationFn: (id) =>\n apiFetch(`/agents/${id}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['agents'] });\n },\n });\n}\n"],"names":["useAgents","filters","params","qs","useQuery","apiFetch","useAgent","id","useCreateAgent","queryClient","useQueryClient","useMutation","body","useUpdateAgent","useDeleteAgent"],"mappings":"qGAiEO,SAASA,EAAUC,EAAwB,GAAI,CACpD,MAAMC,EAAS,IAAI,gBACfD,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,kBAAkBC,EAAO,IAAI,mBAAoBD,EAAQ,gBAAgB,EACjFA,EAAQ,OAAS,MAAMC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EAChEA,EAAQ,QAAU,MAAMC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EACvE,MAAME,EAAKD,EAAO,SAAA,EAElB,OAAOE,EAA4B,CACjC,SAAU,CAAC,SAAUH,CAAO,EAC5B,QAAS,IAAMI,EAAS,UAAUF,EAAK,IAAIA,CAAE,GAAK,EAAE,EAAE,CAAA,CACvD,CACH,CAEO,SAASG,EAASC,EAAmB,CAC1C,OAAOH,EAAgB,CACrB,SAAU,CAAC,SAAUG,CAAE,EACvB,QAAS,IAAMF,EAAS,WAAWE,CAAE,EAAE,EACvC,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAEO,SAASC,GAAiB,CAC/B,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAA2D,CAChE,WAAaC,GACXP,EAAS,UAAW,CAClB,OAAQ,OACR,KAAM,KAAK,UAAUO,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASI,GAAiB,CAC/B,MAAMJ,EAAcC,EAAA,EACpB,OAAOC,EAA2D,CAChE,WAAY,CAAC,CAAE,GAAAJ,EAAI,GAAGK,KACpBP,EAAS,WAAWE,CAAE,GAAI,CACxB,OAAQ,MACR,KAAM,KAAK,UAAUK,CAAI,CAAA,CAC1B,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH,CAEO,SAASK,GAAiB,CAC/B,MAAML,EAAcC,EAAA,EACpB,OAAOC,EAAiD,CACtD,WAAaJ,GACXF,EAAS,WAAWE,CAAE,GAAI,CAAE,OAAQ,SAAU,EAChD,UAAW,IAAM,CACfE,EAAY,kBAAkB,CAAE,SAAU,CAAC,QAAQ,EAAG,CACxD,CAAA,CACD,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as a,b as s,c as u}from"./vendor-query-
|
|
2
|
-
//# sourceMappingURL=bots-
|
|
1
|
+
import{u as a,b as s,c as u}from"./vendor-query-DLp59M9_.js";import{d as n}from"./index-DgCS2Frb.js";function y(e={}){const t=new URLSearchParams;return e.limit&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset)),a({queryKey:["bots",e],queryFn:()=>n(`/bot-accounts?${t}`)})}function d(e){return a({queryKey:["bots",e,"api-keys"],queryFn:()=>n(`/bot-accounts/${e}/api-keys`),enabled:!!e})}function b(){const e=s();return u({mutationFn:t=>n("/bot-accounts",{method:"POST",body:JSON.stringify(t)}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function m(){const e=s();return u({mutationFn:({id:t,...o})=>n(`/bot-accounts/${t}`,{method:"PUT",body:JSON.stringify(o)}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function f(){const e=s();return u({mutationFn:t=>n(`/bot-accounts/${t}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function l(){const e=s();return u({mutationFn:({botId:t,name:o,scopes:i})=>n(`/bot-accounts/${t}/api-keys`,{method:"POST",body:JSON.stringify({name:o,scopes:i})}),onSuccess:(t,o)=>{e.invalidateQueries({queryKey:["bots",o.botId,"api-keys"]})}})}function q(){const e=s();return u({mutationFn:({botId:t,keyId:o})=>n(`/bot-accounts/${t}/api-keys/${o}`,{method:"DELETE"}),onSuccess:(t,o)=>{e.invalidateQueries({queryKey:["bots",o.botId,"api-keys"]})}})}function S(){const e=s();return u({mutationFn:({botId:t,role:o,type:i})=>n(`/bot-accounts/${t}/roles`,{method:"POST",body:JSON.stringify({role:o,type:i})}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}function p(){const e=s();return u({mutationFn:({botId:t,role:o})=>n(`/bot-accounts/${t}/roles/${encodeURIComponent(o)}`,{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["bots"]})}})}export{m as a,d as b,l as c,q as d,S as e,p as f,f as g,y as h,b as u};
|
|
2
|
+
//# sourceMappingURL=bots-DI6Wqp5X.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bots-
|
|
1
|
+
{"version":3,"file":"bots-DI6Wqp5X.js","sources":["../../src/api/bots.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { BotRecord, BotApiKeyRecord } from './types';\nimport type { LTRoleType } from './types';\n\ninterface BotListResponse {\n bots: BotRecord[];\n total: number;\n}\n\ninterface BotFilters {\n limit?: number;\n offset?: number;\n}\n\n// ── Query hooks ──────────────────────────────────────────────────────────────\n\nexport function useBots(filters: BotFilters = {}) {\n const params = new URLSearchParams();\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n\n return useQuery<BotListResponse>({\n queryKey: ['bots', filters],\n queryFn: () => apiFetch(`/bot-accounts?${params}`),\n });\n}\n\nexport function useBotApiKeys(botId: string) {\n return useQuery<{ keys: BotApiKeyRecord[] }>({\n queryKey: ['bots', botId, 'api-keys'],\n queryFn: () => apiFetch(`/bot-accounts/${botId}/api-keys`),\n enabled: !!botId,\n });\n}\n\n// ── Mutation hooks ───────────────────────────────────────────────────────────\n\nexport function useCreateBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (data: {\n name: string;\n description?: string;\n display_name?: string;\n roles?: { role: string; type: LTRoleType }[];\n }) =>\n apiFetch('/bot-accounts', {\n method: 'POST',\n body: JSON.stringify(data),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useUpdateBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n id,\n ...data\n }: {\n id: string;\n display_name?: string;\n description?: string;\n status?: string;\n }) =>\n apiFetch(`/bot-accounts/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useDeleteBot() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n apiFetch(`/bot-accounts/${id}`, { method: 'DELETE' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useCreateBotApiKey() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n botId,\n name,\n scopes,\n }: {\n botId: string;\n name: string;\n scopes?: string[];\n }) =>\n apiFetch<{ id: string; rawKey: string }>(`/bot-accounts/${botId}/api-keys`, {\n method: 'POST',\n body: JSON.stringify({ name, scopes }),\n }),\n onSuccess: (_data, vars) => {\n queryClient.invalidateQueries({ queryKey: ['bots', vars.botId, 'api-keys'] });\n },\n });\n}\n\nexport function useRevokeBotApiKey() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ botId, keyId }: { botId: string; keyId: string }) =>\n apiFetch(`/bot-accounts/${botId}/api-keys/${keyId}`, { method: 'DELETE' }),\n onSuccess: (_data, vars) => {\n queryClient.invalidateQueries({ queryKey: ['bots', vars.botId, 'api-keys'] });\n },\n });\n}\n\nexport function useAddBotRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({\n botId,\n role,\n type,\n }: {\n botId: string;\n role: string;\n type: LTRoleType;\n }) =>\n apiFetch(`/bot-accounts/${botId}/roles`, {\n method: 'POST',\n body: JSON.stringify({ role, type }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n\nexport function useRemoveBotRole() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: ({ botId, role }: { botId: string; role: string }) =>\n apiFetch(`/bot-accounts/${botId}/roles/${encodeURIComponent(role)}`, {\n method: 'DELETE',\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['bots'] });\n },\n });\n}\n"],"names":["useBots","filters","params","useQuery","apiFetch","useBotApiKeys","botId","useCreateBot","queryClient","useQueryClient","useMutation","data","useUpdateBot","id","useDeleteBot","useCreateBotApiKey","name","scopes","_data","vars","useRevokeBotApiKey","keyId","useAddBotRole","role","type","useRemoveBotRole"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-
|
|
1
|
+
{"version":3,"file":"capabilities-BKZZb8eM.js","sources":["../../src/api/capabilities.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\nexport interface CapabilityTool {\n name: string;\n description: string;\n inputSchema: Record<string, any>;\n serverName: string;\n serverId: string;\n}\n\nexport interface CapabilityCategory {\n name: string;\n tools: CapabilityTool[];\n}\n\nexport interface CapabilitiesResponse {\n categories: CapabilityCategory[];\n totalTools: number;\n}\n\nexport function useCapabilities() {\n return useQuery<CapabilitiesResponse>({\n queryKey: ['capabilities'],\n queryFn: () => apiFetch('/capabilities'),\n });\n}\n"],"names":["useCapabilities","useQuery","apiFetch"],"mappings":"uFAqBO,SAASA,GAAkB,CAChC,OAAOC,EAA+B,CACpC,SAAU,CAAC,cAAc,EACzB,QAAS,IAAMC,EAAS,eAAe,CAAA,CACxC,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as o,c as l,b as a}from"./vendor-query-
|
|
2
|
-
//# sourceMappingURL=controlplane-
|
|
1
|
+
import{u as o,c as l,b as a}from"./vendor-query-DLp59M9_.js";import{d as n}from"./index-DgCS2Frb.js";function s(){return n("/controlplane/apps")}function c(e){return n(`/controlplane/rollcall?app_id=${encodeURIComponent(e)}`)}function i(e){return n("/controlplane/throttle",{method:"POST",body:JSON.stringify(e)})}function m(e){return n("/controlplane/subscribe",{method:"POST",body:JSON.stringify(e)})}function f(e,t,u){let r=`/controlplane/streams?app_id=${encodeURIComponent(e)}&duration=${encodeURIComponent(t)}`;return n(r)}function b(e){return o({queryKey:["controlplane","apps"],queryFn:s,staleTime:6e4,enabled:(e==null?void 0:e.enabled)??!0})}function d(e,t){return o({queryKey:["controlplane","rollcall",e],queryFn:()=>c(e),enabled:!!e,refetchInterval:t})}function h(){const e=a();return l({mutationFn:i,onSuccess:()=>{setTimeout(()=>{e.invalidateQueries({queryKey:["controlplane","rollcall"]})},1500)}})}function S(e,t,u,r){return o({queryKey:["controlplane","streams",e,t,""],queryFn:()=>f(e,t),enabled:!!e,staleTime:15e3,refetchInterval:r})}function q(){return l({mutationFn:m})}export{h as a,q as b,d as c,S as d,b as u};
|
|
2
|
+
//# sourceMappingURL=controlplane-Djshb7fm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlplane-
|
|
1
|
+
{"version":3,"file":"controlplane-Djshb7fm.js","sources":["../../src/api/controlplane.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface ControlPlaneApp {\n appId: string;\n version: string;\n}\n\nexport interface QuorumProfile {\n namespace: string;\n app_id: string;\n engine_id: string;\n entity?: string;\n worker_topic?: string;\n stream?: string;\n stream_depth?: number;\n counts?: Record<string, number>;\n inited?: string;\n timestamp?: string;\n throttle?: number;\n reclaimDelay?: number;\n reclaimCount?: number;\n system?: {\n TotalMemoryGB: string;\n FreeMemoryGB: string;\n UsedMemoryGB: string;\n CPULoad: Array<Record<string, string>>;\n NetworkStats: Array<Record<string, unknown>>;\n };\n is_scout?: boolean;\n signature?: string;\n}\n\n// ── API functions ───────────────────────────────────────────────────────────\n\nfunction fetchApps() {\n return apiFetch<{ apps: ControlPlaneApp[] }>('/controlplane/apps');\n}\n\nfunction fetchRollCall(appId: string) {\n return apiFetch<{ profiles: QuorumProfile[] }>(`/controlplane/rollcall?app_id=${encodeURIComponent(appId)}`);\n}\n\nfunction postThrottle(body: { appId: string; throttle: number; topic?: string; guid?: string; scope?: 'engines' | 'workers' | 'all' }) {\n return apiFetch<{ success: boolean }>('/controlplane/throttle', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nfunction postSubscribe(body: { appId: string }) {\n return apiFetch<{ subscribed: boolean; appId: string }>('/controlplane/subscribe', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nexport interface StreamStats {\n pending: number;\n processed: number;\n byStream: Array<{ stream_type: 'engine' | 'worker'; stream_name: string; count: number }>;\n}\n\nfunction fetchStreamStats(appId: string, duration: string, stream?: string) {\n let url = `/controlplane/streams?app_id=${encodeURIComponent(appId)}&duration=${encodeURIComponent(duration)}`;\n if (stream) url += `&stream=${encodeURIComponent(stream)}`;\n return apiFetch<StreamStats>(url);\n}\n\n// ── Hooks ───────────────────────────────────────────────────────────────────\n\nexport function useControlPlaneApps(options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: ['controlplane', 'apps'],\n queryFn: fetchApps,\n staleTime: 60_000,\n enabled: options?.enabled ?? true,\n });\n}\n\nexport function useRollCall(appId: string, refetchInterval?: number | false) {\n return useQuery({\n queryKey: ['controlplane', 'rollcall', appId],\n queryFn: () => fetchRollCall(appId),\n enabled: !!appId,\n refetchInterval: refetchInterval ?? false,\n });\n}\n\nexport function useThrottle() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: postThrottle,\n onSuccess: () => {\n // Delay refetch so mesh members have time to process the throttle message\n setTimeout(() => {\n qc.invalidateQueries({ queryKey: ['controlplane', 'rollcall'] });\n }, 1500);\n },\n });\n}\n\nexport function useStreamStats(appId: string, duration: string, stream?: string, refetchInterval?: number | false) {\n return useQuery({\n queryKey: ['controlplane', 'streams', appId, duration, stream ?? ''],\n queryFn: () => fetchStreamStats(appId, duration, stream),\n enabled: !!appId,\n staleTime: 15_000,\n refetchInterval: refetchInterval ?? false,\n });\n}\n\nexport function useSubscribeMesh() {\n return useMutation({\n mutationFn: postSubscribe,\n });\n}\n"],"names":["fetchApps","apiFetch","fetchRollCall","appId","postThrottle","body","postSubscribe","fetchStreamStats","duration","stream","url","useControlPlaneApps","options","useQuery","useRollCall","refetchInterval","useThrottle","qc","useQueryClient","useMutation","useStreamStats","useSubscribeMesh"],"mappings":"qGAqCA,SAASA,GAAY,CACnB,OAAOC,EAAsC,oBAAoB,CACnE,CAEA,SAASC,EAAcC,EAAe,CACpC,OAAOF,EAAwC,iCAAiC,mBAAmBE,CAAK,CAAC,EAAE,CAC7G,CAEA,SAASC,EAAaC,EAAiH,CACrI,OAAOJ,EAA+B,yBAA0B,CAC9D,OAAQ,OACR,KAAM,KAAK,UAAUI,CAAI,CAAA,CAC1B,CACH,CAEA,SAASC,EAAcD,EAAyB,CAC9C,OAAOJ,EAAiD,0BAA2B,CACjF,OAAQ,OACR,KAAM,KAAK,UAAUI,CAAI,CAAA,CAC1B,CACH,CAQA,SAASE,EAAiBJ,EAAeK,EAAkBC,EAAiB,CAC1E,IAAIC,EAAM,gCAAgC,mBAAmBP,CAAK,CAAC,aAAa,mBAAmBK,CAAQ,CAAC,GAE5G,OAAOP,EAAsBS,CAAG,CAClC,CAIO,SAASC,EAAoBC,EAAiC,CACnE,OAAOC,EAAS,CACd,SAAU,CAAC,eAAgB,MAAM,EACjC,QAASb,EACT,UAAW,IACX,SAASY,GAAA,YAAAA,EAAS,UAAW,EAAA,CAC9B,CACH,CAEO,SAASE,EAAYX,EAAeY,EAAkC,CAC3E,OAAOF,EAAS,CACd,SAAU,CAAC,eAAgB,WAAYV,CAAK,EAC5C,QAAS,IAAMD,EAAcC,CAAK,EAClC,QAAS,CAAC,CAACA,EACX,gBAAiBY,CAAmB,CACrC,CACH,CAEO,SAASC,GAAc,CAC5B,MAAMC,EAAKC,EAAA,EACX,OAAOC,EAAY,CACjB,WAAYf,EACZ,UAAW,IAAM,CAEf,WAAW,IAAM,CACfa,EAAG,kBAAkB,CAAE,SAAU,CAAC,eAAgB,UAAU,EAAG,CACjE,EAAG,IAAI,CACT,CAAA,CACD,CACH,CAEO,SAASG,EAAejB,EAAeK,EAAkBC,EAAiBM,EAAkC,CACjH,OAAOF,EAAS,CACd,SAAU,CAAC,eAAgB,UAAWV,EAAOK,EAAoB,EAAE,EACnE,QAAS,IAAMD,EAAiBJ,EAAOK,CAAgB,EACvD,QAAS,CAAC,CAACL,EACX,UAAW,KACX,gBAAiBY,CAAmB,CACrC,CACH,CAEO,SAASM,GAAmB,CACjC,OAAOF,EAAY,CACjB,WAAYb,CAAA,CACb,CACH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{H as l,j as s,I as m,K as c}from"./index-DgCS2Frb.js";import{a}from"./vendor-query-DLp59M9_.js";const n=[{maxMs:0,color:"text-status-error"},{maxMs:300*1e3,color:"text-status-error"},{maxMs:900*1e3,color:"text-status-warning"},{maxMs:1/0,color:"text-text-secondary"}];function u(e){if(e<=0)return n[0].color;for(const t of n)if(e<t.maxMs)return t.color;return n[n.length-1].color}function x({until:e}){const[t,r]=a.useState(()=>new Date(e).getTime()-Date.now());a.useEffect(()=>{const o=setInterval(()=>{r(new Date(e).getTime()-Date.now())},1e3);return()=>clearInterval(o)},[e]);const i=a.useMemo(()=>{const o=new Date(e);return[{label:"ms",value:String(Math.max(0,t))},{label:"until",value:o.toISOString()},{label:"local",value:l(o,"MMM d, yyyy h:mm:ss a")}]},[e,t]);return s.jsxDEV(m,{options:i,children:s.jsxDEV("span",{className:`text-xs font-mono ${u(t)}`,children:c(t)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/CountdownTimer.tsx",lineNumber:42,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/CountdownTimer.tsx",lineNumber:41,columnNumber:5},this)}function p(e){return!!(e.assigned_to&&e.assigned_until&&new Date(e.assigned_until)>new Date)}function w(e){return!e.workflow_type}export{x as C,p as a,w as i};
|
|
2
|
+
//# sourceMappingURL=escalation-D8mrXtjS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation-
|
|
1
|
+
{"version":3,"file":"escalation-D8mrXtjS.js","sources":["../../src/components/common/display/CountdownTimer.tsx","../../src/lib/escalation.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { format as fnsFormat } from 'date-fns';\nimport { formatRemaining } from '../../../lib/format';\nimport { DateTooltip } from './DateTooltip';\n\nconst COUNTDOWN_THRESHOLDS = [\n { maxMs: 0, color: 'text-status-error' },\n { maxMs: 5 * 60 * 1000, color: 'text-status-error' },\n { maxMs: 15 * 60 * 1000, color: 'text-status-warning' },\n { maxMs: Infinity, color: 'text-text-secondary' },\n] as const;\n\nfunction countdownColor(remainingMs: number): string {\n if (remainingMs <= 0) return COUNTDOWN_THRESHOLDS[0].color;\n for (const t of COUNTDOWN_THRESHOLDS) {\n if (remainingMs < t.maxMs) return t.color;\n }\n return COUNTDOWN_THRESHOLDS[COUNTDOWN_THRESHOLDS.length - 1].color;\n}\n\nexport function CountdownTimer({ until }: { until: string }) {\n const [remaining, setRemaining] = useState(() => new Date(until).getTime() - Date.now());\n\n useEffect(() => {\n const interval = setInterval(() => {\n setRemaining(new Date(until).getTime() - Date.now());\n }, 1000);\n return () => clearInterval(interval);\n }, [until]);\n\n const options = useMemo(() => {\n const d = new Date(until);\n return [\n { label: 'ms', value: String(Math.max(0, remaining)) },\n { label: 'until', value: d.toISOString() },\n { label: 'local', value: fnsFormat(d, 'MMM d, yyyy h:mm:ss a') },\n ];\n }, [until, remaining]);\n\n return (\n <DateTooltip options={options}>\n <span className={`text-xs font-mono ${countdownColor(remaining)}`}>\n {formatRemaining(remaining)}\n </span>\n </DateTooltip>\n );\n}\n","import type { LTEscalationRecord } from '../api/types';\n\nexport function isEffectivelyClaimed(esc: LTEscalationRecord): boolean {\n return !!(\n esc.assigned_to &&\n esc.assigned_until &&\n new Date(esc.assigned_until) > new Date()\n );\n}\n\n/** An ACK escalation has no associated workflow — it's a notification, not a task. */\nexport function isAckEscalation(esc: LTEscalationRecord): boolean {\n return !esc.workflow_type;\n}\n\nexport function isAvailable(esc: LTEscalationRecord): boolean {\n return (\n esc.status === 'pending' &&\n (!esc.assigned_to ||\n !esc.assigned_until ||\n new Date(esc.assigned_until) <= new Date())\n );\n}\n"],"names":["COUNTDOWN_THRESHOLDS","countdownColor","remainingMs","CountdownTimer","until","remaining","setRemaining","useState","useEffect","interval","options","useMemo","d","fnsFormat","jsxDEV","DateTooltip","formatRemaining","isEffectivelyClaimed","esc","isAckEscalation"],"mappings":"uGAKA,MAAMA,EAAuB,CAC3B,CAAE,MAAO,EAAgB,MAAO,mBAAA,EAChC,CAAE,MAAO,IAAS,IAAO,MAAO,mBAAA,EAChC,CAAE,MAAO,IAAU,IAAM,MAAO,qBAAA,EAChC,CAAE,MAAO,IAAiB,MAAO,qBAAA,CACnC,EAEA,SAASC,EAAeC,EAA6B,CACnD,GAAIA,GAAe,EAAG,OAAOF,EAAqB,CAAC,EAAE,MACrD,UAAW,KAAKA,EACd,GAAIE,EAAc,EAAE,MAAO,OAAO,EAAE,MAEtC,OAAOF,EAAqBA,EAAqB,OAAS,CAAC,EAAE,KAC/D,CAEO,SAASG,EAAe,CAAE,MAAAC,GAA4B,CAC3D,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,IAAM,IAAI,KAAKH,CAAK,EAAE,QAAA,EAAY,KAAK,KAAK,EAEvFI,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAW,YAAY,IAAM,CACjCH,EAAa,IAAI,KAAKF,CAAK,EAAE,UAAY,KAAK,KAAK,CACrD,EAAG,GAAI,EACP,MAAO,IAAM,cAAcK,CAAQ,CACrC,EAAG,CAACL,CAAK,CAAC,EAEV,MAAMM,EAAUC,EAAAA,QAAQ,IAAM,CAC5B,MAAMC,EAAI,IAAI,KAAKR,CAAK,EACxB,MAAO,CACL,CAAE,MAAO,KAAM,MAAO,OAAO,KAAK,IAAI,EAAGC,CAAS,CAAC,CAAA,EACnD,CAAE,MAAO,QAAS,MAAOO,EAAE,aAAY,EACvC,CAAE,MAAO,QAAS,MAAOC,EAAUD,EAAG,uBAAuB,CAAA,CAAE,CAEnE,EAAG,CAACR,EAAOC,CAAS,CAAC,EAErB,OACES,EAAAA,OAACC,EAAA,CAAY,QAAAL,EACX,SAAAI,SAAC,OAAA,CAAK,UAAW,qBAAqBb,EAAeI,CAAS,CAAC,GAC5D,SAAAW,EAAgBX,CAAS,CAAA,EAD5B,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAEJ,CC5CO,SAASY,EAAqBC,EAAkC,CACrE,MAAO,CAAC,EACNA,EAAI,aACJA,EAAI,gBACJ,IAAI,KAAKA,EAAI,cAAc,EAAI,IAAI,KAEvC,CAGO,SAASC,EAAgBD,EAAkC,CAChE,MAAO,CAACA,EAAI,aACd"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,y as d,z as N,J as b}from"./index-DgCS2Frb.js";import{a as f}from"./vendor-query-DLp59M9_.js";import{F as h,b as i,c as n,a as x}from"./FilterBar-DEAbNQqp.js";import{P as v}from"./PriorityBadge-a7u8C9uY.js";import{R as g}from"./RolePill-BAeaQUXX.js";import{W as E}from"./WorkflowPill-Cc2MlYbB.js";import{C as j,i as D,a as V}from"./escalation-D8mrXtjS.js";import{a6 as w,a7 as y,a8 as m,o as k}from"./vendor-icons-CNyYGNsk.js";const r="text-text-secondary transition-colors group-hover/row:text-text-primary";function C({row:a}){if(D(a)){const l=a.status==="resolved"?"text-status-success":"text-text-tertiary";return e.jsxDEV(y,{className:`w-3 h-3 shrink-0 ${l}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:23,columnNumber:12},this)}return a.status==="resolved"?e.jsxDEV(m,{className:"w-2.5 h-2.5 shrink-0 text-status-success",strokeWidth:2.5},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:26,columnNumber:12},this):a.status==="cancelled"?e.jsxDEV(m,{className:"w-2.5 h-2.5 shrink-0 text-status-error",strokeWidth:2.5},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:29,columnNumber:12},this):V(a)?e.jsxDEV(m,{className:"w-2.5 h-2.5 shrink-0 text-status-warning",strokeWidth:2.5},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:32,columnNumber:12},this):e.jsxDEV(m,{className:"w-2.5 h-2.5 shrink-0 text-status-active",strokeWidth:2.5},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:35,columnNumber:10},this)}function _({metadata:a}){const[l,c]=f.useState(!1);if(!a||Object.keys(a).length===0)return e.jsxDEV("span",{className:"text-[11px] text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:45,columnNumber:12},this);const o=Object.keys(a),u=`${o.slice(0,2).join(", ")}${o.length>2?` +${o.length-2}`:""}`;return e.jsxDEV("div",{className:"w-full",children:[e.jsxDEV("button",{onClick:t=>{t.stopPropagation(),c(p=>!p)},className:`inline-flex max-w-full items-center gap-1 font-mono text-[11px] ${r}`,title:l?"Collapse metadata":"Expand metadata",children:[e.jsxDEV(k,{className:`h-3 w-3 shrink-0 transition-transform ${l?"rotate-90":""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:59,columnNumber:9},this),e.jsxDEV("span",{className:"truncate",children:`{ ${u} }`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:60,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:54,columnNumber:7},this),e.jsxDEV("div",{className:`grid transition-[grid-template-rows] duration-200 ease-out ${l?"grid-rows-[1fr]":"grid-rows-[0fr]"}`,children:e.jsxDEV("div",{className:"overflow-hidden",children:e.jsxDEV("div",{className:"mt-1 overflow-x-auto",onClick:t=>t.stopPropagation(),children:e.jsxDEV(b,{data:a,defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:68,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:66,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:65,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:62,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:53,columnNumber:5},this)}const F=[{key:"description",label:"Summary",render:a=>e.jsxDEV("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsxDEV("span",{className:"shrink-0",children:e.jsxDEV(C,{row:a},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:83,columnNumber:36},void 0)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:83,columnNumber:9},void 0),e.jsxDEV("span",{className:`truncate text-xs ${r}`,children:a.description||a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:84,columnNumber:9},void 0)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:82,columnNumber:7},void 0),className:"max-w-0"},{key:"workflow_type",label:"Workflow",render:a=>e.jsxDEV(E,{type:a.workflow_type||a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:95,columnNumber:22},void 0),className:"w-40 whitespace-nowrap"},{key:"metadata",label:"Metadata",render:a=>e.jsxDEV(_,{metadata:a.metadata},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:101,columnNumber:22},void 0),className:"w-80 max-w-[19rem] align-top"},{key:"role",label:"Role",render:a=>e.jsxDEV("span",{className:r,children:e.jsxDEV(g,{role:a.role,size:"md",tone:"inherit"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:111,columnNumber:9},void 0)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:110,columnNumber:7},void 0),className:"w-28"},{key:"priority",label:"Priority",render:a=>e.jsxDEV("span",{className:r,children:e.jsxDEV(v,{priority:a.priority,size:"sm",tone:"inherit"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:121,columnNumber:9},void 0)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:120,columnNumber:7},void 0),className:"w-14",sortable:!0},{key:"created_time",label:"Created",render:a=>e.jsxDEV("span",{className:`text-[11px] font-mono whitespace-nowrap ${r}`,title:a.created_at,children:d(a.created_at)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:131,columnNumber:7},void 0),className:"w-40 whitespace-nowrap"},{key:"created_at",label:"Ago",render:a=>e.jsxDEV("span",{className:`text-xs tabular-nums ${r}`,title:a.created_at,children:N(a.created_at)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:141,columnNumber:7},void 0),className:"w-12 whitespace-nowrap",sortable:!0}],M={key:"expires",label:e.jsxDEV(w,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:153,columnNumber:11},void 0),render:a=>a.assigned_until?e.jsxDEV(j,{until:a.assigned_until},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:156,columnNumber:7},void 0):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:158,columnNumber:7},void 0),className:"w-16 whitespace-nowrap"},P=[{value:"1",label:"P1"},{value:"2",label:"P2"},{value:"3",label:"P3"},{value:"4",label:"P4"}],T=[{value:"all",label:"All"},{value:"available",label:"Available"},{value:"claimed",label:"Claimed"},{value:"resolved",label:"Resolved"},{value:"cancelled",label:"Cancelled"},{value:"expired",label:"Expired"}];function B({filters:a,setFilter:l,roles:c,types:o,showStatus:u=!1,showSearch:t=!0,actions:p}){return e.jsxDEV(h,{actions:p,children:[u&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(i,{label:"Status",value:a.status??"",onChange:s=>l("status",s),options:T},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:238,columnNumber:11},this),e.jsxDEV(n,{},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:244,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:237,columnNumber:9},this),e.jsxDEV(i,{label:"Role",value:a.role,onChange:s=>l("role",s),options:c.map(s=>({value:s,label:s}))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:247,columnNumber:7},this),e.jsxDEV(n,{},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:253,columnNumber:7},this),e.jsxDEV(i,{label:"Type",value:a.type,onChange:s=>l("type",s),options:o.map(s=>({value:s,label:s}))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:254,columnNumber:7},this),e.jsxDEV(n,{},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:260,columnNumber:7},this),e.jsxDEV(i,{label:"Priority",value:a.priority,onChange:s=>l("priority",s),options:P},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:261,columnNumber:7},this),t&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(n,{},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:269,columnNumber:11},this),e.jsxDEV(x,{label:"Search",value:a.search??"",onChange:s=>l("search",s),placeholder:"ID, workflow, origin…"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:270,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:268,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-columns.tsx",lineNumber:235,columnNumber:5},this)}export{F as E,M as T,B as a};
|
|
2
|
+
//# sourceMappingURL=escalation-columns-CyLzgPkz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation-columns-CyLzgPkz.js","sources":["../../src/pages/operator/escalation-columns.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Circle, Bell, Clock, ChevronRight } from 'lucide-react';\nimport type { Column } from '../../components/common/data/DataTable';\nimport { FilterBar, FilterSelect, FilterInput, FilterDivider } from '../../components/common/data/FilterBar';\nimport { PriorityBadge } from '../../components/common/display/PriorityBadge';\nimport { RolePill } from '../../components/common/display/RolePill';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { CountdownTimer } from '../../components/common/display/CountdownTimer';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { formatAgoCompact, formatDateTime } from '../../lib/format';\nimport { isEffectivelyClaimed, isAckEscalation } from '../../lib/escalation';\nimport type { LTEscalationRecord } from '../../api/types';\n\n// Shared cell text: a consistent resting shade for every cell, sharpening to\n// the primary text colour when the row is hovered. Cells (and pills via their\n// `inherit` tone) all read this single source so the whole row darkens as one.\nconst CELL_TEXT = 'text-text-secondary transition-colors group-hover/row:text-text-primary';\n\n/** Status dot — rendered inline before summary. */\nfunction StatusDot({ row }: { row: LTEscalationRecord }) {\n if (isAckEscalation(row)) {\n const color = row.status === 'resolved' ? 'text-status-success' : 'text-text-tertiary';\n return <Bell className={`w-3 h-3 shrink-0 ${color}`} />;\n }\n if (row.status === 'resolved') {\n return <Circle className=\"w-2.5 h-2.5 shrink-0 text-status-success\" strokeWidth={2.5} />;\n }\n if (row.status === 'cancelled') {\n return <Circle className=\"w-2.5 h-2.5 shrink-0 text-status-error\" strokeWidth={2.5} />;\n }\n if (isEffectivelyClaimed(row)) {\n return <Circle className=\"w-2.5 h-2.5 shrink-0 text-status-warning\" strokeWidth={2.5} />;\n }\n // pending (unclaimed)\n return <Circle className=\"w-2.5 h-2.5 shrink-0 text-status-active\" strokeWidth={2.5} />;\n}\n\n/**\n * Metadata cell — a compact `{ key, key +N }` preview that expands inline to the\n * pretty-printed JSON. The same metadata the faceted query filters on, visible per row.\n */\nfunction MetadataCell({ metadata }: { metadata: Record<string, unknown> | null }) {\n const [open, setOpen] = useState(false);\n if (!metadata || Object.keys(metadata).length === 0) {\n return <span className=\"text-[11px] text-text-tertiary\">—</span>;\n }\n const keys = Object.keys(metadata);\n const preview = `${keys.slice(0, 2).join(', ')}${keys.length > 2 ? ` +${keys.length - 2}` : ''}`;\n // Width is fixed by the wrapper so toggling never changes the column width —\n // the JSON viewer reveals with an animated row-height transition, and long\n // lines scroll horizontally inside the cell rather than widening it.\n return (\n <div className=\"w-full\">\n <button\n onClick={(e) => { e.stopPropagation(); setOpen((v) => !v); }}\n className={`inline-flex max-w-full items-center gap-1 font-mono text-[11px] ${CELL_TEXT}`}\n title={open ? 'Collapse metadata' : 'Expand metadata'}\n >\n <ChevronRight className={`h-3 w-3 shrink-0 transition-transform ${open ? 'rotate-90' : ''}`} />\n <span className=\"truncate\">{`{ ${preview} }`}</span>\n </button>\n <div\n className={`grid transition-[grid-template-rows] duration-200 ease-out ${open ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'}`}\n >\n <div className=\"overflow-hidden\">\n <div className=\"mt-1 overflow-x-auto\" onClick={(e) => e.stopPropagation()}>\n {/* defaultCollapsed → root expanded, nested objects collapsed (one level). */}\n <JsonViewer data={metadata} defaultCollapsed />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n/** Base columns shared by all escalation list pages. */\nexport const ESCALATION_COLUMNS: Column<LTEscalationRecord>[] = [\n {\n key: 'description',\n label: 'Summary',\n render: (row) => (\n <div className=\"flex items-center gap-2 overflow-hidden\">\n <span className=\"shrink-0\"><StatusDot row={row} /></span>\n <span className={`truncate text-xs ${CELL_TEXT}`}>{row.description || row.type}</span>\n </div>\n ),\n className: 'max-w-0',\n },\n {\n key: 'workflow_type',\n label: 'Workflow',\n // The workflow function name (e.g. `richForm`, `basicSignal`) lives in\n // workflow_type; `type` is the escalation category. Fall back to type for\n // standalone escalations with no workflow.\n render: (row) => <WorkflowPill type={row.workflow_type || row.type} />,\n className: 'w-40 whitespace-nowrap',\n },\n {\n key: 'metadata',\n label: 'Metadata',\n render: (row) => <MetadataCell metadata={row.metadata} />,\n // Fixed width — never grows on expand (the viewer reveals via row-height).\n // Given extra room (borrowed from priority/ago/actions) so JSON wraps less.\n className: 'w-80 max-w-[19rem] align-top',\n },\n {\n key: 'role',\n label: 'Role',\n render: (row) => (\n <span className={CELL_TEXT}>\n <RolePill role={row.role} size=\"md\" tone=\"inherit\" />\n </span>\n ),\n className: 'w-28',\n },\n {\n key: 'priority',\n label: 'Priority',\n render: (row) => (\n <span className={CELL_TEXT}>\n <PriorityBadge priority={row.priority} size=\"sm\" tone=\"inherit\" />\n </span>\n ),\n className: 'w-14',\n sortable: true,\n },\n {\n key: 'created_time',\n label: 'Created',\n render: (row) => (\n <span className={`text-[11px] font-mono whitespace-nowrap ${CELL_TEXT}`} title={row.created_at}>\n {formatDateTime(row.created_at)}\n </span>\n ),\n className: 'w-40 whitespace-nowrap',\n },\n {\n key: 'created_at',\n label: 'Ago',\n render: (row) => (\n <span className={`text-xs tabular-nums ${CELL_TEXT}`} title={row.created_at}>\n {formatAgoCompact(row.created_at)}\n </span>\n ),\n className: 'w-12 whitespace-nowrap',\n sortable: true,\n },\n];\n\n/** Time-remaining column for claimed escalations — aligns with checkbox column on All Escalations. */\nexport const TIME_LEFT_COLUMN: Column<LTEscalationRecord> = {\n key: 'expires',\n label: (<Clock className=\"w-3.5 h-3.5 text-text-tertiary\" />) as any,\n render: (row) =>\n row.assigned_until ? (\n <CountdownTimer until={row.assigned_until} />\n ) : (\n <span className=\"text-xs text-text-tertiary\">—</span>\n ),\n className: 'w-16 whitespace-nowrap',\n};\n\n/** Status icon column — color-coded filled circle, or bell for ACK/notification escalations. */\nexport const STATUS_COLUMN: Column<LTEscalationRecord> = {\n key: 'status',\n label: '',\n render: (row) => {\n if (isAckEscalation(row)) {\n const color = row.status === 'resolved' ? 'text-status-success' : 'text-text-tertiary';\n return <Bell className={`w-3 h-3 ${color}`} />;\n }\n if (row.status === 'resolved') {\n return <Circle className=\"w-2.5 h-2.5 text-status-success\" strokeWidth={2.5} />;\n }\n if (isEffectivelyClaimed(row)) {\n return <Circle className=\"w-2.5 h-2.5 text-status-warning\" strokeWidth={2.5} />;\n }\n // pending (unclaimed)\n return <Circle className=\"w-2.5 h-2.5 text-text-tertiary\" strokeWidth={2.5} />;\n },\n className: 'w-8',\n};\n\n/** Claimed-only status icon (always orange, or bell for ACK). */\nexport const CLAIMED_STATUS_COLUMN: Column<LTEscalationRecord> = {\n key: 'status',\n label: '',\n render: (row) =>\n isAckEscalation(row)\n ? <Bell className=\"w-3 h-3 text-status-warning\" />\n : <Circle className=\"w-2.5 h-2.5 text-status-warning\" strokeWidth={2.5} />,\n className: 'w-8',\n};\n\n/** Priority filter options shared by both pages. */\nexport const PRIORITY_OPTIONS = [\n { value: '1', label: 'P1' },\n { value: '2', label: 'P2' },\n { value: '3', label: 'P3' },\n { value: '4', label: 'P4' },\n];\n\n/** Status filter options for escalation list pages. `all` spans every status so a\n * metadata search (e.g. one order id) returns its escalations regardless of status. */\nexport const STATUS_OPTIONS = [\n { value: 'all', label: 'All' },\n { value: 'available', label: 'Available' },\n { value: 'claimed', label: 'Claimed' },\n { value: 'resolved', label: 'Resolved' },\n { value: 'cancelled', label: 'Cancelled' },\n { value: 'expired', label: 'Expired' },\n];\n\n/** Shared filter bar for escalation list pages. */\nexport function EscalationFilterBar({\n filters,\n setFilter,\n roles,\n types,\n showStatus = false,\n showSearch = true,\n actions,\n}: {\n filters: { role: string; type: string; priority: string; status?: string; search?: string };\n setFilter: (key: any, value: string) => void;\n roles: string[];\n types: string[];\n showStatus?: boolean;\n // Free-text search lives here by default, but the faceted page folds it into\n // the drawer instead so there's a single search surface.\n showSearch?: boolean;\n actions?: React.ReactNode;\n}) {\n return (\n <FilterBar actions={actions}>\n {showStatus && (\n <>\n <FilterSelect\n label=\"Status\"\n value={filters.status ?? ''}\n onChange={(v) => setFilter('status', v)}\n options={STATUS_OPTIONS}\n />\n <FilterDivider />\n </>\n )}\n <FilterSelect\n label=\"Role\"\n value={filters.role}\n onChange={(v) => setFilter('role', v)}\n options={roles.map((r) => ({ value: r, label: r }))}\n />\n <FilterDivider />\n <FilterSelect\n label=\"Type\"\n value={filters.type}\n onChange={(v) => setFilter('type', v)}\n options={types.map((t) => ({ value: t, label: t }))}\n />\n <FilterDivider />\n <FilterSelect\n label=\"Priority\"\n value={filters.priority}\n onChange={(v) => setFilter('priority', v)}\n options={PRIORITY_OPTIONS}\n />\n {showSearch && (\n <>\n <FilterDivider />\n <FilterInput\n label=\"Search\"\n value={filters.search ?? ''}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"ID, workflow, origin…\"\n />\n </>\n )}\n </FilterBar>\n );\n}\n"],"names":["CELL_TEXT","StatusDot","row","isAckEscalation","color","jsxDEV","Bell","Circle","isEffectivelyClaimed","MetadataCell","metadata","open","setOpen","useState","keys","preview","e","v","ChevronRight","JsonViewer","ESCALATION_COLUMNS","this","WorkflowPill","RolePill","PriorityBadge","formatDateTime","formatAgoCompact","TIME_LEFT_COLUMN","Clock","CountdownTimer","PRIORITY_OPTIONS","STATUS_OPTIONS","EscalationFilterBar","filters","setFilter","roles","types","showStatus","showSearch","actions","FilterBar","Fragment","FilterSelect","FilterDivider","r","t","FilterInput"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as s}from"./index-DgCS2Frb.js";import{a as l}from"./vendor-query-DLp59M9_.js";import{g as b}from"./workflows-BfyR5VJt.js";import{D as g}from"./DataTable-Bf4dgxll.js";import{F as N,b as x}from"./FilterBar-DEAbNQqp.js";import{R as v,a as m}from"./RowActions--m4F6GW8.js";import{u as P}from"./useFilterParams-Ch-a71bE.js";import{P as W}from"./PageHeader-DcgGV0Y2.js";import{T as y}from"./TaskQueuePill--1OX6egx.js";import{W as D}from"./WorkflowPill-Cc2MlYbB.js";import{ad as E,ai as j,l as q}from"./vendor-icons-CNyYGNsk.js";import{c as C}from"./vendor-react-zA2lQFDs.js";import"./EmptyState-CLVm9KmA.js";function B(){const a=C(),{data:u,isLoading:c}=b(),{filters:r,setFilter:i}=P({filters:{search:"",queue:""}}),[o,p]=l.useState(r.search);l.useEffect(()=>{if(o===r.search)return;const e=setTimeout(()=>i("search",o),300);return()=>clearTimeout(e)},[o,i,r.search]);const t=u??[],d=l.useMemo(()=>[...new Set(t.map(e=>e.task_queue).filter(Boolean))].sort(),[t]),f=l.useMemo(()=>{let e=t;if(r.search){const n=r.search.toLowerCase();e=e.filter(h=>h.name.toLowerCase().includes(n))}return r.queue&&(e=e.filter(n=>n.task_queue===r.queue)),e},[t,r]),k=[{key:"name",label:"Workflow",render:e=>s.jsxDEV(D,{type:e.name},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:52,columnNumber:24},this)},{key:"task_queue",label:"Queue",render:e=>s.jsxDEV(y,{queue:e.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:57,columnNumber:24},this),className:"whitespace-nowrap"},{key:"registered",label:"Status",render:e=>e.registered?s.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent",children:[s.jsxDEV(E,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:64,columnNumber:131},this),"Certified"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:64,columnNumber:11},this):s.jsxDEV("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-sunken text-text-tertiary",children:"Durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:65,columnNumber:11},this),className:"whitespace-nowrap"},{key:"actions",label:"",render:e=>s.jsxDEV(v,{children:e.registered?s.jsxDEV(m,{icon:j,title:"View config",onClick:()=>a(`/workflows/registry/${encodeURIComponent(e.name)}`)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:74,columnNumber:13},this):s.jsxDEV(m,{icon:q,title:"Register workflow",onClick:()=>a(`/workflows/registry/new?workflow_type=${encodeURIComponent(e.name)}&task_queue=${encodeURIComponent(e.task_queue)}`)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:80,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:72,columnNumber:9},this),className:"w-16 text-right"}],w=e=>{e.registered?a(`/workflows/registry/${encodeURIComponent(e.name)}`):a(`/workflows/registry/new?workflow_type=${encodeURIComponent(e.name)}&task_queue=${encodeURIComponent(e.task_queue)}`)};return s.jsxDEV("div",{children:[s.jsxDEV(W,{title:"Workers",docsHash:"#docs:dashboard.md:task-queues"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:102,columnNumber:7},this),s.jsxDEV(N,{children:[s.jsxDEV("input",{type:"text",placeholder:"Search workers...",value:o,onChange:e=>p(e.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:105,columnNumber:9},this),s.jsxDEV(x,{label:"Queue",value:r.queue,onChange:e=>i("queue",e),options:d.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:104,columnNumber:7},this),s.jsxDEV(g,{columns:k,data:f,keyFn:e=>e.name,onRowClick:w,isLoading:c,emptyMessage:"No active workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:120,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:101,columnNumber:5},this)}export{B as WorkersPage};
|
|
2
|
+
//# sourceMappingURL=index-B5MAG4Uv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-B5MAG4Uv.js","sources":["../../src/pages/workflows/workers/WorkersPage.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Plus, Eye, ShieldCheck } from 'lucide-react';\nimport { useActiveWorkers } from '../../../api/workflows';\nimport { DataTable, type Column } from '../../../components/common/data/DataTable';\nimport { FilterBar, FilterSelect } from '../../../components/common/data/FilterBar';\nimport { RowAction, RowActionGroup } from '../../../components/common/layout/RowActions';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport type { ActiveWorker } from '../../../api/types';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { TaskQueuePill } from '../../../components/common/display/TaskQueuePill';\nimport { WorkflowPill } from '../../../components/common/display/WorkflowPill';\n\n// ── Page ──────────────────────────────────────────────────────────────────────\n\nexport function WorkersPage() {\n const navigate = useNavigate();\n const { data, isLoading } = useActiveWorkers();\n const { filters, setFilter } = useFilterParams({\n filters: { search: '', queue: '' },\n });\n\n const [searchInput, setSearchInput] = useState(filters.search);\n\n useEffect(() => {\n if (searchInput === filters.search) return;\n const timer = setTimeout(() => setFilter('search', searchInput), 300);\n return () => clearTimeout(timer);\n }, [searchInput, setFilter, filters.search]);\n\n const allWorkers = data ?? [];\n\n const queues = useMemo(\n () => [...new Set(allWorkers.map((w) => w.task_queue).filter(Boolean))].sort(),\n [allWorkers],\n );\n\n const workers = useMemo(() => {\n let result = allWorkers;\n if (filters.search) {\n const q = filters.search.toLowerCase();\n result = result.filter((w) => w.name.toLowerCase().includes(q));\n }\n if (filters.queue) result = result.filter((w) => w.task_queue === filters.queue);\n return result;\n }, [allWorkers, filters]);\n\n const columns: Column<ActiveWorker>[] = [\n {\n key: 'name',\n label: 'Workflow',\n render: (row) => <WorkflowPill type={row.name} />,\n },\n {\n key: 'task_queue',\n label: 'Queue',\n render: (row) => <TaskQueuePill queue={row.task_queue} />,\n className: 'whitespace-nowrap',\n },\n {\n key: 'registered',\n label: 'Status',\n render: (row) => row.registered\n ? <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent\"><ShieldCheck className=\"w-3 h-3\" />Certified</span>\n : <span className=\"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-sunken text-text-tertiary\">Durable</span>,\n className: 'whitespace-nowrap',\n },\n {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n {row.registered ? (\n <RowAction\n icon={Eye}\n title=\"View config\"\n onClick={() => navigate(`/workflows/registry/${encodeURIComponent(row.name)}`)}\n />\n ) : (\n <RowAction\n icon={Plus}\n title=\"Register workflow\"\n onClick={() => navigate(`/workflows/registry/new?workflow_type=${encodeURIComponent(row.name)}&task_queue=${encodeURIComponent(row.task_queue)}`)}\n />\n )}\n </RowActionGroup>\n ),\n className: 'w-16 text-right',\n },\n ];\n\n const handleRowClick = (row: ActiveWorker) => {\n if (row.registered) {\n navigate(`/workflows/registry/${encodeURIComponent(row.name)}`);\n } else {\n navigate(`/workflows/registry/new?workflow_type=${encodeURIComponent(row.name)}&task_queue=${encodeURIComponent(row.task_queue)}`);\n }\n };\n\n return (\n <div>\n <PageHeader title=\"Workers\" docsHash=\"#docs:dashboard.md:task-queues\" />\n\n <FilterBar>\n <input\n type=\"text\"\n placeholder=\"Search workers...\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n className=\"input text-[11px] py-1 px-2 w-56\"\n />\n <FilterSelect\n label=\"Queue\"\n value={filters.queue}\n onChange={(v) => setFilter('queue', v)}\n options={queues.map((q) => ({ value: q, label: q }))}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={workers}\n keyFn={(row) => row.name}\n onRowClick={handleRowClick}\n isLoading={isLoading}\n emptyMessage=\"No active workers\"\n />\n </div>\n );\n}\n"],"names":["WorkersPage","navigate","useNavigate","data","isLoading","useActiveWorkers","filters","setFilter","useFilterParams","searchInput","setSearchInput","useState","useEffect","timer","allWorkers","queues","useMemo","w","workers","result","q","columns","row","WorkflowPill","TaskQueuePill","jsxDEV","ShieldCheck","RowActionGroup","RowAction","Eye","Plus","handleRowClick","PageHeader","FilterBar","FilterSelect","v","DataTable"],"mappings":"mmBAeO,SAASA,GAAc,CAC5B,MAAMC,EAAWC,EAAA,EACX,CAAE,KAAAC,EAAM,UAAAC,CAAA,EAAcC,EAAA,EACtB,CAAE,QAAAC,EAAS,UAAAC,CAAA,EAAcC,EAAgB,CAC7C,QAAS,CAAE,OAAQ,GAAI,MAAO,EAAA,CAAG,CAClC,EAEK,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAASL,EAAQ,MAAM,EAE7DM,EAAAA,UAAU,IAAM,CACd,GAAIH,IAAgBH,EAAQ,OAAQ,OACpC,MAAMO,EAAQ,WAAW,IAAMN,EAAU,SAAUE,CAAW,EAAG,GAAG,EACpE,MAAO,IAAM,aAAaI,CAAK,CACjC,EAAG,CAACJ,EAAaF,EAAWD,EAAQ,MAAM,CAAC,EAE3C,MAAMQ,EAAaX,GAAQ,CAAA,EAErBY,EAASC,EAAAA,QACb,IAAM,CAAC,GAAG,IAAI,IAAIF,EAAW,IAAKG,GAAMA,EAAE,UAAU,EAAE,OAAO,OAAO,CAAC,CAAC,EAAE,KAAA,EACxE,CAACH,CAAU,CAAA,EAGPI,EAAUF,EAAAA,QAAQ,IAAM,CAC5B,IAAIG,EAASL,EACb,GAAIR,EAAQ,OAAQ,CAClB,MAAMc,EAAId,EAAQ,OAAO,YAAA,EACzBa,EAASA,EAAO,OAAQF,GAAMA,EAAE,KAAK,YAAA,EAAc,SAASG,CAAC,CAAC,CAChE,CACA,OAAId,EAAQ,QAAOa,EAASA,EAAO,OAAQF,GAAMA,EAAE,aAAeX,EAAQ,KAAK,GACxEa,CACT,EAAG,CAACL,EAAYR,CAAO,CAAC,EAElBe,EAAkC,CACtC,CACE,IAAK,OACL,MAAO,WACP,OAASC,YAASC,EAAA,CAAa,KAAMD,EAAI,IAAA,EAAxB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8B,CAAA,EAEjD,CACE,IAAK,aACL,MAAO,QACP,OAASA,YAASE,EAAA,CAAc,MAAOF,EAAI,UAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsC,EACvD,UAAW,mBAAA,EAEb,CACE,IAAK,aACL,MAAO,SACP,OAASA,GAAQA,EAAI,WACjBG,SAAC,OAAA,CAAK,UAAU,wGAAwG,SAAA,CAAAA,EAAAA,OAACC,EAAA,CAAY,UAAU,SAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAiC,EAAE,WAAA,CAAA,EAA3J,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoK,EACpKD,SAAC,OAAA,CAAK,UAAU,8GAA8G,SAAA,WAA9H,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqI,EACzI,UAAW,mBAAA,EAEb,CACE,IAAK,UACL,MAAO,GACP,OAASH,GACPG,SAACE,EAAA,CACE,WAAI,WACHF,EAAAA,OAACG,EAAA,CACC,KAAMC,EACN,MAAM,cACN,QAAS,IAAM5B,EAAS,uBAAuB,mBAAmBqB,EAAI,IAAI,CAAC,EAAE,CAAA,EAH/E,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAMAG,EAAAA,OAACG,EAAA,CACC,KAAME,EACN,MAAM,oBACN,QAAS,IAAM7B,EAAS,yCAAyC,mBAAmBqB,EAAI,IAAI,CAAC,eAAe,mBAAmBA,EAAI,UAAU,CAAC,EAAE,CAAA,EAHlJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAIA,EAZJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAcA,EAEF,UAAW,iBAAA,CACb,EAGIS,EAAkBT,GAAsB,CACxCA,EAAI,WACNrB,EAAS,uBAAuB,mBAAmBqB,EAAI,IAAI,CAAC,EAAE,EAE9DrB,EAAS,yCAAyC,mBAAmBqB,EAAI,IAAI,CAAC,eAAe,mBAAmBA,EAAI,UAAU,CAAC,EAAE,CAErI,EAEA,gBACG,MAAA,CACC,SAAA,CAAAG,SAACO,EAAA,CAAW,MAAM,UAAU,SAAS,gCAAA,EAArC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAsE,WAErEC,EAAA,CACC,SAAA,CAAAR,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,YAAY,oBACZ,MAAOhB,EACP,SAAW,GAAMC,EAAe,EAAE,OAAO,KAAK,EAC9C,UAAU,kCAAA,EALZ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAOAe,EAAAA,OAACS,EAAA,CACC,MAAM,QACN,MAAO5B,EAAQ,MACf,SAAW6B,GAAM5B,EAAU,QAAS4B,CAAC,EACrC,QAASpB,EAAO,IAAKK,IAAO,CAAE,MAAOA,EAAG,MAAOA,GAAI,CAAA,EAJrD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAKA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAcA,EAEAK,EAAAA,OAACW,EAAA,CACC,QAAAf,EACA,KAAMH,EACN,MAAQI,GAAQA,EAAI,KACpB,WAAYS,EACZ,UAAA3B,EACA,aAAa,mBAAA,EANf,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAOA,CAAA,EA1BF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA2BA,CAEJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{j as e,k as F}from"./index-DgCS2Frb.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{c as L,u as R,d as q,e as A}from"./workflows-BfyR5VJt.js";import{P as Q}from"./PageHeader-DcgGV0Y2.js";import{F as B,b as $,a as z}from"./FilterBar-DEAbNQqp.js";import{W as H}from"./WorkflowPill-Cc2MlYbB.js";import{N as K}from"./NamespacePill-eGsbJBFa.js";import{t as U,ab as G,b as O,a6 as X,ac as Y,ad as Z,P as ee}from"./vendor-icons-CNyYGNsk.js";import{B as se}from"./BotPicker-mqwKVOE3.js";import{L as te,c as ae,f as re}from"./vendor-react-zA2lQFDs.js";import"./bots-DI6Wqp5X.js";function oe({configs:s,selectedType:r,onSelect:f,tierMap:h,activeTypes:o}){const[N,w]=n.useState(""),[m,b]=n.useState(null),k=n.useMemo(()=>[...new Set(s.map(t=>t.task_queue).filter(Boolean))].sort(),[s]),a=n.useMemo(()=>{const t=N.toLowerCase().trim(),l=d=>{var u;return!t||d.workflow_type.toLowerCase().includes(t)||((u=d.description)==null?void 0:u.toLowerCase().includes(t))},y=(m?[m]:k).map(d=>({queue:d,workflows:s.filter(u=>u.task_queue===d&&l(u))})).filter(d=>d.workflows.length>0);if(!m){const d=s.filter(u=>!u.task_queue&&l(u));d.length>0&&y.push({queue:"",workflows:d})}return y},[s,k,N,m]);return e.jsxDEV("div",{children:[e.jsxDEV(B,{children:[k.length>1&&e.jsxDEV($,{label:"Queue",value:m??"",onChange:t=>b(t||null),options:k.map(t=>({value:t,label:t}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:56,columnNumber:11},this),e.jsxDEV(z,{label:"Search",value:N,onChange:w,placeholder:`${s.length} workflows…`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:54,columnNumber:7},this),a.length===0?e.jsxDEV("p",{className:"text-sm text-text-tertiary py-8 text-center",children:"No workflows match your filter."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:72,columnNumber:9},this):e.jsxDEV("div",{className:"space-y-10",children:a.map(({queue:t,workflows:l})=>e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"sticky top-[60px] z-10 bg-surface flex items-center gap-2 py-2 mb-2 border-b border-surface-border",children:[t?e.jsxDEV(U,{className:"w-3 h-3 text-accent",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:79,columnNumber:19},this):e.jsxDEV(G,{className:"w-3 h-3 text-text-quaternary",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:81,columnNumber:19},this),e.jsxDEV("h2",{className:"section-h2",children:t||"No Queue"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:83,columnNumber:17},this),e.jsxDEV("span",{className:"text-xs text-text-quaternary",children:l.length},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:84,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:77,columnNumber:15},this),e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:l.map(c=>e.jsxDEV(le,{config:c,isSelected:r===c.workflow_type,tier:h.get(c.workflow_type)??"durable",cronActive:(o==null?void 0:o.has(c.workflow_type))??!1,onSelect:f},c.workflow_type,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:88,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:86,columnNumber:15},this)]},t||"__none__",!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:76,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:74,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:53,columnNumber:5},this)}function le({config:s,isSelected:r,tier:f,cronActive:h,onSelect:o}){const N=f==="certified"?"certified":f==="registered"?"registered":"durable";return e.jsxDEV("button",{onClick:()=>o(s),className:"group relative w-full text-left py-2 px-3 -mx-3 rounded-md transition-colors duration-150",children:[r&&e.jsxDEV("span",{className:"absolute left-0 top-1 bottom-1 w-0.5 bg-accent rounded-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:127,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(H,{type:s.workflow_type,size:"md",variant:N},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:130,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"flex-1 min-w-0 truncate text-[10px] text-text-tertiary group-hover:text-text-secondary transition-colors",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:132,columnNumber:11},this),e.jsxDEV("span",{className:"ml-auto flex items-center gap-2 shrink-0",children:[s.execute_as&&e.jsxDEV("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[9px] bg-accent/10 text-accent rounded",children:[e.jsxDEV(O,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:139,columnNumber:15},this),s.execute_as]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:138,columnNumber:13},this),h&&e.jsxDEV("span",{title:"Cron schedule active",children:e.jsxDEV(X,{className:"w-3 h-3 text-status-success/70 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:145,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:144,columnNumber:13},this),e.jsxDEV(K,{namespace:"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:129,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:122,columnNumber:5},this)}const I=`{
|
|
2
|
+
"data": {},
|
|
3
|
+
"metadata": {}
|
|
4
|
+
}`;function ie(s){return typeof s=="boolean"?"boolean":typeof s=="number"?"number":Array.isArray(s)?"array":s!==null&&typeof s=="object"?"object":"string"}function C(s){if(!s)return[];const r=s.data;return!r||typeof r!="object"?[]:Object.entries(r).map(([f,h])=>({key:f,type:ie(h),defaultValue:h}))}function P(s){return{...s}}function M(s,r){return JSON.stringify({data:s,metadata:r},null,2)}function ne({config:s,overrideBot:r,onOverrideChange:f,showOverride:h}){const{user:o}=F(),N=r||s.execute_as;return e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg px-4 py-3 space-y-2",children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary uppercase tracking-wider font-medium",children:"Running as"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:23,columnNumber:9},this),N&&!r&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"configured default"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:25,columnNumber:11},this),r&&e.jsxDEV("span",{className:"text-[9px] text-accent",children:"admin override"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:28,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:22,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-1.5",children:N?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(O,{className:"w-3.5 h-3.5 text-accent/70"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:34,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-mono",children:N},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:35,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:33,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Y,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:39,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:(o==null?void 0:o.displayName)||(o==null?void 0:o.username)||"you"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:40,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:38,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:31,columnNumber:7},this),h&&f&&e.jsxDEV("div",{className:"pt-1 border-t border-surface-border",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary mb-1 block",children:"Override identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:48,columnNumber:11},this),e.jsxDEV(se,{selected:r??"",onChange:f,placeholder:s.execute_as?`Default: ${s.execute_as}`:"Invoking user (default)"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:21,columnNumber:5},this)}function me({selectedConfig:s,isJsonMode:r,hasFormView:f,jsonInput:h,formFields:o,dataFields:N,onJsonChange:w,onToggleMode:m,onUpdateFormField:b,onSetFormFields:k}){return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-baseline justify-between mb-2",children:[e.jsxDEV("label",{className:"block text-xs text-text-secondary",children:"Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:36,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[f&&e.jsxDEV("button",{type:"button",onClick:m,className:"text-[10px] text-accent hover:underline",children:r?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:41,columnNumber:13},this),s.envelope_schema?e.jsxDEV("span",{className:"text-[10px] text-accent",children:"Pre-filled from workflow config"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:50,columnNumber:13},this):e.jsxDEV("span",{className:"text-[10px] text-status-warning",children:"No template"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:54,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:39,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:35,columnNumber:7},this),!s.envelope_schema&&e.jsxDEV("div",{className:"bg-surface-sunken border border-surface-border rounded px-4 py-3 mb-3",children:e.jsxDEV("p",{className:"text-xs text-text-secondary leading-relaxed",children:["This workflow has no input template. Edit the JSON directly below, or ",e.jsxDEV(te,{to:"/workflows/registry/new",className:"text-status-success hover:underline",children:"register it"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:64,columnNumber:83},this)," in the Workflow Registry with an envelope schema for pre-filled fields and form-based input."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:63,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:62,columnNumber:9},this),r||!f?e.jsxDEV("textarea",{value:h,onChange:a=>w(a.target.value),className:"input-json",rows:12,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:71,columnNumber:9},this):e.jsxDEV("div",{className:"space-y-3",children:N.map(({key:a,type:t})=>{var d,u;const l=o[a],c=typeof l=="string"?l:JSON.stringify(l??(t==="array"?[]:{}),null,2),y=Math.min(20,Math.max(4,((u=(d=c==null?void 0:c.split)==null?void 0:d.call(c,`
|
|
5
|
+
`))==null?void 0:u.length)??4));return e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a,e.jsxDEV("span",{className:"ml-2 font-normal normal-case",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:99,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:97,columnNumber:17},this),t==="boolean"?e.jsxDEV("select",{value:String(l??!1),onChange:x=>b(a,x.target.value,t),className:"select text-xs w-full",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:111,columnNumber:21},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:112,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:104,columnNumber:19},this):t==="object"||t==="array"?e.jsxDEV("textarea",{value:c,onChange:x=>{try{b(a,JSON.parse(x.target.value),t)}catch{k({...o,[a]:x.target.value})}},className:"input-json w-full",rows:y,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:115,columnNumber:19},this):e.jsxDEV("input",{type:t==="number"?"number":"text",value:String(l??""),onChange:x=>b(a,x.target.value,t),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:137,columnNumber:19},this)]},a,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:96,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:80,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1.5",children:["The envelope wraps your workflow input. ",e.jsxDEV("code",{className:"text-accent/80",children:"data"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:152,columnNumber:49},this)," holds workflow-specific fields; ",e.jsxDEV("code",{className:"text-accent/80",children:"metadata"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:152,columnNumber:126},this)," is optional context."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:151,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:34,columnNumber:5},this)}function ce({selected:s,executionsPath:r}){const f=ae(),{isSuperAdmin:h,hasRoleType:o}=F(),N=h||o("admin"),w=L(),[m,b]=n.useState(I),[k,a]=n.useState(""),[t,l]=n.useState({}),[c,y]=n.useState(!1),[d,u]=n.useState(""),x=s.certified,[V,p]=n.useState(x),S=n.useMemo(()=>C(s.envelope_schema??null),[s.envelope_schema]),_=S.length>0,W=n.useMemo(()=>{if(!s.envelope_schema)return{};const i=s.envelope_schema.metadata;return i&&typeof i=="object"?i:{}},[s.envelope_schema]);n.useEffect(()=>{var j;a(""),w.reset();const i=sessionStorage.getItem("lt:invoke:prefill");if(i){sessionStorage.removeItem("lt:invoke:prefill"),b(i);try{const E=JSON.parse(i),D=(E==null?void 0:E.data)??E;D&&typeof D=="object"&&l(P(D))}catch{}y(!0),u("");return}const g=s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):I;b(g),(j=s.envelope_schema)!=null&&j.data&&typeof s.envelope_schema.data=="object"?l(P(s.envelope_schema.data)):l({}),y(!C(s.envelope_schema??null).length),u(""),p(x)},[s.workflow_type]);const v=()=>{if(c)try{const i=JSON.parse(m);i.data&&typeof i.data=="object"&&l(P(i.data))}catch{}else b(M(t,W));y(!c)},J=(i,g,j)=>{let E=g;j==="number"?E=g===""?0:Number(g):j==="boolean"&&(E=g==="true"||g===!0);const D={...t,[i]:E};l(D),b(M(D,W))},T=async()=>{a("");let i;try{i=JSON.parse(m)}catch{a("Invalid JSON");return}const{data:g,metadata:j}=i;if(!g||typeof g!="object"){a('Envelope must include a "data" object');return}try{const E={...j??{}};V&&(E.certified=!0),await w.mutateAsync({workflowType:s.workflow_type,data:g,metadata:E,...d?{execute_as:d}:{}}),f(r)}catch{}};return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("h2",{className:"text-lg font-mono font-medium text-text-primary",children:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:126,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"text-xs text-text-quaternary mt-1 leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:128,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:125,columnNumber:7},this),e.jsxDEV(ne,{config:s,overrideBot:d,onOverrideChange:u,showOverride:N},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:134,columnNumber:7},this),x&&e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:V,onChange:i=>p(i.target.checked),className:"rounded border-surface-border text-accent focus:ring-accent/30"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:143,columnNumber:11},this),e.jsxDEV(Z,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:149,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-text-secondary",children:"Enable task tracking and escalation routing"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:150,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:142,columnNumber:9},this),e.jsxDEV(me,{selectedConfig:s,isJsonMode:c,hasFormView:_,jsonInput:m,formFields:t,dataFields:S,onJsonChange:i=>{b(i),a("")},onToggleMode:v,onUpdateFormField:J,onSetFormFields:l},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:154,columnNumber:7},this),k&&e.jsxDEV("p",{className:"text-xs text-status-error",children:k},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:167,columnNumber:22},this),w.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:w.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:168,columnNumber:32},this),w.isSuccess&&e.jsxDEV("p",{className:"text-xs text-status-success",children:"Workflow started"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:169,columnNumber:36},this),e.jsxDEV("button",{onClick:T,disabled:w.isPending,className:"btn-primary",children:w.isPending?"Starting...":"Start Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:171,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:124,columnNumber:5},this)}function de(){const[s,r]=re(),{data:f,isLoading:h}=R(),{data:o,isLoading:N}=q(),{data:w}=A(),m=s.get("type")??"",b=f??[],k=n.useMemo(()=>{const p=new Map;for(const S of o??[])p.set(S.workflow_type,S.tier??"durable");return p},[o]),a=n.useMemo(()=>{const p=b.filter(v=>v.invocable),S=new Set(b.map(v=>v.workflow_type)),W=(o??[]).filter(v=>v.active&&!S.has(v.workflow_type)).map(v=>({workflow_type:v.workflow_type,task_queue:v.task_queue??"",invocable:!0,certified:!1,description:null,default_role:"reviewer",roles:[],invocation_roles:[],consumes:[],envelope_schema:null,resolver_schema:null,cron_schedule:null,execute_as:null}));return[...p,...W]},[b,o]),t=a.find(p=>p.workflow_type===m),l=new Set((w??[]).filter(p=>p.active).map(p=>p.workflow_type)),c="/workflows/executions",y=n.useRef(null),[d,u]=n.useState(!0),x=n.useRef(m);n.useEffect(()=>{if(x.current!==m){u(!1);const p=setTimeout(()=>{x.current=m,u(!0)},120);return()=>clearTimeout(p)}},[m]),n.useEffect(()=>{a.length===1&&!s.get("type")&&r({type:a[0].workflow_type},{replace:!0})},[a.length]);const V=p=>{r({type:p.workflow_type},{replace:!0})};return h||N?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/workflows/start/StartWorkflowPage.tsx",lineNumber:88,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:89,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:87,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(Q,{title:"Invoke",docsHash:"#docs:dashboard.md:invoke-workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:96,columnNumber:7},this),a.length===0?e.jsxDEV("div",{className:"py-16 text-center",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:"No invocable workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:100,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Mark workflows as invocable in the registry, or start the server with examples enabled."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:99,columnNumber:9},this):e.jsxDEV("div",{className:"grid grid-cols-3 gap-8 items-start",children:[e.jsxDEV("div",{className:"col-span-2",children:e.jsxDEV(oe,{configs:a,selectedType:m,onSelect:V,tierMap:k,activeTypes:l},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:108,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:107,columnNumber:11},this),e.jsxDEV("div",{ref:y,className:`sticky top-4 transition-all duration-200 ease-out ${d?"opacity-100 translate-y-0":"opacity-0 translate-y-1"}`,children:m&&t?e.jsxDEV("div",{className:"border-l border-surface-border pl-6",children:e.jsxDEV(ce,{selected:t,executionsPath:c},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:126,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:125,columnNumber:15},this):e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-24 text-center",children:[e.jsxDEV(ee,{className:"w-6 h-6 text-text-quaternary mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:130,columnNumber:17},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:"Select a workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:131,columnNumber:17},this),e.jsxDEV("p",{className:"text-xs text-text-quaternary mt-1",children:"Choose one from the list to configure and invoke it."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:129,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:118,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:95,columnNumber:5},this)}function Ee(){return e.jsxDEV(de,{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/DurableInvokePage.tsx",lineNumber:4,columnNumber:10},this)}export{Ee as DurableInvokePage,de as StartWorkflowPage};
|
|
6
|
+
//# sourceMappingURL=index-BfxiRwk2.js.map
|