@hotmeshio/long-tail 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/escalations/resolve.js +1 -0
- package/build/api/files.d.ts +4 -0
- package/build/api/files.js +14 -0
- package/build/api/workflows/config.js +5 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +3 -3
- package/build/lib/db/schemas/002_seed.sql +3 -81
- package/build/lib/storage/mime.js +20 -0
- package/build/routes/file-browser.js +30 -0
- package/build/routes/files.js +20 -18
- package/build/services/config/sql.d.ts +3 -0
- package/build/services/config/sql.js +15 -1
- package/build/services/config/write.d.ts +6 -0
- package/build/services/config/write.js +64 -0
- package/build/services/cron/index.d.ts +5 -0
- package/build/services/cron/index.js +30 -0
- package/build/services/insight/index.js +3 -0
- package/build/services/interceptor/activities/task.d.ts +1 -0
- package/build/services/interceptor/activities/task.js +2 -1
- package/build/services/interceptor/activities/workflow.js +1 -0
- package/build/services/interceptor/index.js +4 -4
- package/build/services/interceptor/lifecycle.js +1 -1
- package/build/services/mcp/db.d.ts +17 -0
- package/build/services/mcp/db.js +50 -0
- package/build/services/mcp/sql.d.ts +4 -1
- package/build/services/mcp/sql.js +9 -2
- package/build/services/oauth/index.js +4 -1
- package/build/services/oauth/providers/google.js +7 -2
- package/build/services/orchestrator/index.js +5 -0
- package/build/services/task/crud.js +1 -0
- package/build/services/task/sql.d.ts +1 -1
- package/build/services/task/sql.js +2 -2
- package/build/services/task/types.d.ts +2 -0
- package/build/services/workers/registry.js +3 -1
- package/build/services/workflow-invocation.js +8 -1
- package/build/start/workers.d.ts +2 -1
- package/build/start/workers.js +66 -6
- package/build/system/index.d.ts +12 -10
- package/build/system/index.js +240 -67
- package/build/system/mcp-servers/playwright/schemas.d.ts +12 -12
- package/build/system/seed/index.d.ts +0 -7
- package/build/system/seed/index.js +5 -46
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/startup.d.ts +59 -2
- package/dashboard/dist/assets/AdminDashboard-CsTOErp1.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-Bprul9Eb.js.map → AdminDashboard-CsTOErp1.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-BqQA3IJp.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-H_z5mC10.js.map → AvailableEscalationsPage-BqQA3IJp.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-C2xR1xay.js +2 -0
- package/dashboard/dist/assets/{BotPicker-DcvILNUf.js.map → BotPicker-C2xR1xay.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-CRtHQsAv.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-BWPbzgEe.js.map → CollapsibleSection-CRtHQsAv.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-Cy6KVLfC.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +2 -0
- package/dashboard/dist/assets/{CopyableId-CRED8hvk.js.map → CopyableId-DmLF-RqZ.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-BABUv1V2.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-eOk2EqQ5.js.map → CustomDurationPicker-BABUv1V2.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-D3-wSEf0.js +2 -0
- package/dashboard/dist/assets/{DataTable-bd2PTBJd.js.map → DataTable-D3-wSEf0.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-DHKmMqRA.js +2 -0
- package/dashboard/dist/assets/DropZone-DHKmMqRA.js.map +1 -0
- package/dashboard/dist/assets/ElapsedCell-DrJif03B.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-BGo8vyus.js.map → ElapsedCell-DrJif03B.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js.map +1 -0
- package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js +2 -0
- package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js.map +1 -0
- package/dashboard/dist/assets/EventTable-Dh3_9DAY.js +2 -0
- package/dashboard/dist/assets/{EventTable-CmFhswLW.js.map → EventTable-Dh3_9DAY.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/{FilterBar-BQNzsd3A.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-CyEkulVR.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-OWOn-HiC.js.map → ListToolbar-CyEkulVR.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-ChLa6Gl7.js +2 -0
- package/dashboard/dist/assets/{McpOverview-OkEzvClD.js.map → McpOverview-ChLa6Gl7.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-ERVuNEEK.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-DMeiG4i_.js.map → McpRunDetailPage-ERVuNEEK.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js.map +1 -0
- package/dashboard/dist/assets/Modal-DEODGeqx.js +2 -0
- package/dashboard/dist/assets/{Modal-Dir9Rlnx.js.map → Modal-DEODGeqx.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-CJm_BTPU.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-OqWC6Azy.js.map → OperatorDashboard-CJm_BTPU.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js +2 -0
- package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-C7D5d_HY.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-vfnCDyQK.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-DZIP6grw.js.map → ProcessDetailPage-vfnCDyQK.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js.map +1 -0
- package/dashboard/dist/assets/RolePill-BhVC0cc3.js +2 -0
- package/dashboard/dist/assets/{RolePill-D6nMxMvp.js.map → RolePill-BhVC0cc3.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DYSt2aAr.js +2 -0
- package/dashboard/dist/assets/RolesPage-DYSt2aAr.js.map +1 -0
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
- package/dashboard/dist/assets/{RowActions-JqgAB0p3.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CD7_Dmb0.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-KAlKtitB.js.map → RunAsSelector-CD7_Dmb0.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/{StatCard-B-WLhOaH.js.map → StatCard-DlgF0CJC.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +2 -0
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js.map +1 -0
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-D9Xvdf18.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-CJHMzYJj.js.map → StickyPagination-F9FZsRy9.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js.map +1 -0
- package/dashboard/dist/assets/TagInput-DftaRHDV.js +2 -0
- package/dashboard/dist/assets/{TagInput-DcPnUnSJ.js.map → TagInput-DftaRHDV.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js +2 -0
- package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js.map +1 -0
- package/dashboard/dist/assets/TasksListPage-g6XIbhju.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-DeewV4Gp.js.map → TasksListPage-g6XIbhju.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-BihIwEbB.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-DJZq-e4R.js.map → TimeAgo-BihIwEbB.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-GOFcvE-i.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-Dx5uwGfS.js.map → TimestampCell-GOFcvE-i.js.map} +1 -1
- package/dashboard/dist/assets/UserName-CmMVt4vS.js +2 -0
- package/dashboard/dist/assets/{UserName-CnGk7MgL.js.map → UserName-CmMVt4vS.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-soRFz_30.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-CPQ0fIwf.js.map → WorkflowExecutionPage-soRFz_30.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-DUDDyBsj.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-BrD5d1AG.js.map → WorkflowPill-DUDDyBsj.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-z3Ztiz1y.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-lBp2E6rN.js.map → WorkflowsOverview-z3Ztiz1y.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js.map +1 -0
- package/dashboard/dist/assets/{bots-fc_O_YIq.js → bots-BZPXDh_y.js} +2 -2
- package/dashboard/dist/assets/{bots-fc_O_YIq.js.map → bots-BZPXDh_y.js.map} +1 -1
- package/dashboard/dist/assets/escalation-DBUIq1Z4.js +2 -0
- package/dashboard/dist/assets/{escalation-BYhLYHBz.js.map → escalation-DBUIq1Z4.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-DL4zsR8Y.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-DjJyuC1g.js.map → escalation-columns-DL4zsR8Y.js.map} +1 -1
- package/dashboard/dist/assets/helpers-D50KFFkI.js +2 -0
- package/dashboard/dist/assets/{helpers-CQG3Rh2y.js.map → helpers-D50KFFkI.js.map} +1 -1
- package/dashboard/dist/assets/index-B-ioA6yv.js +2 -0
- package/dashboard/dist/assets/index-B-ioA6yv.js.map +1 -0
- package/dashboard/dist/assets/index-B-jzKfuv.js +2 -0
- package/dashboard/dist/assets/index-B-jzKfuv.js.map +1 -0
- package/dashboard/dist/assets/index-BMpoMc4A.js +2 -0
- package/dashboard/dist/assets/{index-D51PaQZY.js.map → index-BMpoMc4A.js.map} +1 -1
- package/dashboard/dist/assets/index-BU04qgJt.js +15 -0
- package/dashboard/dist/assets/index-BU04qgJt.js.map +1 -0
- package/dashboard/dist/assets/index-BUjxYyxc.js +63 -0
- package/dashboard/dist/assets/index-BUjxYyxc.js.map +1 -0
- package/dashboard/dist/assets/index-BpoHVMV7.js +2 -0
- package/dashboard/dist/assets/index-BpoHVMV7.js.map +1 -0
- package/dashboard/dist/assets/index-CEnDYJOO.js +2 -0
- package/dashboard/dist/assets/index-CEnDYJOO.js.map +1 -0
- package/dashboard/dist/assets/index-CbuH92vk.js +6 -0
- package/dashboard/dist/assets/index-CbuH92vk.js.map +1 -0
- package/dashboard/dist/assets/index-D9_hZmsW.js +5 -0
- package/dashboard/dist/assets/{index-KYpLvJKB.js.map → index-D9_hZmsW.js.map} +1 -1
- package/dashboard/dist/assets/index-DrouIN-M.js +2 -0
- package/dashboard/dist/assets/{index-DR4qQvlW.js.map → index-DrouIN-M.js.map} +1 -1
- package/dashboard/dist/assets/index-DzICLMI7.js +2 -0
- package/dashboard/dist/assets/{index-DNtXXy1o.js.map → index-DzICLMI7.js.map} +1 -1
- package/dashboard/dist/assets/index-efS5gKpv.css +1 -0
- package/dashboard/dist/assets/index-qT78AZDq.js +2 -0
- package/dashboard/dist/assets/index-qT78AZDq.js.map +1 -0
- package/dashboard/dist/assets/mcp-D0GrHRFe.js +2 -0
- package/dashboard/dist/assets/{mcp-D2XfRh8v.js.map → mcp-D0GrHRFe.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js → mcp-query-DC5woQn5.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js.map → mcp-query-DC5woQn5.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js → mcp-runs-CsoVQoPB.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js.map → mcp-runs-CsoVQoPB.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-unpIb4gX.js +2 -0
- package/dashboard/dist/assets/{namespaces-BwMljx6f.js.map → namespaces-unpIb4gX.js.map} +1 -1
- package/dashboard/dist/assets/{roles-Bd_sTV6I.js → roles--kBaFljg.js} +2 -2
- package/dashboard/dist/assets/{roles-Bd_sTV6I.js.map → roles--kBaFljg.js.map} +1 -1
- package/dashboard/dist/assets/settings-B96YkawY.js +2 -0
- package/dashboard/dist/assets/{settings-BCb8eFyA.js.map → settings-B96YkawY.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-Bq54qGGq.js → tasks-D_1NCfOZ.js} +2 -2
- package/dashboard/dist/assets/{tasks-Bq54qGGq.js.map → tasks-D_1NCfOZ.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-BTbGf536.js → useEventHooks-BPjEkCpD.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-BTbGf536.js.map → useEventHooks-BPjEkCpD.js.map} +1 -1
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js → useExpandedRows-CkcEntB-.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js.map → useExpandedRows-CkcEntB-.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js → useFilterParams-DZCAaBC7.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js.map → useFilterParams-DZCAaBC7.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js → useYamlActivityEvents-D3RQjfzo.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js.map → useYamlActivityEvents-D3RQjfzo.js.map} +1 -1
- package/dashboard/dist/assets/{users-BTBhafGc.js → users-e2oatvoj.js} +2 -2
- package/dashboard/dist/assets/{users-BTBhafGc.js.map → users-e2oatvoj.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-CWl44VA6.js → vendor-icons-BkK55L-1.js} +103 -88
- package/dashboard/dist/assets/vendor-icons-BkK55L-1.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +22 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +1 -0
- package/dashboard/dist/assets/{workflows-BkzA4ahe.js → workflows-D6diL54s.js} +2 -2
- package/dashboard/dist/assets/{workflows-BkzA4ahe.js.map → workflows-D6diL54s.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js → yaml-workflows-CAKU7LUu.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js.map → yaml-workflows-CAKU7LUu.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/docs/dashboard.md +233 -65
- package/package.json +3 -2
- package/build/examples/external-mcp-server/server.d.ts +0 -17
- package/build/examples/external-mcp-server/server.js +0 -116
- package/build/examples/index.d.ts +0 -2
- package/build/examples/index.js +0 -7
- package/build/examples/seed-data.d.ts +0 -55
- package/build/examples/seed-data.js +0 -161
- package/build/examples/seed.d.ts +0 -5
- package/build/examples/seed.js +0 -132
- package/build/examples/types/envelopes.d.ts +0 -69
- package/build/examples/types/envelopes.js +0 -8
- package/build/examples/types/index.d.ts +0 -10
- package/build/examples/types/index.js +0 -9
- package/build/examples/types/resolvers.d.ts +0 -27
- package/build/examples/types/resolvers.js +0 -9
- package/build/examples/workers.d.ts +0 -10
- package/build/examples/workers.js +0 -59
- package/build/examples/workflows/assembly-line/activities.d.ts +0 -28
- package/build/examples/workflows/assembly-line/activities.js +0 -53
- package/build/examples/workflows/assembly-line/index.d.ts +0 -17
- package/build/examples/workflows/assembly-line/index.js +0 -60
- package/build/examples/workflows/assembly-line/iterator.d.ts +0 -12
- package/build/examples/workflows/assembly-line/iterator.js +0 -54
- package/build/examples/workflows/assembly-line/reverter.d.ts +0 -18
- package/build/examples/workflows/assembly-line/reverter.js +0 -89
- package/build/examples/workflows/assembly-line/types.d.ts +0 -25
- package/build/examples/workflows/assembly-line/types.js +0 -8
- package/build/examples/workflows/assembly-line/worker.d.ts +0 -13
- package/build/examples/workflows/assembly-line/worker.js +0 -81
- package/build/examples/workflows/basic-echo/activities.d.ts +0 -20
- package/build/examples/workflows/basic-echo/activities.js +0 -55
- package/build/examples/workflows/basic-echo/index.d.ts +0 -14
- package/build/examples/workflows/basic-echo/index.js +0 -66
- package/build/examples/workflows/basic-signal/activities.d.ts +0 -17
- package/build/examples/workflows/basic-signal/activities.js +0 -18
- package/build/examples/workflows/basic-signal/index.d.ts +0 -17
- package/build/examples/workflows/basic-signal/index.js +0 -116
- package/build/examples/workflows/kitchen-sink/activities.d.ts +0 -40
- package/build/examples/workflows/kitchen-sink/activities.js +0 -46
- package/build/examples/workflows/kitchen-sink/index.d.ts +0 -22
- package/build/examples/workflows/kitchen-sink/index.js +0 -123
- package/build/examples/workflows/review-content/activities.d.ts +0 -10
- package/build/examples/workflows/review-content/activities.js +0 -44
- package/build/examples/workflows/review-content/index.d.ts +0 -10
- package/build/examples/workflows/review-content/index.js +0 -95
- package/build/examples/workflows/review-content/types.d.ts +0 -28
- package/build/examples/workflows/review-content/types.js +0 -2
- package/build/lib/db/schemas/schemas/001_schema.sql +0 -485
- package/build/lib/db/schemas/schemas/002_seed.sql +0 -92
- package/build/system/seed/server-definitions.d.ts +0 -3210
- package/build/system/seed/server-definitions.js +0 -232
- package/dashboard/dist/assets/AdminDashboard-Bprul9Eb.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +0 -2
- package/dashboard/dist/assets/BotPicker-DcvILNUf.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-BWPbzgEe.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-Cy6KVLfC.js +0 -2
- package/dashboard/dist/assets/CopyableId-CRED8hvk.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-eOk2EqQ5.js +0 -2
- package/dashboard/dist/assets/DataTable-bd2PTBJd.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-BGo8vyus.js +0 -2
- package/dashboard/dist/assets/EmptyState-BygtU-Rh.js +0 -2
- package/dashboard/dist/assets/EmptyState-BygtU-Rh.js.map +0 -1
- package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js.map +0 -1
- package/dashboard/dist/assets/EventTable-CmFhswLW.js +0 -2
- package/dashboard/dist/assets/FilterBar-BQNzsd3A.js +0 -2
- package/dashboard/dist/assets/ListToolbar-OWOn-HiC.js +0 -2
- package/dashboard/dist/assets/McpOverview-OkEzvClD.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-DMeiG4i_.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js.map +0 -1
- package/dashboard/dist/assets/Modal-Dir9Rlnx.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-OqWC6Azy.js +0 -2
- package/dashboard/dist/assets/PageHeader-FJIemmrC.js +0 -2
- package/dashboard/dist/assets/PageHeader-FJIemmrC.js.map +0 -1
- package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-C7D5d_HY.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-DZIP6grw.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js.map +0 -1
- package/dashboard/dist/assets/RolePill-D6nMxMvp.js +0 -2
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +0 -2
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js.map +0 -1
- package/dashboard/dist/assets/RowActions-JqgAB0p3.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +0 -2
- package/dashboard/dist/assets/StatCard-B-WLhOaH.js +0 -2
- package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js +0 -2
- package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js.map +0 -1
- package/dashboard/dist/assets/StepIndicator-D9Xvdf18.js +0 -2
- package/dashboard/dist/assets/StickyPagination-CJHMzYJj.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +0 -1
- package/dashboard/dist/assets/TagInput-DcPnUnSJ.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js +0 -2
- package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js.map +0 -1
- package/dashboard/dist/assets/TasksListPage-DeewV4Gp.js +0 -2
- package/dashboard/dist/assets/TimeAgo-DJZq-e4R.js +0 -2
- package/dashboard/dist/assets/TimestampCell-Dx5uwGfS.js +0 -2
- package/dashboard/dist/assets/UserName-CnGk7MgL.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-CPQ0fIwf.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-BrD5d1AG.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-lBp2E6rN.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +0 -1
- package/dashboard/dist/assets/escalation-BYhLYHBz.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DjJyuC1g.js +0 -2
- package/dashboard/dist/assets/helpers-CQG3Rh2y.js +0 -2
- package/dashboard/dist/assets/index-2nBhR7Dg.js +0 -2
- package/dashboard/dist/assets/index-2nBhR7Dg.js.map +0 -1
- package/dashboard/dist/assets/index-4IUoh_hd.js +0 -2
- package/dashboard/dist/assets/index-4IUoh_hd.js.map +0 -1
- package/dashboard/dist/assets/index-B2CqPzLK.js +0 -2
- package/dashboard/dist/assets/index-B2CqPzLK.js.map +0 -1
- package/dashboard/dist/assets/index-B78xalb4.js +0 -2
- package/dashboard/dist/assets/index-B78xalb4.js.map +0 -1
- package/dashboard/dist/assets/index-BI8r69O_.js +0 -2
- package/dashboard/dist/assets/index-BI8r69O_.js.map +0 -1
- package/dashboard/dist/assets/index-C5TUqJu0.css +0 -1
- package/dashboard/dist/assets/index-CUqCBBZG.js +0 -6
- package/dashboard/dist/assets/index-CUqCBBZG.js.map +0 -1
- package/dashboard/dist/assets/index-D51PaQZY.js +0 -2
- package/dashboard/dist/assets/index-DNtXXy1o.js +0 -2
- package/dashboard/dist/assets/index-DR4qQvlW.js +0 -2
- package/dashboard/dist/assets/index-Dh0PCbR-.js +0 -15
- package/dashboard/dist/assets/index-Dh0PCbR-.js.map +0 -1
- package/dashboard/dist/assets/index-KYpLvJKB.js +0 -5
- package/dashboard/dist/assets/index-sNrqYt0Q.js +0 -281
- package/dashboard/dist/assets/index-sNrqYt0Q.js.map +0 -1
- package/dashboard/dist/assets/mcp-D2XfRh8v.js +0 -2
- package/dashboard/dist/assets/namespaces-BwMljx6f.js +0 -2
- package/dashboard/dist/assets/settings-BCb8eFyA.js +0 -2
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +0 -26
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{j as e,S as D,i as T}from"./index-sNrqYt0Q.js";import{a as f}from"./vendor-query-DLp59M9_.js";import{c as R,d as $,b as A,u as q,e as B,f as z}from"./workflows-BkzA4ahe.js";import{P as H}from"./PageHeader-FJIemmrC.js";import{P as U,$ as G,a3 as K,S as Q,d as X,a4 as I,a5 as Y}from"./vendor-icons-CWl44VA6.js";import{B as Z}from"./BotPicker-DcvILNUf.js";import{L as ee,c as F,f as se}from"./vendor-react-Co3Y8ikm.js";import{D as ae}from"./DataTable-bd2PTBJd.js";import{e as te,d as M,C as re,j as oe}from"./helpers-CQG3Rh2y.js";import"./bots-fc_O_YIq.js";import"./EmptyState-BygtU-Rh.js";import"./TimeAgo-DJZq-e4R.js";import"./StatusBadge-DVCf2ncM.js";function le({mode:s,onChange:r}){const h=(o,a,u)=>e.jsxDEV("button",{onClick:()=>r(o),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${s===o?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[a,u]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:7,columnNumber:5},this);return e.jsxDEV("div",{className:"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[h("now",e.jsxDEV(U,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:22,columnNumber:19},this),"Start Now"),h("schedule",e.jsxDEV(G,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:23,columnNumber:24},this),"Schedule")]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:21,columnNumber:5},this)}function ie({configs:s,selectedType:r,onSelect:h,tierMap:o}){return e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-6",children:"Select Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:19,columnNumber:7},this),e.jsxDEV("div",{children:s.map(a=>{const u=r===a.workflow_type,m=o.get(a.workflow_type)??"durable";return e.jsxDEV("button",{onClick:()=>h(a),className:`w-full text-left py-4 border-b border-surface-border transition-colors duration-150 ${u?"border-l-2 border-l-accent pl-4":"pl-0 hover:text-text-primary"}`,children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[m==="certified"&&e.jsxDEV(K,{className:"w-3.5 h-3.5 shrink-0 text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:35,columnNumber:42},this),m==="configured"&&e.jsxDEV(Q,{className:"w-3.5 h-3.5 shrink-0 text-status-info"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:36,columnNumber:43},this),m==="durable"&&e.jsxDEV(X,{className:"w-3.5 h-3.5 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:37,columnNumber:40},this),e.jsxDEV("p",{className:`text-sm font-mono ${u?"font-medium text-accent":"text-text-secondary"}`,children:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:38,columnNumber:17},this),a.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(I,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:43,columnNumber:21},this),a.execute_as]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:42,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:34,columnNumber:15},this),a.description&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary mt-1 leading-relaxed",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:49,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 opacity-60",children:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:53,columnNumber:15},this)]},a.workflow_type,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:25,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:18,columnNumber:5},this)}function L({children:s,className:r=""}){return e.jsxDEV("span",{className:`px-2 py-0.5 text-[10px] bg-surface-sunken rounded-full text-text-secondary ${r}`,children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Pill.tsx",lineNumber:10,columnNumber:5},this)}const C=`{
|
|
2
|
-
"data": {},
|
|
3
|
-
"metadata": {}
|
|
4
|
-
}`;function ne(s){return typeof s=="boolean"?"boolean":typeof s=="number"?"number":Array.isArray(s)?"array":s!==null&&typeof s=="object"?"object":"string"}function O(s){if(!s)return[];const r=s.data;return!r||typeof r!="object"?[]:Object.entries(r).map(([h,o])=>({key:h,type:ne(o),defaultValue:o}))}function W(s){return{...s}}function J(s,r){return JSON.stringify({data:s,metadata:r},null,2)}function me({config:s,overrideBot:r,onOverrideChange:h,showOverride:o}){const{user:a}=T(),u=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),u&&!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:u?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(I,{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:u},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:(a==null?void 0:a.displayName)||(a==null?void 0:a.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),o&&h&&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(Z,{selected:r??"",onChange:h,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 ce({selectedConfig:s,isJsonMode:r,hasFormView:h,jsonInput:o,formFields:a,dataFields:u,onJsonChange:m,onToggleMode:b,onUpdateFormField:N,onSetFormFields:w}){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:[h&&e.jsxDEV("button",{type:"button",onClick:b,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 register it as a ",e.jsxDEV(ee,{to:"/workflows/registry/new",className:"text-status-success hover:underline",children:"certified workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:64,columnNumber:100},this)," in the Workflow Registry 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||!h?e.jsxDEV("textarea",{value:o,onChange:c=>m(c.target.value),className:"input font-mono text-xs",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:u.map(({key:c,type:n})=>{var E,S;const p=a[c],x=typeof p=="string"?p:JSON.stringify(p??(n==="array"?[]:{}),null,2),g=Math.min(20,Math.max(4,((S=(E=x==null?void 0:x.split)==null?void 0:E.call(x,`
|
|
5
|
-
`))==null?void 0:S.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:[c,e.jsxDEV("span",{className:"ml-2 font-normal normal-case",children:n},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),n==="boolean"?e.jsxDEV("select",{value:String(p??!1),onChange:l=>N(c,l.target.value,n),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):n==="object"||n==="array"?e.jsxDEV("textarea",{value:x,onChange:l=>{try{N(c,JSON.parse(l.target.value),n)}catch{w({...a,[c]:l.target.value})}},className:"input font-mono text-[11px] w-full leading-relaxed",rows:g,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:115,columnNumber:19},this):e.jsxDEV("input",{type:n==="number"?"number":"text",value:String(p??""),onChange:l=>N(c,l.target.value,n),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:137,columnNumber:19},this)]},c,!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 de({selected:s,executionsPath:r}){const h=F(),{isSuperAdmin:o,hasRoleType:a}=T(),u=o||a("admin"),m=R(),[b,N]=f.useState(C),[w,c]=f.useState(""),[n,p]=f.useState({}),[x,g]=f.useState(!1),[E,S]=f.useState(""),l=f.useMemo(()=>O(s.envelope_schema??null),[s.envelope_schema]),j=l.length>0,P=f.useMemo(()=>{if(!s.envelope_schema)return{};const t=s.envelope_schema.metadata;return t&&typeof t=="object"?t:{}},[s.envelope_schema]);f.useEffect(()=>{var k;c(""),m.reset();const t=sessionStorage.getItem("lt:invoke:prefill");if(t){sessionStorage.removeItem("lt:invoke:prefill"),N(t);try{const y=JSON.parse(t),V=(y==null?void 0:y.data)??y;V&&typeof V=="object"&&p(W(V))}catch{}g(!0),S("");return}const d=s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C;N(d),(k=s.envelope_schema)!=null&&k.data&&typeof s.envelope_schema.data=="object"?p(W(s.envelope_schema.data)):p({}),g(!O(s.envelope_schema??null).length),S("")},[s.workflow_type]);const _=()=>{if(x)try{const t=JSON.parse(b);t.data&&typeof t.data=="object"&&p(W(t.data))}catch{}else N(J(n,P));g(!x)},v=(t,d,k)=>{let y=d;k==="number"?y=d===""?0:Number(d):k==="boolean"&&(y=d==="true"||d===!0);const V={...n,[t]:y};p(V),N(J(V,P))},i=async()=>{c("");let t;try{t=JSON.parse(b)}catch{c("Invalid JSON");return}const{data:d,metadata:k}=t;if(!d||typeof d!="object"){c('Envelope must include a "data" object');return}try{await m.mutateAsync({workflowType:s.workflow_type,data:d,metadata:k??void 0,...E?{execute_as:E}:{}}),h(r)}catch{}};return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV(D,{children:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:121,columnNumber:11},this),e.jsxDEV("div",{className:"flex gap-2",children:s.roles.map(t=>e.jsxDEV(L,{children:t},t,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:124,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:120,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"text-sm text-text-secondary mt-2 leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:129,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:119,columnNumber:7},this),e.jsxDEV(me,{config:s,overrideBot:E,onOverrideChange:S,showOverride:u},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:135,columnNumber:7},this),e.jsxDEV(ce,{selectedConfig:s,isJsonMode:x,hasFormView:j,jsonInput:b,formFields:n,dataFields:l,onJsonChange:t=>{N(t),c("")},onToggleMode:_,onUpdateFormField:v,onSetFormFields:p},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:142,columnNumber:7},this),w&&e.jsxDEV("p",{className:"text-xs text-status-error",children:w},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:155,columnNumber:22},this),m.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:m.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:156,columnNumber:32},this),m.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:157,columnNumber:36},this),e.jsxDEV("button",{onClick:i,disabled:m.isPending,className:"btn-primary",children:m.isPending?"Starting...":"Start Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:159,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:118,columnNumber:5},this)}function ue({selected:s,activeTypes:r}){const h=F(),o=$(),[a,u]=f.useState(""),[m,b]=f.useState(""),[N,w]=f.useState(""),[c,n]=f.useState("json"),p=f.useMemo(()=>s!=null&&s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C,[s==null?void 0:s.envelope_schema]),x=m!==p,g=f.useMemo(()=>{try{return JSON.parse(m)}catch{return null}},[m]),E=f.useMemo(()=>g?te(g):null,[g]);f.useEffect(()=>{u(s.cron_schedule??""),b(s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C),w(""),n("json"),o.reset()},[s.workflow_type]);const{data:S,isLoading:l}=A({entity:s.workflow_type,limit:10}),j=()=>{let i;try{i=JSON.parse(m)}catch{w("Invalid JSON in envelope");return}w(""),o.mutate({config:s,cron_schedule:a.trim()||null,envelope_schema:i})},P=()=>{u(""),o.mutate({config:s,cron_schedule:null})},_=()=>{b(p),w("")},v=(i,t)=>{if(!g)return;const d={...g.data??{}},k=d[i];typeof k=="number"?d[i]=t===""?0:Number(t):typeof k=="boolean"?d[i]=t==="true":d[i]=t,b(JSON.stringify({...g,data:d},null,2))};return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(D,{children:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:105,columnNumber:11},this),s.cron_schedule&&e.jsxDEV(L,{className:r.has(s.workflow_type)?"bg-status-success/10 text-status-success":"bg-surface-sunken text-text-tertiary",children:r.has(s.workflow_type)?"active":"inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:107,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:104,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-2 leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:116,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:103,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg px-4 py-3",children:e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary uppercase tracking-wider font-medium mr-2",children:"Cron runs as"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(I,{className:"w-3.5 h-3.5 text-accent/70"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:126,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-mono",children:s.execute_as??"lt-system"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:127,columnNumber:11},this),!s.execute_as&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary ml-1",children:"system bot"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:131,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:124,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:123,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:138,columnNumber:9},this),e.jsxDEV("div",{className:"flex gap-3 items-start",children:[e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV("input",{type:"text",value:a,onChange:i=>{u(i.target.value),o.reset()},placeholder:"0 */6 * * *",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:141,columnNumber:13},this),a.trim()&&M(a.trim())&&e.jsxDEV("p",{className:"text-xs text-text-secondary mt-1.5",children:M(a.trim())},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:149,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:140,columnNumber:11},this),e.jsxDEV("button",{onClick:j,disabled:o.isPending,className:"btn-primary text-xs shrink-0",children:o.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:154,columnNumber:11},this),s.cron_schedule&&e.jsxDEV("button",{onClick:P,disabled:o.isPending,className:"btn-ghost text-xs text-status-error shrink-0",children:"Clear"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:139,columnNumber:9},this),o.isSuccess&&e.jsxDEV("p",{className:"text-[10px] text-status-success mt-2",children:"Schedule updated"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:163,columnNumber:31},this),o.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:o.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:164,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:137,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg p-4",children:[e.jsxDEV(D,{className:"mb-2",children:"Common Patterns"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1.5",children:re.map(([i,t])=>e.jsxDEV("button",{type:"button",onClick:()=>{u(i),o.reset()},className:"flex items-center gap-2 text-left py-0.5 group",children:[e.jsxDEV("code",{className:"font-mono text-[11px] text-accent group-hover:text-accent-hover",children:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:178,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:179,columnNumber:15},this)]},i,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:172,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:170,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:168,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-baseline justify-between mb-2",children:[e.jsxDEV(D,{children:"Cron Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:188,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[x&&e.jsxDEV("button",{type:"button",onClick:_,className:"text-[10px] text-status-warning hover:text-status-warning/80 transition-colors",children:"Reset to default"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:191,columnNumber:15},this),E&&e.jsxDEV("div",{className:"flex rounded overflow-hidden border border-surface-border",children:[e.jsxDEV("button",{type:"button",onClick:()=>n("form"),className:`px-2 py-0.5 text-[10px] transition-colors ${c==="form"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"Form"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:197,columnNumber:17},this),e.jsxDEV("button",{type:"button",onClick:()=>n("json"),className:`px-2 py-0.5 text-[10px] transition-colors ${c==="json"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:198,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:196,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:189,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:187,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mb-3",children:"This envelope is sent as the workflow input on each cron invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:203,columnNumber:9},this),c==="form"&&E?e.jsxDEV("div",{className:"space-y-3",children:E.map(({key:i,value:t,type:d})=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[11px] text-text-secondary mb-1 font-mono",children:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:211,columnNumber:17},this),d==="boolean"?e.jsxDEV("select",{value:t,onChange:k=>v(i,k.target.value),className:"input text-xs w-full",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:214,columnNumber:21},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:215,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:213,columnNumber:19},this):e.jsxDEV("input",{type:d==="number"?"number":"text",value:t,onChange:k=>v(i,k.target.value),className:"input text-xs font-mono w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:218,columnNumber:19},this)]},i,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:210,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:208,columnNumber:11},this):e.jsxDEV("textarea",{value:m,onChange:i=>{b(i.target.value),w("")},className:"input font-mono text-xs w-full",rows:10,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:224,columnNumber:11},this),N&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:N},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:233,columnNumber:27},this),x&&e.jsxDEV("p",{className:"text-[10px] text-accent mt-1.5",children:"Envelope has been customized. Changes will be saved with the schedule."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:234,columnNumber:32},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:186,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Recent Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:239,columnNumber:9},this),e.jsxDEV(ae,{columns:oe,data:(S==null?void 0:S.jobs)??[],keyFn:i=>i.workflow_id,onRowClick:i=>h(`/workflows/executions/${i.workflow_id}`),isLoading:l,emptyMessage:"No executions yet"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:240,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:238,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:101,columnNumber:5},this)}function pe(){const[s,r]=se(),{data:h,isLoading:o}=q(),{data:a,isLoading:u}=B(),{data:m}=z(),b=s.get("mode")||"now",N=s.get("type")??"",w=h??[],c=f.useMemo(()=>{const l=new Map;for(const j of a??[])l.set(j.workflow_type,j.tier??"durable");return l},[a]),n=f.useMemo(()=>{const l=w.filter(v=>v.invocable),j=new Set(w.map(v=>v.workflow_type)),_=(a??[]).filter(v=>v.active&&!j.has(v.workflow_type)).map(v=>({workflow_type:v.workflow_type,task_queue:v.task_queue??"",invocable:!0,description:null,default_role:"reviewer",roles:[],invocation_roles:[],consumes:[],envelope_schema:null,resolver_schema:null,cron_schedule:null,execute_as:null}));return[...l,..._]},[w,a]),p=n.find(l=>l.workflow_type===N),x=new Set((m??[]).filter(l=>l.active).map(l=>l.workflow_type)),g="/workflows/executions";f.useEffect(()=>{n.length===1&&!s.get("type")&&r({type:n[0].workflow_type,mode:b},{replace:!0})},[n.length]);const E=l=>{const j={mode:l};N&&(j.type=N),r(j,{replace:!0})},S=l=>{r({type:l.workflow_type,mode:b},{replace:!0})};return o||u?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:81,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:82,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:80,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(H,{title:"Invoke Workflow",actions:e.jsxDEV(le,{mode:b,onChange:E},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:91,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:89,columnNumber:7},this),n.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:96,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:97,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:95,columnNumber:9},this):e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-12",children:[e.jsxDEV(ie,{configs:n,selectedType:N,onSelect:S,tierMap:c},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:101,columnNumber:11},this),e.jsxDEV("div",{className:"lg:col-span-2",children:N&&p?b==="now"?e.jsxDEV(de,{selected:p,executionsPath:g},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:111,columnNumber:17},this):e.jsxDEV(ue,{selected:p,activeTypes:x},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:113,columnNumber:17},this):e.jsxDEV("div",{className:"py-16 text-center",children:e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:"Select a workflow to begin"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:117,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:116,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:88,columnNumber:5},this)}function De(){return e.jsxDEV(pe,{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/DurableInvokePage.tsx",lineNumber:4,columnNumber:10},this)}export{De as DurableInvokePage,pe as StartWorkflowPage};
|
|
6
|
-
//# sourceMappingURL=index-CUqCBBZG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CUqCBBZG.js","sources":["../../src/pages/workflows/start/ModeToggle.tsx","../../src/pages/workflows/start/WorkflowSelector.tsx","../../src/components/common/display/Pill.tsx","../../src/pages/workflows/start/helpers.ts","../../src/pages/workflows/start/IdentitySummary.tsx","../../src/pages/workflows/start/EnvelopeEditor.tsx","../../src/pages/workflows/start/StartNowPanel.tsx","../../src/pages/workflows/start/SchedulePanel.tsx","../../src/pages/workflows/start/StartWorkflowPage.tsx","../../src/pages/workflows/start/DurableInvokePage.tsx"],"sourcesContent":["import { Play, Clock } from 'lucide-react';\n\nexport type Mode = 'now' | 'schedule';\n\nexport function ModeToggle({ mode, onChange }: { mode: Mode; onChange: (m: Mode) => void }) {\n const btn = (m: Mode, icon: React.ReactNode, label: string) => (\n <button\n onClick={() => onChange(m)}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${\n mode === m\n ? 'bg-accent/10 text-accent font-medium'\n : 'text-text-tertiary hover:text-text-secondary hover:bg-surface-hover'\n }`}\n >\n {icon}\n {label}\n </button>\n );\n\n return (\n <div className=\"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit\">\n {btn('now', <Play className=\"w-3.5 h-3.5\" />, 'Start Now')}\n {btn('schedule', <Clock className=\"w-3.5 h-3.5\" />, 'Schedule')}\n </div>\n );\n}\n","import { Bot, ShieldCheck, Settings, Workflow } from 'lucide-react';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport type { LTWorkflowConfig } from '../../../api/types';\nimport type { WorkflowTier } from '../../../api/types';\n\nexport function WorkflowSelector({\n configs,\n selectedType,\n onSelect,\n tierMap,\n}: {\n configs: LTWorkflowConfig[];\n selectedType: string;\n onSelect: (config: LTWorkflowConfig) => void;\n tierMap: Map<string, WorkflowTier>;\n}) {\n return (\n <div>\n <SectionLabel className=\"mb-6\">Select Workflow</SectionLabel>\n <div>\n {configs.map((config) => {\n const isSelected = selectedType === config.workflow_type;\n const tier = tierMap.get(config.workflow_type) ?? 'durable';\n return (\n <button\n key={config.workflow_type}\n onClick={() => onSelect(config)}\n className={`w-full text-left py-4 border-b border-surface-border transition-colors duration-150 ${\n isSelected\n ? 'border-l-2 border-l-accent pl-4'\n : 'pl-0 hover:text-text-primary'\n }`}\n >\n <div className=\"flex items-center gap-2\">\n {tier === 'certified' && <ShieldCheck className=\"w-3.5 h-3.5 shrink-0 text-status-success\" />}\n {tier === 'configured' && <Settings className=\"w-3.5 h-3.5 shrink-0 text-status-info\" />}\n {tier === 'durable' && <Workflow className=\"w-3.5 h-3.5 shrink-0 text-accent/75\" />}\n <p className={`text-sm font-mono ${isSelected ? 'font-medium text-accent' : 'text-text-secondary'}`}>\n {config.workflow_type}\n </p>\n {config.execute_as && (\n <span className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[9px] bg-accent/10 text-accent rounded\">\n <Bot className=\"w-2.5 h-2.5\" />\n {config.execute_as}\n </span>\n )}\n </div>\n {config.description && (\n <p className=\"text-[11px] text-text-tertiary mt-1 leading-relaxed\">\n {config.description}\n </p>\n )}\n <p className=\"text-[10px] text-text-tertiary mt-1 opacity-60\">\n {config.task_queue}\n </p>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\ninterface PillProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Pill({ children, className = '' }: PillProps) {\n return (\n <span className={`px-2 py-0.5 text-[10px] bg-surface-sunken rounded-full text-text-secondary ${className}`}>\n {children}\n </span>\n );\n}\n","export const DEFAULT_ENVELOPE = '{\\n \"data\": {},\\n \"metadata\": {}\\n}';\n\n/** Infer a simple field type from a value. */\nexport function inferTypeFromValue(value: unknown): string {\n if (typeof value === 'boolean') return 'boolean';\n if (typeof value === 'number') return 'number';\n if (Array.isArray(value)) return 'array';\n if (value !== null && typeof value === 'object') return 'object';\n return 'string';\n}\n\n/** Extract the data keys from an envelope_schema and their inferred types. */\nexport function extractDataFields(\n schema: Record<string, unknown> | null,\n): { key: string; type: string; defaultValue: unknown }[] {\n if (!schema) return [];\n const data = schema.data;\n if (!data || typeof data !== 'object') return [];\n return Object.entries(data as Record<string, unknown>).map(([key, value]) => ({\n key,\n type: inferTypeFromValue(value),\n defaultValue: value,\n }));\n}\n\n/** Build form field values from data object. */\nexport function dataToFields(data: Record<string, unknown>): Record<string, unknown> {\n return { ...data };\n}\n\n/** Build full envelope JSON string from form fields + metadata. */\nexport function fieldsToJson(\n fields: Record<string, unknown>,\n metadata: Record<string, unknown>,\n): string {\n return JSON.stringify({ data: fields, metadata }, null, 2);\n}\n","import { Bot, UserCircle } from 'lucide-react';\nimport { BotPicker } from '../../../components/common/form/BotPicker';\nimport { useAuth } from '../../../hooks/useAuth';\nimport type { LTWorkflowConfig } from '../../../api/types';\n\nexport function IdentitySummary({\n config,\n overrideBot,\n onOverrideChange,\n showOverride,\n}: {\n config: LTWorkflowConfig;\n overrideBot?: string;\n onOverrideChange?: (botExternalId: string) => void;\n showOverride?: boolean;\n}) {\n const { user } = useAuth();\n const effectiveBot = overrideBot || config.execute_as;\n\n return (\n <div className=\"bg-surface-sunken rounded-lg px-4 py-3 space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-text-tertiary uppercase tracking-wider font-medium\">Running as</span>\n {effectiveBot && !overrideBot && (\n <span className=\"text-[9px] text-text-tertiary\">configured default</span>\n )}\n {overrideBot && (\n <span className=\"text-[9px] text-accent\">admin override</span>\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n {effectiveBot ? (\n <>\n <Bot className=\"w-3.5 h-3.5 text-accent/70\" />\n <span className=\"text-xs text-text-primary font-mono\">{effectiveBot}</span>\n </>\n ) : (\n <>\n <UserCircle className=\"w-3.5 h-3.5 text-text-tertiary\" />\n <span className=\"text-xs text-text-primary\">\n {user?.displayName || user?.username || 'you'}\n </span>\n </>\n )}\n </div>\n {showOverride && onOverrideChange && (\n <div className=\"pt-1 border-t border-surface-border\">\n <label className=\"text-[10px] text-text-tertiary mb-1 block\">Override identity</label>\n <BotPicker\n selected={overrideBot ?? ''}\n onChange={onOverrideChange}\n placeholder={config.execute_as ? `Default: ${config.execute_as}` : 'Invoking user (default)'}\n />\n </div>\n )}\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport type { LTWorkflowConfig } from '../../../api/types';\n\ninterface DataField {\n key: string;\n type: string;\n defaultValue: unknown;\n}\n\nexport function EnvelopeEditor({\n selectedConfig,\n isJsonMode,\n hasFormView,\n jsonInput,\n formFields,\n dataFields,\n onJsonChange,\n onToggleMode,\n onUpdateFormField,\n onSetFormFields,\n}: {\n selectedConfig: LTWorkflowConfig;\n isJsonMode: boolean;\n hasFormView: boolean;\n jsonInput: string;\n formFields: Record<string, unknown>;\n dataFields: DataField[];\n onJsonChange: (value: string) => void;\n onToggleMode: () => void;\n onUpdateFormField: (key: string, value: unknown, type: string) => void;\n onSetFormFields: (fields: Record<string, unknown>) => void;\n}) {\n return (\n <div>\n <div className=\"flex items-baseline justify-between mb-2\">\n <label className=\"block text-xs text-text-secondary\">\n Envelope\n </label>\n <div className=\"flex items-center gap-3\">\n {hasFormView && (\n <button\n type=\"button\"\n onClick={onToggleMode}\n className=\"text-[10px] text-accent hover:underline\"\n >\n {isJsonMode ? 'Form view' : 'JSON view'}\n </button>\n )}\n {selectedConfig.envelope_schema ? (\n <span className=\"text-[10px] text-accent\">\n Pre-filled from workflow config\n </span>\n ) : (\n <span className=\"text-[10px] text-status-warning\">\n No template\n </span>\n )}\n </div>\n </div>\n\n {!selectedConfig.envelope_schema && (\n <div className=\"bg-surface-sunken border border-surface-border rounded px-4 py-3 mb-3\">\n <p className=\"text-xs text-text-secondary leading-relaxed\">\n This workflow has no input template. Edit the JSON directly below, or register it as a <Link to=\"/workflows/registry/new\" className=\"text-status-success hover:underline\">certified workflow</Link> in the Workflow Registry for pre-filled fields and form-based input.\n </p>\n </div>\n )}\n\n {isJsonMode || !hasFormView ? (\n /* JSON view */\n <textarea\n value={jsonInput}\n onChange={(e) => onJsonChange(e.target.value)}\n className=\"input font-mono text-xs\"\n rows={12}\n spellCheck={false}\n />\n ) : (\n /* Form view */\n <div className=\"space-y-3\">\n {dataFields.map(({ key, type }) => {\n const value = formFields[key];\n const jsonValue =\n typeof value === 'string'\n ? value\n : JSON.stringify(\n value ?? (type === 'array' ? [] : {}),\n null,\n 2,\n );\n const textareaRows = Math.min(\n 20,\n Math.max(4, (jsonValue?.split?.('\\n')?.length ?? 4)),\n );\n return (\n <div key={key}>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {key}\n <span className=\"ml-2 font-normal normal-case\">\n {type}\n </span>\n </label>\n {type === 'boolean' ? (\n <select\n value={String(value ?? false)}\n onChange={(e) =>\n onUpdateFormField(key, e.target.value, type)\n }\n className=\"select text-xs w-full\"\n >\n <option value=\"true\">true</option>\n <option value=\"false\">false</option>\n </select>\n ) : type === 'object' || type === 'array' ? (\n <textarea\n value={jsonValue}\n onChange={(e) => {\n try {\n onUpdateFormField(\n key,\n JSON.parse(e.target.value),\n type,\n );\n } catch {\n // Keep raw text without syncing to JSON\n onSetFormFields({\n ...formFields,\n [key]: e.target.value,\n });\n }\n }}\n className=\"input font-mono text-[11px] w-full leading-relaxed\"\n rows={textareaRows}\n spellCheck={false}\n />\n ) : (\n <input\n type={type === 'number' ? 'number' : 'text'}\n value={String(value ?? '')}\n onChange={(e) =>\n onUpdateFormField(key, e.target.value, type)\n }\n className=\"input text-xs w-full\"\n />\n )}\n </div>\n );\n })}\n </div>\n )}\n <p className=\"text-[10px] text-text-tertiary mt-1.5\">\n The envelope wraps your workflow input. <code className=\"text-accent/80\">data</code> holds workflow-specific fields; <code className=\"text-accent/80\">metadata</code> is optional context.\n </p>\n </div>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useInvokeWorkflow } from '../../../api/workflows';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { Pill } from '../../../components/common/display/Pill';\nimport { useAuth } from '../../../hooks/useAuth';\nimport type { LTWorkflowConfig } from '../../../api/types';\nimport {\n DEFAULT_ENVELOPE,\n extractDataFields,\n dataToFields,\n fieldsToJson,\n} from './helpers';\nimport { IdentitySummary } from './IdentitySummary';\nimport { EnvelopeEditor } from './EnvelopeEditor';\n\nexport function StartNowPanel({ selected, executionsPath }: { selected: LTWorkflowConfig; executionsPath: string }) {\n const navigate = useNavigate();\n const { isSuperAdmin, hasRoleType } = useAuth();\n const isAdmin = isSuperAdmin || hasRoleType('admin');\n const invokeMutation = useInvokeWorkflow();\n const [jsonInput, setJsonInput] = useState(DEFAULT_ENVELOPE);\n const [parseError, setParseError] = useState('');\n const [formFields, setFormFields] = useState<Record<string, unknown>>({});\n const [isJsonMode, setIsJsonMode] = useState(false);\n const [overrideBot, setOverrideBot] = useState('');\n\n const dataFields = useMemo(\n () => extractDataFields(selected.envelope_schema ?? null),\n [selected.envelope_schema],\n );\n const hasFormView = dataFields.length > 0;\n\n const schemaMetadata = useMemo(() => {\n if (!selected.envelope_schema) return {};\n const md = selected.envelope_schema.metadata;\n return md && typeof md === 'object' ? (md as Record<string, unknown>) : {};\n }, [selected.envelope_schema]);\n\n useEffect(() => {\n setParseError('');\n invokeMutation.reset();\n\n const prefill = sessionStorage.getItem('lt:invoke:prefill');\n if (prefill) {\n sessionStorage.removeItem('lt:invoke:prefill');\n setJsonInput(prefill);\n try {\n const parsed = JSON.parse(prefill);\n const data = parsed?.data ?? parsed;\n if (data && typeof data === 'object') setFormFields(dataToFields(data));\n } catch { /* use as-is */ }\n setIsJsonMode(true);\n setOverrideBot('');\n return;\n }\n\n const json = selected.envelope_schema\n ? JSON.stringify(selected.envelope_schema, null, 2)\n : DEFAULT_ENVELOPE;\n setJsonInput(json);\n if (selected.envelope_schema?.data && typeof selected.envelope_schema.data === 'object') {\n setFormFields(dataToFields(selected.envelope_schema.data as Record<string, unknown>));\n } else {\n setFormFields({});\n }\n setIsJsonMode(!extractDataFields(selected.envelope_schema ?? null).length);\n setOverrideBot('');\n }, [selected.workflow_type]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleToggleMode = () => {\n if (isJsonMode) {\n try {\n const parsed = JSON.parse(jsonInput);\n if (parsed.data && typeof parsed.data === 'object') setFormFields(dataToFields(parsed.data));\n } catch { /* keep existing */ }\n } else {\n setJsonInput(fieldsToJson(formFields, schemaMetadata));\n }\n setIsJsonMode(!isJsonMode);\n };\n\n const updateFormField = (key: string, value: unknown, type: string) => {\n let parsed = value;\n if (type === 'number') parsed = value === '' ? 0 : Number(value);\n else if (type === 'boolean') parsed = value === 'true' || value === true;\n const updated = { ...formFields, [key]: parsed };\n setFormFields(updated);\n setJsonInput(fieldsToJson(updated, schemaMetadata));\n };\n\n const handleInvoke = async () => {\n setParseError('');\n let envelope: Record<string, unknown>;\n try {\n envelope = JSON.parse(jsonInput);\n } catch {\n setParseError('Invalid JSON');\n return;\n }\n const { data, metadata } = envelope;\n if (!data || typeof data !== 'object') {\n setParseError('Envelope must include a \"data\" object');\n return;\n }\n try {\n await invokeMutation.mutateAsync({\n workflowType: selected.workflow_type,\n data: data as Record<string, unknown>,\n metadata: (metadata as Record<string, unknown>) ?? undefined,\n ...(overrideBot ? { execute_as: overrideBot } : {}),\n });\n navigate(executionsPath);\n } catch { /* error via mutation */ }\n };\n\n return (\n <div className=\"space-y-6\">\n <div>\n <div className=\"flex items-center justify-between\">\n <SectionLabel>{selected.workflow_type}</SectionLabel>\n <div className=\"flex gap-2\">\n {selected.roles.map((r) => (\n <Pill key={r}>{r}</Pill>\n ))}\n </div>\n </div>\n {selected.description && (\n <p className=\"text-sm text-text-secondary mt-2 leading-relaxed\">\n {selected.description}\n </p>\n )}\n </div>\n\n <IdentitySummary\n config={selected}\n overrideBot={overrideBot}\n onOverrideChange={setOverrideBot}\n showOverride={isAdmin}\n />\n\n <EnvelopeEditor\n selectedConfig={selected}\n isJsonMode={isJsonMode}\n hasFormView={hasFormView}\n jsonInput={jsonInput}\n formFields={formFields}\n dataFields={dataFields}\n onJsonChange={(v) => { setJsonInput(v); setParseError(''); }}\n onToggleMode={handleToggleMode}\n onUpdateFormField={updateFormField}\n onSetFormFields={setFormFields}\n />\n\n {parseError && <p className=\"text-xs text-status-error\">{parseError}</p>}\n {invokeMutation.error && <p className=\"text-xs text-status-error\">{invokeMutation.error.message}</p>}\n {invokeMutation.isSuccess && <p className=\"text-xs text-status-success\">Workflow started</p>}\n\n <button onClick={handleInvoke} disabled={invokeMutation.isPending} className=\"btn-primary\">\n {invokeMutation.isPending ? 'Starting...' : 'Start Workflow'}\n </button>\n </div>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Bot } from 'lucide-react';\nimport { useSetCronSchedule, useJobs } from '../../../api/workflows';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { Pill } from '../../../components/common/display/Pill';\nimport { DataTable } from '../../../components/common/data/DataTable';\nimport type { LTWorkflowConfig } from '../../../api/types';\nimport { DEFAULT_ENVELOPE } from './helpers';\nimport { describeCron, COMMON_PATTERNS, extractFormFields, jobColumns } from '../cron/helpers';\n\nexport function SchedulePanel({\n selected,\n activeTypes,\n}: {\n selected: LTWorkflowConfig;\n activeTypes: Set<string>;\n}) {\n const navigate = useNavigate();\n const setCron = useSetCronSchedule();\n\n const [cronInput, setCronInput] = useState('');\n const [envelopeInput, setEnvelopeInput] = useState('');\n const [envelopeError, setEnvelopeError] = useState('');\n const [viewMode, setViewMode] = useState<'json' | 'form'>('json');\n\n const defaultEnvelope = useMemo(() => {\n if (!selected?.envelope_schema) return DEFAULT_ENVELOPE;\n return JSON.stringify(selected.envelope_schema, null, 2);\n }, [selected?.envelope_schema]);\n\n const isEnvelopeModified = envelopeInput !== defaultEnvelope;\n\n const parsedEnvelope = useMemo(() => {\n try {\n return JSON.parse(envelopeInput) as Record<string, unknown>;\n } catch {\n return null;\n }\n }, [envelopeInput]);\n\n const formFields = useMemo(\n () => (parsedEnvelope ? extractFormFields(parsedEnvelope) : null),\n [parsedEnvelope],\n );\n\n useEffect(() => {\n setCronInput(selected.cron_schedule ?? '');\n setEnvelopeInput(\n selected.envelope_schema\n ? JSON.stringify(selected.envelope_schema, null, 2)\n : DEFAULT_ENVELOPE,\n );\n setEnvelopeError('');\n setViewMode('json');\n setCron.reset();\n }, [selected.workflow_type]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const { data: jobsData, isLoading: jobsLoading } = useJobs({\n entity: selected.workflow_type,\n limit: 10,\n });\n\n const handleSave = () => {\n let envelopeSchema: Record<string, unknown> | undefined;\n try {\n envelopeSchema = JSON.parse(envelopeInput);\n } catch {\n setEnvelopeError('Invalid JSON in envelope');\n return;\n }\n setEnvelopeError('');\n setCron.mutate({\n config: selected,\n cron_schedule: cronInput.trim() || null,\n envelope_schema: envelopeSchema,\n });\n };\n\n const handleClear = () => {\n setCronInput('');\n setCron.mutate({ config: selected, cron_schedule: null });\n };\n\n const handleResetEnvelope = () => {\n setEnvelopeInput(defaultEnvelope);\n setEnvelopeError('');\n };\n\n const handleFormFieldChange = (key: string, value: string) => {\n if (!parsedEnvelope) return;\n const data = { ...((parsedEnvelope.data as Record<string, unknown>) ?? {}) };\n const original = data[key];\n if (typeof original === 'number') data[key] = value === '' ? 0 : Number(value);\n else if (typeof original === 'boolean') data[key] = value === 'true';\n else data[key] = value;\n setEnvelopeInput(JSON.stringify({ ...parsedEnvelope, data }, null, 2));\n };\n\n return (\n <div className=\"space-y-8\">\n {/* Header */}\n <div>\n <div className=\"flex items-center gap-3\">\n <SectionLabel>{selected.workflow_type}</SectionLabel>\n {selected.cron_schedule && (\n <Pill className={activeTypes.has(selected.workflow_type)\n ? 'bg-status-success/10 text-status-success'\n : 'bg-surface-sunken text-text-tertiary'\n }>\n {activeTypes.has(selected.workflow_type) ? 'active' : 'inactive'}\n </Pill>\n )}\n </div>\n {selected.description && (\n <p className=\"text-xs text-text-tertiary mt-2 leading-relaxed\">\n {selected.description}\n </p>\n )}\n </div>\n\n {/* Cron execution identity */}\n <div className=\"bg-surface-sunken rounded-lg px-4 py-3\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[10px] text-text-tertiary uppercase tracking-wider font-medium mr-2\">Cron runs as</span>\n <Bot className=\"w-3.5 h-3.5 text-accent/70\" />\n <span className=\"text-xs text-text-primary font-mono\">\n {selected.execute_as ?? 'lt-system'}\n </span>\n {!selected.execute_as && (\n <span className=\"text-[9px] text-text-tertiary ml-1\">system bot</span>\n )}\n </div>\n </div>\n\n {/* Cron editor */}\n <div>\n <SectionLabel className=\"mb-3\">Schedule</SectionLabel>\n <div className=\"flex gap-3 items-start\">\n <div className=\"flex-1\">\n <input\n type=\"text\"\n value={cronInput}\n onChange={(e) => { setCronInput(e.target.value); setCron.reset(); }}\n placeholder=\"0 */6 * * *\"\n className=\"input font-mono text-sm w-full\"\n />\n {cronInput.trim() && describeCron(cronInput.trim()) && (\n <p className=\"text-xs text-text-secondary mt-1.5\">\n {describeCron(cronInput.trim())}\n </p>\n )}\n </div>\n <button onClick={handleSave} disabled={setCron.isPending} className=\"btn-primary text-xs shrink-0\">\n {setCron.isPending ? 'Saving...' : 'Save'}\n </button>\n {selected.cron_schedule && (\n <button onClick={handleClear} disabled={setCron.isPending} className=\"btn-ghost text-xs text-status-error shrink-0\">\n Clear\n </button>\n )}\n </div>\n {setCron.isSuccess && <p className=\"text-[10px] text-status-success mt-2\">Schedule updated</p>}\n {setCron.error && <p className=\"text-[10px] text-status-error mt-2\">{setCron.error.message}</p>}\n </div>\n\n {/* Common patterns */}\n <div className=\"bg-surface-sunken rounded-lg p-4\">\n <SectionLabel className=\"mb-2\">Common Patterns</SectionLabel>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1.5\">\n {COMMON_PATTERNS.map(([expr, desc]) => (\n <button\n key={expr}\n type=\"button\"\n onClick={() => { setCronInput(expr); setCron.reset(); }}\n className=\"flex items-center gap-2 text-left py-0.5 group\"\n >\n <code className=\"font-mono text-[11px] text-accent group-hover:text-accent-hover\">{expr}</code>\n <span className=\"text-[10px] text-text-tertiary\">{desc}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Cron Envelope editor */}\n <div>\n <div className=\"flex items-baseline justify-between mb-2\">\n <SectionLabel>Cron Envelope</SectionLabel>\n <div className=\"flex items-center gap-3\">\n {isEnvelopeModified && (\n <button type=\"button\" onClick={handleResetEnvelope} className=\"text-[10px] text-status-warning hover:text-status-warning/80 transition-colors\">\n Reset to default\n </button>\n )}\n {formFields && (\n <div className=\"flex rounded overflow-hidden border border-surface-border\">\n <button type=\"button\" onClick={() => setViewMode('form')} className={`px-2 py-0.5 text-[10px] transition-colors ${viewMode === 'form' ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-secondary'}`}>Form</button>\n <button type=\"button\" onClick={() => setViewMode('json')} className={`px-2 py-0.5 text-[10px] transition-colors ${viewMode === 'json' ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-secondary'}`}>JSON</button>\n </div>\n )}\n </div>\n </div>\n <p className=\"text-[10px] text-text-tertiary mb-3\">\n This envelope is sent as the workflow input on each cron invocation.\n </p>\n\n {viewMode === 'form' && formFields ? (\n <div className=\"space-y-3\">\n {formFields.map(({ key, value, type }) => (\n <div key={key}>\n <label className=\"block text-[11px] text-text-secondary mb-1 font-mono\">{key}</label>\n {type === 'boolean' ? (\n <select value={value} onChange={(e) => handleFormFieldChange(key, e.target.value)} className=\"input text-xs w-full\">\n <option value=\"true\">true</option>\n <option value=\"false\">false</option>\n </select>\n ) : (\n <input type={type === 'number' ? 'number' : 'text'} value={value} onChange={(e) => handleFormFieldChange(key, e.target.value)} className=\"input text-xs font-mono w-full\" />\n )}\n </div>\n ))}\n </div>\n ) : (\n <textarea\n value={envelopeInput}\n onChange={(e) => { setEnvelopeInput(e.target.value); setEnvelopeError(''); }}\n className=\"input font-mono text-xs w-full\"\n rows={10}\n spellCheck={false}\n />\n )}\n\n {envelopeError && <p className=\"text-[10px] text-status-error mt-2\">{envelopeError}</p>}\n {isEnvelopeModified && <p className=\"text-[10px] text-accent mt-1.5\">Envelope has been customized. Changes will be saved with the schedule.</p>}\n </div>\n\n {/* Recent executions */}\n <div>\n <SectionLabel className=\"mb-3\">Recent Executions</SectionLabel>\n <DataTable\n columns={jobColumns}\n data={jobsData?.jobs ?? []}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => navigate(`/workflows/executions/${row.workflow_id}`)}\n isLoading={jobsLoading}\n emptyMessage=\"No executions yet\"\n />\n </div>\n </div>\n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useWorkflowConfigs, useDiscoveredWorkflows, useCronStatus } from '../../../api/workflows';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport type { LTWorkflowConfig, WorkflowTier } from '../../../api/types';\nimport { ModeToggle } from './ModeToggle';\nimport type { Mode } from './ModeToggle';\nimport { WorkflowSelector } from './WorkflowSelector';\nimport { StartNowPanel } from './StartNowPanel';\nimport { SchedulePanel } from './SchedulePanel';\n\nexport function StartWorkflowPage() {\n const [searchParams, setSearchParams] = useSearchParams();\n const { data: configsData, isLoading } = useWorkflowConfigs();\n const { data: discoveredData, isLoading: discoveredLoading } = useDiscoveredWorkflows();\n const { data: cronEntries } = useCronStatus();\n\n const mode = (searchParams.get('mode') as Mode) || 'now';\n const selectedType = searchParams.get('type') ?? '';\n\n const configs: LTWorkflowConfig[] = configsData ?? [];\n\n const tierMap = useMemo(() => {\n const map = new Map<string, WorkflowTier>();\n for (const dw of discoveredData ?? []) {\n map.set(dw.workflow_type, dw.tier ?? 'durable');\n }\n return map;\n }, [discoveredData]);\n\n const invocableConfigs = useMemo(() => {\n const certified = configs.filter((c) => c.invocable);\n const registeredTypes = new Set(configs.map((c) => c.workflow_type));\n const discovered = discoveredData ?? [];\n const durable = discovered\n .filter((dw) => dw.active && !registeredTypes.has(dw.workflow_type))\n .map((dw) => ({\n workflow_type: dw.workflow_type,\n task_queue: dw.task_queue ?? '',\n invocable: true,\n description: null,\n default_role: 'reviewer',\n roles: [],\n invocation_roles: [],\n consumes: [],\n envelope_schema: null,\n resolver_schema: null,\n cron_schedule: null,\n execute_as: null,\n } satisfies LTWorkflowConfig));\n return [...certified, ...durable];\n }, [configs, discoveredData]);\n\n const selectedConfig = invocableConfigs.find((c) => c.workflow_type === selectedType);\n\n const activeTypes = new Set(\n (cronEntries ?? []).filter((e) => e.active).map((e) => e.workflow_type),\n );\n\n const executionsPath = '/workflows/executions';\n\n useEffect(() => {\n if (invocableConfigs.length === 1 && !searchParams.get('type')) {\n setSearchParams({ type: invocableConfigs[0].workflow_type, mode }, { replace: true });\n }\n }, [invocableConfigs.length]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const setMode = (m: Mode) => {\n const params: Record<string, string> = { mode: m };\n if (selectedType) params.type = selectedType;\n setSearchParams(params, { replace: true });\n };\n\n const handleSelect = (config: LTWorkflowConfig) => {\n setSearchParams({ type: config.workflow_type, mode }, { replace: true });\n };\n\n if (isLoading || discoveredLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-48\" />\n <div className=\"h-40 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"Invoke Workflow\"\n actions={<ModeToggle mode={mode} onChange={setMode} />}\n />\n\n {invocableConfigs.length === 0 ? (\n <div className=\"py-16 text-center\">\n <p className=\"text-sm text-text-primary mb-1\">No invocable workflows</p>\n <p className=\"text-xs text-text-tertiary\">Mark workflows as invocable in the registry, or start the server with examples enabled.</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-12\">\n <WorkflowSelector\n configs={invocableConfigs}\n selectedType={selectedType}\n onSelect={handleSelect}\n tierMap={tierMap}\n />\n\n <div className=\"lg:col-span-2\">\n {selectedType && selectedConfig ? (\n mode === 'now' ? (\n <StartNowPanel selected={selectedConfig} executionsPath={executionsPath} />\n ) : (\n <SchedulePanel selected={selectedConfig} activeTypes={activeTypes} />\n )\n ) : (\n <div className=\"py-16 text-center\">\n <p className=\"text-sm text-text-tertiary\">\n Select a workflow to begin\n </p>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { StartWorkflowPage } from './StartWorkflowPage';\n\nexport function DurableInvokePage() {\n return <StartWorkflowPage />;\n}\n"],"names":["ModeToggle","mode","onChange","btn","m","icon","label","jsxDEV","Play","Clock","WorkflowSelector","configs","selectedType","onSelect","tierMap","SectionLabel","config","isSelected","tier","ShieldCheck","Settings","Workflow","Bot","Pill","children","className","DEFAULT_ENVELOPE","inferTypeFromValue","value","extractDataFields","schema","data","key","dataToFields","fieldsToJson","fields","metadata","IdentitySummary","overrideBot","onOverrideChange","showOverride","user","useAuth","effectiveBot","Fragment","UserCircle","BotPicker","EnvelopeEditor","selectedConfig","isJsonMode","hasFormView","jsonInput","formFields","dataFields","onJsonChange","onToggleMode","onUpdateFormField","onSetFormFields","Link","e","type","jsonValue","textareaRows","_b","_a","StartNowPanel","selected","executionsPath","navigate","useNavigate","isSuperAdmin","hasRoleType","isAdmin","invokeMutation","useInvokeWorkflow","setJsonInput","useState","parseError","setParseError","setFormFields","setIsJsonMode","setOverrideBot","useMemo","schemaMetadata","md","useEffect","prefill","parsed","json","handleToggleMode","updateFormField","updated","handleInvoke","envelope","r","v","SchedulePanel","activeTypes","setCron","useSetCronSchedule","cronInput","setCronInput","envelopeInput","setEnvelopeInput","envelopeError","setEnvelopeError","viewMode","setViewMode","defaultEnvelope","isEnvelopeModified","parsedEnvelope","extractFormFields","jobsData","jobsLoading","useJobs","handleSave","envelopeSchema","handleClear","handleResetEnvelope","handleFormFieldChange","original","describeCron","COMMON_PATTERNS","expr","desc","DataTable","jobColumns","row","StartWorkflowPage","searchParams","setSearchParams","useSearchParams","configsData","isLoading","useWorkflowConfigs","discoveredData","discoveredLoading","useDiscoveredWorkflows","cronEntries","useCronStatus","map","dw","invocableConfigs","certified","c","registeredTypes","durable","setMode","params","handleSelect","PageHeader","DurableInvokePage"],"mappings":"mpBAIO,SAASA,GAAW,CAAE,KAAAC,EAAM,SAAAC,GAAyD,CAC1F,MAAMC,EAAM,CAACC,EAASC,EAAuBC,IAC3CC,EAAAA,OAAC,SAAA,CACC,QAAS,IAAML,EAASE,CAAC,EACzB,UAAW,8EACTH,IAASG,EACL,uCACA,qEACN,GAEC,SAAA,CAAAC,EACAC,CAAA,CAAA,EATH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,EAAA,aAAA,CAAA,EAAA,IAAA,EAaF,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,sDACZ,SAAA,CAAAJ,EAAI,MAAOI,EAAAA,OAACC,EAAA,CAAK,UAAU,aAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8B,EAAI,WAAW,EACxDL,EAAI,WAAYI,EAAAA,OAACE,EAAA,CAAM,UAAU,aAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+B,EAAI,UAAU,CAAA,CAAA,EAFhE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ,CCpBO,SAASC,GAAiB,CAC/B,QAAAC,EACA,aAAAC,EACA,SAAAC,EACA,QAAAC,CACF,EAKG,CACD,gBACG,MAAA,CACC,SAAA,CAAAP,SAACQ,EAAA,CAAa,UAAU,OAAO,SAAA,iBAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA8C,EAC9CR,EAAAA,OAAC,MAAA,CACE,SAAAI,EAAQ,IAAKK,GAAW,CACvB,MAAMC,EAAaL,IAAiBI,EAAO,cACrCE,EAAOJ,EAAQ,IAAIE,EAAO,aAAa,GAAK,UAClD,OACET,EAAAA,OAAC,SAAA,CAEC,QAAS,IAAMM,EAASG,CAAM,EAC9B,UAAW,uFACTC,EACI,kCACA,8BACN,GAEA,SAAA,CAAAV,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAW,IAAS,aAAeX,EAAAA,OAACY,EAAA,CAAY,UAAU,0CAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,EAC1FD,IAAS,cAAgBX,EAAAA,OAACa,EAAA,CAAS,UAAU,uCAAA,EAApB,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4D,EACrFF,IAAS,WAAaX,EAAAA,OAACc,EAAA,CAAS,UAAU,qCAAA,EAApB,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0D,EACjFd,EAAAA,OAAC,KAAE,UAAW,qBAAqBU,EAAa,0BAA4B,qBAAqB,GAC9F,SAAAD,EAAO,aAAA,EADV,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACCA,EAAO,YACNT,SAAC,OAAA,CAAK,UAAU,6FACd,SAAA,CAAAA,EAAAA,OAACe,EAAA,CAAI,UAAU,aAAA,EAAf,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6B,EAC5BN,EAAO,UAAA,CAAA,EAFV,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EAXJ,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAaA,EACCA,EAAO,aACNT,SAAC,KAAE,UAAU,sDACV,WAAO,aADV,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EAEFA,SAAC,IAAA,CAAE,UAAU,iDACV,WAAO,UAAA,EADV,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EA7BKS,EAAO,cADd,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAiCJ,CAAC,CAAA,EAtCH,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAuCA,CAAA,CAAA,EAzCF,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA0CA,CAEJ,CCtDO,SAASO,EAAK,CAAE,SAAAC,EAAU,UAAAC,EAAY,IAAiB,CAC5D,gBACG,OAAA,CAAK,UAAW,8EAA8EA,CAAS,GACrG,SAAAD,GADH,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAEJ,CCbO,MAAME,EAAmB;AAAA;AAAA;AAAA,GAGzB,SAASC,GAAmBC,EAAwB,CACzD,OAAI,OAAOA,GAAU,UAAkB,UACnC,OAAOA,GAAU,SAAiB,SAClC,MAAM,QAAQA,CAAK,EAAU,QAC7BA,IAAU,MAAQ,OAAOA,GAAU,SAAiB,SACjD,QACT,CAGO,SAASC,EACdC,EACwD,CACxD,GAAI,CAACA,EAAQ,MAAO,CAAA,EACpB,MAAMC,EAAOD,EAAO,KACpB,MAAI,CAACC,GAAQ,OAAOA,GAAS,SAAiB,CAAA,EACvC,OAAO,QAAQA,CAA+B,EAAE,IAAI,CAAC,CAACC,EAAKJ,CAAK,KAAO,CAC5E,IAAAI,EACA,KAAML,GAAmBC,CAAK,EAC9B,aAAcA,CAAA,EACd,CACJ,CAGO,SAASK,EAAaF,EAAwD,CACnF,MAAO,CAAE,GAAGA,CAAA,CACd,CAGO,SAASG,EACdC,EACAC,EACQ,CACR,OAAO,KAAK,UAAU,CAAE,KAAMD,EAAQ,SAAAC,CAAA,EAAY,KAAM,CAAC,CAC3D,CC/BO,SAASC,GAAgB,CAC9B,OAAArB,EACA,YAAAsB,EACA,iBAAAC,EACA,aAAAC,CACF,EAKG,CACD,KAAM,CAAE,KAAAC,CAAA,EAASC,EAAA,EACXC,EAAeL,GAAetB,EAAO,WAE3C,OACET,EAAAA,OAAC,MAAA,CAAI,UAAU,mDACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,sEAAsE,SAAA,YAAA,EAAtF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAgG,EAC/FoC,GAAgB,CAACL,YACf,OAAA,CAAK,UAAU,gCAAgC,SAAA,sBAAhD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,EAEnEA,GACC/B,EAAAA,OAAC,OAAA,CAAK,UAAU,yBAAyB,SAAA,gBAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuD,CAAA,CAAA,EAN3D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAQA,EACAA,SAAC,MAAA,CAAI,UAAU,4BACZ,WACCA,EAAAA,OAAAqC,WAAA,CACE,SAAA,CAAArC,EAAAA,OAACe,EAAA,CAAI,UAAU,4BAAA,EAAf,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4C,EAC5Cf,SAAC,OAAA,CAAK,UAAU,sCAAuC,SAAAoC,CAAA,EAAvD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoE,CAAA,CAAA,EAFtE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EAEApC,EAAAA,OAAAqC,EAAAA,SAAA,CACE,SAAA,CAAArC,EAAAA,OAACsC,EAAA,CAAW,UAAU,gCAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuD,EACvDtC,EAAAA,OAAC,QAAK,UAAU,4BACb,2BAAM,eAAekC,GAAA,YAAAA,EAAM,WAAY,KAAA,EAD1C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,CAAA,EAZJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAcA,EACCD,GAAgBD,GACfhC,SAAC,MAAA,CAAI,UAAU,sCACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,4CAA4C,SAAA,mBAAA,EAA7D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8E,EAC9EA,EAAAA,OAACuC,EAAA,CACC,SAAUR,GAAe,GACzB,SAAUC,EACV,YAAavB,EAAO,WAAa,YAAYA,EAAO,UAAU,GAAK,yBAAA,EAHrE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAIA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAOA,CAAA,CAAA,EAjCJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmCA,CAEJ,CChDO,SAAS+B,GAAe,CAC7B,eAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EACA,WAAAC,EACA,WAAAC,EACA,aAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,gBAAAC,CACF,EAWG,CACD,gBACG,MAAA,CACC,SAAA,CAAAlD,EAAAA,OAAC,MAAA,CAAI,UAAU,2CACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,oCAAoC,SAAA,UAAA,EAArD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAA2C,GACC3C,EAAAA,OAAC,SAAA,CACC,KAAK,SACL,QAASgD,EACT,UAAU,0CAET,WAAa,YAAc,WAAA,EAL9B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAQDP,EAAe,gBACdzC,SAAC,OAAA,CAAK,UAAU,0BAA0B,SAAA,mCAA1C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EAEAA,SAAC,OAAA,CAAK,UAAU,kCAAkC,SAAA,eAAlD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAjBJ,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmBA,CAAA,CAAA,EAvBF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwBA,EAEC,CAACyC,EAAe,iBACfzC,EAAAA,OAAC,MAAA,CAAI,UAAU,wEACb,SAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,8CAA8C,SAAA,CAAA,mGAC+BmD,GAAA,CAAK,GAAG,0BAA0B,UAAU,sCAAsC,SAAA,sBAAnF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAqG,EAAO,uEAAA,CAAA,EADrM,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,EAGDT,GAAc,CAACC,EAEd3C,EAAAA,OAAC,WAAA,CACC,MAAO4C,EACP,SAAWQ,GAAML,EAAaK,EAAE,OAAO,KAAK,EAC5C,UAAU,0BACV,KAAM,GACN,WAAY,EAAA,EALd,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EASApD,EAAAA,OAAC,MAAA,CAAI,UAAU,YACZ,SAAA8C,EAAW,IAAI,CAAC,CAAE,IAAArB,EAAK,KAAA4B,CAAA,IAAW,SACjC,MAAMhC,EAAQwB,EAAWpB,CAAG,EACtB6B,EACJ,OAAOjC,GAAU,SACbA,EACA,KAAK,UACHA,IAAUgC,IAAS,QAAU,CAAA,EAAK,CAAA,GAClC,KACA,CAAA,EAEFE,EAAe,KAAK,IACxB,GACA,KAAK,IAAI,IAAIC,GAAAC,EAAAH,GAAA,YAAAA,EAAW,QAAX,YAAAG,EAAA,KAAAH,EAAmB;AAAA,KAAnB,YAAAE,EAA0B,SAAU,CAAE,CAAA,EAErD,gBACG,MAAA,CACC,SAAA,CAAAxD,EAAAA,OAAC,QAAA,CAAM,UAAU,oFACd,SAAA,CAAAyB,EACDzB,SAAC,OAAA,CAAK,UAAU,+BACb,SAAAqD,CAAA,EADH,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,EACCA,IAAS,UACRrD,EAAAA,OAAC,SAAA,CACC,MAAO,OAAOqB,GAAS,EAAK,EAC5B,SAAW+B,GACTH,EAAkBxB,EAAK2B,EAAE,OAAO,MAAOC,CAAI,EAE7C,UAAU,wBAEV,SAAA,CAAArD,SAAC,SAAA,CAAO,MAAM,OAAO,SAAA,MAAA,EAArB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyB,EACzBA,SAAC,SAAA,CAAO,MAAM,QAAQ,SAAA,OAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2B,CAAA,CAAA,EAR7B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAUEqD,IAAS,UAAYA,IAAS,QAChCrD,EAAAA,OAAC,WAAA,CACC,MAAOsD,EACP,SAAWF,GAAM,CACf,GAAI,CACFH,EACExB,EACA,KAAK,MAAM2B,EAAE,OAAO,KAAK,EACzBC,CAAA,CAEJ,MAAQ,CAENH,EAAgB,CACd,GAAGL,EACH,CAACpB,CAAG,EAAG2B,EAAE,OAAO,KAAA,CACjB,CACH,CACF,EACA,UAAU,qDACV,KAAMG,EACN,WAAY,EAAA,EAnBd,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAsBAvD,EAAAA,OAAC,QAAA,CACC,KAAMqD,IAAS,SAAW,SAAW,OACrC,MAAO,OAAOhC,GAAS,EAAE,EACzB,SAAW+B,GACTH,EAAkBxB,EAAK2B,EAAE,OAAO,MAAOC,CAAI,EAE7C,UAAU,sBAAA,EANZ,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAOA,CAAA,EAhDM5B,EAAV,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAkDA,CAEJ,CAAC,CAAA,EApEH,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAqEA,EAEFzB,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAwC,SAAA,CAAA,2CACXA,SAAC,OAAA,CAAK,UAAU,iBAAiB,SAAA,MAAA,EAAjC,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqC,EAAO,oCAAiCA,SAAC,OAAA,CAAK,UAAU,iBAAiB,SAAA,UAAA,EAAjC,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,GAAA,EAAA,IAAyC,EAAO,uBAAA,CAAA,EADvK,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EAvHF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwHA,CAEJ,CC3IO,SAAS0D,GAAc,CAAE,SAAAC,EAAU,eAAAC,GAA0E,CAClH,MAAMC,EAAWC,EAAA,EACX,CAAE,aAAAC,EAAc,YAAAC,CAAA,EAAgB7B,EAAA,EAChC8B,EAAUF,GAAgBC,EAAY,OAAO,EAC7CE,EAAiBC,EAAA,EACjB,CAACvB,EAAWwB,CAAY,EAAIC,EAAAA,SAASlD,CAAgB,EACrD,CAACmD,EAAYC,CAAa,EAAIF,EAAAA,SAAS,EAAE,EACzC,CAACxB,EAAY2B,CAAa,EAAIH,EAAAA,SAAkC,CAAA,CAAE,EAClE,CAAC3B,EAAY+B,CAAa,EAAIJ,EAAAA,SAAS,EAAK,EAC5C,CAACtC,EAAa2C,CAAc,EAAIL,EAAAA,SAAS,EAAE,EAE3CvB,EAAa6B,EAAAA,QACjB,IAAMrD,EAAkBqC,EAAS,iBAAmB,IAAI,EACxD,CAACA,EAAS,eAAe,CAAA,EAErBhB,EAAcG,EAAW,OAAS,EAElC8B,EAAiBD,EAAAA,QAAQ,IAAM,CACnC,GAAI,CAAChB,EAAS,gBAAiB,MAAO,CAAA,EACtC,MAAMkB,EAAKlB,EAAS,gBAAgB,SACpC,OAAOkB,GAAM,OAAOA,GAAO,SAAYA,EAAiC,CAAA,CAC1E,EAAG,CAAClB,EAAS,eAAe,CAAC,EAE7BmB,EAAAA,UAAU,IAAM,OACdP,EAAc,EAAE,EAChBL,EAAe,MAAA,EAEf,MAAMa,EAAU,eAAe,QAAQ,mBAAmB,EAC1D,GAAIA,EAAS,CACX,eAAe,WAAW,mBAAmB,EAC7CX,EAAaW,CAAO,EACpB,GAAI,CACF,MAAMC,EAAS,KAAK,MAAMD,CAAO,EAC3BvD,GAAOwD,GAAA,YAAAA,EAAQ,OAAQA,EACzBxD,GAAQ,OAAOA,GAAS,UAAUgD,EAAc9C,EAAaF,CAAI,CAAC,CACxE,MAAQ,CAAkB,CAC1BiD,EAAc,EAAI,EAClBC,EAAe,EAAE,EACjB,MACF,CAEA,MAAMO,EAAOtB,EAAS,gBAClB,KAAK,UAAUA,EAAS,gBAAiB,KAAM,CAAC,EAChDxC,EACJiD,EAAaa,CAAI,GACbxB,EAAAE,EAAS,kBAAT,MAAAF,EAA0B,MAAQ,OAAOE,EAAS,gBAAgB,MAAS,SAC7Ea,EAAc9C,EAAaiC,EAAS,gBAAgB,IAA+B,CAAC,EAEpFa,EAAc,CAAA,CAAE,EAElBC,EAAc,CAACnD,EAAkBqC,EAAS,iBAAmB,IAAI,EAAE,MAAM,EACzEe,EAAe,EAAE,CACnB,EAAG,CAACf,EAAS,aAAa,CAAC,EAE3B,MAAMuB,EAAmB,IAAM,CAC7B,GAAIxC,EACF,GAAI,CACF,MAAMsC,EAAS,KAAK,MAAMpC,CAAS,EAC/BoC,EAAO,MAAQ,OAAOA,EAAO,MAAS,UAAUR,EAAc9C,EAAasD,EAAO,IAAI,CAAC,CAC7F,MAAQ,CAAsB,MAE9BZ,EAAazC,EAAakB,EAAY+B,CAAc,CAAC,EAEvDH,EAAc,CAAC/B,CAAU,CAC3B,EAEMyC,EAAkB,CAAC1D,EAAaJ,EAAgBgC,IAAiB,CACrE,IAAI2B,EAAS3D,EACTgC,IAAS,SAAU2B,EAAS3D,IAAU,GAAK,EAAI,OAAOA,CAAK,EACtDgC,IAAS,YAAW2B,EAAS3D,IAAU,QAAUA,IAAU,IACpE,MAAM+D,EAAU,CAAE,GAAGvC,EAAY,CAACpB,CAAG,EAAGuD,CAAA,EACxCR,EAAcY,CAAO,EACrBhB,EAAazC,EAAayD,EAASR,CAAc,CAAC,CACpD,EAEMS,EAAe,SAAY,CAC/Bd,EAAc,EAAE,EAChB,IAAIe,EACJ,GAAI,CACFA,EAAW,KAAK,MAAM1C,CAAS,CACjC,MAAQ,CACN2B,EAAc,cAAc,EAC5B,MACF,CACA,KAAM,CAAE,KAAA/C,EAAM,SAAAK,CAAA,EAAayD,EAC3B,GAAI,CAAC9D,GAAQ,OAAOA,GAAS,SAAU,CACrC+C,EAAc,uCAAuC,EACrD,MACF,CACA,GAAI,CACF,MAAML,EAAe,YAAY,CAC/B,aAAcP,EAAS,cACvB,KAAAnC,EACA,SAAWK,GAAwC,OACnD,GAAIE,EAAc,CAAE,WAAYA,GAAgB,CAAA,CAAC,CAClD,EACD8B,EAASD,CAAc,CACzB,MAAQ,CAA2B,CACrC,EAEA,OACE5D,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,EAAAA,OAACQ,EAAA,CAAc,WAAS,aAAA,EAAxB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsC,EACtCR,EAAAA,OAAC,MAAA,CAAI,UAAU,aACZ,SAAA2D,EAAS,MAAM,IAAK4B,GACnBvF,EAAAA,OAACgB,EAAA,CAAc,SAAAuE,CAAA,EAAJA,EAAX,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiB,CAClB,GAHH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,CAAA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,EACC5B,EAAS,aACR3D,SAAC,KAAE,UAAU,mDACV,WAAS,aADZ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAZJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAcA,EAEAA,EAAAA,OAAC8B,GAAA,CACC,OAAQ6B,EACR,YAAA5B,EACA,iBAAkB2C,EAClB,aAAcT,CAAA,EAJhB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAOAjE,EAAAA,OAACwC,GAAA,CACC,eAAgBmB,EAChB,WAAAjB,EACA,YAAAC,EACA,UAAAC,EACA,WAAAC,EACA,WAAAC,EACA,aAAe0C,GAAM,CAAEpB,EAAaoB,CAAC,EAAGjB,EAAc,EAAE,CAAG,EAC3D,aAAcW,EACd,kBAAmBC,EACnB,gBAAiBX,CAAA,EAVnB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAaCF,GAActE,EAAAA,OAAC,IAAA,CAAE,UAAU,4BAA6B,SAAAsE,CAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqD,EACnEJ,EAAe,OAASlE,EAAAA,OAAC,IAAA,CAAE,UAAU,4BAA6B,SAAAkE,EAAe,MAAM,OAAA,EAA/D,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuE,EAC/FA,EAAe,WAAalE,SAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,oBAA3C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2D,EAExFA,EAAAA,OAAC,SAAA,CAAO,QAASqF,EAAc,SAAUnB,EAAe,UAAW,UAAU,cAC1E,SAAAA,EAAe,UAAY,cAAgB,gBAAA,EAD9C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EA3CF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA4CA,CAEJ,CCxJO,SAASuB,GAAc,CAC5B,SAAA9B,EACA,YAAA+B,CACF,EAGG,CACD,MAAM7B,EAAWC,EAAA,EACX6B,EAAUC,EAAA,EAEV,CAACC,EAAWC,CAAY,EAAIzB,EAAAA,SAAS,EAAE,EACvC,CAAC0B,EAAeC,CAAgB,EAAI3B,EAAAA,SAAS,EAAE,EAC/C,CAAC4B,EAAeC,CAAgB,EAAI7B,EAAAA,SAAS,EAAE,EAC/C,CAAC8B,EAAUC,CAAW,EAAI/B,EAAAA,SAA0B,MAAM,EAE1DgC,EAAkB1B,EAAAA,QAAQ,IACzBhB,GAAA,MAAAA,EAAU,gBACR,KAAK,UAAUA,EAAS,gBAAiB,KAAM,CAAC,EADhBxC,EAEtC,CAACwC,GAAA,YAAAA,EAAU,eAAe,CAAC,EAExB2C,EAAqBP,IAAkBM,EAEvCE,EAAiB5B,EAAAA,QAAQ,IAAM,CACnC,GAAI,CACF,OAAO,KAAK,MAAMoB,CAAa,CACjC,MAAQ,CACN,OAAO,IACT,CACF,EAAG,CAACA,CAAa,CAAC,EAEZlD,EAAa8B,EAAAA,QACjB,IAAO4B,EAAiBC,GAAkBD,CAAc,EAAI,KAC5D,CAACA,CAAc,CAAA,EAGjBzB,EAAAA,UAAU,IAAM,CACdgB,EAAanC,EAAS,eAAiB,EAAE,EACzCqC,EACErC,EAAS,gBACL,KAAK,UAAUA,EAAS,gBAAiB,KAAM,CAAC,EAChDxC,CAAA,EAEN+E,EAAiB,EAAE,EACnBE,EAAY,MAAM,EAClBT,EAAQ,MAAA,CACV,EAAG,CAAChC,EAAS,aAAa,CAAC,EAE3B,KAAM,CAAE,KAAM8C,EAAU,UAAWC,CAAA,EAAgBC,EAAQ,CACzD,OAAQhD,EAAS,cACjB,MAAO,EAAA,CACR,EAEKiD,EAAa,IAAM,CACvB,IAAIC,EACJ,GAAI,CACFA,EAAiB,KAAK,MAAMd,CAAa,CAC3C,MAAQ,CACNG,EAAiB,0BAA0B,EAC3C,MACF,CACAA,EAAiB,EAAE,EACnBP,EAAQ,OAAO,CACb,OAAQhC,EACR,cAAekC,EAAU,KAAA,GAAU,KACnC,gBAAiBgB,CAAA,CAClB,CACH,EAEMC,EAAc,IAAM,CACxBhB,EAAa,EAAE,EACfH,EAAQ,OAAO,CAAE,OAAQhC,EAAU,cAAe,KAAM,CAC1D,EAEMoD,EAAsB,IAAM,CAChCf,EAAiBK,CAAe,EAChCH,EAAiB,EAAE,CACrB,EAEMc,EAAwB,CAACvF,EAAaJ,IAAkB,CAC5D,GAAI,CAACkF,EAAgB,OACrB,MAAM/E,EAAO,CAAE,GAAK+E,EAAe,MAAoC,CAAA,CAAC,EAClEU,EAAWzF,EAAKC,CAAG,EACrB,OAAOwF,GAAa,SAAUzF,EAAKC,CAAG,EAAIJ,IAAU,GAAK,EAAI,OAAOA,CAAK,EACpE,OAAO4F,GAAa,UAAWzF,EAAKC,CAAG,EAAIJ,IAAU,OACzDG,EAAKC,CAAG,EAAIJ,EACjB2E,EAAiB,KAAK,UAAU,CAAE,GAAGO,EAAgB,KAAA/E,CAAA,EAAQ,KAAM,CAAC,CAAC,CACvE,EAEA,OACExB,EAAAA,OAAC,MAAA,CAAI,UAAU,YAEb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAACQ,EAAA,CAAc,WAAS,aAAA,EAAxB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsC,EACrCmD,EAAS,eACR3D,EAAAA,OAACgB,GAAK,UAAW0E,EAAY,IAAI/B,EAAS,aAAa,EACnD,2CACA,uCAED,SAAA+B,EAAY,IAAI/B,EAAS,aAAa,EAAI,SAAW,UAAA,EAJxD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,CAAA,CAAA,EARJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAUA,EACCA,EAAS,aACR3D,SAAC,KAAE,UAAU,kDACV,WAAS,aADZ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAfJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAiBA,WAGC,MAAA,CAAI,UAAU,yCACb,SAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,2EAA2E,SAAA,cAAA,EAA3F,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuG,EACvGA,EAAAA,OAACe,EAAA,CAAI,UAAU,4BAAA,EAAf,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4C,WAC3C,OAAA,CAAK,UAAU,sCACb,SAAA4C,EAAS,YAAc,aAD1B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACC,CAACA,EAAS,qBACR,OAAA,CAAK,UAAU,qCAAqC,SAAA,cAArD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA+D,CAAA,CAAA,EAPnE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAWA,WAGC,MAAA,CACC,SAAA,CAAA3D,SAACQ,EAAA,CAAa,UAAU,OAAO,SAAA,UAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAuC,EACvCR,EAAAA,OAAC,MAAA,CAAI,UAAU,yBACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAA,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAO6F,EACP,SAAWzC,GAAM,CAAE0C,EAAa1C,EAAE,OAAO,KAAK,EAAGuC,EAAQ,MAAA,CAAS,EAClE,YAAY,cACZ,UAAU,gCAAA,EALZ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAOCE,EAAU,KAAA,GAAUqB,EAAarB,EAAU,MAAM,GAChD7F,EAAAA,OAAC,IAAA,CAAE,UAAU,qCACV,SAAAkH,EAAarB,EAAU,KAAA,CAAM,CAAA,EADhC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAXJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,EACA7F,EAAAA,OAAC,SAAA,CAAO,QAAS4G,EAAY,SAAUjB,EAAQ,UAAW,UAAU,+BACjE,SAAAA,EAAQ,UAAY,YAAc,MAAA,EADrC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACChC,EAAS,eACR3D,EAAAA,OAAC,SAAA,CAAO,QAAS8G,EAAa,SAAUnB,EAAQ,UAAW,UAAU,+CAA+C,SAAA,OAAA,EAApH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EArBJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAuBA,EACCA,EAAQ,WAAa3F,SAAC,IAAA,CAAE,UAAU,uCAAuC,SAAA,oBAApD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoE,EACzF2F,EAAQ,OAAS3F,EAAAA,OAAC,IAAA,CAAE,UAAU,qCAAsC,SAAA2F,EAAQ,MAAM,OAAA,EAAjE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyE,CAAA,CAAA,EA3B7F,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA4BA,EAGA3F,EAAAA,OAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAA,SAACQ,EAAA,CAAa,UAAU,OAAO,SAAA,iBAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA8C,EAC9CR,EAAAA,OAAC,MAAA,CAAI,UAAU,oDACZ,SAAAmH,GAAgB,IAAI,CAAC,CAACC,EAAMC,CAAI,IAC/BrH,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CAAE8F,EAAasB,CAAI,EAAGzB,EAAQ,MAAA,CAAS,EACtD,UAAU,iDAEV,SAAA,CAAA3F,SAAC,OAAA,CAAK,UAAU,kEAAmE,SAAAoH,CAAA,EAAnF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwF,EACxFpH,SAAC,OAAA,CAAK,UAAU,iCAAkC,SAAAqH,CAAA,EAAlD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuD,CAAA,CAAA,EANlDD,EADP,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CASD,CAAA,EAXH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAYA,CAAA,CAAA,EAdF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAeA,WAGC,MAAA,CACC,SAAA,CAAApH,EAAAA,OAAC,MAAA,CAAI,UAAU,2CACb,SAAA,CAAAA,EAAAA,OAACQ,GAAa,SAAA,eAAA,EAAd,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2B,EAC3BR,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAsG,GACCtG,EAAAA,OAAC,UAAO,KAAK,SAAS,QAAS+G,EAAqB,UAAU,iFAAiF,SAAA,kBAAA,EAA/I,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EAEDlE,GACC7C,EAAAA,OAAC,MAAA,CAAI,UAAU,4DACb,SAAA,CAAAA,SAAC,SAAA,CAAO,KAAK,SAAS,QAAS,IAAMoG,EAAY,MAAM,EAAG,UAAW,6CAA6CD,IAAa,OAAS,2BAA6B,8CAA8C,GAAI,SAAA,MAAA,EAAvN,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2N,WAC1N,SAAA,CAAO,KAAK,SAAS,QAAS,IAAMC,EAAY,MAAM,EAAG,UAAW,6CAA6CD,IAAa,OAAS,2BAA6B,8CAA8C,GAAI,SAAA,MAAA,EAAvN,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2N,CAAA,CAAA,EAF7N,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EAVJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAYA,CAAA,CAAA,EAdF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAeA,EACAnG,SAAC,IAAA,CAAE,UAAU,sCAAsC,SAAA,sEAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,EAECmG,IAAa,QAAUtD,EACtB7C,EAAAA,OAAC,MAAA,CAAI,UAAU,YACZ,SAAA6C,EAAW,IAAI,CAAC,CAAE,IAAApB,EAAK,MAAAJ,EAAO,KAAAgC,CAAA,aAC5B,MAAA,CACC,SAAA,CAAArD,SAAC,QAAA,CAAM,UAAU,uDAAwD,SAAAyB,CAAA,EAAzE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6E,EAC5E4B,IAAS,UACRrD,SAAC,SAAA,CAAO,MAAAqB,EAAc,SAAW+B,GAAM4D,EAAsBvF,EAAK2B,EAAE,OAAO,KAAK,EAAG,UAAU,uBAC3F,SAAA,CAAApD,SAAC,SAAA,CAAO,MAAM,OAAO,SAAA,MAAA,EAArB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyB,EACzBA,SAAC,SAAA,CAAO,MAAM,QAAQ,SAAA,OAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2B,CAAA,CAAA,EAF7B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EAEAA,SAAC,QAAA,CAAM,KAAMqD,IAAS,SAAW,SAAW,OAAQ,MAAAhC,EAAc,SAAW+B,GAAM4D,EAAsBvF,EAAK2B,EAAE,OAAO,KAAK,EAAG,UAAU,kCAAzI,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0K,CAAA,CAAA,EARpK3B,EAAV,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAUA,CACD,GAbH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAcA,EAEAzB,EAAAA,OAAC,WAAA,CACC,MAAO+F,EACP,SAAW3C,GAAM,CAAE4C,EAAiB5C,EAAE,OAAO,KAAK,EAAG8C,EAAiB,EAAE,CAAG,EAC3E,UAAU,iCACV,KAAM,GACN,WAAY,EAAA,EALd,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EASDD,GAAiBjG,EAAAA,OAAC,IAAA,CAAE,UAAU,qCAAsC,SAAAiG,CAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiE,EAClFK,GAAsBtG,EAAAA,OAAC,IAAA,CAAE,UAAU,iCAAiC,SAAA,wEAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoH,CAAA,CAAA,EAhD7I,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAiDA,WAGC,MAAA,CACC,SAAA,CAAAA,SAACQ,EAAA,CAAa,UAAU,OAAO,SAAA,mBAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAgD,EAChDR,EAAAA,OAACsH,GAAA,CACC,QAASC,GACT,MAAMd,GAAA,YAAAA,EAAU,OAAQ,CAAA,EACxB,MAAQe,GAAQA,EAAI,YACpB,WAAaA,GAAQ3D,EAAS,yBAAyB2D,EAAI,WAAW,EAAE,EACxE,UAAWd,EACX,aAAa,mBAAA,EANf,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAOA,CAAA,EATF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAUA,CAAA,CAAA,EAnJF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAoJA,CAEJ,CC/OO,SAASe,IAAoB,CAClC,KAAM,CAACC,EAAcC,CAAe,EAAIC,GAAA,EAClC,CAAE,KAAMC,EAAa,UAAAC,CAAA,EAAcC,EAAA,EACnC,CAAE,KAAMC,EAAgB,UAAWC,CAAA,EAAsBC,EAAA,EACzD,CAAE,KAAMC,CAAA,EAAgBC,EAAA,EAExB1I,EAAQgI,EAAa,IAAI,MAAM,GAAc,MAC7CrH,EAAeqH,EAAa,IAAI,MAAM,GAAK,GAE3CtH,EAA8ByH,GAAe,CAAA,EAE7CtH,EAAUoE,EAAAA,QAAQ,IAAM,CAC5B,MAAM0D,MAAU,IAChB,UAAWC,KAAMN,GAAkB,GACjCK,EAAI,IAAIC,EAAG,cAAeA,EAAG,MAAQ,SAAS,EAEhD,OAAOD,CACT,EAAG,CAACL,CAAc,CAAC,EAEbO,EAAmB5D,EAAAA,QAAQ,IAAM,CACrC,MAAM6D,EAAYpI,EAAQ,OAAQqI,GAAMA,EAAE,SAAS,EAC7CC,EAAkB,IAAI,IAAItI,EAAQ,IAAKqI,GAAMA,EAAE,aAAa,CAAC,EAE7DE,GADaX,GAAkB,CAAA,GAElC,OAAQM,GAAOA,EAAG,QAAU,CAACI,EAAgB,IAAIJ,EAAG,aAAa,CAAC,EAClE,IAAKA,IAAQ,CACZ,cAAeA,EAAG,cAClB,WAAYA,EAAG,YAAc,GAC7B,UAAW,GACX,YAAa,KACb,aAAc,WACd,MAAO,CAAA,EACP,iBAAkB,CAAA,EAClB,SAAU,CAAA,EACV,gBAAiB,KACjB,gBAAiB,KACjB,cAAe,KACf,WAAY,IAAA,EACe,EAC/B,MAAO,CAAC,GAAGE,EAAW,GAAGG,CAAO,CAClC,EAAG,CAACvI,EAAS4H,CAAc,CAAC,EAEtBvF,EAAiB8F,EAAiB,KAAME,GAAMA,EAAE,gBAAkBpI,CAAY,EAE9EqF,EAAc,IAAI,KACrByC,GAAe,CAAA,GAAI,OAAQ/E,GAAMA,EAAE,MAAM,EAAE,IAAKA,GAAMA,EAAE,aAAa,CAAA,EAGlEQ,EAAiB,wBAEvBkB,EAAAA,UAAU,IAAM,CACVyD,EAAiB,SAAW,GAAK,CAACb,EAAa,IAAI,MAAM,GAC3DC,EAAgB,CAAE,KAAMY,EAAiB,CAAC,EAAE,cAAe,KAAA7I,GAAQ,CAAE,QAAS,GAAM,CAExF,EAAG,CAAC6I,EAAiB,MAAM,CAAC,EAE5B,MAAMK,EAAW/I,GAAY,CAC3B,MAAMgJ,EAAiC,CAAE,KAAMhJ,CAAA,EAC3CQ,MAAqB,KAAOA,GAChCsH,EAAgBkB,EAAQ,CAAE,QAAS,EAAA,CAAM,CAC3C,EAEMC,EAAgBrI,GAA6B,CACjDkH,EAAgB,CAAE,KAAMlH,EAAO,cAAe,KAAAf,GAAQ,CAAE,QAAS,GAAM,CACzE,EAEA,OAAIoI,GAAaG,EAEbjI,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoD,EACpDA,EAAAA,OAAC,MAAA,CAAI,UAAU,gCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAgD,CAAA,CAAA,EAFlD,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,WAKD,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC+I,EAAA,CACC,MAAM,kBACN,QAAS/I,EAAAA,OAACP,GAAA,CAAW,KAAAC,EAAY,SAAUkJ,CAAA,EAAlC,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2C,CAAA,EAFtD,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAKCL,EAAiB,SAAW,EAC3BvI,EAAAA,OAAC,MAAA,CAAI,UAAU,oBACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,iCAAiC,SAAA,wBAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoE,EACpEA,SAAC,IAAA,CAAE,UAAU,6BAA6B,SAAA,yFAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiI,CAAA,CAAA,EAFnI,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,EAEAA,SAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,EAAAA,OAACG,GAAA,CACC,QAASoI,EACT,aAAAlI,EACA,SAAUyI,EACV,QAAAvI,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAOAP,EAAAA,OAAC,MAAA,CAAI,UAAU,gBACZ,SAAAK,GAAgBoC,EACf/C,IAAS,MACPM,EAAAA,OAAC0D,GAAA,CAAc,SAAUjB,EAAgB,eAAAmB,CAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyE,EAEzE5D,EAAAA,OAACyF,GAAA,CAAc,SAAUhD,EAAgB,YAAAiD,CAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,WAGpE,MAAA,CAAI,UAAU,oBACb,SAAA1F,EAAAA,OAAC,IAAA,CAAE,UAAU,6BAA6B,SAAA,4BAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,CAAA,EAZJ,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAcA,CAAA,CAAA,EAtBF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAuBA,CAAA,CAAA,EAnCJ,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAqCA,CAEJ,CC5HO,SAASgJ,IAAoB,CAClC,gBAAQvB,GAAA,GAAD,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAmB,CAC5B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as A,j as e,C as I,u as Ve,J as je}from"./index-sNrqYt0Q.js";import{u as G,c as re,b as De,a as o}from"./vendor-query-DLp59M9_.js";import{P as ke}from"./PageHeaderWithStats-Br5y9qNO.js";import{F as we,b as Qe}from"./FilterBar-BQNzsd3A.js";import{u as Se}from"./useFilterParams-CGRYFw_A.js";import{R as ne,a as B}from"./RowActions-JqgAB0p3.js";import{ag as W,ah as U,ai as Te,P as Fe,k as Pe,A as Me,$ as Re,R as _e,S as $e,aj as Ae,E as Oe,ak as Ie}from"./vendor-icons-CWl44VA6.js";import{M as Be}from"./Modal-Dir9Rlnx.js";import{D as le}from"./DataTable-bd2PTBJd.js";import{C as q}from"./CollapsibleSection-BWPbzgEe.js";import{T as We}from"./TaskQueuePill-BzduBqwy.js";import"./vendor-react-Co3Y8ikm.js";import"./EmptyState-BygtU-Rh.js";function Je(){return A("/controlplane/apps")}function Le(t){return A(`/controlplane/rollcall?app_id=${encodeURIComponent(t)}`)}function Ke(t){return A("/controlplane/throttle",{method:"POST",body:JSON.stringify(t)})}function qe(t){return A("/controlplane/subscribe",{method:"POST",body:JSON.stringify(t)})}function Ue(t,a,s){let r=`/controlplane/streams?app_id=${encodeURIComponent(t)}&duration=${encodeURIComponent(a)}`;return A(r)}function oe(){return G({queryKey:["controlplane","apps"],queryFn:Je,staleTime:6e4})}function Ge(t,a){return G({queryKey:["controlplane","rollcall",t],queryFn:()=>Le(t),enabled:!!t,refetchInterval:a})}function ie(){const t=De();return re({mutationFn:Ke,onSuccess:()=>{setTimeout(()=>{t.invalidateQueries({queryKey:["controlplane","rollcall"]})},1500)}})}function ze(t,a,s,r){return G({queryKey:["controlplane","streams",t,a,""],queryFn:()=>Ue(t,a),enabled:!!t,staleTime:15e3,refetchInterval:r})}function He(){return re({mutationFn:qe})}const Ye=[{label:"15m",value:"15m"},{label:"30m",value:"30m"},{label:"1h",value:"1h"},{label:"1d",value:"1d"},{label:"7d",value:"7d"}],Xe={pong:"text-status-success",ping:"text-accent",throttle:"text-status-warning",job:"text-purple-400",work:"text-text-secondary",activate:"text-status-error",cron:"text-text-tertiary",user:"text-text-secondary"},Ze=250;function _(t){return!!t.worker_topic}function $(t){return typeof t.throttle=="number"&&t.throttle!==0}function z(t){return t===void 0||t===0?"Normal":t===-1?"Paused":t>=864e5?`${(t/864e5).toFixed(0)}d`:t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${(t/1e3).toFixed(1)}s`:`${t}ms`}function me(t,a){if(!t||!a)return"—";const s=parseFloat(t),r=parseFloat(a);return isNaN(s)||isNaN(r)?"—":`${(s-r).toFixed(1)} / ${s.toFixed(1)} GB`}function ce(t){return t.replace(/^hmsh:[^:]+:x:/,"")||"(engine)"}const ue=[{key:"pong",label:"Pong",description:"Roll call responses"},{key:"ping",label:"Ping",description:"Roll call broadcasts"},{key:"throttle",label:"Throttle",description:"Throttle commands"},{key:"job",label:"Job",description:"Job lifecycle events"},{key:"work",label:"Work",description:"Worker dispatch events"},{key:"activate",label:"Activate",description:"Worker activation"},{key:"cron",label:"Cron",description:"Cron schedule triggers"},{key:"user",label:"User",description:"User-defined messages"}];function k(t){return`${t.engine_id}-${t.worker_topic||"engine"}`}function et(t){const a=new Map;for(const s of t){if(!s.worker_topic)continue;const r=s.worker_topic;a.has(r)||a.set(r,[]),a.get(r).push(s)}return a}function tt(t){let a=0,s=0,r=0;for(const l of t)if(l.counts)for(const[n,p]of Object.entries(l.counts))a+=p,n==="200"?s+=p:n==="500"&&(r+=p);return{total:a,success:s,errors:r}}function at(){return{key:"throttle",label:"Throttle",render:t=>{const a=t.throttle;return a===-1?e.jsxDEV("span",{className:"text-xs text-status-error font-medium",children:"Paused"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:23,columnNumber:28},this):a&&a>0?e.jsxDEV("span",{className:"text-xs text-status-warning font-medium",children:z(a)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:24,columnNumber:30},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:25,columnNumber:14},this)},className:"w-24"}}function st(){return{key:"memory",label:"Memory",render:t=>{var a,s;return e.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary",children:me((a=t.system)==null?void 0:a.TotalMemoryGB,(s=t.system)==null?void 0:s.FreeMemoryGB)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:36,columnNumber:7},this)},className:"w-36"}}function rt(t,a){return{key:"actions",label:"",render:s=>e.jsxDEV(ne,{children:[$(s)&&e.jsxDEV(B,{icon:U,title:"Resume (remove throttle)",onClick:()=>a(s),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:54,columnNumber:11},this),e.jsxDEV(B,{icon:W,title:"Adjust throttle",onClick:()=>t(s)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:61,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:52,columnNumber:7},this),className:"w-16"}}function nt(t){const a=t.profiles.some(s=>t.selectedIds.has(k(s)));return[{key:"select",label:e.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[e.jsxDEV("input",{type:"checkbox",checked:t.profiles.length>0&&t.profiles.every(s=>t.selectedIds.has(k(s))),onChange:t.toggleAll,className:"rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:76,columnNumber:11},this),a&&t.onBulkThrottle&&e.jsxDEV(W,{className:"w-[14px] h-[14px] text-text-tertiary hover:text-accent cursor-pointer",strokeWidth:1.5,onClick:s=>{s.stopPropagation(),t.onBulkThrottle()}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:75,columnNumber:9},this),render:s=>e.jsxDEV("input",{type:"checkbox",checked:t.selectedIds.has(k(s)),onChange:r=>{r.stopPropagation(),t.toggleCheckbox(s)},onClick:r=>r.stopPropagation(),className:"rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:92,columnNumber:9},this),className:"w-16"},{key:"engine_id",label:"Engine ID",render:s=>e.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary",children:s.engine_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:106,columnNumber:9},this),className:"w-48"},at(),{key:"processed",label:"Processed",render:s=>{const r=tt([s]);return e.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary",children:r.total.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/columns.tsx",lineNumber:116,columnNumber:16},this)},className:"w-24"},st(),rt(t.onRowThrottle,t.onResumeThrottle)]}function lt({activeAppId:t,allProfiles:a,profiles:s}){const r=ie(),[l,n]=o.useState(new Set),[p,i]=o.useState(!1),[N,m]=o.useState([]);o.useEffect(()=>{n(new Set)},[t]);const j=o.useCallback(h=>{n(w=>{const V=new Set(w),Q=k(h);return V.has(Q)?V.delete(Q):V.add(Q),V})},[]),v=o.useCallback(()=>{l.size===s.length?n(new Set):n(new Set(s.map(k)))},[s,l.size]),u=o.useMemo(()=>{const h=s.filter(C=>l.has(k(C)));if(h.length===0)return[];if(h.length===a.length)return[{label:"Entire Mesh"}];const w=h.filter(C=>!_(C)),V=h.filter(_),Q=[];for(const C of w)Q.push({label:`Engine ${C.engine_id}`,guid:C.engine_id});const T=new Map;for(const C of V){const S=C.worker_topic;T.has(S)||T.set(S,[]),T.get(S).push(C)}for(const[C,S]of T){const J=a.filter(P=>P.worker_topic===C);if(S.length===J.length)Q.push({label:C,topic:C});else for(const P of S)Q.push({label:`${C} ${P.engine_id}`,guid:P.engine_id})}return Q},[s,a,l]);return{selectedIds:l,setSelectedIds:n,toggleCheckbox:j,toggleAll:v,throttleModalOpen:p,throttleTargets:N,selectedThrottleTargets:u,throttleMutation:r,handleBulkThrottle:h=>{const w=N.length>0?N:u;for(const V of w)r.mutate({appId:t,throttle:h,...V.topic?{topic:V.topic}:{},...V.guid?{guid:V.guid}:{}});i(!1),m([])},handleRowClick:h=>{const w=_(h)?`${h.worker_topic} ${h.engine_id}`:`Engine ${h.engine_id}`;m([{label:w,guid:h.engine_id}]),i(!0)},handleBulkThrottleOpen:()=>{m(u),i(!0)},handleResumeThrottle:h=>{r.mutate({appId:t,throttle:0,guid:h.engine_id})},handleResumeQueue:h=>{r.mutate({appId:t,throttle:0,topic:h})},handleQueueThrottle:h=>{m([{label:h,topic:h}]),i(!0)},closeThrottleModal:()=>{i(!1),m([])}}}const ot=[{label:"Resume",ms:0},{label:"0.5s",ms:500},{label:"1s",ms:1e3},{label:"5s",ms:5e3},{label:"30s",ms:3e4},{label:"Pause",ms:-1}];function it({target:t}){const a=t.label==="Entire Mesh",s=t.label==="All Engines"||t.label.startsWith("Engine "),r=a?"bg-status-error/10 text-status-error":s?"bg-blue-500/10 text-blue-500":"bg-accent/[0.06] text-text-secondary",l=t.guid?"guid":t.topic?"topic":"mesh";return e.jsxDEV("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[10px] font-medium rounded-lg ${r}`,children:[t.label,e.jsxDEV("span",{className:"text-[8px] opacity-50",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:35,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:33,columnNumber:5},this)}function mt({open:t,onClose:a,targets:s,onApply:r,isPending:l}){const[n,p]=o.useState("0");return e.jsxDEV(Be,{open:t,onClose:a,title:"Adjust Throttle",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Targets"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:47,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:s.map((i,N)=>e.jsxDEV(it,{target:i},i.guid||i.topic||N,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:50,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:48,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:46,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Presets"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:56,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-2",children:ot.map(i=>e.jsxDEV("button",{onClick:()=>{p(i.ms===-1?"-1":String(i.ms/1e3)),r(i.ms)},disabled:l,className:`px-3 py-1.5 text-xs rounded transition-colors ${i.ms===-1?"bg-status-error/10 text-status-error hover:bg-status-error/20":i.ms===0?"bg-status-success/10 text-status-success hover:bg-status-success/20":"bg-surface-sunken text-text-secondary hover:bg-surface-hover"} disabled:opacity-50`,children:i.label},i.label,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:59,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:55,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Custom (seconds between messages)"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:78,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("input",{type:"number",step:"0.1",min:"-1",value:n,onChange:i=>p(i.target.value),className:"input text-xs py-1.5 px-3 w-28"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:82,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>{const i=parseFloat(n);isNaN(i)||r(i===-1?-1:Math.round(i*1e3))},disabled:l,className:"btn-primary text-xs py-1.5 px-4 disabled:opacity-50",children:"Apply"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:90,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:81,columnNumber:11},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1",children:"0 = resume, -1 = pause indefinitely"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:102,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:45,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ThrottleModal.tsx",lineNumber:44,columnNumber:5},this)}function ct(){const{data:t}=oe(),a=ie(),[s,r]=o.useState(!1),l=(t==null?void 0:t.apps)??[],n=p=>{for(const i of l)a.mutate({appId:i.appId,throttle:p});r(!1)};return s?e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-xs text-status-error",children:"Pause all queues?"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>n(-1),className:"px-2.5 py-1 text-xs rounded-md bg-status-error text-white hover:bg-status-error/90 transition-colors",children:"Confirm"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:23,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>r(!1),className:"px-2.5 py-1 text-xs text-text-tertiary hover:text-text-primary transition-colors",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:29,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:21,columnNumber:7},this):e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("button",{onClick:()=>r(!0),className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-error/80 hover:text-status-error hover:bg-status-error/10 transition-colors",title:"Pause all queues",children:[e.jsxDEV(Te,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:46,columnNumber:9},this),"Pause All"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:41,columnNumber:7},this),e.jsxDEV("button",{onClick:()=>n(0),className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-success/80 hover:text-status-success hover:bg-status-success/10 transition-colors",title:"Resume all queues",children:[e.jsxDEV(Fe,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:54,columnNumber:9},this),"Resume All"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:49,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/EmergencyControls.tsx",lineNumber:40,columnNumber:5},this)}function ut({byStream:t,onNodeFilter:a}){const[s,r]=o.useState(!1);if(o.useEffect(()=>{r(!1);const m=requestAnimationFrame(()=>r(!0));return()=>cancelAnimationFrame(m)},[t]),t.length===0)return e.jsxDEV("p",{className:"text-xs text-text-tertiary py-4 text-center",children:"No activity in this period"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:26,columnNumber:12},this);const l=t.filter(m=>m.stream_type==="engine"),n=t.filter(m=>m.stream_type==="worker"),p=Math.max(...t.map(m=>m.count)),i=m=>{const j=p>0?m.count/p*100:0,v=m.stream_type==="engine",u=v?"(all engines)":ce(m.stream_name),b=v?"bg-blue-500/70":"bg-accent/60",D=v?"text-blue-500":"text-text-tertiary";return e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:`text-[9px] font-mono ${D} w-36 truncate text-right shrink-0`,title:m.stream_name,children:u},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 h-4 bg-surface-sunken rounded overflow-hidden",children:e.jsxDEV("div",{className:`h-full ${b} rounded transition-all duration-500 ease-out`,style:{width:s?`${j}%`:"0%"}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:48,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:47,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] font-mono tabular-nums text-text-secondary w-12 text-right shrink-0",children:m.count.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:53,columnNumber:9},this)]},`${m.stream_type}-${m.stream_name}`,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:40,columnNumber:7},this)},N="text-[9px] uppercase tracking-widest font-semibold mb-1 cursor-pointer hover:underline";return e.jsxDEV("div",{className:"space-y-1.5",children:[l.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:`${N} text-blue-500/70 hover:text-blue-500`,onClick:()=>a==null?void 0:a("engines"),children:"Engine Message Volume"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:66,columnNumber:11},this),l.map(i),n.length>0&&e.jsxDEV("div",{className:"h-2"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:73,columnNumber:40},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:65,columnNumber:9},this),n.length>0&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:`${N} text-accent/70 hover:text-accent`,onClick:()=>a==null?void 0:a("workers"),children:"Worker Message Volume"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:78,columnNumber:11},this),n.map(i)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/StreamVolumeChart.tsx",lineNumber:63,columnNumber:5},this)}function dt({queue:t,workers:a,expanded:s,onToggle:r,onWorkerClick:l,onResumeThrottle:n,onQueueThrottle:p,onResumeQueue:i,byStream:N,activeDuration:m}){const j=o.useMemo(()=>{const u=N.find(b=>b.stream_type==="worker"&&ce(b.stream_name)===t);return(u==null?void 0:u.count)??0},[N,t]),v=o.useMemo(()=>[{key:"engine_id",label:"Worker ID",render:u=>e.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary",children:u.engine_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:55,columnNumber:9},this),className:"w-48"},{key:"throttle",label:"Throttle",render:u=>{const b=u.throttle;return b===-1?e.jsxDEV("span",{className:"text-xs text-status-error font-medium",children:"Paused"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:66,columnNumber:30},this):b&&b>0?e.jsxDEV("span",{className:"text-xs text-status-warning font-medium",children:z(b)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:67,columnNumber:32},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:68,columnNumber:16},this)},className:"w-24"},{key:"memory",label:"Memory",render:u=>{var b,D;return e.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary",children:me((b=u.system)==null?void 0:b.TotalMemoryGB,(D=u.system)==null?void 0:D.FreeMemoryGB)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:76,columnNumber:9},this)},className:"w-36"},{key:"actions",label:"",render:u=>e.jsxDEV(ne,{children:[$(u)&&e.jsxDEV(B,{icon:U,title:"Resume (remove throttle)",onClick:()=>n(u),colorClass:"text-text-tertiary hover:text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:88,columnNumber:13},this),e.jsxDEV(B,{icon:W,title:"Adjust throttle",onClick:()=>l(u)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:95,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:86,columnNumber:9},this),className:"w-16"}],[l,n]);return e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>r(t),className:"group/row relative flex items-center gap-3 w-full py-2 hover:bg-surface-hover transition-colors text-left rounded",children:[e.jsxDEV(Pe,{className:`w-3.5 h-3.5 text-text-tertiary/50 transition-transform duration-200 ${s?"rotate-90":""}`,strokeWidth:2},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:112,columnNumber:9},this),e.jsxDEV(We,{queue:t,size:"sm"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:116,columnNumber:9},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:118,columnNumber:9},this),e.jsxDEV("span",{className:`flex items-center gap-1 text-xs w-24 ${a.some($)?"text-status-warning":"text-text-tertiary"}`,children:[e.jsxDEV(Me,{className:"w-3 h-3 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:121,columnNumber:11},this),e.jsxDEV("span",{className:"font-mono tabular-nums",children:a.length},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:122,columnNumber:11},this),e.jsxDEV("span",{children:"workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:123,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:120,columnNumber:9},this),e.jsxDEV("span",{className:"flex items-center gap-1 text-xs font-mono text-text-tertiary w-28 justify-end mr-16",children:j>0?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Re,{className:"w-3 h-3 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:129,columnNumber:15},this),j.toLocaleString()," in ",m]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:128,columnNumber:13},this):e.jsxDEV("span",{className:"text-text-tertiary/40",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:133,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:126,columnNumber:9},this),e.jsxDEV("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 opacity-0 group-hover/row:opacity-100 transition-opacity flex items-center gap-2",children:[a.some($)&&e.jsxDEV(U,{className:"w-4 h-4 text-text-tertiary hover:text-status-success",strokeWidth:1.5,onClick:u=>{u.stopPropagation(),i(t)}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:139,columnNumber:13},this),e.jsxDEV(W,{className:"w-4 h-4 text-text-tertiary hover:text-accent",strokeWidth:1.5,onClick:u=>{u.stopPropagation(),p(t)}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:137,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:108,columnNumber:7},this),e.jsxDEV(I,{open:s,children:e.jsxDEV("div",{className:"ml-6",children:e.jsxDEV(le,{columns:v,data:a,keyFn:k,onRowClick:l,emptyMessage:"No workers",inline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:161,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:160,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:159,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QueueCard.tsx",lineNumber:107,columnNumber:5},this)}let pt=0;function ht({event:t}){var r,l,n;const[a,s]=o.useState(!1);return e.jsxDEV("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxDEV("button",{onClick:()=>s(!a),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsxDEV("span",{className:"text-[9px] font-mono text-text-tertiary whitespace-nowrap tabular-nums shrink-0",children:new Date(t.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("span",{className:`text-[9px] font-medium px-1 py-0.5 rounded ${Xe[t.type]||"text-text-tertiary"} bg-surface-sunken whitespace-nowrap shrink-0`,children:t.type},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:30,columnNumber:9},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary font-mono flex-1 min-w-0 break-all",children:[(r=t.data)!=null&&r.guid?String(t.data.guid):"",(l=t.data)!=null&&l.topic?` ${String(t.data.topic)}`:"",t.type==="throttle"?` → ${z((n=t.data)==null?void 0:n.throttle)}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${a?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:42,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:23,columnNumber:7},this),e.jsxDEV(I,{open:a,children:e.jsxDEV("div",{className:"pb-2",children:e.jsxDEV(je,{data:t.data},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:47,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:46,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:45,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:22,columnNumber:5},this)}function bt({channels:t,onToggle:a,customFilter:s,onCustomFilterChange:r}){return e.jsxDEV("div",{className:"space-y-3 pb-3 border-b border-surface-border mb-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Channels"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:67,columnNumber:9},this),e.jsxDEV("p",{className:"text-[9px] text-text-tertiary",children:"Unchecked channels are dropped before buffering"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:70,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:66,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-1",children:ue.map(l=>e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer py-0.5",children:[e.jsxDEV("input",{type:"checkbox",checked:t.has(l.key),onChange:()=>a(l.key),className:"w-3 h-3 rounded border-border accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:77,columnNumber:13},this),e.jsxDEV("span",{className:"text-[10px] text-text-secondary",title:l.description,children:l.label},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:83,columnNumber:13},this)]},l.key,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:76,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:74,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Text Filter"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:90,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s,onChange:l=>r(l.target.value),placeholder:"pong",className:"input text-[10px] font-mono py-1 px-2 w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:93,columnNumber:9},this),e.jsxDEV("p",{className:"text-[9px] text-text-tertiary mt-1",children:["Filter by event type, e.g. ",e.jsxDEV("span",{className:"font-mono",children:"pong"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:101,columnNumber:38},this),", ",e.jsxDEV("span",{className:"font-mono",children:"throttle"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:101,columnNumber:79},this),", or any text in the event data."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:89,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:65,columnNumber:5},this)}function xt({bridgeActive:t}){const[a,s]=o.useState(!1),[r,l]=o.useState(!1),[n,p]=o.useState([]),[i,N]=o.useState(()=>new Set(ue.map(c=>c.key))),[m,j]=o.useState(""),v=o.useRef(i);o.useEffect(()=>{v.current=i},[i]);const u=o.useRef(m);o.useEffect(()=>{u.current=m},[m]);const b=c=>{N(x=>{const g=new Set(x);return g.has(c)?g.delete(c):g.add(c),g})};Ve("lt.events.mesh.>",o.useCallback(c=>{var y;const x=((y=c.type)==null?void 0:y.replace("mesh.",""))||"unknown";if(!v.current.has(x))return;const g=u.current;g&&!`${x} ${JSON.stringify(c.data||c)}`.toLowerCase().includes(g.toLowerCase())||p(F=>[{id:++pt,type:x,timestamp:c.timestamp||new Date().toISOString(),data:c.data||c},...F].slice(0,Ze))},[]));const D=()=>p([]);return e.jsxDEV("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px] sticky top-14 self-start max-h-[calc(100vh-8rem)] flex flex-col",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Event Stream"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV(_e,{className:`w-3 h-3 ${t?"text-status-success animate-pulse":"text-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:172,columnNumber:9},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:t?"Live":"..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:173,columnNumber:9},this),e.jsxDEV("span",{className:"ml-auto flex items-center gap-1",children:[e.jsxDEV("button",{onClick:()=>{s(c=>!c),l(!1)},className:`p-1 rounded transition-colors ${a?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"Configure channels",children:e.jsxDEV($e,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:183,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:178,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{l(c=>!c),s(!1)},className:`p-1 rounded transition-colors ${r?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"View raw JSON",children:e.jsxDEV(Ae,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:190,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:185,columnNumber:11},this),n.length>0&&e.jsxDEV("button",{onClick:D,className:"p-1 rounded text-text-tertiary hover:text-text-primary transition-colors",title:"Clear events",children:e.jsxDEV(Oe,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:198,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:193,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:177,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:168,columnNumber:7},this),e.jsxDEV(I,{open:a,children:e.jsxDEV(bt,{channels:i,onToggle:b,customFilter:m,onCustomFilterChange:j},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:206,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:205,columnNumber:7},this),e.jsxDEV(I,{open:r,children:e.jsxDEV("div",{className:"pb-3 border-b border-surface-border mb-3",children:e.jsxDEV("pre",{className:"text-[9px] font-mono text-text-tertiary bg-surface-sunken rounded-lg p-3 max-h-[50vh] overflow-auto whitespace-pre-wrap",children:JSON.stringify(n.slice(0,50),null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:217,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:216,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:215,columnNumber:7},this),n.length>0&&e.jsxDEV("p",{className:"text-[9px] text-text-tertiary mb-2",children:[n.length," events"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:225,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto",children:n.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary py-6 text-center",children:t?"Waiting for events...":"Subscribing..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:233,columnNumber:11},this):n.map(c=>e.jsxDEV(ht,{event:c},c.id,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:238,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:231,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/QuorumFeed.tsx",lineNumber:166,columnNumber:5},this)}function Nt({collapsed:t,toggleSection:a,activeDuration:s,streamStats:r,isLoading:l,queueMap:n,expandedQueues:p,toggleQueue:i,allQueuesExpanded:N,toggleAllQueues:m,handleRowClick:j,handleResumeThrottle:v,handleQueueThrottle:u,handleResumeQueue:b,engineColumns:D,engines:c,bridgeActive:x}){return e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_340px] gap-6",children:[e.jsxDEV("div",{className:"flex flex-col gap-12 mt-10",children:[e.jsxDEV(q,{title:`Stream Volume (${s})`,sectionKey:"volume",isCollapsed:!!t.volume,onToggle:a,contentClassName:"mt-4 ml-7",children:e.jsxDEV(ut,{byStream:(r==null?void 0:r.byStream)??[],onNodeFilter:()=>{},onQueueFilter:()=>{}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:60,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV(q,{title:"Worker Queues",sectionKey:"queues",isCollapsed:!!t.queues,onToggle:a,contentClassName:"mt-4 ml-7 flex flex-col gap-0",children:l?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Discovering mesh nodes..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:76,columnNumber:13},this):n.size===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:'No worker queues found. Click "Roll Call" to discover.'},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:78,columnNumber:13},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex justify-end mb-2",children:e.jsxDEV("button",{onClick:m,className:"text-[10px] text-accent hover:underline",children:N?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:82,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:81,columnNumber:15},this),[...n.entries()].sort(([g],[y])=>g.localeCompare(y)).map(([g,y])=>e.jsxDEV(dt,{queue:g,workers:y,expanded:p.has(g),onToggle:i,onWorkerClick:j,onResumeThrottle:v,onQueueThrottle:u,onResumeQueue:b,byStream:(r==null?void 0:r.byStream)??[],activeDuration:s},g,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:89,columnNumber:19},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:80,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:68,columnNumber:9},this),e.jsxDEV(q,{title:"Engines",sectionKey:"engines",isCollapsed:!!t.engines,onToggle:a,contentClassName:"mt-4 ml-7",children:e.jsxDEV(le,{columns:D,data:c,keyFn:k,onRowClick:j,isLoading:l,emptyMessage:l?"Discovering engines...":"No engines found.",inline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:115,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:51,columnNumber:7},this),e.jsxDEV(xt,{bridgeActive:x},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:127,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlaneContent.tsx",lineNumber:50,columnNumber:5},this)}function Tt(){var se;const{data:t}=oe(),a=(t==null?void 0:t.apps)??[],{filters:s,setFilter:r}=Se({filters:{app_id:"",duration:"1h"}}),l=((se=a[0])==null?void 0:se.appId)??"durable",n=s.app_id||l,p=s.duration||"1h",i=He(),N=6e4,{data:m,isLoading:j,error:v,refetch:u,isFetching:b}=Ge(n,N),{data:D}=ze(n,p,void 0,N),c=o.useMemo(()=>[...(m==null?void 0:m.profiles)??[]].sort((f,E)=>{const R=f.worker_topic||f.stream||"",O=E.worker_topic||E.stream||"";return!f.worker_topic&&E.worker_topic?-1:f.worker_topic&&!E.worker_topic?1:R.localeCompare(O)}),[m==null?void 0:m.profiles]),x=o.useMemo(()=>c.filter(d=>!_(d)),[c]),g=o.useMemo(()=>c.filter(_),[c]),y=o.useMemo(()=>et(c),[c]),F=c.filter($).length,h=o.useMemo(()=>{const d=new Set(a.map(f=>f.appId));return n&&d.add(n),[...d].sort().map(f=>({value:f,label:f}))},[a,n]),[w,V]=o.useState(new Set),Q=o.useCallback(d=>{V(f=>{const E=new Set(f);return E.has(d)?E.delete(d):E.add(d),E})},[]),T=y.size>0&&[...y.keys()].every(d=>w.has(d)),C=o.useCallback(()=>{V(T?new Set:new Set(y.keys()))},[T,y]),S="lt:controlplane:collapsed",[J,P]=o.useState(()=>{try{return JSON.parse(localStorage.getItem(S)||"{}")}catch{return{}}}),de=o.useCallback(d=>{P(f=>{const E={...f,[d]:!f[d]};return localStorage.setItem(S,JSON.stringify(E)),E})},[]),{selectedIds:M,setSelectedIds:H,toggleCheckbox:Y,throttleModalOpen:pe,throttleTargets:X,selectedThrottleTargets:he,throttleMutation:be,handleBulkThrottle:xe,handleRowClick:L,handleBulkThrottleOpen:Z,handleResumeThrottle:K,handleResumeQueue:Ne,handleQueueThrottle:fe,closeThrottleModal:ge}=lt({activeAppId:n,allProfiles:c,profiles:c}),ee=o.useCallback(()=>{const d=new Set(x.map(k)),f=x.length>0&&x.every(E=>M.has(k(E)));H(E=>{const R=new Set(E);for(const O of d)f?R.delete(O):R.add(O);return R})},[x,M,H]),te=o.useCallback(()=>{x.filter(f=>M.has(k(f))).length!==0&&Z()},[x,M,Z]),ve=o.useMemo(()=>nt({profiles:x,selectedIds:M,toggleAll:ee,toggleCheckbox:Y,onRowThrottle:L,onResumeThrottle:K,onBulkThrottle:te}),[x,M,ee,Y,L,K,te]),Ce=o.useMemo(()=>{const d=[{label:"Engines",value:x.length,dotClass:"bg-blue-500"},{label:"Workers",value:g.length,dotClass:"bg-text-secondary"},{label:"Queues",value:y.size}];return F>0&&d.push({label:"Throttled",value:F,dotClass:"bg-status-warning"}),d},[x.length,g.length,y.size,F]),[ae,Ee]=o.useState(!1),ye=o.useCallback(()=>{i.mutate({appId:n},{onSuccess:()=>Ee(!0)})},[n,i]);return o.useEffect(()=>{!ae&&n&&ye()},[n]),e.jsxDEV("div",{children:[e.jsxDEV(ke,{title:"Task Queues",stats:Ce,actions:e.jsxDEV(ct,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:186,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:183,columnNumber:7},this),e.jsxDEV(we,{actions:e.jsxDEV("div",{className:"flex items-center gap-1",children:Ye.map(d=>e.jsxDEV("button",{onClick:()=>r("duration",d.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${p===d.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:d.label},d.value,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:193,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:191,columnNumber:11},this),children:[e.jsxDEV(Qe,{label:"Application",value:s.app_id,onChange:d=>r("app_id",d),options:h},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:208,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>u(),disabled:b,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:[e.jsxDEV(Ie,{className:`w-3.5 h-3.5 ${b?"animate-spin":""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:219,columnNumber:11},this),"Roll Call"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:214,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:189,columnNumber:7},this),v&&e.jsxDEV("div",{className:"mb-6 px-4 py-3 rounded bg-status-error/10 border border-status-error/20",children:e.jsxDEV("p",{className:"text-xs text-status-error font-medium",children:v.message==="Session expired"?"Session expired — please log in again.":`Failed to load mesh data: ${v.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:227,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:226,columnNumber:9},this),e.jsxDEV(Nt,{collapsed:J,toggleSection:de,activeDuration:p,streamStats:D,isLoading:j,queueMap:y,expandedQueues:w,toggleQueue:Q,allQueuesExpanded:T,toggleAllQueues:C,handleRowClick:L,handleResumeThrottle:K,handleQueueThrottle:fe,handleResumeQueue:Ne,engineColumns:ve,engines:x,bridgeActive:ae},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:235,columnNumber:7},this),e.jsxDEV(mt,{open:pe,onClose:ge,targets:X.length>0?X:he,onApply:xe,isPending:be.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:255,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/controlplane/ControlPlanePage.tsx",lineNumber:182,columnNumber:5},this)}export{Tt as ControlPlanePage};
|
|
2
|
-
//# sourceMappingURL=index-D51PaQZY.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as x,j as e}from"./index-sNrqYt0Q.js";import{c as D,u as C,b as T,a as c}from"./vendor-query-DLp59M9_.js";import{P as M}from"./PageHeader-FJIemmrC.js";import{M as R}from"./Modal-Dir9Rlnx.js";import{R as J,C as y}from"./constants-BHkpVaqx.js";import{af as N,l as O,$ as A}from"./vendor-icons-CWl44VA6.js";import"./vendor-react-Co3Y8ikm.js";function F(){return C({queryKey:["maintenance"],queryFn:()=>x("/config/maintenance")})}function I(){const a=T();return D({mutationFn:s=>x("/config/maintenance",{method:"PUT",body:JSON.stringify(s)}),onSuccess:()=>{a.invalidateQueries({queryKey:["maintenance"]})}})}function _(){return D({mutationFn:a=>x("/dba/prune",{method:"POST",body:JSON.stringify(a)})})}function h({checked:a,onToggle:s,label:t,hint:n,value:l,onChange:m}){return e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("label",{className:"flex items-center gap-2.5 cursor-pointer w-64 shrink-0",children:[e.jsxDEV("input",{type:"checkbox",checked:a,onChange:r=>s(r.target.checked),className:"w-4 h-4 rounded border-border accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:17,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:24,columnNumber:11},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:25,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:16,columnNumber:7},this),e.jsxDEV("select",{value:l,onChange:r=>m(r.target.value),disabled:!a,className:`select text-xs w-36 transition-opacity ${a?"":"opacity-40 cursor-not-allowed"}`,children:J.map(r=>e.jsxDEV("option",{value:r.value,children:r.label},r.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:35,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:28,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:15,columnNumber:5},this)}function v({checked:a,onChange:s,label:t,description:n}){return e.jsxDEV("label",{className:"flex items-start gap-2.5 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:a,onChange:l=>s(l.target.checked),className:"w-4 h-4 mt-0.5 rounded border-border accent-accent shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:52,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("span",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:59,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:60,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:58,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:51,columnNumber:5},this)}function q(){return e.jsxDEV("div",{className:"flex items-start gap-2 mt-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsxDEV(N,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:71,columnNumber:7},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary leading-relaxed",children:"Stripping preserves workflow results and timeline data needed for the execution detail view. Transient jobs are internal bookkeeping that accumulates over time."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:72,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:70,columnNumber:5},this)}const g={pruneJobs:!0,expire:"30 days",engineStreams:!0,engineStreamsExpire:"1 day",workerStreams:!0,workerStreamsExpire:"90 days",stripAttributes:!1,pruneTransient:!1};function S(a){return a.pruneJobs||a.engineStreams||a.workerStreams||a.stripAttributes||a.pruneTransient}function V({fields:a,onChange:s}){const t=(n,l)=>s({...a,[n]:l});return e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_auto] gap-10",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Delete Expired Data"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:121,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV(h,{checked:a.pruneJobs,onToggle:n=>t("pruneJobs",n),label:"Jobs",hint:"Hard-delete completed job rows",value:a.expire,onChange:n=>t("expire",n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(h,{checked:a.engineStreams,onToggle:n=>t("engineStreams",n),label:"Engine streams",hint:"Internal routing (prune aggressively)",value:a.engineStreamsExpire,onChange:n=>t("engineStreamsExpire",n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:130,columnNumber:11},this),e.jsxDEV(h,{checked:a.workerStreams,onToggle:n=>t("workerStreams",n),label:"Worker streams",hint:"Activity payloads for execution playback",value:a.workerStreamsExpire,onChange:n=>t("workerStreamsExpire",n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:135,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:124,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:120,columnNumber:7},this),e.jsxDEV("div",{className:"lg:w-72",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Cleanup"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:145,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV(v,{checked:a.stripAttributes,onChange:n=>t("stripAttributes",n),label:"Strip execution artifacts",description:"Remove step-level detail from completed jobs. Return data and export history are preserved."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:149,columnNumber:11},this),e.jsxDEV(v,{checked:a.pruneTransient,onChange:n=>t("pruneTransient",n),label:"Delete transient jobs",description:"Orphaned jobs without an entity type. Usually safe to remove."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:154,columnNumber:11},this),e.jsxDEV(q,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:159,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:148,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:144,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/controls.tsx",lineNumber:118,columnNumber:5},this)}function u({label:a,value:s}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-lg font-light text-text-primary",children:s.toLocaleString()},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:9,columnNumber:7},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:10,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:8,columnNumber:5},this)}function $(){const a=_(),[s,t]=c.useState(g),[n,l]=c.useState(null),[m,r]=c.useState(!1),i=()=>{l(null),a.mutate({expire:s.expire,jobs:s.pruneJobs,engineStreams:s.engineStreams,engineStreamsExpire:s.engineStreamsExpire,workerStreams:s.workerStreams,workerStreamsExpire:s.workerStreamsExpire,attributes:s.stripAttributes,pruneTransient:s.pruneTransient},{onSuccess:d=>{l(d),r(!1)}})};return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV(V,{fields:s,onChange:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:45,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] text-text-tertiary",children:S(s)?"This action permanently deletes data and cannot be undone.":"Select at least one operation to enable pruning."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>r(!0),disabled:!S(s)||a.isPending,className:"bg-status-error text-white px-4 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity disabled:opacity-40 shrink-0",children:a.isPending?"Pruning...":"Prune Now"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:48,columnNumber:7},this),n&&e.jsxDEV("div",{className:"bg-surface-sunken rounded-md px-4 py-3",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Results"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:66,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-6",children:[n.jobs!=null&&n.jobs>0&&e.jsxDEV(u,{label:"Jobs deleted",value:n.jobs},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:70,columnNumber:56},this),n.engineStreams!=null&&n.engineStreams>0&&e.jsxDEV(u,{label:"Engine streams",value:n.engineStreams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:71,columnNumber:74},this),n.workerStreams!=null&&n.workerStreams>0&&e.jsxDEV(u,{label:"Worker streams",value:n.workerStreams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:72,columnNumber:74},this),n.streams!=null&&n.engineStreams==null&&n.streams>0&&e.jsxDEV(u,{label:"Streams",value:n.streams},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:73,columnNumber:94},this),n.attributes!=null&&n.attributes>0&&e.jsxDEV(u,{label:"Artifacts stripped",value:n.attributes},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:74,columnNumber:68},this),n.transient!=null&&n.transient>0&&e.jsxDEV(u,{label:"Transient deleted",value:n.transient},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:75,columnNumber:66},this),n.marked!=null&&n.marked>0&&e.jsxDEV(u,{label:"Marked pruned",value:n.marked},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:76,columnNumber:60},this),Object.values(n).every(d=>!d||d===0)&&e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Nothing to prune within the selected retention windows."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:78,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:65,columnNumber:9},this),a.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:a.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:85,columnNumber:9},this),e.jsxDEV(R,{open:m,onClose:()=>r(!1),title:"Confirm Prune",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"This will permanently delete data. This action cannot be undone."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:91,columnNumber:11},this),e.jsxDEV("ul",{className:"text-xs text-text-secondary space-y-1 list-disc list-inside",children:[s.pruneJobs&&e.jsxDEV("li",{children:["Delete jobs older than ",s.expire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:95,columnNumber:34},this),s.engineStreams&&e.jsxDEV("li",{children:["Delete engine streams older than ",s.engineStreamsExpire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:96,columnNumber:38},this),s.workerStreams&&e.jsxDEV("li",{children:["Delete worker streams older than ",s.workerStreamsExpire]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:97,columnNumber:38},this),s.stripAttributes&&e.jsxDEV("li",{children:"Strip execution artifacts from completed jobs"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:98,columnNumber:40},this),s.pruneTransient&&e.jsxDEV("li",{children:"Delete transient (entity-less) jobs"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:99,columnNumber:39},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:94,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:()=>r(!1),className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:102,columnNumber:13},this),e.jsxDEV("button",{onClick:i,className:"bg-status-error text-white px-3 py-1.5 rounded-md text-xs hover:opacity-90 transition-opacity",disabled:a.isPending,children:a.isPending?"Pruning...":"Confirm Prune"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:103,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:90,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:89,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/PruneSection.tsx",lineNumber:44,columnNumber:5},this)}function E(a){var r;if(!((r=a==null?void 0:a.rules)!=null&&r.length))return g;const s=a.rules,t=s.find(i=>i.target==="streams"&&i.action==="delete"),n=s.find(i=>i.target==="jobs"&&i.action==="delete"&&i.hasEntity===!1),l=s.find(i=>i.target==="jobs"&&i.action==="prune"&&i.hasEntity===!0),m=s.find(i=>i.target==="jobs"&&i.action==="delete"&&i.pruned===!0);return{pruneJobs:!!m,expire:(m==null?void 0:m.olderThan)??"180 days",engineStreams:!!t,engineStreamsExpire:(t==null?void 0:t.olderThan)??"1 day",workerStreams:!!t,workerStreamsExpire:(t==null?void 0:t.olderThan)??"90 days",stripAttributes:!!l,pruneTransient:!!n}}function U(a){const s=[];return a.engineStreams&&s.push({target:"streams",action:"delete",olderThan:a.engineStreamsExpire}),a.workerStreams&&a.workerStreamsExpire!==a.engineStreamsExpire&&s.push({target:"streams",action:"delete",olderThan:a.workerStreamsExpire}),a.pruneTransient&&s.push({target:"jobs",action:"delete",olderThan:a.expire,hasEntity:!1}),a.stripAttributes&&s.push({target:"jobs",action:"prune",olderThan:a.expire,hasEntity:!0}),a.pruneJobs&&s.push({target:"jobs",action:"delete",olderThan:a.expire,pruned:!0}),s}function j(a){var s;return((s=y.find(t=>t.value===a))==null?void 0:s.label)??""}function W(){const{data:a,isLoading:s}=F(),t=I(),[n,l]=c.useState(""),[m,r]=c.useState(g),[i,d]=c.useState(""),p=c.useCallback(()=>{a!=null&&a.config&&(l(a.config.schedule),r(E(a.config)),d(JSON.stringify({schedule:a.config.schedule,fields:E(a.config)})))},[a]);c.useEffect(()=>{p()},[p]);const k=JSON.stringify({schedule:n,fields:m}),f=i!==""&&k!==i,b=(a==null?void 0:a.active)??!1,P=()=>{const o=U(m);t.mutate({schedule:n,rules:o},{onSuccess:()=>{d(JSON.stringify({schedule:n,fields:m}))}})},w=()=>{p()};return s?e.jsxDEV("div",{className:"animate-pulse h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:99,columnNumber:12},this):e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_auto] gap-10",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:107,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-end gap-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] text-text-tertiary mb-1",children:"Cron Expression"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:112,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:n,onChange:o=>l(o.target.value),placeholder:"0 2 * * *",className:"input text-xs font-mono w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:113,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("div",{children:e.jsxDEV("div",{className:"flex items-center gap-1.5 h-8",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full ${b?"bg-status-success":"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:123,columnNumber:17},this),e.jsxDEV("span",{className:`text-xs ${b?"text-status-success":"text-text-tertiary"}`,children:b?"Active":"Inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:124,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:122,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:121,columnNumber:13},this),j(n)&&e.jsxDEV("p",{className:"text-xs text-text-tertiary h-8 flex items-center",children:j(n)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:130,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:110,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-3",children:y.map(o=>e.jsxDEV("button",{type:"button",onClick:()=>l(o.value),className:`px-2.5 py-1 text-[10px] rounded-full transition-colors ${n===o.value?"bg-accent/10 text-accent font-medium":"bg-surface-sunken text-text-tertiary hover:text-text-secondary"}`,children:o.label},o.value,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:137,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:135,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"lg:w-72",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"How It Works"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:154,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-start gap-2 px-3 py-2 rounded bg-surface-sunken",children:[e.jsxDEV(N,{className:"w-3.5 h-3.5 text-text-tertiary shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:158,columnNumber:13},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary leading-relaxed",children:"Rules execute sequentially on each cron cycle. Engine streams can be pruned aggressively since they only contain internal routing data. Worker streams should be retained longer to preserve execution playback and input enrichment."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:153,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:105,columnNumber:7},this),e.jsxDEV(V,{fields:m,onChange:r},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:169,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center justify-between pt-2 border-t border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[f&&e.jsxDEV("button",{onClick:w,className:"text-[10px] text-text-tertiary hover:text-text-primary transition-colors",children:"Revert changes"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:175,columnNumber:13},this),t.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:t.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:183,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:173,columnNumber:9},this),e.jsxDEV("button",{onClick:P,disabled:!f||!n.trim()||t.isPending,className:"btn-primary text-xs disabled:opacity-40 shrink-0",children:t.isPending?"Saving...":"Save Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:186,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:172,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/ScheduleSection.tsx",lineNumber:103,columnNumber:5},this)}function L({mode:a,onChange:s}){const t=(n,l,m)=>e.jsxDEV("button",{onClick:()=>s(n),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${a===n?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[l,m]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:11,columnNumber:5},this);return e.jsxDEV("div",{className:"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[t("prune",e.jsxDEV(O,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:26,columnNumber:21},this),"Prune Now"),t("schedule",e.jsxDEV(A,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:27,columnNumber:24},this),"Schedule")]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:25,columnNumber:5},this)}function Y(){const[a,s]=c.useState("schedule");return e.jsxDEV("div",{children:[e.jsxDEV(M,{title:"DB Maintenance",actions:e.jsxDEV(L,{mode:a,onChange:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:39,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:37,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-start gap-2 px-4 py-3 mb-8 rounded-md bg-accent/5 border border-accent/10",children:[e.jsxDEV(N,{className:"w-4 h-4 text-accent shrink-0 mt-0.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:43,columnNumber:9},this),e.jsxDEV("p",{className:"text-xs text-text-secondary leading-relaxed",children:"Completed process data grows indefinitely. Schedule regular pruning to keep the database lean and queries fast. Worker streams are retained longer than engine streams to preserve execution playback."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:44,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:42,columnNumber:7},this),a==="prune"?e.jsxDEV($,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:51,columnNumber:27},this):e.jsxDEV(W,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:51,columnNumber:46},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/maintenance/MaintenancePage.tsx",lineNumber:36,columnNumber:5},this)}export{Y as MaintenancePage};
|
|
2
|
-
//# sourceMappingURL=index-DNtXXy1o.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-sNrqYt0Q.js";import{a as v}from"./vendor-query-DLp59M9_.js";import{f as B,g as H,h as $,i as O}from"./mcp-D2XfRh8v.js";import{S as U}from"./StepIndicator-D9Xvdf18.js";import{P as z}from"./PageHeader-FJIemmrC.js";import{T as J}from"./TagInput-DcPnUnSJ.js";import{X as Y,y as q,ac as K,ad as X}from"./vendor-icons-CWl44VA6.js";import{e as G,c as W,f as Q}from"./vendor-react-Co3Y8ikm.js";const _={name:"",description:"",mode:"network",transport_type:"sse",command:"",args:"",env_vars:"{}",url:"",auto_connect:!1,tags:[],compile_hints:"",credential_providers:[],discovered_tools:null};function Z(s){const a=s.transport_config??{},t=!!a.builtin;let r="network";return t?r="in-process":s.transport_type==="stdio"&&(r="local-process"),{name:s.name,description:s.description??"",mode:r,transport_type:s.transport_type,command:a.command??"",args:(a.args??[]).join(", "),env_vars:a.env?JSON.stringify(a.env,null,2):"{}",url:a.url??"",auto_connect:s.auto_connect,tags:s.tags??[],compile_hints:s.compile_hints??"",credential_providers:s.credential_providers??[],discovered_tools:s.tool_manifest??null}}function R(s){let a={};return s.mode==="local-process"?a={command:s.command.trim(),args:s.args.split(",").map(t=>t.trim()).filter(Boolean),env:s.env_vars.trim()?JSON.parse(s.env_vars):void 0}:s.mode==="network"&&(a={url:s.url.trim()}),{name:s.name.trim(),description:s.description.trim()||void 0,transport_type:s.mode==="local-process"?"stdio":s.transport_type,transport_config:a,auto_connect:s.auto_connect,tags:s.tags,compile_hints:s.compile_hints.trim()||void 0,credential_providers:s.credential_providers.length>0?s.credential_providers:void 0}}const P=["Transport","Discovery","Test","Review"];function C(s,a){return s===1?!(!a.name.trim()||a.mode==="network"&&!a.url.trim()||a.mode==="local-process"&&!a.command.trim()):!0}const p="block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",N="text-[10px] text-text-tertiary mt-2 leading-relaxed",ee=[{value:"in-process",label:"In-Process",hint:"Built-in server running inside the app"},{value:"network",label:"Network Service",hint:"Remote server via SSE or Streamable HTTP"},{value:"local-process",label:"Local Process",hint:"Spawn a local command via stdio"}];function se({form:s,set:a,isBuiltin:t}){return e.jsxDEV("div",{className:"space-y-5",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Connection Mode"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-3 mt-1",children:ee.map(r=>{const n=s.mode===r.value,l=t&&r.value!=="in-process";return e.jsxDEV("button",{type:"button",disabled:l,onClick:()=>{a("mode",r.value),r.value==="local-process"&&a("transport_type","stdio"),r.value==="network"&&a("transport_type","sse")},className:`text-left p-3 rounded-md border transition-colors ${n?"border-accent bg-accent/5":l?"border-surface-border bg-surface-sunken opacity-50 cursor-not-allowed":"border-surface-border hover:border-text-tertiary cursor-pointer"}`,children:[e.jsxDEV("span",{className:`text-xs font-medium ${n?"text-accent":"text-text-primary"}`,children:r.label},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:44,columnNumber:17},this),e.jsxDEV("span",{className:"block text-[10px] text-text-tertiary mt-0.5",children:r.hint},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:47,columnNumber:17},this)]},r.value,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:27,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:22,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:20,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Name"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:57,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:s.name,onChange:r=>a("name",r.target.value),placeholder:"e.g., vision-server",className:"input text-xs w-full",disabled:t},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:58,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:56,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:s.description,onChange:r=>a("description",r.target.value),placeholder:"Optional description",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:55,columnNumber:7},this),s.mode==="in-process"&&e.jsxDEV("div",{children:e.jsxDEV("p",{className:N,children:"This server runs in-process via InMemoryTransport. Transport is managed automatically — no configuration needed."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:81,columnNumber:9},this),s.mode==="network"&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Server URL"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:92,columnNumber:13},this),e.jsxDEV("input",{type:"text",value:s.url,onChange:r=>a("url",r.target.value),placeholder:"https://mcp-server.example.com/sse",className:"input text-xs w-full font-mono"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:93,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:91,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Transport Protocol"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:102,columnNumber:13},this),e.jsxDEV("div",{className:"flex gap-2 mt-1",children:["sse","streamable-http"].map(r=>e.jsxDEV("button",{type:"button",onClick:()=>a("transport_type",r),className:`px-3 py-1.5 text-xs rounded-md border transition-colors ${s.transport_type===r?"border-accent bg-accent/5 text-accent font-medium":"border-surface-border text-text-secondary hover:border-text-tertiary"}`,children:r==="sse"?"SSE":"Streamable HTTP"},r,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:105,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:103,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:90,columnNumber:9},this),s.mode==="local-process"&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Command"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:127,columnNumber:13},this),e.jsxDEV("input",{type:"text",value:s.command,onChange:r=>a("command",r.target.value),placeholder:"e.g., npx",className:"input text-xs w-full font-mono"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:128,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:126,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Arguments (comma-separated)"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:137,columnNumber:13},this),e.jsxDEV("input",{type:"text",value:s.args,onChange:r=>a("args",r.target.value),placeholder:"e.g., -y, @modelcontextprotocol/server-filesystem, /tmp",className:"input text-xs w-full font-mono"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:138,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:136,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Environment Variables (JSON)"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:147,columnNumber:13},this),e.jsxDEV("textarea",{value:s.env_vars,onChange:r=>a("env_vars",r.target.value),className:"input font-mono text-[11px] w-full leading-relaxed",rows:3,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:148,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:125,columnNumber:9},this),e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:s.auto_connect,onChange:r=>a("auto_connect",r.target.checked),className:"w-4 h-4 rounded border-border accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:161,columnNumber:9},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:"Auto-connect on startup"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:167,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:160,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TransportStep.tsx",lineNumber:18,columnNumber:5},this)}function ae({form:s,set:a}){const[t,r]=v.useState(""),n=i=>{const c=i.trim().toLowerCase();c&&!s.credential_providers.includes(c)&&a("credential_providers",[...s.credential_providers,c]),r("")},l=i=>{a("credential_providers",s.credential_providers.filter(c=>c!==i))},d=i=>{i.key==="Enter"||i.key===","?(i.preventDefault(),n(t)):i.key==="Backspace"&&!t&&s.credential_providers.length>0&&l(s.credential_providers[s.credential_providers.length-1])};return e.jsxDEV("div",{className:"space-y-5",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Tags"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:40,columnNumber:9},this),e.jsxDEV(J,{tags:s.tags,onChange:i=>a("tags",i),placeholder:"Add tag (e.g., database, analytics)..."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("p",{className:N,children:"Tags enable tool discovery. Workflows filter available MCP servers by tags to find relevant tools."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:46,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:39,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Compile Hints"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV("textarea",{value:s.compile_hints,onChange:i=>a("compile_hints",i.target.value),placeholder:"Guidance for the workflow compiler when generating YAML from this server's tools...",className:"input text-xs w-full leading-relaxed",rows:4,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:54,columnNumber:9},this),e.jsxDEV("p",{className:N,children:"Free-form text that guides the workflow compiler. Describe how tools should be composed, sequenced, or parameterized."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:62,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:52,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Credential Providers"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap items-center gap-1.5 bg-surface-sunken border border-surface-border rounded-md px-2 py-1.5 focus-within:ring-1 focus-within:ring-accent-primary",children:[s.credential_providers.map(i=>e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium",children:[i,e.jsxDEV("button",{type:"button",onClick:()=>l(i),className:"hover:text-status-error transition-colors",children:e.jsxDEV(Y,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:82,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:77,columnNumber:15},this)]},i,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:72,columnNumber:13},this)),e.jsxDEV("input",{type:"text",value:t,onChange:i=>r(i.target.value),onKeyDown:d,onBlur:()=>{t.trim()&&n(t)},placeholder:s.credential_providers.length===0?"Add provider (e.g., github, slack)...":"",className:"flex-1 min-w-[80px] bg-transparent text-xs text-text-primary outline-none placeholder:text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:86,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:70,columnNumber:9},this),e.jsxDEV("p",{className:N,children:"IAM credential providers required by this server's tools. Users will be prompted to connect these before tool execution."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:96,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:68,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/DiscoveryStep.tsx",lineNumber:37,columnNumber:5},this)}function re({form:s,set:a}){const t=B(),r=s.mode==="in-process",n=()=>{const i=R(s);t.mutate({transport_type:i.transport_type,transport_config:i.transport_config},{onSuccess:c=>{c.success&&a("discovered_tools",c.tools)}})},l=t.data,d=s.discovered_tools??(l==null?void 0:l.tools)??[];return e.jsxDEV("div",{className:"space-y-5",children:r?e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"In-process servers connect lazily on first tool call. No connection test needed."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:37,columnNumber:11},this),s.discovered_tools&&s.discovered_tools.length>0&&e.jsxDEV("div",{className:"mt-4",children:[e.jsxDEV("p",{className:"text-xs text-text-tertiary mb-2",children:[s.discovered_tools.length," tool",s.discovered_tools.length!==1?"s":""," cached from last connection"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:42,columnNumber:15},this),e.jsxDEV(k,{tools:s.discovered_tools},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:45,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:41,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:36,columnNumber:9},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("button",{type:"button",onClick:n,disabled:t.isPending,className:"btn-primary text-xs",children:t.isPending?e.jsxDEV("span",{className:"flex items-center gap-1.5",children:[e.jsxDEV(q,{className:"w-3 h-3 animate-spin"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:60,columnNumber:19},this),"Connecting..."]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:59,columnNumber:17},this):"Test Connection"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:52,columnNumber:13},this),(l==null?void 0:l.success)&&e.jsxDEV("span",{className:"flex items-center gap-1 text-xs text-status-success",children:[e.jsxDEV(K,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:69,columnNumber:17},this),"Connected — ",d.length," tool",d.length!==1?"s":""," discovered"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:68,columnNumber:15},this),l&&!l.success&&e.jsxDEV("span",{className:"flex items-center gap-1 text-xs text-status-error",children:[e.jsxDEV(X,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:75,columnNumber:17},this),l.error||"Connection failed"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:74,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:51,columnNumber:11},this),d.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-xs text-text-tertiary mb-2",children:"Discovered tools"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:83,columnNumber:15},this),e.jsxDEV(k,{tools:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:84,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:82,columnNumber:13},this),e.jsxDEV("p",{className:N,children:"Tests connectivity by connecting to the server and listing available tools. The server must be reachable from this machine."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:50,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:34,columnNumber:5},this)}function k({tools:s}){return e.jsxDEV("div",{className:"max-h-[280px] overflow-y-auto border border-surface-border rounded-md divide-y divide-surface-border",children:s.map(a=>e.jsxDEV("div",{className:"px-3 py-2",children:[e.jsxDEV("span",{className:"text-xs font-medium text-text-primary font-mono",children:a.name},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:102,columnNumber:11},this),a.description&&e.jsxDEV("span",{className:"block text-[10px] text-text-tertiary mt-0.5 line-clamp-2",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:104,columnNumber:13},this)]},a.name,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:101,columnNumber:9},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/TestStep.tsx",lineNumber:99,columnNumber:5},this)}const te={"in-process":"In-Process",network:"Network Service","local-process":"Local Process"},ie={stdio:"stdio",sse:"SSE","streamable-http":"Streamable HTTP"};function le({form:s}){const a=s.discovered_tools??[];return e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV(m,{label:"Name",value:s.name},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:25,columnNumber:7},this),s.description&&e.jsxDEV(m,{label:"Description",value:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:26,columnNumber:28},this),e.jsxDEV(m,{label:"Mode",value:te[s.mode]??s.mode},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:27,columnNumber:7},this),s.mode==="network"&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(m,{label:"Transport",value:ie[s.transport_type]??s.transport_type},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:31,columnNumber:11},this),e.jsxDEV(m,{label:"URL",value:s.url,mono:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:32,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:30,columnNumber:9},this),s.mode==="local-process"&&e.jsxDEV(e.Fragment,{children:[e.jsxDEV(m,{label:"Command",value:s.command,mono:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:37,columnNumber:11},this),s.args&&e.jsxDEV(m,{label:"Args",value:s.args,mono:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:38,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:36,columnNumber:9},this),e.jsxDEV(m,{label:"Auto-connect",value:s.auto_connect?"Yes":"No"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:42,columnNumber:7},this),s.tags.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Tags"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:46,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-1",children:s.tags.map(t=>e.jsxDEV("span",{className:"px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium",children:t},t,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:49,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:47,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:45,columnNumber:9},this),s.credential_providers.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:"Credential Providers"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:59,columnNumber:11},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-1",children:s.credential_providers.map(t=>e.jsxDEV("span",{className:"px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium",children:t},t,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:62,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:58,columnNumber:9},this),s.compile_hints&&e.jsxDEV(m,{label:"Compile Hints",value:s.compile_hints},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:70,columnNumber:30},this),a.length>0&&e.jsxDEV(m,{label:"Discovered Tools",value:`${a.length} tool${a.length!==1?"s":""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:24,columnNumber:5},this)}function m({label:s,value:a,mono:t}){return e.jsxDEV("div",{children:[e.jsxDEV("label",{className:p,children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:82,columnNumber:7},this),e.jsxDEV("p",{className:`text-xs text-text-primary mt-0.5 ${t?"font-mono":""}`,children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:83,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/ReviewStep.tsx",lineNumber:81,columnNumber:5},this)}function be(){var y,T,w;const{serverId:s}=G(),a=!s,t=W(),{data:r,isLoading:n}=H(s??""),l=$(),d=O(),[i,c]=v.useState(_),[f,S]=v.useState(!1),[M,D]=v.useState(""),[L,E]=Q(),o=parseInt(L.get("step")||"1",10),x=v.useCallback(u=>{E(b=>{const h=new URLSearchParams(b);return h.set("step",String(u)),h},{replace:!1})},[E]);v.useEffect(()=>{if(!f){if(a){c(_),S(!0);return}r&&(c(Z(r)),S(!0))}},[r,a,f]);const g=(u,b)=>c(h=>({...h,[u]:b})),I=!!((y=r==null?void 0:r.transport_config)!=null&&y.builtin),A=()=>{D("");const u=R(i);r?d.mutate({id:r.id,...u},{onSuccess:()=>t("/mcp/servers")}):l.mutate(u,{onSuccess:()=>t("/mcp/servers"),onError:b=>D(b.message)})};if(!a&&n)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:82,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:83,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:81,columnNumber:7},this);if(!a&&!r&&!n)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Server not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:89,columnNumber:12},this);const F=o===P.length,j=l.isPending||d.isPending,V=M||((T=l.error)==null?void 0:T.message)||((w=d.error)==null?void 0:w.message);return e.jsxDEV("div",{children:[e.jsxDEV(z,{title:a?"Register MCP Server":(r==null?void 0:r.name)??""},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:98,columnNumber:7},this),e.jsxDEV("div",{className:"max-w-3xl",children:[e.jsxDEV(U,{steps:P,currentStep:o-1,onStepClick:u=>x(u+1)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:101,columnNumber:9},this),e.jsxDEV("div",{className:"min-h-[360px] py-2",children:[o===1&&e.jsxDEV(se,{form:i,set:g,isBuiltin:I},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:104,columnNumber:26},this),o===2&&e.jsxDEV(ae,{form:i,set:g},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:105,columnNumber:26},this),o===3&&e.jsxDEV(re,{form:i,set:g},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:106,columnNumber:26},this),o===4&&e.jsxDEV(le,{form:i},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:107,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:103,columnNumber:9},this),V&&e.jsxDEV("p",{className:"text-xs text-status-error mt-4",children:V},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:111,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-between items-center pt-4 border-t border-surface-border mt-4",children:[e.jsxDEV("div",{children:o>1&&e.jsxDEV("button",{onClick:()=>x(o-1),className:"btn-secondary text-xs",children:"Back"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:118,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:116,columnNumber:11},this),e.jsxDEV("div",{className:"flex gap-3",children:[e.jsxDEV("button",{onClick:()=>t("/mcp/servers"),className:"btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:124,columnNumber:13},this),F?e.jsxDEV("button",{onClick:A,disabled:!C(o,i)||j,className:"btn-primary text-xs",children:j?"Saving...":r?"Save":"Register"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:128,columnNumber:15},this):e.jsxDEV("button",{onClick:()=>x(o+1),disabled:!C(o,i),className:"btn-primary text-xs",children:"Next"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:136,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:123,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:115,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:100,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/servers/detail/McpServerDetailPage.tsx",lineNumber:97,columnNumber:5},this)}export{be as McpServerDetailPage};
|
|
2
|
-
//# sourceMappingURL=index-DR4qQvlW.js.map
|