@hotmeshio/long-tail 0.1.15 → 0.1.17
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/settings.js +0 -3
- package/build/api/workflows/config.js +5 -0
- package/build/api/yaml-workflows/crud.js +25 -5
- package/build/index.d.ts +1 -2
- package/build/index.js +1 -4
- package/build/lib/db/schemas/002_seed.sql +3 -81
- package/build/lib/events/socketio.d.ts +12 -0
- package/build/lib/events/socketio.js +24 -1
- 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/routes/index.js +2 -0
- package/build/routes/nats-credentials.d.ts +2 -0
- package/build/routes/nats-credentials.js +22 -0
- 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/services/yaml-workflow/workers/register.js +4 -2
- package/build/start/adapters.js +4 -1
- package/build/start/socket-auth.d.ts +13 -0
- package/build/start/socket-auth.js +32 -0
- 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-NLryl1_B.js.map → AdminDashboard-CsTOErp1.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-BqQA3IJp.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-6vexlrk3.js.map → AvailableEscalationsPage-BqQA3IJp.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-C2xR1xay.js +2 -0
- package/dashboard/dist/assets/{BotPicker-DWhn0tr1.js.map → BotPicker-C2xR1xay.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-CRtHQsAv.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-CgYgQiOc.js.map → CollapsibleSection-CRtHQsAv.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-DCKAPXD3.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +2 -0
- package/dashboard/dist/assets/{CopyableId-DXkaAOYk.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-D2G1ldiF.js.map → CustomDurationPicker-BABUv1V2.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-D3-wSEf0.js +2 -0
- package/dashboard/dist/assets/{DataTable-DXSUbA26.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-CQGqkXP_.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-BMJAPkMi.js.map → EventTable-Dh3_9DAY.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/{FilterBar-DbVbCzH2.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-CyEkulVR.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-0XNuXj0M.js.map → ListToolbar-CyEkulVR.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-ChLa6Gl7.js +2 -0
- package/dashboard/dist/assets/{McpOverview-CeYnCzBN.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-CZtodW_Z.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-yyhUeKoA.js.map → Modal-DEODGeqx.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-CJm_BTPU.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-Ceh7OQtZ.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-BrPikMFy.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-vfnCDyQK.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-2miaYd8G.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-DxbJMfJu.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-DurFwIwe.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CD7_Dmb0.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-CNKraP6u.js.map → RunAsSelector-CD7_Dmb0.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/{StatCard-CKplpK3w.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-Dicx0WTZ.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-B2jYvU3-.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-CypDZ6Kl.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-D7CdkAeg.js.map → TasksListPage-g6XIbhju.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-BihIwEbB.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-B5LXB2aj.js.map → TimeAgo-BihIwEbB.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-GOFcvE-i.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-Crb9b0Gw.js.map → TimestampCell-GOFcvE-i.js.map} +1 -1
- package/dashboard/dist/assets/UserName-CmMVt4vS.js +2 -0
- package/dashboard/dist/assets/{UserName-OPg-nkRa.js.map → UserName-CmMVt4vS.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-soRFz_30.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-CcLVrs9b.js.map → WorkflowExecutionPage-soRFz_30.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-DUDDyBsj.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-CCV4MMj7.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-DvShiYJV.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-Dqos20NE.js → bots-BZPXDh_y.js} +2 -2
- package/dashboard/dist/assets/{bots-Dqos20NE.js.map → bots-BZPXDh_y.js.map} +1 -1
- package/dashboard/dist/assets/escalation-DBUIq1Z4.js +2 -0
- package/dashboard/dist/assets/{escalation-A0CsbvNV.js.map → escalation-DBUIq1Z4.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-DL4zsR8Y.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-BpBJN6k4.js.map → escalation-columns-DL4zsR8Y.js.map} +1 -1
- package/dashboard/dist/assets/helpers-D50KFFkI.js +2 -0
- package/dashboard/dist/assets/{helpers-CmznCuAx.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-Cr0Rqsj7.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-BYwD3kHN.js.map → index-D9_hZmsW.js.map} +1 -1
- package/dashboard/dist/assets/index-DrouIN-M.js +2 -0
- package/dashboard/dist/assets/{index-VnYkWW8r.js.map → index-DrouIN-M.js.map} +1 -1
- package/dashboard/dist/assets/index-DzICLMI7.js +2 -0
- package/dashboard/dist/assets/{index-XGOmZ117.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-DrWymhSu.js.map → mcp-D0GrHRFe.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-BhUxVEMS.js → mcp-query-DC5woQn5.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-BhUxVEMS.js.map → mcp-query-DC5woQn5.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-DUfz4mLd.js → mcp-runs-CsoVQoPB.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DUfz4mLd.js.map → mcp-runs-CsoVQoPB.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-unpIb4gX.js +2 -0
- package/dashboard/dist/assets/{namespaces-Cm6AY5sh.js.map → namespaces-unpIb4gX.js.map} +1 -1
- package/dashboard/dist/assets/{roles-2v1Kc7BJ.js → roles--kBaFljg.js} +2 -2
- package/dashboard/dist/assets/{roles-2v1Kc7BJ.js.map → roles--kBaFljg.js.map} +1 -1
- package/dashboard/dist/assets/settings-B96YkawY.js +2 -0
- package/dashboard/dist/assets/{settings-DTQNp6tH.js.map → settings-B96YkawY.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CS1rgG1s.js → tasks-D_1NCfOZ.js} +2 -2
- package/dashboard/dist/assets/{tasks-CS1rgG1s.js.map → tasks-D_1NCfOZ.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-BjXX8x3a.js → useEventHooks-BPjEkCpD.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-BjXX8x3a.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-BeR-nVWQ.js → useYamlActivityEvents-D3RQjfzo.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BeR-nVWQ.js.map → useYamlActivityEvents-D3RQjfzo.js.map} +1 -1
- package/dashboard/dist/assets/{users-DYsdQ7Md.js → users-e2oatvoj.js} +2 -2
- package/dashboard/dist/assets/{users-DYsdQ7Md.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-2QAXh3UD.js → workflows-D6diL54s.js} +2 -2
- package/dashboard/dist/assets/{workflows-2QAXh3UD.js.map → workflows-D6diL54s.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-sx8-UEE3.js → yaml-workflows-CAKU7LUu.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-sx8-UEE3.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/system/seed/server-definitions.d.ts +0 -3210
- package/build/system/seed/server-definitions.js +0 -232
- package/dashboard/dist/assets/AdminDashboard-NLryl1_B.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +0 -2
- package/dashboard/dist/assets/BotPicker-DWhn0tr1.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-CgYgQiOc.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-DCKAPXD3.js +0 -2
- package/dashboard/dist/assets/CopyableId-DXkaAOYk.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-B361BOfU.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-D2G1ldiF.js +0 -2
- package/dashboard/dist/assets/DataTable-DXSUbA26.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-CQGqkXP_.js +0 -2
- package/dashboard/dist/assets/EmptyState-Dep92Wkg.js +0 -2
- package/dashboard/dist/assets/EmptyState-Dep92Wkg.js.map +0 -1
- package/dashboard/dist/assets/EscalationsOverview-DVEFVjs7.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-DVEFVjs7.js.map +0 -1
- package/dashboard/dist/assets/EventTable-BMJAPkMi.js +0 -2
- package/dashboard/dist/assets/FilterBar-DbVbCzH2.js +0 -2
- package/dashboard/dist/assets/ListToolbar-0XNuXj0M.js +0 -2
- package/dashboard/dist/assets/McpOverview-CeYnCzBN.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +0 -1
- package/dashboard/dist/assets/Modal-yyhUeKoA.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +0 -2
- package/dashboard/dist/assets/PageHeader-CZ9a8cpr.js +0 -2
- package/dashboard/dist/assets/PageHeader-CZ9a8cpr.js.map +0 -1
- package/dashboard/dist/assets/PageHeaderWithStats-BJuNs5NM.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-BJuNs5NM.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-BrPikMFy.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-2miaYd8G.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-DqpRDqjk.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-DqpRDqjk.js.map +0 -1
- package/dashboard/dist/assets/RolePill-DxbJMfJu.js +0 -2
- package/dashboard/dist/assets/RolesPage-CYHRo21-.js +0 -2
- package/dashboard/dist/assets/RolesPage-CYHRo21-.js.map +0 -1
- package/dashboard/dist/assets/RowActions-DurFwIwe.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +0 -2
- package/dashboard/dist/assets/StatCard-CKplpK3w.js +0 -2
- package/dashboard/dist/assets/StatusBadge-Dm0V1dNN.js +0 -2
- package/dashboard/dist/assets/StatusBadge-Dm0V1dNN.js.map +0 -1
- package/dashboard/dist/assets/StepIndicator-Dicx0WTZ.js +0 -2
- package/dashboard/dist/assets/StickyPagination-B2jYvU3-.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +0 -1
- package/dashboard/dist/assets/TagInput-CypDZ6Kl.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DooDNJGT.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DooDNJGT.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-C1hZ-j31.js +0 -2
- package/dashboard/dist/assets/TaskQueuePill-C1hZ-j31.js.map +0 -1
- package/dashboard/dist/assets/TasksListPage-D7CdkAeg.js +0 -2
- package/dashboard/dist/assets/TimeAgo-B5LXB2aj.js +0 -2
- package/dashboard/dist/assets/TimestampCell-Crb9b0Gw.js +0 -2
- package/dashboard/dist/assets/UserName-OPg-nkRa.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-CcLVrs9b.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DB1SncBi.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DB1SncBi.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-DvShiYJV.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +0 -1
- package/dashboard/dist/assets/escalation-A0CsbvNV.js +0 -2
- package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +0 -2
- package/dashboard/dist/assets/helpers-CmznCuAx.js +0 -2
- package/dashboard/dist/assets/index-BIeYV5QK.js +0 -2
- package/dashboard/dist/assets/index-BIeYV5QK.js.map +0 -1
- package/dashboard/dist/assets/index-BYwD3kHN.js +0 -5
- package/dashboard/dist/assets/index-C5TUqJu0.css +0 -1
- package/dashboard/dist/assets/index-C8-UaN4N.js +0 -2
- package/dashboard/dist/assets/index-C8-UaN4N.js.map +0 -1
- package/dashboard/dist/assets/index-CAj5LT9H.js +0 -15
- package/dashboard/dist/assets/index-CAj5LT9H.js.map +0 -1
- package/dashboard/dist/assets/index-CjxHCVxl.js +0 -2
- package/dashboard/dist/assets/index-CjxHCVxl.js.map +0 -1
- package/dashboard/dist/assets/index-Cr0Rqsj7.js +0 -2
- package/dashboard/dist/assets/index-DZHNte4o.js +0 -2
- package/dashboard/dist/assets/index-DZHNte4o.js.map +0 -1
- package/dashboard/dist/assets/index-VnYkWW8r.js +0 -2
- package/dashboard/dist/assets/index-XGOmZ117.js +0 -2
- package/dashboard/dist/assets/index-ZjOUzWhc.js +0 -2
- package/dashboard/dist/assets/index-ZjOUzWhc.js.map +0 -1
- package/dashboard/dist/assets/index-puKKZ5l8.js +0 -281
- package/dashboard/dist/assets/index-puKKZ5l8.js.map +0 -1
- package/dashboard/dist/assets/index-t5frSddy.js +0 -6
- package/dashboard/dist/assets/index-t5frSddy.js.map +0 -1
- package/dashboard/dist/assets/mcp-DrWymhSu.js +0 -2
- package/dashboard/dist/assets/namespaces-Cm6AY5sh.js +0 -2
- package/dashboard/dist/assets/settings-DTQNp6tH.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpOverview-CeYnCzBN.js","sources":["../../src/pages/mcp/McpOverview.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Server, Workflow } from 'lucide-react';\nimport { useMcpServers } from '../../api/mcp';\nimport { useMcpRuns } from '../../api/mcp-runs';\nimport { useYamlWorkflows } from '../../api/yaml-workflows';\nimport { useNamespaces } from '../../api/namespaces';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { StatCard } from '../../components/common/data/StatCard';\nimport type { McpToolManifest } from '../../api/types';\n\n// ── Duration filter ──────────────────────────────────────────────────────────\n\nconst DURATIONS = [\n { label: '1h', ms: 3_600_000 },\n { label: '24h', ms: 86_400_000 },\n { label: '7d', ms: 604_800_000 },\n { label: '30d', ms: 2_592_000_000 },\n] as const;\n\ntype DurationLabel = (typeof DURATIONS)[number]['label'];\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${Math.round(ms)}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3_600_000) return `${(ms / 60_000).toFixed(1)}m`;\n return `${(ms / 3_600_000).toFixed(1)}h`;\n}\n\ninterface PipelineStats {\n pipeline: string;\n total: number;\n running: number;\n completed: number;\n failed: number;\n avgDuration: number | null;\n}\n\n// ── Reusable components ──────────────────────────────────────────────────────\n\nfunction StatCell({\n value,\n colorClass,\n onClick,\n}: {\n value: number;\n colorClass: string;\n onClick: () => void;\n}) {\n if (value === 0) {\n return <span className=\"text-text-tertiary\">0</span>;\n }\n return (\n <button\n onClick={onClick}\n className={`${colorClass} hover:underline tabular-nums font-medium`}\n >\n {value}\n </button>\n );\n}\n\n// ── Page ─────────────────────────────────────────────────────────────────────\n\nexport function McpOverview() {\n const navigate = useNavigate();\n const [duration, setDuration] = useState<DurationLabel>('24h');\n const [namespace, setNamespace] = useState('longtail');\n\n const { data: nsData } = useNamespaces();\n const { data: allRuns } = useMcpRuns({ limit: 500, app_id: namespace });\n const { data: serverData, isLoading: serversLoading } = useMcpServers();\n const { data: yamlData, isLoading: yamlLoading } = useYamlWorkflows({ limit: 200 });\n\n const namespaces = useMemo(\n () => (nsData?.namespaces ?? []).map((ns) => ns.name),\n [nsData?.namespaces],\n );\n\n // ── Server counts ────────────────────────────────────────────\n const servers = serverData?.servers ?? [];\n const yamlWorkflows = yamlData?.workflows ?? [];\n\n const serverToolCount = useMemo(\n () => servers.reduce((sum, s) => sum + (Array.isArray(s.tool_manifest) ? (s.tool_manifest as McpToolManifest[]).length : 0), 0),\n [servers],\n );\n\n const workflowServerCount = useMemo(() => {\n const appIds = new Set(yamlWorkflows.map((wf) => wf.app_id));\n return appIds.size;\n }, [yamlWorkflows]);\n\n // ── Run stats ──────────────────────────────────────────────────\n const cutoff = useMemo(() => {\n const d = DURATIONS.find((d) => d.label === duration)!;\n return Date.now() - d.ms;\n }, [duration]);\n\n const runs = useMemo(\n () => (allRuns?.jobs ?? []).filter((j) => new Date(j.created_at).getTime() >= cutoff),\n [allRuns?.jobs, cutoff],\n );\n\n const byPipeline = useMemo(() => {\n const map = new Map<string, { total: number; running: number; completed: number; failed: number; durations: number[] }>();\n for (const j of runs) {\n const entry = map.get(j.entity) ?? { total: 0, running: 0, completed: 0, failed: 0, durations: [] };\n entry.total++;\n if (j.status === 'running') entry.running++;\n if (j.status === 'completed') {\n entry.completed++;\n const dur = new Date(j.updated_at).getTime() - new Date(j.created_at).getTime();\n if (dur > 0) entry.durations.push(dur);\n }\n if (j.status === 'failed') entry.failed++;\n map.set(j.entity, entry);\n }\n\n const result: PipelineStats[] = [];\n for (const [pipeline, stats] of map) {\n result.push({\n pipeline,\n ...stats,\n avgDuration: stats.durations.length > 0\n ? stats.durations.reduce((a, b) => a + b, 0) / stats.durations.length\n : null,\n });\n }\n return result.sort((a, b) => b.total - a.total);\n }, [runs]);\n\n const totals = useMemo(() => ({\n total: runs.length,\n running: runs.filter((j) => j.status === 'running').length,\n completed: runs.filter((j) => j.status === 'completed').length,\n failed: runs.filter((j) => j.status === 'failed').length,\n }), [runs]);\n\n const goToRuns = (entity?: string, status?: string) => {\n const params = new URLSearchParams();\n if (namespace !== 'longtail') params.set('namespace', namespace);\n if (entity) params.set('entity', entity);\n if (status) params.set('status', status);\n const qs = params.toString();\n navigate(`/mcp/executions${qs ? `?${qs}` : ''}`);\n };\n\n const thCls = 'pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary';\n\n return (\n <div>\n <PageHeader title=\"Discovered\" />\n\n {/* ── Duration tabs + namespace ────────────────────────── */}\n <div className=\"flex items-center gap-4 mb-6\">\n <div className=\"flex items-center gap-1\">\n {DURATIONS.map((d) => (\n <button\n key={d.label}\n onClick={() => setDuration(d.label)}\n className={`px-3 py-1 text-xs rounded-full transition-colors ${\n duration === d.label\n ? 'bg-accent text-text-inverse'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {d.label}\n </button>\n ))}\n </div>\n {namespaces.length > 1 && (\n <select\n value={namespace}\n onChange={(e) => setNamespace(e.target.value)}\n className=\"select text-xs py-1 px-2\"\n >\n {namespaces.map((ns) => (\n <option key={ns} value={ns}>{ns}</option>\n ))}\n </select>\n )}\n </div>\n\n {/* ── Summary cards ────────────────────────────────────── */}\n <div className=\"grid grid-cols-4 gap-4 mb-8\">\n <StatCard label=\"Total Runs\" value={totals.total} onClick={() => goToRuns()} />\n <StatCard label=\"Running\" value={totals.running} colorClass=\"text-status-active\" onClick={() => goToRuns(undefined, 'running')} />\n <StatCard label=\"Completed\" value={totals.completed} colorClass=\"text-status-success\" onClick={() => goToRuns(undefined, 'completed')} />\n <StatCard label=\"Failed\" value={totals.failed} colorClass=\"text-status-error\" onClick={() => goToRuns(undefined, 'failed')} />\n </div>\n\n {/* ── By-pipeline table ────────────────────────────────── */}\n {byPipeline.length > 0 && (\n <table className=\"w-full text-left mb-10\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Tool</th>\n <th className={`${thCls} text-right w-20`}>Total</th>\n <th className={`${thCls} text-right w-20`}>Running</th>\n <th className={`${thCls} text-right w-24`}>Completed</th>\n <th className={`${thCls} text-right w-20`}>Failed</th>\n <th className={`${thCls} text-right w-28`}>Avg Duration</th>\n </tr>\n </thead>\n <tbody>\n {byPipeline.map((row) => (\n <tr key={row.pipeline} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToRuns(row.pipeline)}\n className=\"hover:text-accent hover:underline\"\n >\n {row.pipeline}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.total} colorClass=\"text-text-secondary\" onClick={() => goToRuns(row.pipeline)} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.running} colorClass=\"text-status-active\" onClick={() => goToRuns(row.pipeline, 'running')} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.completed} colorClass=\"text-status-success\" onClick={() => goToRuns(row.pipeline, 'completed')} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.failed} colorClass=\"text-status-error\" onClick={() => goToRuns(row.pipeline, 'failed')} />\n </td>\n <td className=\"py-3 text-sm font-mono text-text-secondary text-right\">\n {row.avgDuration !== null ? formatDuration(row.avgDuration) : '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n\n {byPipeline.length === 0 && (\n <div className=\"py-12 text-center mb-8\">\n <p className=\"text-sm text-text-tertiary\">\n No MCP tool activity in the last {duration}\n </p>\n </div>\n )}\n\n {/* ── Server inventory (compact cards) ─────────────────── */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <button\n onClick={() => navigate('/mcp/servers')}\n className=\"bg-surface-raised border border-surface-border rounded-md p-5 text-left hover:border-accent/40 transition-colors\"\n >\n <div className=\"flex items-center gap-3 mb-3\">\n <Server size={16} className=\"text-accent shrink-0\" />\n <span className=\"text-sm font-medium text-text-primary\">Tool Servers</span>\n </div>\n <p className=\"text-2xl font-light tabular-nums text-text-primary mb-1\">\n {serversLoading ? '—' : servers.length}\n <span className=\"text-sm text-text-tertiary font-normal ml-2\">\n server{servers.length !== 1 ? 's' : ''} · {serverToolCount} tool{serverToolCount !== 1 ? 's' : ''}\n </span>\n </p>\n <p className=\"text-[11px] text-text-tertiary leading-relaxed mt-2\">\n Built-in and external MCP servers. Each server exposes tools that workflows and agents can call.\n </p>\n </button>\n\n <button\n onClick={() => navigate('/mcp/workflows')}\n className=\"bg-surface-raised border border-surface-border rounded-md p-5 text-left hover:border-accent/40 transition-colors\"\n >\n <div className=\"flex items-center gap-3 mb-3\">\n <Workflow size={16} className=\"text-purple-400 shrink-0\" />\n <span className=\"text-sm font-medium text-text-primary\">Pipeline Registry</span>\n </div>\n <p className=\"text-2xl font-light tabular-nums text-text-primary mb-1\">\n {yamlLoading ? '—' : yamlWorkflows.length}\n <span className=\"text-sm text-text-tertiary font-normal ml-2\">\n workflow{yamlWorkflows.length !== 1 ? 's' : ''} · {workflowServerCount} server{workflowServerCount !== 1 ? 's' : ''}\n </span>\n </p>\n <p className=\"text-[11px] text-text-tertiary leading-relaxed mt-2\">\n Compiled from discovery runs. Deterministic tool-to-tool pipelines — no LLM, no token costs.\n </p>\n </button>\n </div>\n </div>\n );\n}\n"],"names":["DURATIONS","formatDuration","ms","StatCell","value","colorClass","onClick","jsxDEV","McpOverview","navigate","useNavigate","duration","setDuration","useState","namespace","setNamespace","nsData","useNamespaces","allRuns","useMcpRuns","serverData","serversLoading","useMcpServers","yamlData","yamlLoading","useYamlWorkflows","namespaces","useMemo","ns","servers","yamlWorkflows","serverToolCount","sum","s","workflowServerCount","wf","cutoff","d","runs","j","byPipeline","map","entry","dur","result","pipeline","stats","a","b","totals","goToRuns","entity","status","params","qs","thCls","PageHeader","e","StatCard","row","Server","Workflow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"McpOverview-ChLa6Gl7.js","sources":["../../src/pages/mcp/McpOverview.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Server, Workflow } from 'lucide-react';\nimport { useMcpServers } from '../../api/mcp';\nimport { useMcpRuns } from '../../api/mcp-runs';\nimport { useYamlWorkflows } from '../../api/yaml-workflows';\nimport { useNamespaces } from '../../api/namespaces';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { StatCard } from '../../components/common/data/StatCard';\nimport type { McpToolManifest } from '../../api/types';\n\n// ── Duration filter ──────────────────────────────────────────────────────────\n\nconst DURATIONS = [\n { label: '1h', ms: 3_600_000 },\n { label: '24h', ms: 86_400_000 },\n { label: '7d', ms: 604_800_000 },\n { label: '30d', ms: 2_592_000_000 },\n] as const;\n\ntype DurationLabel = (typeof DURATIONS)[number]['label'];\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${Math.round(ms)}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3_600_000) return `${(ms / 60_000).toFixed(1)}m`;\n return `${(ms / 3_600_000).toFixed(1)}h`;\n}\n\ninterface PipelineStats {\n pipeline: string;\n total: number;\n running: number;\n completed: number;\n failed: number;\n avgDuration: number | null;\n}\n\n// ── Reusable components ──────────────────────────────────────────────────────\n\nfunction StatCell({\n value,\n colorClass,\n onClick,\n}: {\n value: number;\n colorClass: string;\n onClick: () => void;\n}) {\n if (value === 0) {\n return <span className=\"text-text-tertiary\">0</span>;\n }\n return (\n <button\n onClick={onClick}\n className={`${colorClass} hover:underline tabular-nums font-medium`}\n >\n {value}\n </button>\n );\n}\n\n// ── Page ─────────────────────────────────────────────────────────────────────\n\nexport function McpOverview() {\n const navigate = useNavigate();\n const [duration, setDuration] = useState<DurationLabel>('24h');\n const [namespace, setNamespace] = useState('longtail');\n\n const { data: nsData } = useNamespaces();\n const { data: allRuns } = useMcpRuns({ limit: 500, app_id: namespace });\n const { data: serverData, isLoading: serversLoading } = useMcpServers();\n const { data: yamlData, isLoading: yamlLoading } = useYamlWorkflows({ limit: 200 });\n\n const namespaces = useMemo(\n () => (nsData?.namespaces ?? []).map((ns) => ns.name),\n [nsData?.namespaces],\n );\n\n // ── Server counts ────────────────────────────────────────────\n const servers = serverData?.servers ?? [];\n const yamlWorkflows = yamlData?.workflows ?? [];\n\n const serverToolCount = useMemo(\n () => servers.reduce((sum, s) => sum + (Array.isArray(s.tool_manifest) ? (s.tool_manifest as McpToolManifest[]).length : 0), 0),\n [servers],\n );\n\n const workflowServerCount = useMemo(() => {\n const appIds = new Set(yamlWorkflows.map((wf) => wf.app_id));\n return appIds.size;\n }, [yamlWorkflows]);\n\n // ── Run stats ──────────────────────────────────────────────────\n const cutoff = useMemo(() => {\n const d = DURATIONS.find((d) => d.label === duration)!;\n return Date.now() - d.ms;\n }, [duration]);\n\n const runs = useMemo(\n () => (allRuns?.jobs ?? []).filter((j) => new Date(j.created_at).getTime() >= cutoff),\n [allRuns?.jobs, cutoff],\n );\n\n const byPipeline = useMemo(() => {\n const map = new Map<string, { total: number; running: number; completed: number; failed: number; durations: number[] }>();\n for (const j of runs) {\n const entry = map.get(j.entity) ?? { total: 0, running: 0, completed: 0, failed: 0, durations: [] };\n entry.total++;\n if (j.status === 'running') entry.running++;\n if (j.status === 'completed') {\n entry.completed++;\n const dur = new Date(j.updated_at).getTime() - new Date(j.created_at).getTime();\n if (dur > 0) entry.durations.push(dur);\n }\n if (j.status === 'failed') entry.failed++;\n map.set(j.entity, entry);\n }\n\n const result: PipelineStats[] = [];\n for (const [pipeline, stats] of map) {\n result.push({\n pipeline,\n ...stats,\n avgDuration: stats.durations.length > 0\n ? stats.durations.reduce((a, b) => a + b, 0) / stats.durations.length\n : null,\n });\n }\n return result.sort((a, b) => b.total - a.total);\n }, [runs]);\n\n const totals = useMemo(() => ({\n total: runs.length,\n running: runs.filter((j) => j.status === 'running').length,\n completed: runs.filter((j) => j.status === 'completed').length,\n failed: runs.filter((j) => j.status === 'failed').length,\n }), [runs]);\n\n const goToRuns = (entity?: string, status?: string) => {\n const params = new URLSearchParams();\n if (namespace !== 'longtail') params.set('namespace', namespace);\n if (entity) params.set('entity', entity);\n if (status) params.set('status', status);\n const qs = params.toString();\n navigate(`/mcp/executions${qs ? `?${qs}` : ''}`);\n };\n\n const thCls = 'pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary';\n\n return (\n <div>\n <PageHeader title=\"Discovered\" />\n\n {/* ── Duration tabs + namespace ────────────────────────── */}\n <div className=\"flex items-center gap-4 mb-6\">\n <div className=\"flex items-center gap-1\">\n {DURATIONS.map((d) => (\n <button\n key={d.label}\n onClick={() => setDuration(d.label)}\n className={`px-3 py-1 text-xs rounded-full transition-colors ${\n duration === d.label\n ? 'bg-accent text-text-inverse'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {d.label}\n </button>\n ))}\n </div>\n {namespaces.length > 1 && (\n <select\n value={namespace}\n onChange={(e) => setNamespace(e.target.value)}\n className=\"select text-xs py-1 px-2\"\n >\n {namespaces.map((ns) => (\n <option key={ns} value={ns}>{ns}</option>\n ))}\n </select>\n )}\n </div>\n\n {/* ── Summary cards ────────────────────────────────────── */}\n <div className=\"grid grid-cols-4 gap-4 mb-8\">\n <StatCard label=\"Total Runs\" value={totals.total} onClick={() => goToRuns()} />\n <StatCard label=\"Running\" value={totals.running} colorClass=\"text-status-active\" onClick={() => goToRuns(undefined, 'running')} />\n <StatCard label=\"Completed\" value={totals.completed} colorClass=\"text-status-success\" onClick={() => goToRuns(undefined, 'completed')} />\n <StatCard label=\"Failed\" value={totals.failed} colorClass=\"text-status-error\" onClick={() => goToRuns(undefined, 'failed')} />\n </div>\n\n {/* ── By-pipeline table ────────────────────────────────── */}\n {byPipeline.length > 0 && (\n <table className=\"w-full text-left mb-10\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Tool</th>\n <th className={`${thCls} text-right w-20`}>Total</th>\n <th className={`${thCls} text-right w-20`}>Running</th>\n <th className={`${thCls} text-right w-24`}>Completed</th>\n <th className={`${thCls} text-right w-20`}>Failed</th>\n <th className={`${thCls} text-right w-28`}>Avg Duration</th>\n </tr>\n </thead>\n <tbody>\n {byPipeline.map((row) => (\n <tr key={row.pipeline} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToRuns(row.pipeline)}\n className=\"hover:text-accent hover:underline\"\n >\n {row.pipeline}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.total} colorClass=\"text-text-secondary\" onClick={() => goToRuns(row.pipeline)} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.running} colorClass=\"text-status-active\" onClick={() => goToRuns(row.pipeline, 'running')} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.completed} colorClass=\"text-status-success\" onClick={() => goToRuns(row.pipeline, 'completed')} />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell value={row.failed} colorClass=\"text-status-error\" onClick={() => goToRuns(row.pipeline, 'failed')} />\n </td>\n <td className=\"py-3 text-sm font-mono text-text-secondary text-right\">\n {row.avgDuration !== null ? formatDuration(row.avgDuration) : '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n\n {byPipeline.length === 0 && (\n <div className=\"py-12 text-center mb-8\">\n <p className=\"text-sm text-text-tertiary\">\n No MCP tool activity in the last {duration}\n </p>\n </div>\n )}\n\n {/* ── Server inventory (compact cards) ─────────────────── */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <button\n onClick={() => navigate('/mcp/servers')}\n className=\"bg-surface-raised border border-surface-border rounded-md p-5 text-left hover:border-accent/40 transition-colors\"\n >\n <div className=\"flex items-center gap-3 mb-3\">\n <Server size={16} className=\"text-accent shrink-0\" />\n <span className=\"text-sm font-medium text-text-primary\">Tool Servers</span>\n </div>\n <p className=\"text-2xl font-light tabular-nums text-text-primary mb-1\">\n {serversLoading ? '—' : servers.length}\n <span className=\"text-sm text-text-tertiary font-normal ml-2\">\n server{servers.length !== 1 ? 's' : ''} · {serverToolCount} tool{serverToolCount !== 1 ? 's' : ''}\n </span>\n </p>\n <p className=\"text-[11px] text-text-tertiary leading-relaxed mt-2\">\n Built-in and external MCP servers. Each server exposes tools that workflows and agents can call.\n </p>\n </button>\n\n <button\n onClick={() => navigate('/mcp/workflows')}\n className=\"bg-surface-raised border border-surface-border rounded-md p-5 text-left hover:border-accent/40 transition-colors\"\n >\n <div className=\"flex items-center gap-3 mb-3\">\n <Workflow size={16} className=\"text-purple-400 shrink-0\" />\n <span className=\"text-sm font-medium text-text-primary\">Pipeline Registry</span>\n </div>\n <p className=\"text-2xl font-light tabular-nums text-text-primary mb-1\">\n {yamlLoading ? '—' : yamlWorkflows.length}\n <span className=\"text-sm text-text-tertiary font-normal ml-2\">\n workflow{yamlWorkflows.length !== 1 ? 's' : ''} · {workflowServerCount} server{workflowServerCount !== 1 ? 's' : ''}\n </span>\n </p>\n <p className=\"text-[11px] text-text-tertiary leading-relaxed mt-2\">\n Compiled from discovery runs. Deterministic tool-to-tool pipelines — no LLM, no token costs.\n </p>\n </button>\n </div>\n </div>\n );\n}\n"],"names":["DURATIONS","formatDuration","ms","StatCell","value","colorClass","onClick","jsx","McpOverview","navigate","useNavigate","duration","setDuration","useState","namespace","setNamespace","nsData","useNamespaces","allRuns","useMcpRuns","serverData","serversLoading","useMcpServers","yamlData","yamlLoading","useYamlWorkflows","namespaces","useMemo","ns","servers","yamlWorkflows","serverToolCount","sum","s","workflowServerCount","wf","cutoff","d","runs","j","byPipeline","map","entry","dur","result","pipeline","stats","a","b","totals","goToRuns","entity","status","params","qs","thCls","PageHeader","jsxs","e","StatCard","row","Server","Workflow"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{j as e,b as pe,c as Qe,u as Pt,a as p}from"./vendor-query-B2UbickB.js";import{P as Ie}from"./PageHeader-B-SN5GZ2.js";import{S as ye}from"./StatusBadge-XQlNFwmH.js";import{a as Mt,b as gt,c as $e,d as yt,e as Tt,f as At}from"./mcp-query-DC5woQn5.js";import{b as Oe,F as Lt,J as U,S as bt,d as It,e as $t,g as Ot}from"./index-BUjxYyxc.js";import{u as Wt,a as Rt,b as Bt,c as Ft}from"./useYamlActivityEvents-D3RQjfzo.js";import{b as jt,q as Ve,s as ve,r as Ne,t as vt,u as Et,c as Dt,v as qt,w as zt,x as Yt,y as be,z as We,B as dt,D as Ae,H as xt,M as Jt,f as Qt,l as Vt,X as Re,J as Kt,P as Ut,K as Ht,N as Gt,O as Xt,Q as Zt,V as es,C as Nt}from"./vendor-icons-BkK55L-1.js";import{c as Ke,f as fe,e as Be,L as ke}from"./vendor-react-CX88sFS5.js";import{b as Fe,c as Ce,u as Ue,d as ts,e as ss,f as as,g as rs,h as ns,i as is,j as cs,k as ls,l as os,m as ds,a as xs}from"./yaml-workflows-CAKU7LUu.js";import{c as He,d as ms}from"./useEventHooks-BPjEkCpD.js";import{T as Ee}from"./TagInput-DftaRHDV.js";import{C as ps}from"./CollapsibleSection-CRtHQsAv.js";import{u as us,b as hs}from"./mcp-runs-CsoVQoPB.js";import{a as Ye}from"./workflows-D6diL54s.js";import{b as Ge}from"./tasks-D_1NCfOZ.js";import{R as fs,b as gs,e as Se,m as ys,S as bs}from"./RunAsSelector-CD7_Dmb0.js";import{C as js}from"./CopyableId-DmLF-RqZ.js";import{T as vs}from"./TimeAgo-BihIwEbB.js";import{S as Ns}from"./SwimlaneTimeline-CUl5RdXU.js";import"./BotPicker-C2xR1xay.js";import"./bots-BZPXDh_y.js";function Xe({labels:t,current:a,maxReachable:r,onStepClick:n}){return e.jsx("div",{className:"sticky top-0 z-20 bg-surface/95 backdrop-blur-sm pb-6 pt-1 -mt-1",children:e.jsx("div",{className:"flex items-center gap-3",children:t.map((d,o)=>{const s=o+1,m=s<=r;return e.jsxs("div",{className:"flex items-center gap-2",children:[s>1&&e.jsx("div",{className:`w-8 h-px ${a>=s?"bg-accent":"bg-surface-border"}`}),e.jsx("button",{onClick:()=>m&&n(s),disabled:!m,className:`w-6 h-6 rounded-full text-[11px] font-semibold flex items-center justify-center transition-colors ${a===s?"bg-accent text-text-inverse":m?"bg-accent/20 text-accent cursor-pointer hover:bg-accent/30":"bg-surface-sunken text-text-tertiary cursor-default"}`,children:s}),e.jsx("span",{className:`text-xs ${a===s?"text-text-primary font-medium":"text-text-tertiary"}`,children:d})]},s)})})})}const wt=["builderJobs"];function kt(){const t=pe();return Qe({mutationFn:a=>Oe("/insight/build-workflow",{method:"POST",body:JSON.stringify({...a,wait:!1})}),onSuccess:()=>{t.invalidateQueries({queryKey:wt,refetchType:"all"}),t.invalidateQueries({queryKey:["jobs"],refetchType:"all"})}})}function ws(){const t=pe();return Qe({mutationFn:a=>Oe("/insight/build-workflow/refine",{method:"POST",body:JSON.stringify({...a,wait:!1})}),onSuccess:()=>{t.invalidateQueries({queryKey:wt,refetchType:"all"})}})}function ks(){const t=pe();return Qe({mutationFn:a=>Oe("/yaml-workflows/direct",{method:"POST",body:JSON.stringify(a)}),onSuccess:()=>{t.invalidateQueries({queryKey:["yamlWorkflows"],refetchType:"all"})}})}function St(t){return Pt({queryKey:["builderResult",t],queryFn:()=>Oe(`/workflows/${t}/result`),enabled:!!t})}const Ss=[{icon:ve,color:"text-accent",title:"Describe",detail:"Write a prompt. The LLM executes tools dynamically to fulfill your request."},{icon:vt,color:"text-status-warning",title:"Discover",detail:"Review the execution trace — which tools were called, what data flowed between them."},{icon:Ne,color:"text-status-success",title:"Compile",detail:"Successful runs compile into deterministic pipelines. No LLM needed at runtime."}],Cs=[{icon:ve,color:"text-accent",title:"Describe",detail:"Specify what tools to use, what inputs to accept, and how data should flow between steps."},{icon:Ne,color:"text-status-warning",title:"Review",detail:"The LLM will create the pipeline (DAG) directly from tool schemas. Review the generated pipeline."},{icon:jt,color:"text-status-success",title:"Deploy & Test",detail:"Deploy, run with sample inputs, and refine until the pipeline works correctly."}],_s=[{icon:ve,color:"text-accent",title:"Specification",detail:"Describe API endpoints, processes, or paste a spec. The system decomposes it into pipeline tools."},{icon:Ve,color:"text-status-warning",title:"Plan & Build",detail:"Review the decomposition, configure the toolset, then build each tool leaf-first."},{icon:Ne,color:"text-status-success",title:"Deploy & Test",detail:"Deploy the toolset. Test individual tools and the full composition."}];function Ps(){const t=Ke(),[a,r]=p.useState(""),[n,d]=p.useState("discover"),[o,s]=p.useState(!0),m=Mt(),l=gt(),x=kt(),c=Wt(),u=async i=>{i.preventDefault();const b=a.trim();if(b)if(n==="plan"){const y=`plan-${Date.now().toString(36)}`,h=await c.mutateAsync({name:y,specification:b});r(""),t(`/mcp/queries/${h.planner_workflow_id}?mode=plan&set_id=${h.id}`,{replace:!0})}else if(n==="direct"){const y=await x.mutateAsync({prompt:b});r(""),t(`/mcp/queries/${y.workflow_id}?mode=builder`,{replace:!0})}else{const h=await(o?m:l).mutateAsync({prompt:b});r(""),o?t(`/mcp/queries/${h.workflow_id}?step=2`,{replace:!0}):t(`/workflows/executions/${h.workflow_id}`,{replace:!0})}},f=n==="plan"?c:n==="direct"?x:o?m:l,S=n==="plan"?_s:n==="discover"?Ss:Cs;return e.jsxs("div",{children:[e.jsx(Ie,{title:"MCP Tool Designer",docsHash:"#docs:dashboard.md:mcp-tool-designer"}),e.jsx("p",{className:"text-sm text-text-secondary mb-6 leading-relaxed max-w-xl",children:"Create deterministic MCP tools from natural language. Choose how to get there."}),e.jsxs("div",{className:"flex gap-1 mb-6 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[e.jsxs("button",{onClick:()=>d("discover"),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${n==="discover"?"bg-surface text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:[e.jsx(jt,{className:"w-3 h-3",strokeWidth:1.5}),"Discover & Compile"]}),e.jsxs("button",{onClick:()=>d("plan"),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${n==="plan"?"bg-surface text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:[e.jsx(Ve,{className:"w-3 h-3",strokeWidth:1.5}),"Build"]})]}),e.jsxs("div",{className:"grid grid-cols-[1fr_240px] gap-6",children:[e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"rounded-lg border border-surface-border bg-surface-raised overflow-hidden h-full flex flex-col",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[e.jsx(ve,{className:"w-4 h-4 text-accent shrink-0 mt-3.5 ml-4",strokeWidth:1.5}),e.jsx("textarea",{ref:i=>{i&&(i.style.height="auto",i.style.height=Math.min(400,Math.max(160,i.scrollHeight))+"px")},value:a,onChange:i=>{r(i.target.value);const b=i.target;b.style.height="auto",b.style.height=Math.min(400,Math.max(160,b.scrollHeight))+"px"},placeholder:n==="plan"?"Describe the tools you want to build — API specs, process descriptions, or a full PRD. The system will decompose, build, and deploy them as a composable toolset...":"Describe what you want to accomplish. The system will discover and execute the right tools...",className:"flex-1 min-h-[160px] pr-4 py-3 bg-transparent text-sm text-text-primary placeholder:text-text-tertiary resize-none focus:outline-none border-none",autoFocus:!0,onKeyDown:i=>{i.key==="Enter"&&(i.metaKey||i.ctrlKey)&&u(i)}})]}),e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-t border-surface-border bg-surface-sunken/30",children:[n==="plan"?e.jsx("span",{className:"text-[10px] text-text-tertiary",children:"Decomposes into composable pipeline tools — builds leaf-first"}):n==="discover"?e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:o,onChange:i=>s(i.target.checked),className:"w-3.5 h-3.5 rounded border-border text-accent-primary focus:ring-accent-primary/50 bg-surface-sunken cursor-pointer"}),e.jsx("span",{className:"text-[10px] text-text-secondary group-hover:text-text-primary transition-colors",children:"Force discovery"}),e.jsx("span",{className:"text-[10px] text-text-tertiary",children:o?"— skip compiled pipelines":"— prefer compiled pipelines"})]}):e.jsx("span",{className:"text-[10px] text-text-tertiary",children:"LLM builds pipeline from tool schemas — no execution needed"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[10px] text-text-tertiary",children:"Cmd+Enter"}),e.jsx("button",{type:"submit",disabled:!a.trim()||f.isPending,className:"px-4 py-1.5 bg-accent text-white text-xs font-medium rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:f.isPending?"Starting...":n==="plan"?"Plan":n==="discover"?"Discover":"Build"})]})]})]}),f.isError&&e.jsx("p",{className:"mt-2 text-sm text-status-error",children:f.error.message})]}),e.jsx("div",{className:"space-y-4 pt-1",children:S.map(i=>e.jsxs("div",{className:"flex items-start gap-2.5",children:[e.jsx(i.icon,{className:`w-3.5 h-3.5 mt-0.5 shrink-0 ${i.color}`,strokeWidth:1.5}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-medium text-text-primary",children:i.title}),e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5 leading-relaxed",children:i.detail})]})]},i.title))})]})]})}function le({children:t}){return e.jsx("div",{className:"sticky bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-20 flex justify-between items-center mt-8",style:{bottom:"calc(var(--feed-height, 0px) - 8px)"},children:t})}const Ms=[{icon:Dt,label:"Discovering MCP servers and tools",key:"discover"},{icon:qt,label:"LLM constructing YAML pipeline",key:"build"},{icon:zt,label:"Validating workflow structure",key:"validate"}];function Ts({workflowId:t,status:a,builderData:r,onBuilt:n,onNext:d}){var v,k,N,_,L,C;const[o,s]=p.useState(""),[m,l]=p.useState(0),x=kt(),{data:c}=$e(t),u=r==null?void 0:r.clarification_needed,f=(r==null?void 0:r.questions)||[],S=(r==null?void 0:r.tools_identified)||[],i=a==="in_progress",b=a==="completed"&&(r==null?void 0:r.yaml),y=a==="failed"||((v=r==null?void 0:r.title)==null?void 0:v.includes("Failed")),h=(k=c==null?void 0:c.events)==null?void 0:k.find(g=>g.event_type==="workflow_execution_started"),j=Array.isArray((N=h==null?void 0:h.attributes)==null?void 0:N.input)?h.attributes.input[0]:(_=h==null?void 0:h.attributes)==null?void 0:_.input,w=((L=j==null?void 0:j.data)==null?void 0:L.prompt)||((C=j==null?void 0:j.data)==null?void 0:C.question)||null;p.useEffect(()=>{if(!i)return;const I=((c==null?void 0:c.events)||[]).filter(M=>M.event_type==="activity_task_completed"&&!M.is_system).length;I>=2?l(2):I>=1?l(1):l(0)},[i,c==null?void 0:c.events]);const T=async()=>{o.trim()&&(await x.mutateAsync({prompt:(r==null?void 0:r._originalPrompt)||t,answers:o.trim(),prior_questions:f}),n())};return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Describe"}),e.jsx("p",{className:"text-base text-text-secondary mb-6",children:u?"The builder identified tools but needs more details before constructing the workflow.":i?"Building your workflow — this typically takes 20-40 seconds.":b?"Pipeline constructed — YAML definition, input schema, and activity manifest generated.":y?"Build failed. Try a more specific prompt or use Discover & Compile mode.":"Workflow build submitted."}),u&&e.jsxs("div",{className:"space-y-4",children:[S.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Tools Identified"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:S.map(g=>e.jsx("span",{className:"px-2 py-0.5 text-xs font-mono bg-accent/10 text-accent rounded",children:g},g))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Questions"}),e.jsx("div",{className:"space-y-2",children:f.map((g,I)=>e.jsxs("div",{className:"flex items-start gap-2 text-sm text-text-secondary",children:[e.jsx(Et,{className:"w-3.5 h-3.5 text-status-warning shrink-0 mt-0.5",strokeWidth:1.5}),e.jsx("span",{children:g})]},I))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Your Answers"}),e.jsx("textarea",{value:o,onChange:g=>s(g.target.value),placeholder:"Answer each question above...",className:"w-full min-h-[120px] px-3 py-2 bg-surface text-sm text-text-primary placeholder:text-text-tertiary rounded-md border border-surface-border resize-none focus:outline-none focus:ring-1 focus:ring-accent",onKeyDown:g=>{g.key==="Enter"&&(g.metaKey||g.ctrlKey)&&T()}}),e.jsx("div",{className:"flex justify-end mt-2",children:e.jsx("button",{onClick:T,disabled:!o.trim()||x.isPending,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-accent/10 text-accent rounded-md hover:bg-accent/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:x.isPending?"Submitting...":"Submit Answers & Build"})})]})]}),!u&&e.jsxs("div",{className:"grid grid-cols-[1fr_240px] gap-6",children:[e.jsx("div",{className:"rounded-lg bg-surface-sunken/40 overflow-hidden",children:e.jsxs("div",{className:"flex items-start gap-3 p-4",children:[e.jsx(ve,{className:"w-4 h-4 text-accent shrink-0 mt-0.5",strokeWidth:1.5}),w?e.jsx("p",{className:"text-sm font-mono text-text-secondary leading-relaxed whitespace-pre-wrap",children:w}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Loading prompt..."})]})}),e.jsxs("div",{className:"space-y-3 pt-1",children:[Ms.map((g,I)=>{const M=b||I<m,O=i&&I===m;return e.jsxs("div",{className:"flex items-start gap-2.5",children:[M?e.jsx(Yt,{className:"w-3.5 h-3.5 text-status-success shrink-0 mt-0.5",strokeWidth:1.5}):O?e.jsx(be,{className:"w-3.5 h-3.5 text-accent animate-spin shrink-0 mt-0.5",strokeWidth:1.5}):e.jsx(g.icon,{className:"w-3.5 h-3.5 text-text-tertiary/40 shrink-0 mt-0.5",strokeWidth:1.5}),e.jsxs("div",{children:[e.jsx("p",{className:`text-[11px] font-medium ${M||O?"text-text-primary":"text-text-tertiary/50"}`,children:g.label}),M&&!i&&e.jsx("p",{className:"text-[10px] text-status-success mt-0.5",children:"complete"})]})]},g.key)}),i&&e.jsxs("p",{className:"text-[10px] text-text-tertiary pl-6",children:["Elapsed: ",c!=null&&c.duration_ms?`${(c.duration_ms/1e3).toFixed(0)}s`:"..."]}),b&&r.build_attempts>1&&e.jsxs("p",{className:"text-[10px] text-text-tertiary pl-6",children:["Built in ",r.build_attempts," attempts"]}),y&&e.jsx("p",{className:"text-[10px] text-status-error pl-6",children:(r==null?void 0:r.summary)||"Build failed"})]})]}),e.jsxs(le,{children:[e.jsx("div",{}),b&&e.jsx("button",{onClick:d,className:"btn-primary text-xs",children:"Next: Profile"})]})]})}function oe(t){return t.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_|_$/g,"")}function Le(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"").replace(/^[0-9]+/,"")}function As({builderData:t,resolvedYamlId:a,originalPrompt:r,onBack:n,onCreate:d,onNext:o}){const[s,m]=p.useState(!1),[l,x]=p.useState(oe((t==null?void 0:t.name)||"")),[c,u]=p.useState((t==null?void 0:t.description)||""),[f,S]=p.useState("longtail"),[i,b]=p.useState((t==null?void 0:t.tags)||[]),y=ks(),h=Fe(),{data:j}=Ce(a||""),w=!!a,T=async()=>{const N=await y.mutateAsync({name:l,description:c,yaml_content:t.yaml,input_schema:t.input_schema,activity_manifest:t.activity_manifest,tags:i,app_id:f});d(N.id)},v=async()=>{a&&(await h.mutateAsync({id:a,name:l,description:c,tags:i}),m(!1))},k=!w||s;return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Profile"}),e.jsx("p",{className:"text-base text-text-secondary mb-6",children:"Name the MCP server and tool, add tags for discovery, and describe what this pipeline does."}),r&&e.jsxs("div",{className:"mb-6",children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Original Prompt"}),e.jsx("div",{className:"rounded-md bg-surface-sunken/50 px-4 py-3",children:e.jsx("p",{className:"text-xs font-mono text-text-primary leading-relaxed whitespace-pre-wrap",children:r})})]}),e.jsxs("div",{className:"grid grid-cols-[300px_1fr] gap-4 mb-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"MCP Server Name"}),k?e.jsx("input",{value:f,onChange:N=>S(Le(N.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("p",{className:"text-sm text-text-primary py-1.5",children:(j==null?void 0:j.app_id)||f})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"MCP Tool Name"}),k?e.jsx("input",{value:l,onChange:N=>x(oe(N.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("p",{className:"text-sm text-text-primary py-1.5",children:(j==null?void 0:j.name)||l})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tags"}),k?e.jsx(Ee,{tags:i,onChange:b,compact:!0}):e.jsx("div",{className:"flex flex-wrap gap-1.5 py-1",children:((j==null?void 0:j.tags)||i).map(N=>e.jsx("span",{className:"px-2 py-0.5 text-sm bg-surface-raised text-text-primary rounded",children:N},N))})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Description"}),w&&!s&&e.jsxs("button",{onClick:()=>m(!0),className:"flex items-center gap-1 text-[10px] text-accent hover:text-accent/80 transition-colors",children:[e.jsx(We,{className:"w-3 h-3",strokeWidth:1.5}),"Edit"]})]}),k?e.jsx("textarea",{value:c,onChange:N=>u(N.target.value),className:"w-full flex-1 min-h-[100px] bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary resize-none focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("p",{className:"text-sm text-text-primary leading-relaxed py-1.5",children:(j==null?void 0:j.description)||c}),s&&e.jsxs("div",{className:"flex justify-end gap-2 mt-2",children:[e.jsx("button",{onClick:()=>m(!1),className:"text-[10px] text-text-tertiary hover:text-text-primary",children:"Cancel"}),e.jsx("button",{onClick:v,disabled:h.isPending,className:"text-[10px] text-accent hover:text-accent/80 font-medium",children:h.isPending?"Saving...":"Save Changes"})]})]})]}),y.isError&&e.jsx("p",{className:"text-xs text-status-error mb-4",children:y.error.message}),e.jsxs(le,{children:[e.jsx("button",{onClick:n,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),w?e.jsx("button",{onClick:o,className:"btn-primary text-xs",children:"Next: Deploy"}):e.jsx("button",{onClick:T,disabled:y.isPending||!l.trim(),className:"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed",children:y.isPending?"Creating...":"Create & Save"})]})]})}function me({icon:t,label:a,onClick:r,disabled:n}){return e.jsxs("button",{type:"button",onClick:r,disabled:n,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-accent/10 text-accent rounded-md hover:bg-accent/20 transition-colors shrink-0 disabled:opacity-50 disabled:cursor-not-allowed",children:[t&&e.jsx(t,{className:"w-3.5 h-3.5",strokeWidth:1.5}),a]})}const mt={dynamic:{bg:"bg-status-success/10",text:"text-status-success",label:"Dynamic"},fixed:{bg:"bg-surface-sunken",text:"text-text-tertiary",label:"Fixed"},wired:{bg:"bg-blue-500/10",text:"text-blue-500",label:"Wired"}};function Ls({classification:t}){const a=mt[t]||mt.fixed;return e.jsx("span",{className:`px-1.5 py-0.5 text-[9px] font-medium rounded ${a.bg} ${a.text}`,children:a.label})}function Is({fields:t,onChange:a,editing:r}){const[n,d]=p.useState(null),o=(c,u)=>{const f=t.map((S,i)=>i===c?{...S,...u}:S);a(f)},s=c=>{const u=t[c],f=u.classification==="dynamic"?"fixed":"dynamic",S={classification:f};f==="fixed"&&u.default===void 0&&(S.default=u.type==="string"?"":u.type==="number"?0:u.type==="boolean"?!1:null),o(c,S)},m=c=>{a(t.filter((u,f)=>f!==c))};if(t.length===0)return e.jsx("div",{className:"py-4 text-center",children:e.jsx("p",{className:"text-xs text-text-tertiary",children:"No input fields detected from the execution."})});const l=t.filter(c=>c.classification==="dynamic"),x=t.filter(c=>c.classification==="fixed");return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-text-tertiary",children:[e.jsxs("span",{children:[l.length," dynamic (user provides)"]}),e.jsxs("span",{children:[x.length," fixed (defaults from execution)"]})]}),l.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-status-success/70 mb-2",children:"Dynamic Inputs (required at invocation)"}),e.jsx("div",{className:"space-y-1",children:l.map(c=>{const u=t.indexOf(c),f=n===c.key;return e.jsx(pt,{field:c,editing:r,expanded:f,onToggleExpand:()=>d(f?null:c.key),onToggleClassification:()=>s(u),onUpdate:S=>o(u,S),onRemove:()=>m(u)},c.key)})})]}),x.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Fixed Defaults (from execution)"}),e.jsx("div",{className:"space-y-1",children:x.map(c=>{const u=t.indexOf(c),f=n===c.key;return e.jsx(pt,{field:c,editing:r,expanded:f,onToggleExpand:()=>d(f?null:c.key),onToggleClassification:()=>s(u),onUpdate:S=>o(u,S),onRemove:()=>m(u)},c.key)})})]})]})}function pt({field:t,editing:a,expanded:r,onToggleExpand:n,onToggleClassification:d,onUpdate:o,onRemove:s}){return e.jsxs("div",{className:"border border-surface-border rounded-lg overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:n,className:"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface-hover/50 transition-colors",children:[e.jsx("span",{className:"font-mono text-xs text-text-primary",children:t.key}),e.jsx("span",{className:"text-[9px] text-text-tertiary",children:t.type}),e.jsx(Ls,{classification:t.classification}),t.default!==void 0&&e.jsxs("span",{className:"text-[9px] font-mono text-text-tertiary truncate max-w-[120px]",children:["= ",JSON.stringify(t.default)]}),e.jsx("span",{className:"text-[9px] text-text-tertiary ml-auto truncate max-w-[150px]",children:t.source_tool}),e.jsx("svg",{className:`w-3 h-3 text-text-tertiary shrink-0 transition-transform ${r?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),r&&e.jsxs("div",{className:"px-3 pb-3 pt-1 border-t border-surface-border/50 space-y-2",children:[e.jsx("p",{className:"text-[10px] text-text-tertiary",children:t.description}),a&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Description"}),e.jsx("input",{type:"text",value:t.description,onChange:m=>o({description:m.target.value}),className:"input text-[11px] w-full mt-0.5"})]}),t.classification==="fixed"&&e.jsxs("div",{children:[e.jsx("label",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Default Value"}),e.jsx("input",{type:"text",value:t.default!==void 0?typeof t.default=="string"?t.default:JSON.stringify(t.default):"",onChange:m=>{let l=m.target.value;if(t.type==="number")l=Number(l)||0;else if(t.type==="boolean")l=l==="true";else try{l=JSON.parse(l)}catch{}o({default:l})},className:"input text-[11px] font-mono w-full mt-0.5"})]}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx("button",{type:"button",onClick:d,className:"text-[10px] text-accent hover:underline",children:t.classification==="dynamic"?"Make fixed (add default)":"Make dynamic (require input)"}),e.jsx("button",{type:"button",onClick:s,className:"text-[10px] text-status-error hover:underline ml-auto",children:"Remove"})]})]})]})]})}const Te="w-3 h-3",De="p-1 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised/60 transition-colors duration-150",qe="p-2 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised transition-colors duration-150";function $s({yamlText:t,configEditing:a,yamlDraft:r,setYamlDraft:n,yamlTextareaRef:d}){const[o,s]=p.useState(!1),[m,l]=p.useState(!1),x=p.useRef(null),c=p.useCallback(()=>{navigator.clipboard.writeText(t).then(()=>{l(!0),setTimeout(()=>l(!1),1500)})},[t]);return e.jsxs("div",{children:[e.jsx("h4",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"YAML Definition"}),e.jsxs("div",{ref:x,className:"relative",children:[e.jsxs("div",{className:"absolute top-2 right-2 z-10 flex items-center gap-0.5 bg-surface-sunken/90 rounded backdrop-blur-sm",children:[e.jsx("a",{href:"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md",target:"_blank",rel:"noopener noreferrer",className:De,title:"YAML Guide",children:e.jsx(dt,{className:Te})}),e.jsx("button",{onClick:c,className:De,title:"Copy YAML",children:m?e.jsx(Ae,{className:`${Te} text-status-success`}):e.jsx(xt,{className:Te})}),e.jsx("button",{onClick:()=>s(!0),className:De,title:"Fullscreen",children:e.jsx(Jt,{className:Te})})]}),a?e.jsx("textarea",{ref:d,value:r,onChange:u=>n(u.target.value),className:"w-full p-4 pr-28 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden",rows:r.split(`
|
|
2
|
+
`).length+1,style:{fieldSizing:"content"},spellCheck:!1}):e.jsx("pre",{className:"p-4 pr-28 bg-surface-sunken rounded-md text-xs font-mono text-text-secondary overflow-x-auto whitespace-pre",children:t})]}),e.jsxs(Lt,{open:o,onClose:()=>s(!1),sourceRef:x,children:[e.jsx("div",{className:"sticky top-0 float-right z-10",children:e.jsxs("div",{className:"flex items-center gap-0.5 bg-surface-sunken/80 rounded-md backdrop-blur-sm",children:[e.jsx("a",{href:"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md",target:"_blank",rel:"noopener noreferrer",className:qe,title:"YAML Guide",children:e.jsx(dt,{className:"w-5 h-5"})}),e.jsx("button",{onClick:c,className:qe,title:"Copy YAML",children:m?e.jsx(Ae,{className:"w-5 h-5 text-status-success"}):e.jsx(xt,{className:"w-5 h-5"})}),e.jsx("button",{onClick:()=>s(!1),className:qe,title:"Close (Esc)",children:e.jsx(Qt,{className:"w-5 h-5"})})]})}),a?e.jsx("textarea",{value:r,onChange:u=>n(u.target.value),className:"w-full min-h-[calc(100vh-80px)] p-6 bg-transparent text-sm font-mono text-text-primary leading-relaxed focus:outline-none resize-none",spellCheck:!1,autoFocus:!0}):e.jsx("pre",{className:"text-sm font-mono text-text-secondary leading-relaxed whitespace-pre",children:t})]})]})}function Os({manifest:t}){return e.jsxs("div",{children:[e.jsx("h4",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:"Activity Manifest"}),e.jsx("div",{className:"space-y-3",children:t.filter(a=>a.tool_source!=="trigger").map(a=>{const r=a.tool_arguments&&Object.keys(a.tool_arguments).length>0,n=a.input_mappings&&Object.keys(a.input_mappings).length>0;return!r&&!n?null:e.jsxs("div",{className:"bg-surface-sunken rounded-md p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-[10px] font-mono text-text-tertiary",children:a.activity_id}),e.jsx("span",{className:"text-xs font-medium text-text-primary",children:a.title}),a.mcp_tool_name&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface-raised text-text-secondary",children:a.mcp_tool_name})]}),n&&e.jsxs("div",{className:r?"mb-3":"",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Runtime Wiring"}),e.jsx("div",{className:"grid gap-1",children:Object.entries(a.input_mappings).map(([d,o])=>e.jsxs("div",{className:"flex items-baseline gap-2 text-xs",children:[e.jsx("span",{className:"font-mono text-text-secondary shrink-0",children:d}),e.jsx("span",{className:"text-text-tertiary shrink-0",children:"←"}),e.jsx("span",{className:"font-mono text-accent/70",children:typeof o=="object"?JSON.stringify(o):String(o)})]},d))})]}),r&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Discovery Reference"}),e.jsx("p",{className:"text-[10px] text-text-tertiary mb-1.5",children:"Values from the original execution, stored for context. Runtime values are determined by the wiring above."}),e.jsx("div",{className:"grid gap-1 opacity-60",children:Object.entries(a.tool_arguments).map(([d,o])=>{const s=typeof o=="string"?o:JSON.stringify(o),m=s.length>120;return e.jsxs("div",{className:"flex items-baseline gap-2 text-xs",children:[e.jsxs("span",{className:"font-mono text-text-secondary shrink-0",children:[d,":"]}),m?e.jsx("pre",{className:"font-mono text-text-tertiary whitespace-pre-wrap break-all flex-1",children:s}):e.jsx("span",{className:"font-mono text-text-tertiary truncate",children:s})]},d)})})]})]},a.activity_id)})})]})}function Ws({wf:t,resolvedInputSchema:a,resolvedOutputSchema:r,resolvedYaml:n,configEditing:d,setConfigEditing:o,canEditConfig:s,yamlDraft:m,setYamlDraft:l,inputSchemaDraft:x,setInputSchemaDraft:c,outputSchemaDraft:u,setOutputSchemaDraft:f,inputFieldMetaDraft:S,setInputFieldMetaDraft:i,onSave:b,onCancel:y,updateMutation:h,yamlTextareaRef:j,isCollapsed:w,onToggle:T,schemasGrid:v,unwrapped:k}){var I;const N=S.length>0,[_,L]=p.useState(!1),C=d?m:n??t.yaml_content,g=e.jsxs("div",{className:"space-y-6",children:[!k&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"flex items-center gap-3",children:d&&N&&e.jsx("button",{type:"button",onClick:()=>L(!_),className:"text-[10px] text-text-tertiary hover:text-text-primary",children:_?"Visual editor":"Advanced (JSON)"})}),e.jsx("div",{className:"flex items-center gap-3",children:d&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:y,className:"text-[10px] text-text-tertiary hover:text-text-primary",children:"Cancel"}),e.jsx("button",{onClick:b,disabled:h.isPending||m===t.yaml_content&&x===JSON.stringify(t.input_schema,null,2)&&u===JSON.stringify(t.output_schema,null,2),className:"text-[10px] text-accent hover:underline disabled:opacity-40 disabled:no-underline",children:h.isPending?"Saving...":"Save"})]})})]}),k&&d&&N&&e.jsx("div",{children:e.jsx("button",{type:"button",onClick:()=>L(!_),className:"text-[10px] text-text-tertiary hover:text-text-primary",children:_?"Visual editor":"Advanced (JSON)"})}),h.error&&e.jsx("p",{className:"text-xs text-status-error",children:h.error.message}),e.jsxs("div",{className:v?"grid grid-cols-1 lg:grid-cols-2 gap-6":"space-y-6",children:[e.jsx("div",{children:d&&N&&!_?e.jsxs(e.Fragment,{children:[e.jsx("h4",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Input Schema"}),e.jsx(Is,{fields:S,onChange:i,editing:d})]}):d?e.jsxs(e.Fragment,{children:[e.jsx("h4",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Input Schema"}),e.jsx("textarea",{value:x,onChange:M=>c(M.target.value),className:"w-full p-4 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden",rows:Math.max(x.split(`
|
|
3
|
+
`).length+1,6),style:{fieldSizing:"content"},spellCheck:!1})]}):e.jsx(U,{data:a??{},label:"Input Schema"})}),e.jsx("div",{children:d?e.jsxs(e.Fragment,{children:[e.jsx("h4",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Output Schema"}),e.jsx("textarea",{value:u,onChange:M=>f(M.target.value),className:"w-full p-4 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden",rows:Math.max(u.split(`
|
|
4
|
+
`).length+1,6),style:{fieldSizing:"content"},spellCheck:!1})]}):e.jsx(U,{data:r??{},label:"Output Schema"})})]}),e.jsx($s,{yamlText:C,configEditing:d,yamlDraft:m,setYamlDraft:l,yamlTextareaRef:j}),((I=t.activity_manifest)==null?void 0:I.length)>0&&e.jsx(Os,{manifest:t.activity_manifest})]});return k?g:e.jsx(ps,{sectionKey:"config",title:"Configuration",isCollapsed:w,onToggle:T,children:g})}const Rs={trigger:{bar:"bg-[#6C47FF]",dot:"bg-[#6C47FF]",hex:"#6C47FF",label:"Trigger"},mcp:{bar:"bg-blue-500",dot:"bg-blue-500",hex:"#3B82F6",label:"MCP"},db:{bar:"bg-blue-500",dot:"bg-blue-500",hex:"#3B82F6",label:"Database"},llm:{bar:"bg-violet-500",dot:"bg-violet-500",hex:"#8B5CF6",label:"LLM"},transform:{bar:"bg-emerald-500",dot:"bg-emerald-500",hex:"#10B981",label:"Transform"},signal:{bar:"bg-amber-500",dot:"bg-amber-500",hex:"#F59E0B",label:"Signal"}};function ut(t){return Rs[t]??{bar:"bg-gray-500",dot:"bg-gray-500",hex:"#6B7280",label:t}}function Je(t){return typeof t=="string"?[...t.matchAll(/\{([\w-]+)\./g)].map(a=>a[1]):Array.isArray(t)?t.flatMap(Je):t&&typeof t=="object"?Object.values(t).flatMap(Je):[]}function Bs(t,a){if(!t)return[];const r=t.indexOf(`${a}:`);if(r===-1)return[];const n=t.slice(r),d=n.indexOf("maps:");if(d===-1)return[];const o=n.slice(d),s=o.match(/\n {6,10}\w+:|^\n {0,8}\w+:/m);return[...(s?o.slice(0,o.indexOf(s[0],1)):o).matchAll(/\{([\w-]+)\./g)].map(l=>l[1])}function Fs(t,a){const r=new Set(t.map(d=>d.activity_id)),n=new Map;for(const d of t){const o=d.input_mappings?Object.values(d.input_mappings).flatMap(Je):[],s=Bs(a,d.activity_id),m=new Set([...o,...s]);for(const l of m)if(r.has(l)&&l!==d.activity_id){const x=`${l}->${d.activity_id}`;n.has(x)||n.set(x,{from:l,to:d.activity_id})}}return[...n.values()]}function Es(t,a){var o;const r=new Map;for(const s of t)r.set(s.activity_id,[]);for(const s of a)(o=r.get(s.to))==null||o.push(s.from);const n=new Map;function d(s,m){if(n.has(s))return n.get(s);if(m.has(s))return 0;m.add(s);const l=r.get(s)??[],x=l.length===0?0:Math.max(...l.map(c=>d(c,m)))+1;return n.set(s,x),x}for(const s of t)d(s.activity_id,new Set);return n}const ge=44,Ds=10,qs=24,zs=14;function Ys({manifest:t,selectedId:a,onSelect:r,yaml:n}){const d=p.useRef(null),[o,s]=p.useState(0);p.useEffect(()=>{const b=d.current;if(!b)return;const y=()=>{const j=zs*parseFloat(getComputedStyle(document.documentElement).fontSize);s(b.clientWidth-j)};y();const h=new ResizeObserver(y);return h.observe(b),()=>h.disconnect()},[]);const{edges:m,layerMap:l,numLayers:x,sortedEntries:c,rowIndex:u}=p.useMemo(()=>{const b=Fs(t,n),y=b.length>0?Es(t,b):new Map(t.map((v,k)=>[v.activity_id,k])),h=Math.max(1,...Array.from(y.values()))+1,j=t.map((v,k)=>({entry:v,origIdx:k}));j.sort((v,k)=>{const N=y.get(v.entry.activity_id)??0,_=y.get(k.entry.activity_id)??0;return N!==_?N-_:v.origIdx-k.origIdx});const w=j.map(v=>v.entry),T=new Map(w.map((v,k)=>[v.activity_id,k]));return{edges:b,layerMap:y,numLayers:h,sortedEntries:w,rowIndex:T}},[t,n]);if(t.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No activities in manifest"});const f=c.length*ge,S=Math.max(.7/x*100,4),i=[...new Set(t.map(b=>b.tool_source))];return e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center gap-3 mb-3",children:i.map(b=>{const y=ut(b);return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${y.dot}`}),e.jsx("span",{className:"text-[9px] text-text-tertiary",children:y.label})]},b)})}),e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"w-56 shrink-0"}),e.jsx("div",{className:"flex-1 relative h-5 border-b border-surface-border",children:Array.from({length:x}).map((b,y)=>e.jsx("span",{className:"absolute text-[9px] font-mono text-text-tertiary bottom-1 -translate-x-1/2",style:{left:`${(y+.5)/x*100}%`},children:y===0?"entry":`step ${y}`},y))})]}),e.jsxs("div",{ref:d,className:"relative",children:[c.map(b=>{const h=(l.get(b.activity_id)??0)/x*100,j=ut(b.tool_source),w=a===b.activity_id;return e.jsxs("div",{className:`flex items-center border-b border-surface-border cursor-pointer transition-colors ${w?"bg-accent/5":"hover:bg-surface-raised/30"}`,style:{height:ge},onClick:()=>r(w?null:b.activity_id),children:[e.jsxs("div",{className:"w-56 shrink-0 pr-4 flex items-center gap-2",children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${j.dot}`}),e.jsx("p",{className:"text-xs font-mono text-text-secondary truncate",title:b.title,children:b.title})]}),e.jsxs("div",{className:"flex-1 relative h-full",children:[Array.from({length:x+1}).map((T,v)=>e.jsx("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${v/x*100}%`}},v)),e.jsx("div",{className:`absolute rounded-sm transition-all ${j.bar} ${w?"ring-2 ring-accent ring-offset-1 ring-offset-surface":"hover:brightness-110"}`,style:{left:`calc(${h}% + 4px)`,width:`calc(${S}% - 8px)`,top:Ds,height:qs,minWidth:40},children:e.jsx("span",{className:"absolute inset-0 flex items-center px-2 text-[9px] font-mono text-white truncate",children:b.mcp_tool_name??b.tool_source})})]})]},b.activity_id)}),m.length>0&&o>0&&e.jsxs("svg",{className:"absolute top-0 left-56 pointer-events-none overflow-visible",style:{width:o,height:f},children:[e.jsx("defs",{children:e.jsx("marker",{id:"dag-edge-arrow",viewBox:"0 0 10 8",refX:"10",refY:"4",markerWidth:"6",markerHeight:"5",orient:"auto-start-reverse",children:e.jsx("path",{d:"M0 0 L10 4 L0 8 Z",fill:"#6B7280",opacity:"0.6"})})}),m.map((b,y)=>{const h=u.get(b.from)??0,j=u.get(b.to)??0,w=l.get(b.from)??0,T=l.get(b.to)??0,v=o/x,k=Math.max(v*.7-8,40),N=w*v+4+k,_=h*ge+ge/2,L=T*v+4,C=j*ge+ge/2,g=Math.abs(L-N)*.4;return e.jsx("path",{d:`M${N} ${_} C${N+g} ${_}, ${L-g} ${C}, ${L} ${C}`,fill:"none",stroke:"#6B7280",strokeWidth:1.5,opacity:.4,markerEnd:"url(#dag-edge-arrow)"},y)})]})]})]})}function Js({activityManifest:t,inputSchema:a,outputSchema:r,yamlContent:n,selectedNodeId:d,onNodeSelect:o,wf:s,configEditing:m,setConfigEditing:l,canEditConfig:x,yamlDraft:c,setYamlDraft:u,inputSchemaDraft:f,setInputSchemaDraft:S,outputSchemaDraft:i,setOutputSchemaDraft:b,inputFieldMetaDraft:y,setInputFieldMetaDraft:h,onSave:j,onCancel:w,updateMutation:T,yamlTextareaRef:v}){const[k,N]=p.useState("design");return p.useEffect(()=>{m&&(N("raw"),o(null))},[m,o]),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1 mb-4",children:[e.jsx("button",{onClick:()=>{N("design")},className:`px-2.5 py-1 text-[10px] font-medium rounded transition-colors ${k==="design"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"Design"}),e.jsx("button",{onClick:()=>{N("raw"),o(null)},className:`px-2.5 py-1 text-[10px] font-medium rounded transition-colors ${k==="raw"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"Raw"})]}),k==="design"?e.jsx(Ys,{manifest:t,selectedId:d,onSelect:o,yaml:n}):e.jsx(Ws,{wf:s,resolvedInputSchema:a,resolvedOutputSchema:r,resolvedYaml:n,configEditing:m,setConfigEditing:l,canEditConfig:x,yamlDraft:c,setYamlDraft:u,inputSchemaDraft:f,setInputSchemaDraft:S,outputSchemaDraft:i,setOutputSchemaDraft:b,inputFieldMetaDraft:y,setInputFieldMetaDraft:h,onSave:j,onCancel:w,updateMutation:T,yamlTextareaRef:v,isCollapsed:!1,onToggle:()=>{},schemasGrid:!0,unwrapped:!0})]})}function Qs({entry:t,onClose:a}){var d;const r=t.input_mappings&&Object.keys(t.input_mappings).length>0,n=((d=t.output_fields)==null?void 0:d.length)>0;return e.jsxs("div",{className:"space-y-4 text-xs",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-mono font-medium text-sm text-text-primary truncate",children:t.title}),e.jsx("p",{className:"font-mono text-[10px] text-text-tertiary mt-0.5 truncate",children:t.activity_id})]}),e.jsx("button",{onClick:a,className:"text-text-tertiary hover:text-text-primary text-[10px] shrink-0",children:"Close"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-x-6 gap-y-2",children:[e.jsx(he,{label:"Type",value:t.type}),e.jsx(he,{label:"Source",value:t.tool_source}),t.mcp_tool_name&&e.jsx(he,{label:"Tool",value:t.mcp_tool_name}),t.mcp_server_id&&e.jsx(he,{label:"Server",value:t.mcp_server_id}),t.model&&e.jsx(he,{label:"Model",value:t.model}),t.topic&&e.jsx(he,{label:"Topic",value:t.topic}),t.hook_topic&&e.jsx(he,{label:"Hook",value:t.hook_topic})]}),r&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Input Mappings"}),e.jsx("div",{className:"grid gap-1",children:Object.entries(t.input_mappings).map(([o,s])=>e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"font-mono text-text-secondary shrink-0",children:o}),e.jsx("span",{className:"text-text-tertiary shrink-0",children:"←"}),e.jsx("span",{className:"font-mono text-accent/70 truncate",children:typeof s=="object"?JSON.stringify(s):String(s)})]},o))})]}),n&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Output Fields"}),e.jsx("p",{className:"font-mono text-text-secondary leading-relaxed",children:t.output_fields.join(", ")})]}),t.prompt_template&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Prompt Template"}),e.jsx("pre",{className:"text-[11px] font-mono text-text-secondary whitespace-pre-wrap break-words leading-relaxed max-h-48 overflow-y-auto",children:t.prompt_template})]})]})}function he({label:t,value:a}){return e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:t}),e.jsx("p",{className:"font-mono text-text-primary",children:a})]})}const ze=["draft","active","archived"],Vs={draft:"Draft",active:"Active",archived:"Archived"},Ks={draft:{filled:"bg-status-draft border-status-draft",line:"bg-status-draft/30"},active:{filled:"bg-status-success border-status-success",line:"bg-status-success/30"},archived:{filled:"bg-text-tertiary border-text-tertiary",line:"bg-text-tertiary/30"}};function Us({status:t,sourceWorkflowId:a,contentVersion:r,deployedContentVersion:n,appId:d,appVersion:o,siblingCount:s,onDeploy:m,onArchive:l,onRestore:x,onDelete:c,onRegenerate:u,isPending:f,error:S}){const i=t==="deployed"?"active":t,b=ze.indexOf(i),y=r!=null&&r>(n??0);return e.jsxs("div",{children:[e.jsx(bt,{className:"mb-4",children:"Lifecycle"}),y&&i!=="draft"&&i!=="archived"&&e.jsxs("div",{className:"mb-4 px-3 py-2 rounded-md bg-status-pending/10 border border-status-pending/30",children:[e.jsx("p",{className:"text-[10px] font-semibold text-status-pending mb-1",children:"YAML modified"}),e.jsxs("p",{className:"text-[10px] text-text-secondary leading-relaxed",children:["v",r," edited since deploy (v",n,"). Redeploy to apply changes."]}),e.jsx("button",{onClick:m,disabled:f,className:"mt-1.5 text-[10px] font-medium text-status-pending hover:underline",children:f?"Deploying...":"Deploy now"})]}),e.jsx("div",{className:"space-y-0",children:ze.map((h,j)=>{const w=h===i,T=j<b,v=j>b,k=j===ze.length-1,N=Ks[h];return e.jsxs("div",{className:"flex items-stretch gap-3",children:[e.jsxs("div",{className:"flex flex-col items-center w-5 shrink-0",children:[e.jsx("span",{className:`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${w||T?N.filled:"bg-surface-sunken border-surface-border"}`}),!k&&e.jsx("span",{className:`w-px flex-1 ${T?N.line:"bg-surface-border"}`})]}),e.jsxs("div",{className:`pb-5 ${k?"pb-0":""}`,children:[e.jsx("p",{className:`text-xs font-medium ${w?"text-text-primary":v?"text-text-tertiary":"text-text-secondary"}`,children:Vs[h]}),w&&h==="draft"&&e.jsx("div",{className:"mt-2",children:e.jsx("button",{onClick:m,disabled:f,className:"btn-primary text-[11px] px-3 py-1",children:f?"Deploying...":"Deploy & Activate"})}),w&&h==="active"&&e.jsx("div",{className:"mt-2",children:e.jsx("button",{onClick:l,disabled:f,className:"text-[11px] text-text-tertiary hover:text-status-error",children:"Archive"})}),w&&h==="archived"&&x&&e.jsx("div",{className:"mt-2",children:e.jsx("button",{onClick:x,disabled:f,className:"text-[11px] font-medium text-accent hover:text-accent/80",children:f?"Restoring...":"Restore to Draft"})})]})]},h)})}),d&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-surface-border",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"App Namespace"}),e.jsx("p",{className:"text-xs font-mono text-text-primary",children:d}),e.jsx("div",{className:"flex items-center gap-3 mt-1.5",children:o!=null&&e.jsxs("span",{className:"text-[10px] text-text-secondary",children:["app v",o," ","→"," ",e.jsxs("span",{className:"text-accent",children:["v",o+1]})," on deploy"]})}),s!=null&&s>1&&e.jsxs("p",{className:"text-[10px] text-text-tertiary mt-1",children:[s," tool",s===1?"":"s"," in this namespace"]})]}),r!=null&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-surface-border",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tool Content"}),e.jsxs("p",{className:"text-xs font-mono text-text-primary",children:["v",r,n!=null&&e.jsxs("span",{className:"text-text-tertiary ml-1.5",children:["(deployed: v",n,")"]})]})]}),(t==="draft"||t==="archived")&&e.jsx("div",{className:"mt-4 pt-4 border-t border-surface-border",children:e.jsxs("button",{onClick:c,disabled:f,className:"inline-flex items-center gap-1.5 text-[11px] text-status-error/70 hover:text-status-error transition-colors hover:underline",children:[e.jsx(Vt,{className:"w-3.5 h-3.5",strokeWidth:1.5}),"Delete Compiled Workflow"]})}),S&&e.jsx("p",{className:"mt-3 text-[11px] text-status-error",children:S})]})}function Hs({versionsData:t,searchParams:a,setSearchParams:r,currentVersion:n,viewingVersion:d}){return e.jsxs("div",{children:[e.jsx(bt,{className:"mb-3",children:"Version History"}),e.jsx("div",{className:"space-y-1",children:t.versions.map(o=>{const s=o.version===n,m=d===o.version;return e.jsxs("button",{type:"button",onClick:()=>{const l=new URLSearchParams(a);s?l.delete("version"):l.set("version",String(o.version)),r(l)},className:`w-full text-left px-2 py-1.5 rounded text-xs transition-colors ${m?"bg-accent/10 text-accent":"text-text-secondary hover:bg-surface-sunken hover:text-text-primary"}`,children:[e.jsxs("span",{className:"font-mono font-medium",children:["v",o.version]}),s&&e.jsx("span",{className:"text-text-tertiary ml-1",children:"(current)"}),o.change_summary&&e.jsx("p",{className:"text-[10px] text-text-tertiary truncate mt-0.5",children:o.change_summary})]},o.version)})})]})}function Gs({feedbackText:t,setFeedbackText:a,dismissing:r,onClose:n,onRegenerate:d,isPending:o}){return e.jsxs("div",{className:"mb-4 p-4 bg-surface-sunken border border-surface-border rounded-lg overflow-hidden transition-all duration-250 ease-in-out",style:{animation:r?void 0:"fadeIn 300ms ease-out both",opacity:r?0:1,maxHeight:r?"0px":"400px",paddingTop:r?"0px":void 0,paddingBottom:r?"0px":void 0,marginBottom:r?"0px":void 0},children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"What should change?"}),e.jsx("button",{onClick:n,className:"text-text-tertiary hover:text-text-secondary transition-colors",children:e.jsx(Re,{className:"w-3.5 h-3.5"})})]}),e.jsx("textarea",{value:t,onChange:s=>a(s.target.value),placeholder:"E.g.: 'Only url, username, password, and screenshot_dir should be dynamic inputs. The steps array and script are implementation details.'",className:"w-full min-h-[80px] px-3 py-2 bg-surface border border-surface-border rounded-md text-xs text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}),e.jsxs("div",{className:"flex items-center justify-between mt-2",children:[e.jsx("p",{className:"text-[10px] text-text-tertiary",children:"This feedback guides the compiler. The current YAML will be replaced."}),e.jsx("button",{onClick:d,disabled:!t.trim()||o,className:"btn-primary text-xs shrink-0 ml-4",children:o?"Recompiling...":"Recompile Pipeline"})]})]})}function Ze({yamlId:t,onAdvance:a,onBack:r,onRegenerate:n,regeneratePending:d}){var Q,te,ue,Pe;const o=pe(),s=p.useRef(null),[m,l]=p.useState(""),[x,c]=p.useState(!1),[u,f]=p.useState(!1),S=()=>{f(!0),setTimeout(()=>{c(!1),f(!1)},250)},{data:i,refetch:b}=Ce(t),{data:y}=Ue(i?{app_id:i.app_id}:{}),h=((Q=y==null?void 0:y.workflows)==null?void 0:Q.length)??0,j=Math.max(...((te=y==null?void 0:y.workflows)==null?void 0:te.map(re=>parseInt(re.app_version||"0",10)))??[0]),{data:w}=ts(t),T=ss(),v=as(),k=rs(),N=ns(),_=is(),L=cs(),C=Fe(),[g,I]=p.useState(""),[M,O]=p.useState(""),[$,F]=p.useState(""),[se,J]=p.useState([]),[ae,q]=p.useState(!1),[B,E]=p.useState(null),W=B!==null&&i!=null&&B!==i.content_version,{data:Y}=ls(t,W?B:null),H=W&&Y?Y.yaml_content:i==null?void 0:i.yaml_content,z=W&&Y?Y.input_schema:i==null?void 0:i.input_schema,G=W&&Y?Y.output_schema:i==null?void 0:i.output_schema;p.useEffect(()=>{i&&(I(i.yaml_content),O(JSON.stringify(i.input_schema,null,2)),F(JSON.stringify(i.output_schema,null,2)),i.input_field_meta&&J(i.input_field_meta))},[i==null?void 0:i.id,i==null?void 0:i.content_version]);const ie=p.useMemo(()=>{const re=new URLSearchParams;return B!==null&&re.set("version",String(B)),re},[B]),de=p.useCallback(re=>{const xe=re.get("version");E(xe?parseInt(xe,10):null)},[]),[ne,X]=p.useState(null),P=W&&Y?Y.activity_manifest:(i==null?void 0:i.activity_manifest)??[],D=p.useMemo(()=>P.find(re=>re.activity_id===ne)??null,[P,ne]),Z=(i==null?void 0:i.status)!=="archived"&&!W,ce=async()=>{if(!i)return;let re,xe;try{re=JSON.parse(M)}catch{}try{xe=JSON.parse($)}catch{}await C.mutateAsync({id:i.id,yaml_content:g,...re?{input_schema:re}:{},...xe?{output_schema:xe}:{}}),q(!1),b()},A=()=>{i&&(I(i.yaml_content),O(JSON.stringify(i.input_schema,null,2)),F(JSON.stringify(i.output_schema,null,2)),q(!1))},R=async()=>{i&&(await T.mutateAsync(i.id),await v.mutateAsync(i.id),o.invalidateQueries({queryKey:["yamlWorkflowForSource"],refetchType:"all"}),o.invalidateQueries({queryKey:["yamlWorkflow"],refetchType:"all"}),b(),a())},K=async()=>{if(n){n(m.trim()),l(""),c(!1);return}try{await L.mutateAsync({id:t,compilation_feedback:m.trim()||void 0}),l(""),c(!1),b()}catch{}};if(!i)return e.jsx("p",{className:"text-sm text-text-secondary animate-pulse",children:"Loading workflow..."});const ee=T.isPending||v.isPending||k.isPending||N.isPending||L.isPending||_.isPending||!!d;return e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_240px] gap-6",children:[e.jsxs("div",{className:"min-w-0 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Deploy"}),e.jsx("p",{className:"text-base text-text-secondary",children:"Review and edit the workflow definition. Re/deploy when ready."})]}),e.jsx("div",{className:"flex items-center gap-3 shrink-0",children:ae?e.jsxs(e.Fragment,{children:[e.jsx(me,{icon:Re,label:"Cancel",onClick:()=>{A(),q(!1)}}),e.jsx(me,{icon:Ae,label:C.isPending?"Saving...":"Save",onClick:ce,disabled:C.isPending||g===i.yaml_content&&M===JSON.stringify(i.input_schema,null,2)&&$===JSON.stringify(i.output_schema,null,2)})]}):e.jsxs(e.Fragment,{children:[e.jsx(me,{icon:Kt,label:"Recompile with Feedback",onClick:()=>{c(!x)}}),e.jsx(me,{icon:We,label:"Manual Edit",onClick:()=>{q(!0),c(!1)}})]})})]}),x&&e.jsx(Gs,{feedbackText:m,setFeedbackText:l,dismissing:u,onClose:S,onRegenerate:K,isPending:L.isPending}),L.isError&&e.jsx("div",{className:"mb-4 px-3 py-2 bg-status-error/5 border border-status-error/20 rounded-md",children:e.jsx("p",{className:"text-xs text-status-error",children:((ue=L.error)==null?void 0:ue.message)||"Recompilation failed"})}),W&&e.jsxs("div",{className:"mb-4 px-3 py-2 bg-accent-muted/20 border border-accent-muted/40 rounded-md flex items-center justify-between",children:[e.jsxs("span",{className:"text-xs text-accent",children:["Viewing version ",B]}),e.jsx("button",{onClick:()=>E(null),className:"text-xs text-accent hover:underline",children:"Back to current"})]}),e.jsx(Js,{yamlContent:H,activityManifest:P,inputSchema:z,outputSchema:G,wf:i,configEditing:ae,setConfigEditing:q,canEditConfig:Z,yamlDraft:g,setYamlDraft:I,inputSchemaDraft:M,setInputSchemaDraft:O,outputSchemaDraft:$,setOutputSchemaDraft:F,inputFieldMetaDraft:se,setInputFieldMetaDraft:J,onSave:ce,onCancel:A,updateMutation:C,yamlTextareaRef:s,selectedNodeId:ne,onNodeSelect:X}),e.jsxs(le,{children:[e.jsx("button",{onClick:r,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),i.status==="active"?e.jsx("button",{onClick:a,disabled:x,className:"btn-primary text-xs",children:"Next: Test"}):e.jsx("button",{onClick:R,disabled:ee||x,className:"btn-primary text-xs",children:ee?"Deploying...":"Deploy & Activate"})]})]}),e.jsx("div",{className:"space-y-6",children:e.jsx("div",{className:"sticky top-6",children:D?e.jsx(Qs,{entry:D,onClose:()=>X(null)}):e.jsxs(e.Fragment,{children:[e.jsx(Us,{status:i.status,sourceWorkflowId:i.source_workflow_id,contentVersion:i.content_version,deployedContentVersion:i.deployed_content_version,appId:i.app_id,appVersion:j,siblingCount:h,onDeploy:R,onArchive:()=>k.mutateAsync(t).then(()=>b()),onRestore:()=>N.mutateAsync(t).then(()=>b()),onDelete:async()=>{await _.mutateAsync(t),o.invalidateQueries({queryKey:["yamlWorkflowForSource"],refetchType:"all"}),r()},onRegenerate:K,isPending:ee,error:void 0}),(((Pe=w==null?void 0:w.versions)==null?void 0:Pe.length)??0)>1&&e.jsx(Hs,{versionsData:w,searchParams:ie,setSearchParams:de,currentVersion:i.content_version,viewingVersion:W?B:null})]})})})]})}const ht={mcp:{border:"border-blue-500",text:"text-blue-500",icon:"MCP"},db:{border:"border-blue-500",text:"text-blue-500",icon:"DB"},llm:{border:"border-violet-500",text:"text-violet-500",icon:"LLM"},transform:{border:"border-emerald-500",text:"text-emerald-500",icon:"Map"}};function Xs({steps:t,manifest:a,isComplete:r}){const n=a.filter(s=>s.type==="worker"),d=n.length,o=n.map((s,m)=>{const l=t.find(u=>u.activityId===s.activity_id),x=s.tool_source||"mcp",c=ht[x]||ht.mcp;return{activityId:s.activity_id,title:s.title||s.mcp_tool_name||s.activity_id,toolName:s.mcp_tool_name,toolSource:x,colors:c,stepIndex:m,status:(l==null?void 0:l.status)||"pending",error:l==null?void 0:l.error}});return e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-text-secondary mb-4",children:r?`All ${d} steps completed`:`Running step ${o.filter(s=>s.status==="completed").length+1} of ${d}...`}),e.jsx("div",{className:"space-y-0",children:o.map((s,m)=>{const l=m===o.length-1;return e.jsxs("div",{className:"flex items-stretch gap-3",children:[e.jsxs("div",{className:"flex flex-col items-center w-5 shrink-0",children:[e.jsx("span",{className:`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${s.status==="completed"?"bg-status-success border-status-success":s.status==="running"?`${s.colors.border} bg-transparent animate-pulse`:s.status==="failed"?"bg-status-error border-status-error":"bg-surface-sunken border-surface-border"}`}),!l&&e.jsx("span",{className:`w-px flex-1 transition-colors ${s.status==="completed"?"bg-status-success/30":"bg-surface-border"}`})]}),e.jsxs("div",{className:`pb-4 ${l?"pb-0":""}`,children:[e.jsx("p",{className:`text-xs font-medium ${s.status==="running"?"text-text-primary":s.status==="completed"?"text-text-secondary":s.status==="failed"?"text-status-error":"text-text-tertiary"}`,children:s.title}),e.jsxs("div",{className:"flex items-center gap-2 mt-0.5",children:[e.jsx("span",{className:`text-[9px] font-mono px-1 py-0.5 rounded border ${s.colors.border} ${s.colors.text} bg-transparent`,children:s.colors.icon}),s.toolName&&e.jsx("span",{className:"text-[10px] text-text-tertiary font-mono",children:s.toolName})]}),s.error&&e.jsx("p",{className:"text-[10px] text-status-error mt-1",children:s.error})]})]},s.activityId)})}),r&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-3 text-center",children:"Closing..."})]})}function Zs({sidebarOpen:t,activeJobId:a,activitySteps:r,activityManifest:n,jobComplete:d,invokeJsonMode:o,setInvokeJsonMode:s,invokeJson:m,setInvokeJson:l,invokeFields:x,setInvokeFields:c,executeAs:u,setExecuteAs:f,invokeError:S,invokePending:i,onInvoke:b,onClose:y}){return!t&&!a?e.jsx("div",{className:"text-center py-8",children:e.jsx("p",{className:"text-xs text-text-tertiary",children:'Click "Run Test" to invoke the compiled pipeline'})}):e.jsx("div",{style:{animation:"fadeIn 300ms ease-out both"},children:a?e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:"Execution"}),e.jsx(Xs,{steps:r,manifest:n??[],isComplete:d})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Test Inputs"}),e.jsx("button",{onClick:()=>{if(!o)l(JSON.stringify(x,null,2));else try{c(JSON.parse(m))}catch{}s(!o)},className:"text-[10px] text-accent hover:underline",children:o?"Form view":"JSON view"})]}),e.jsx(fs,{selected:u,onChange:f}),e.jsx("div",{className:"mt-3",children:o?e.jsx("textarea",{value:m,onChange:h=>l(h.target.value),className:"w-full min-h-[200px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("div",{className:"space-y-3 max-h-[400px] overflow-y-auto",children:Object.entries(x).map(([h,j])=>e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:h}),typeof j=="boolean"?e.jsxs("select",{value:String(j),onChange:w=>c({...x,[h]:w.target.value==="true"}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",children:[e.jsx("option",{value:"true",children:"true"}),e.jsx("option",{value:"false",children:"false"})]}):typeof j=="object"?e.jsx("textarea",{value:JSON.stringify(j,null,2),onChange:w=>{try{c({...x,[h]:JSON.parse(w.target.value)})}catch{}},className:"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("input",{type:typeof j=="number"?"number":"text",value:String(j??""),onChange:w=>c({...x,[h]:typeof j=="number"?Number(w.target.value):w.target.value}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"})]},h))})}),S&&e.jsx("p",{className:"mt-2 text-xs text-status-error",children:S}),e.jsxs("div",{className:"flex justify-end gap-3 mt-4",children:[e.jsx("button",{onClick:y,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Cancel"}),e.jsx("button",{onClick:b,disabled:i,className:"btn-primary text-xs",children:i?"Starting...":"Invoke"})]})]})})}function je({children:t}){return e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-widest text-text-tertiary",children:t}),e.jsx("span",{className:"flex-1 border-b border-surface-border"})]})}function Ct(t){const a=new Date(t.created_at),r=a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n=a.toLocaleDateString([],{month:"short",day:"numeric"}),d=t.status==="completed"||Number(t.status)===0?"completed":t.is_live?"running":"failed";return`${n} ${r} — ${d}`}function ea({jobs:t,selectedRunId:a,onSelectRun:r,deterministicInput:n,deterministicOutput:d,inputSchema:o,runLoading:s,selectedRunExecution:m}){return e.jsxs(e.Fragment,{children:[t.length>0&&a&&e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Pipeline Run"}),e.jsx("select",{value:a,onChange:l=>r(l.target.value),className:"bg-transparent border-none text-[10px] text-accent hover:text-accent/80 cursor-pointer focus:outline-none p-0 text-right",children:t.map(l=>e.jsx("option",{value:l.workflow_id,children:Ct(l)},l.workflow_id))})]}),e.jsx(je,{children:"Input"}),e.jsx("div",{className:"mb-6",children:n?e.jsx(U,{data:n,defaultMode:"tree"}):a&&o?e.jsx(U,{data:o,defaultMode:"tree"}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:'No runs yet — click "Run Test" to invoke the pipeline'})}),e.jsx(je,{children:"Output"}),e.jsxs("div",{className:"mb-6",children:[d?e.jsx(U,{data:d,defaultMode:"tree"}):a&&s?e.jsx("p",{className:"text-xs text-text-tertiary animate-pulse",children:"Loading..."}):a&&m?e.jsx(U,{data:m.result??m,defaultMode:"tree"}):a?e.jsx("p",{className:"text-xs text-text-tertiary animate-pulse",children:"Loading..."}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No runs yet"}),(m==null?void 0:m.duration_ms)!=null&&e.jsxs("p",{className:"text-[10px] text-text-tertiary mt-2",children:[(m.duration_ms/1e3).toFixed(1),"s"]})]})]})}function ta({jobs:t,selectedRunId:a,onSelectRun:r,originalEnvelope:n,resolvedPrompt:d,originalOutput:o,originalDurationMs:s,deterministicInput:m,deterministicOutput:l,inputSchema:x,runLoading:c,selectedRunExecution:u}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-8 mb-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Original MCP Query"}),e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:"Dynamic LLM orchestration"})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Compiled Pipeline Run"}),t.length>0&&a&&e.jsx("select",{value:a,onChange:f=>r(f.target.value),className:"mt-0.5 bg-transparent border-none text-[10px] text-accent hover:text-accent/80 cursor-pointer focus:outline-none p-0 text-right direction-rtl",children:t.map(f=>e.jsx("option",{value:f.workflow_id,children:Ct(f)},f.workflow_id))}),!a&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:"No runs yet"})]})]}),e.jsx(je,{children:"Input"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6",children:[e.jsx("div",{children:n?e.jsx(U,{data:n,defaultMode:"tree"}):d?e.jsx("p",{className:"text-xs text-text-primary leading-relaxed px-3 py-2 bg-surface-sunken rounded-md",children:d}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Loading..."})}),e.jsx("div",{children:m?e.jsx(U,{data:m,defaultMode:"tree"}):a&&x?e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] text-text-tertiary italic mb-1",children:"Stored defaults"}),e.jsx(U,{data:x,defaultMode:"tree"})]}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No runs yet"})})]}),e.jsx(je,{children:"Output"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6",children:[e.jsxs("div",{children:[o?e.jsx(U,{data:o,defaultMode:"tree"}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No output"}),s!=null&&e.jsxs("p",{className:"text-[10px] text-text-tertiary mt-2",children:[(s/1e3).toFixed(1),"s"]})]}),e.jsxs("div",{children:[l?e.jsx(U,{data:l,defaultMode:"tree"}):a&&c?e.jsx("p",{className:"text-xs text-text-tertiary animate-pulse",children:"Loading..."}):a&&u?e.jsx(U,{data:u.result??u,defaultMode:"tree"}):a?e.jsx("p",{className:"text-xs text-text-tertiary animate-pulse",children:"Loading..."}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No runs yet"}),(u==null?void 0:u.duration_ms)!=null&&e.jsxs("p",{className:"text-[10px] text-text-tertiary mt-2",children:[(u.duration_ms/1e3).toFixed(1),"s"]})]})]})]})}function et({yamlId:t,originalWorkflowId:a,originalResult:r,originalPrompt:n,onBack:d,onAdvance:o,builderMode:s}){var de,ne,X;const m=pe(),[l,x]=fe(),{data:c}=Ce(t),{data:u}=us({entity:c==null?void 0:c.graph_topic,app_id:(c==null?void 0:c.app_id)||"longtail",limit:10}),f=l.get("run"),S=P=>{x(D=>{const Z=new URLSearchParams(D);return P?Z.set("run",P):Z.delete("run"),Z},{replace:!0})},[i,b]=p.useState(f),y=P=>{b(P),S(P)},{data:h,isLoading:j}=hs(i??"",(c==null?void 0:c.app_id)||"longtail"),[w,T]=p.useState(!1),[v,k]=p.useState(!1),[N,_]=p.useState({}),[L,C]=p.useState("{}"),[g,I]=p.useState(""),[M,O]=p.useState(null),$=os(),{steps:F,isComplete:se}=Rt(M);p.useEffect(()=>{if(c!=null&&c.input_schema){const P=gs(c.input_schema);_(P),C(JSON.stringify(P,null,2))}},[c==null?void 0:c.id]);const J=(u==null?void 0:u.jobs)??[];p.useEffect(()=>{!i&&!f&&J.length>0&&y(J[0].workflow_id)},[J.length]),p.useEffect(()=>{f&&!i&&b(f)},[f]),p.useEffect(()=>{if(se&&M){const P=M,D=setTimeout(()=>{y(P),O(null),T(!1),m.invalidateQueries({queryKey:["mcpRuns"],refetchType:"all"}),m.invalidateQueries({queryKey:["mcpRunExecution",P],refetchType:"all"})},1200);return()=>clearTimeout(D)}},[se,M]);const ae=async()=>{if(c)try{const P=v?JSON.parse(L):N,D=await $.mutateAsync({id:c.id,data:P,sync:!1,...g?{execute_as:g}:{}});D.job_id&&(O(D.job_id),y(D.job_id))}catch{}},q=()=>{O(null),T(!0)},{data:B}=Ye(s?"":a??""),{data:E}=Ge(s?"":a??""),W=(de=B==null?void 0:B.result)==null?void 0:de.data,Y=p.useMemo(()=>{if(s||!(E!=null&&E.envelope))return null;try{return typeof E.envelope=="string"?JSON.parse(E.envelope):E.envelope}catch{return null}},[s,E==null?void 0:E.envelope]),H=((ne=Y==null?void 0:Y.data)==null?void 0:ne.prompt)??n;if(!c)return e.jsx("p",{className:"text-sm text-text-secondary animate-pulse",children:"Loading..."});const z=s?null:(W==null?void 0:W.result)??(typeof(W==null?void 0:W.summary)=="string"?Se(W.summary):null)??(r==null?void 0:r.result)??(typeof(r==null?void 0:r.summary)=="string"?Se(r.summary):null)??r;let G=null,ie=null;if(h!=null&&h.result){const P=h.result;if(typeof P.response=="string"){const D=P.response.match(/```json\s*([\s\S]*?)```/);if(D)try{G=JSON.parse(D[1].trim())}catch{G=P}else G=Se(P.response)??P}else G=P}if((X=h==null?void 0:h.events)!=null&&X.length){const P=h.events.find(D=>{var Z;return D.event_type==="activity_task_completed"&&D.is_system&&((Z=D.attributes)==null?void 0:Z.result)&&Object.keys(D.attributes.result).length>0});ie=P?P.attributes.result:null}return e.jsxs("div",{children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_400px] gap-8 min-w-0",children:[e.jsxs("div",{className:"min-w-0 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Test"}),e.jsx("p",{className:"text-base text-text-secondary",children:s?"Run the pipeline with test inputs and review the results.":"Run the pipeline with test inputs and compare results against the original execution."})]}),e.jsx(me,{icon:Ut,label:"Run Test",onClick:q})]}),s?e.jsx(ea,{jobs:J,selectedRunId:i,onSelectRun:y,deterministicInput:ie,deterministicOutput:G,inputSchema:c.input_schema,runLoading:j,selectedRunExecution:h}):e.jsx(ta,{jobs:J,selectedRunId:i,onSelectRun:y,originalEnvelope:Y,resolvedPrompt:H,originalOutput:z,originalDurationMs:B==null?void 0:B.duration_ms,deterministicInput:ie,deterministicOutput:G,inputSchema:c.input_schema,runLoading:j,selectedRunExecution:h})]}),e.jsx("div",{className:"space-y-6",children:e.jsx("div",{className:"sticky top-6",children:e.jsx(Zs,{sidebarOpen:w,activeJobId:M,activitySteps:F,activityManifest:c.activity_manifest,jobComplete:se,invokeJsonMode:v,setInvokeJsonMode:k,invokeJson:L,setInvokeJson:C,invokeFields:N,setInvokeFields:_,executeAs:g,setExecuteAs:I,invokeError:$.isError?$.error.message:void 0,invokePending:$.isPending,onInvoke:ae,onClose:()=>T(!1)})})})]}),e.jsxs(le,{children:[e.jsx("button",{onClick:d,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),!s&&e.jsx("button",{onClick:o,className:"btn-primary text-xs",children:"Next: Verify"})]})]})}function sa(){var se,J,ae,q,B,E,W,Y,H;const t=Ke(),{workflowId:a}=Be(),[r,n]=fe(),[d,o]=p.useState(null),s=ws();He(a);const{data:m,refetch:l}=St(a),x=(se=m==null?void 0:m.result)==null?void 0:se.data,c=!!(x!=null&&x.yaml),u=!!(x!=null&&x.clarification_needed),f=!m||!c&&!u&&!((J=x==null?void 0:x.title)!=null&&J.includes("Failed")),S=x==null?void 0:x.name,{data:i}=Ue(S?{search:S,limit:1}:{}),b=(q=(ae=i==null?void 0:i.workflows)==null?void 0:ae[0])==null?void 0:q.id,y=d||b||null,{data:h}=Ce(y||""),j=(h==null?void 0:h.status)||"draft",w=j==="deployed"||j==="active",T=["Describe","Profile","Deploy","Test"];let v=1;c&&(v=2),y&&(v=3),w&&(v=4);const k=r.get("step"),[N,_]=p.useState(null),C=N??(k?Math.min(Number(k),v):c?2:1);p.useEffect(()=>{!k&&m&&n({mode:"builder",step:String(C)},{replace:!0})},[m,C]);const g=z=>{z<=v&&(_(z),n({mode:"builder",step:String(z)}))},{data:I}=$e(a),M=(B=I==null?void 0:I.events)==null?void 0:B.find(z=>z.event_type==="workflow_execution_started"),O=Array.isArray((E=M==null?void 0:M.attributes)==null?void 0:E.input)?M.attributes.input[0]:(W=M==null?void 0:M.attributes)==null?void 0:W.input,$=((Y=O==null?void 0:O.data)==null?void 0:Y.prompt)||((H=O==null?void 0:O.data)==null?void 0:H.question)||void 0,F=async z=>{if(!(x!=null&&x.yaml)||!$)return;const G=await s.mutateAsync({prompt:$,prior_yaml:(h==null?void 0:h.yaml_content)||x.yaml,feedback:z,tags:x.tags});t(`/mcp/queries/${G.workflow_id}?mode=builder`,{replace:!0})};return e.jsxs("div",{className:"flex flex-col min-h-[calc(100vh-12rem)]",children:[e.jsx(Ie,{title:"MCP Tool Designer",actions:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-accent/10 text-accent font-medium",children:"Direct Build"}),e.jsx(ye,{status:u?"pending":f?"in_progress":c?"completed":"failed"})]})}),e.jsx(Xe,{labels:T,current:C,maxReachable:v,onStepClick:g}),e.jsxs("div",{className:"flex-1 mt-4",children:[C===1&&e.jsx(Ts,{workflowId:a,status:u?"clarification":f?"in_progress":c?"completed":"failed",builderData:x,onBuilt:()=>{l(),_(2)},onNext:()=>g(2)}),C===2&&c&&e.jsx(As,{builderData:x,resolvedYamlId:y,originalPrompt:$,onBack:()=>g(1),onCreate:z=>{o(z),g(3)},onNext:()=>g(3)}),C===3&&y&&e.jsx(Ze,{yamlId:y,onAdvance:()=>g(4),onBack:()=>g(2),onRegenerate:F,regeneratePending:s.isPending}),C===4&&y&&e.jsx(et,{yamlId:y,originalWorkflowId:a,originalResult:void 0,originalPrompt:$,onBack:()=>g(3),onAdvance:()=>{},builderMode:!0})]})]})}function aa(t){const a="w-4 h-4 shrink-0";return t?t==="active"?e.jsx(Xt,{className:`${a} text-status-success`,strokeWidth:1.5}):t==="deployed"?e.jsx(Zt,{className:`${a} text-accent`,strokeWidth:1.5}):t==="draft"?e.jsx(es,{className:`${a} text-accent/75`,strokeWidth:1.5}):e.jsx(be,{className:`${a} text-accent animate-spin`,strokeWidth:1.5}):e.jsx(be,{className:`${a} text-text-tertiary animate-spin`,strokeWidth:1.5})}function ra({plan:t,namespaces:a,yamlStatuses:r,activeWorkflow:n,isAddOpen:d,onSelect:o,onAdd:s}){const m=p.useMemo(()=>{var c;const x={};for(const u of t)(x[c=u.namespace]||(x[c]=[])).push(u);return x},[t]),l=a.length>1;return e.jsxs("nav",{className:"w-56 shrink-0 overflow-y-auto sticky top-0 self-start",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Pipeline Tools"}),s&&e.jsx("button",{onClick:s,className:`w-6 h-6 flex items-center justify-center rounded-full border transition-all duration-200 ${d?"bg-accent/20 border-accent/40 text-accent rotate-0":"border-accent/30 text-accent/60 hover:bg-accent/10 hover:border-accent/50 hover:text-accent"}`,title:d?"Cancel":"Add additional tools",children:d?e.jsx(Ht,{className:"w-3 h-3",strokeWidth:2}):e.jsx(Gt,{className:"w-3 h-3",strokeWidth:2})})]}),e.jsx("div",{className:"space-y-0.5",children:a.map(x=>e.jsxs("div",{children:[l&&e.jsx("p",{className:"px-3 pt-3 pb-1 text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:x}),(m[x]||[]).map(c=>{const u=n===c.name;return e.jsxs("button",{onClick:()=>o(c.name),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md transition-colors duration-150 ${u?"bg-surface-hover text-text-primary":"text-text-secondary hover:text-text-primary hover:bg-surface-hover"}`,children:[aa(r[c.name]),e.jsxs("div",{className:"min-w-0 text-left",children:[e.jsx("span",{className:"text-sm block truncate",children:c.name}),e.jsx("span",{className:"text-[10px] text-text-tertiary block truncate",children:c.description})]})]},c.name)})]},x))})]})}function na({yamlId:t,planItem:a,lockedAppId:r,isSaved:n,onSaved:d,onNavigateDeploy:o}){const{data:s}=Ce(t),m=Fe(),[l,x]=p.useState(r||"longtail"),[c,u]=p.useState(""),[f,S]=p.useState(""),[i,b]=p.useState([]),[y,h]=p.useState(null),[j,w]=p.useState(!1);p.useEffect(()=>{if(s&&s.id!==y){x(r||s.app_id||"longtail");const _=oe(a.name);u(s.name!==_&&s.name?oe(s.name):_),S(s.description||a.description||""),b(s.tags||[]),h(s.id),w(!1)}},[s,a,r,y]),p.useEffect(()=>{r&&x(r)},[r]);const T=async()=>{if(!s)return;const _=Le(l),L=oe(c);let C=s.yaml_content||"";const g=C.match(/^\s*-?\s*subscribes:\s*(.+)$/m),I=g?g[1].trim():s.graph_topic;C=C.replace(/^(\s*id:\s*)(.+)$/m,`$1${_}`),C=C.replace(/^(\s*-?\s*subscribes:\s*)(.+)$/m,`$1${L}`),I&&(C=C.replace(new RegExp(`^(\\s*topic:\\s*)${I.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"gm"),`$1${L}`));const M=Math.random().toString(36).slice(2,6),O=[...C.matchAll(/^ {8}(\w+_[a-z0-9]{4}):\s*$/gm)].map($=>$[1]);for(const $ of O){const F=$.replace(/_[a-z0-9]{4}$/,`_${M}`);$!==F&&(C=C.replace(new RegExp($.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),F))}await m.mutateAsync({id:t,name:L,description:f,tags:i,app_id:_,graph_topic:L,yaml_content:C}),w(!1),d(_)};if(!s)return e.jsx("div",{className:"text-sm text-text-tertiary py-8 text-center",children:"Loading workflow..."});const v=n&&!j,k=!n||j,N=!!r;return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Profile"}),e.jsxs("p",{className:"text-base text-text-secondary mb-6",children:["Configure the MCP server and tool identity for ",e.jsx("span",{className:"font-medium text-text-primary",children:a.name}),"."]}),e.jsxs("div",{className:"grid grid-cols-[300px_1fr] gap-4 mb-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"MCP Server Name"}),k&&!N?e.jsx("input",{value:l,onChange:_=>x(Le(_.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",placeholder:"lowercase letters only"}):e.jsx("p",{className:"text-sm font-mono text-text-primary py-1.5",children:s.app_id||l}),N&&k&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1",children:"Locked to match other workflows in this set."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"MCP Tool Name"}),k?e.jsx("input",{value:c,onChange:_=>u(oe(_.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",placeholder:"snake_case tool name (e.g. take_screenshot)"}):e.jsx("p",{className:"text-sm font-mono text-text-primary py-1.5",children:s.name||c})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tags"}),k?e.jsx(Ee,{tags:i,onChange:b,compact:!0}):e.jsx("div",{className:"flex flex-wrap gap-1.5 py-1",children:(s.tags||i).map(_=>e.jsx("span",{className:"px-2 py-0.5 text-sm bg-surface-raised text-text-primary rounded",children:_},_))})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Description"}),v&&e.jsxs("button",{onClick:()=>w(!0),className:"flex items-center gap-1 text-[10px] text-accent hover:text-accent/80 transition-colors",children:[e.jsx(We,{className:"w-3 h-3",strokeWidth:1.5}),"Edit"]})]}),k?e.jsx("textarea",{value:f,onChange:_=>S(_.target.value),className:"w-full flex-1 min-h-[100px] bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs font-mono text-text-primary resize-none focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("p",{className:"text-sm text-text-primary leading-relaxed py-1.5",children:s.description||f}),j&&e.jsxs("div",{className:"flex justify-end gap-2 mt-2",children:[e.jsx("button",{onClick:()=>w(!1),className:"text-[10px] text-text-tertiary hover:text-text-primary",children:"Cancel"}),e.jsx("button",{onClick:T,disabled:m.isPending,className:"text-[10px] text-accent hover:text-accent/80 font-medium",children:m.isPending?"Saving...":"Save Changes"})]})]})]}),m.isError&&e.jsx("p",{className:"text-xs text-status-error mb-4",children:m.error.message}),e.jsx("div",{className:"flex justify-end",children:v?e.jsx("button",{onClick:o,className:"btn-primary text-xs",children:"Next: Deploy"}):j?null:e.jsx("button",{onClick:T,disabled:m.isPending||!c.trim()||!l.trim(),className:"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed",children:m.isPending?"Saving...":"Save Profile"})})]})}function ia(t){switch(t){case"leaf":return"Leaf";case"composition":return"Composition";case"router":return"Router";default:return t}}function ca({specification:t,description:a,plan:r,isPlanning:n,isFailed:d,onContinue:o}){return e.jsxs("div",{className:"space-y-6",children:[t&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Specification"}),e.jsx("div",{className:"rounded-md bg-surface-sunken/50 px-4 py-3",children:e.jsx("p",{className:"text-xs font-mono text-text-primary leading-relaxed whitespace-pre-wrap",children:t})})]}),n&&e.jsxs("div",{className:"flex items-center gap-3 py-4",children:[e.jsx(be,{className:"w-4 h-4 text-accent animate-spin"}),e.jsx("span",{className:"text-sm text-text-secondary",children:"Analyzing specification and generating plan..."})]}),d&&e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-lg border border-status-error/20 bg-status-error/5",children:[e.jsx(Nt,{className:"w-4 h-4 text-status-error"}),e.jsx("span",{className:"text-sm text-status-error",children:"Plan generation failed."})]}),r.length>0&&e.jsxs("div",{children:[a&&e.jsx("p",{className:"text-sm text-text-secondary mb-4 leading-relaxed",children:a}),e.jsxs("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:["Planned Workflows (",r.length,")"]}),e.jsx("div",{className:"space-y-2",children:r.map(s=>e.jsxs("div",{className:"px-3 py-2.5 rounded-md bg-surface-raised/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium text-text-primary",children:s.name}),e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-surface-sunken text-text-tertiary",children:ia(s.role)})]}),e.jsx("p",{className:"text-[11px] text-text-secondary mt-1",children:s.description}),s.dependencies.length>0&&e.jsxs("div",{className:"flex items-center gap-1 mt-1",children:[e.jsx(Ve,{className:"w-2.5 h-2.5 text-text-tertiary"}),e.jsx("span",{className:"text-[10px] text-text-tertiary",children:s.dependencies.join(", ")})]})]},s.name))})]}),!n&&!d&&r.length>0&&e.jsx("button",{onClick:o,className:"px-4 py-2 bg-accent text-white text-xs font-medium rounded-md hover:bg-accent/90 transition-colors",children:"Continue to Profile"})]})}function la({isOpen:t,addSubmitted:a,addSpec:r,setAddSpec:n,planCount:d,isPending:o,isError:s,errorMessage:m,onSubmit:l,onCancel:x,onDismiss:c}){return e.jsx("div",{className:"transition-all duration-300 ease-in-out grid",style:{gridTemplateRows:t?"1fr":"0fr",opacity:t?1:0,marginBottom:t?"24px":"0px"},children:e.jsx("div",{className:"overflow-hidden",children:e.jsx("div",{className:"rounded-lg border border-accent/20 bg-gradient-to-b from-accent/[0.04] to-transparent p-5",children:a?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-3 py-6 justify-center",children:[e.jsx(be,{className:"w-5 h-5 text-accent animate-spin",strokeWidth:1.5}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-text-primary",children:"Building new tools..."}),e.jsx("p",{className:"text-[11px] text-text-tertiary mt-0.5",children:"Watch the sidebar — new tools will appear as they're built."})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-[10px] text-text-tertiary",children:[d," tool",d===1?"":"s"," in set"]}),e.jsx("button",{onClick:c,className:"text-[10px] text-text-tertiary hover:text-text-primary transition-colors",children:"Dismiss"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm font-medium text-text-primary mb-1",children:"Expand this Toolset"}),e.jsx("p",{className:"text-[11px] text-text-tertiary mb-4",children:"Describe additional activities you would like to add."}),e.jsx("textarea",{value:r,onChange:u=>{n(u.target.value);const f=u.target;f.style.height="auto",f.style.height=`${Math.max(100,f.scrollHeight)}px`},placeholder:"What else should this set do?",className:"w-full min-h-[100px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm font-mono text-text-primary placeholder:text-text-tertiary/50 focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",style:{resize:"none",overflow:"hidden"}}),s&&e.jsx("p",{className:"text-xs text-status-error mt-2",children:m}),e.jsxs("div",{className:"flex items-center justify-between mt-3",children:[e.jsxs("span",{className:"text-[10px] text-text-tertiary",children:[d," tool",d===1?"":"s"," in set"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:x,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors",children:"Cancel"}),e.jsx("button",{onClick:l,disabled:!r.trim()||o,className:"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed",children:o?"Submitting...":"Add to Set"})]})]})]})})})})}const oa=["Plan","Profile","Deploy","Test"];function da(t){return t==="completed"?"completed":t==="failed"?"failed":t==="planning"||t==="building"||t==="deploying"?"in_progress":"pending"}function xa(){var D,Z,ce;const{workflowId:t}=Be(),[a,r]=fe(),n=pe();He(t),ms(t);const d=a.get("set_id")||void 0,{data:o}=St(t),s=(D=o==null?void 0:o.result)==null?void 0:D.data,m=d||(s==null?void 0:s.set_id),{data:l}=Bt(m),x=(l==null?void 0:l.plan)||[],c=(l==null?void 0:l.namespaces)||[],u=(l==null?void 0:l.status)||"planning",f=p.useMemo(()=>m?{set_id:m,limit:50}:{},[m]),{data:S}=Ue(f),i=(S==null?void 0:S.workflows)||[],b=p.useRef(u);p.useEffect(()=>{b.current!==u&&(b.current=u,n.invalidateQueries({queryKey:["yamlWorkflows"]}))},[u,n]);const y=p.useMemo(()=>{const A={},R=new Set;for(const K of x){const ee=i.find(Q=>!R.has(Q.id)&&(Q.name===K.name||Q.graph_topic===K.name));ee&&(A[K.name]=ee,R.add(ee.id))}if(Object.keys(A).length<x.length){const K=i.filter(Q=>!R.has(Q.id)).sort((Q,te)=>(Q.created_at||"").localeCompare(te.created_at||"")),ee=new Map;for(const Q of K){const te=Q.set_build_order??0;ee.has(te)||ee.set(te,[]),ee.get(te).push(Q)}for(const Q of x){if(A[Q.name])continue;const te=ee.get(Q.build_order);if(te!=null&&te.length){const ue=te.shift();A[Q.name]=ue,R.add(ue.id)}}}return A},[x,i]),h=p.useMemo(()=>{const A={};for(const[R,K]of Object.entries(y))A[R]=K.status;return A},[y]),j=p.useMemo(()=>{const A=i.find(R=>R.app_id&&R.app_id!=="longtail");return(A==null?void 0:A.app_id)||null},[i]),w=p.useMemo(()=>{const A=new Set;if(!j)return A;for(const[R,K]of Object.entries(y))K.app_id===j&&A.add(R);return A},[y,j]),T=w.size>0,v=a.get("workflow")||null,k=v&&((Z=y[v])==null?void 0:Z.id)||null,N=x.find(A=>A.name===v)||null,_=u==="planning",L=u==="failed",C=i.some(A=>A.status==="active");let g=1;x.length>0&&(g=2),T&&(g=3),C&&(g=4);const I=Number(a.get("step"))||0,M=I>=1&&I<=4?Math.min(I,g):1,O=i.length,$=x.length,F=i.filter(A=>A.status==="active").length,[se,J]=p.useState(!1),[ae,q]=p.useState(""),B=Ft(),[E,W]=p.useState(!1),Y=p.useRef(u);p.useEffect(()=>{E&&Y.current!=="completed"&&u==="completed"&&(W(!1),J(!1),q("")),Y.current=u},[u,E]);const H=A=>{const R={mode:"plan"};m&&(R.set_id=m),R.step=A.step??String(M),A.workflow!==void 0?A.workflow&&(R.workflow=A.workflow):v&&(R.workflow=v),r(R)},z=A=>{var K;if(A>g)return;const R=(K=x[0])==null?void 0:K.name;A>=2&&!v&&R?H({step:String(A),workflow:R}):H({step:String(A)})},G=A=>{H({workflow:A})},ie=()=>{n.invalidateQueries({queryKey:["yamlWorkflows"]}),n.invalidateQueries({queryKey:["yamlWorkflow"]})},de=()=>{H({step:"3"})},ne=async()=>{!m||!ae.trim()||(await B.mutateAsync({id:m,specification:ae.trim()}),W(!0))},X=()=>{J(!1),q("")},P=()=>{W(!1),J(!1),q("")};return e.jsxs("div",{className:"flex flex-col min-h-[calc(100vh-12rem)]",children:[e.jsx(Ie,{title:"MCP Tool Designer",actions:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-accent/10 text-accent font-medium",children:"Plan"}),$>0&&e.jsxs("span",{className:"text-[10px] text-text-tertiary",children:[O,"/",$," built",F>0&&` | ${F} deployed`]}),e.jsx(ye,{status:da(u)})]})}),e.jsx(Xe,{labels:oa,current:M,maxReachable:g,onStepClick:z}),e.jsxs("div",{className:"flex-1 mt-4",children:[M===1&&e.jsx(ca,{specification:l==null?void 0:l.specification,description:l==null?void 0:l.description,plan:x,isPlanning:_,isFailed:L,onContinue:()=>z(2)}),M>=2&&e.jsxs("div",{className:"flex gap-6 max-h-[calc(100vh-220px)]",children:[e.jsx(ra,{plan:x,namespaces:c,yamlStatuses:h,activeWorkflow:v,isAddOpen:se,onSelect:G,onAdd:()=>J(!se)}),e.jsxs("div",{className:"flex-1 min-w-0 overflow-y-auto",children:[e.jsx(la,{isOpen:se,addSubmitted:E,addSpec:ae,setAddSpec:q,planCount:x.length,isPending:B.isPending,isError:B.isError,errorMessage:(ce=B.error)==null?void 0:ce.message,onSubmit:ne,onCancel:X,onDismiss:P}),v?k?M===2&&N?e.jsx(na,{yamlId:k,planItem:N,lockedAppId:j,isSaved:w.has(v),onSaved:ie,onNavigateDeploy:de}):M===3?e.jsx(Ze,{yamlId:k,onAdvance:()=>z(4),onBack:()=>z(2)},k):M===4?e.jsx(et,{yamlId:k,originalWorkflowId:t,originalResult:void 0,originalPrompt:void 0,onBack:()=>z(3),onAdvance:()=>{},builderMode:!0},`test-${k}`):null:e.jsxs("div",{className:"flex items-center gap-3 py-12 justify-center",children:[e.jsx(be,{className:"w-4 h-4 text-accent animate-spin"}),e.jsxs("span",{className:"text-sm text-text-secondary",children:["Building ",v,"..."]})]}):e.jsx("p",{className:"text-sm text-text-tertiary py-12 text-center",children:"Select a pipeline tool from the sidebar."})]})]})]})]})}function ma(){const[t,a]=fe(),r=p.useRef(void 0);if(r.current===void 0){const l=t.get("step");r.current=l?parseInt(l,10):null}const n=p.useRef(r.current!==null),d=t.get("step"),o=n.current&&d?parseInt(d,10):null,s=p.useCallback(l=>{var x;n.current=l!==null,a(c=>{const u=new URLSearchParams(c);return l===null?u.delete("step"):u.set("step",String(l)),u},{replace:!1}),(x=window.scrollTo)==null||x.call(window,{top:0,behavior:"smooth"})},[a]),m=p.useCallback(l=>{a(x=>{const c=new URLSearchParams(x);return c.set("step",String(l)),c},{replace:!0})},[a]);return[o,s,m]}function pa(){var tt,st,at,rt,nt,it,ct,lt,ot;const{workflowId:t}=Be(),[a,r]=fe(),n=pe(),d=p.useRef(a.get("prompt"));p.useEffect(()=>{a.has("prompt")&&r(V=>{const we=new URLSearchParams(V);return we.delete("prompt"),we},{replace:!0})},[]);const[o,s]=p.useState("longtail"),[m,l]=p.useState(""),[x,c]=p.useState(""),[u,f]=p.useState([]),[S,i]=p.useState(!1),[b,y]=p.useState(""),{data:h}=$e(t),{data:j}=yt(t),{data:w}=Tt(t);He(t);const T=ds(),{data:v}=xs(),{data:k}=Ye(t??""),{data:N}=Ge(t??""),_=p.useMemo(()=>{if(!(N!=null&&N.envelope))return null;try{return typeof N.envelope=="string"?JSON.parse(N.envelope):N.envelope}catch{return null}},[N==null?void 0:N.envelope]),L=(tt=k==null?void 0:k.result)==null?void 0:tt.data,C=ys(h),g=(st=j==null?void 0:j.result)==null?void 0:st.data,I=(g==null?void 0:g.discovery)||{},M=(h==null?void 0:h.events)??[],{data:O}=It(t),$=(at=O==null?void 0:O.escalations)==null?void 0:at.find(V=>V.status==="pending"),F=(rt=O==null?void 0:O.escalations)==null?void 0:rt.find(V=>V.status==="resolved"),se=$||F,J=$t(),ae=Ot(),q=p.useMemo(()=>{if(!(F!=null&&F.resolver_payload))return null;try{return typeof F.resolver_payload=="string"?JSON.parse(F.resolver_payload):F.resolver_payload}catch{return null}},[F==null?void 0:F.resolver_payload]),B=(nt=q==null?void 0:q._lt)==null?void 0:nt.triageWorkflowId,{data:E}=Ye((it=q==null?void 0:q._lt)!=null&&it.triaged?B??"":""),W=(ct=E==null?void 0:E.result)==null?void 0:ct.data,Y=W==null?void 0:W.rerunWorkflowId,H=(lt=j==null?void 0:j.result)==null?void 0:lt.milestones,z=!!(g!=null&&g.rounds_exhausted)||!!(H!=null&&H.some(V=>V.name==="rounds_exhausted")),G=z||!!$,ie=p.useMemo(()=>{var we;const V=(we=_==null?void 0:_.data)==null?void 0:we.prompt;if(V)return V;if(d.current)return d.current;for(const _t of M){const Me=_t.attributes;if(Me.activity_type==="findCompiledWorkflows"&&Array.isArray(Me.input)&&typeof Me.input[0]=="string")return Me.input[0]}},[_,M]),de=p.useMemo(()=>(L==null?void 0:L.result)??(typeof(L==null?void 0:L.summary)=="string"?Se(L.summary):null)??(g==null?void 0:g.result)??(typeof(g==null?void 0:g.summary)=="string"?Se(g.summary):null)??null,[L,g]),ne=ie||(g==null?void 0:g.title),{data:X}=At({prompt:C==="completed"?ne:void 0,resultTitle:g==null?void 0:g.title,resultSummary:g==null?void 0:g.summary}),P=(ot=w==null?void 0:w.workflows)==null?void 0:ot.find(V=>V.status==="active"||V.status==="deployed"||V.status==="draft"),D=p.useMemo(()=>C==="pending"?1:C==="in_progress"?2:g?P?P.status==="draft"||P.status==="deployed"?4:5:2:1,[C,g,P]),[Z,ce,A]=ma(),R=Z??D;p.useEffect(()=>{A(R)},[R,A]);const K=C==="pending"?1:C==="in_progress"||!g||G?2:P?P.status==="draft"?4:P.status==="deployed"?5:6:3,ee=p.useRef(C);p.useEffect(()=>{ee.current==="in_progress"&&C==="completed"&&Z===null&&ce(3),ee.current=C},[C,Z,ce]);const Q=p.useMemo(()=>{const V=[...bs];return(P==null?void 0:P.status)==="active"&&(V[3]="Redeploy"),V},[P==null?void 0:P.status]);X&&!S&&(i(!0),x||c(X.description),u.length===0&&X.tags.length>0&&f(X.tags),!m&&X.tool_name&&l(oe(X.tool_name)));const te=oe(m),ue=p.useMemo(()=>(v==null?void 0:v.app_ids)??[],[v==null?void 0:v.app_ids]),Pe=async()=>{!t||!m.trim()||!o.trim()||(await T.mutateAsync({workflow_id:t,task_queue:"long-tail-system",workflow_name:"mcpQuery",name:m.trim(),description:x.trim()||void 0,app_id:o.trim(),subscribes:te,tags:u,compilation_feedback:b.trim()||void 0}),n.invalidateQueries({queryKey:["yamlWorkflowForSource"],refetchType:"all"}),ce(4))},re=async()=>{if(!$)return;await J.mutateAsync({id:$.id,durationMinutes:30});const V=(g==null?void 0:g.diagnosis)||$.description||"";await ae.mutateAsync({id:$.id,resolverPayload:{_lt:{needsTriage:!0},notes:V}})},xe=(P==null?void 0:P.status)==="active"?5:4;return{workflowId:t,execution:h,status:C,result:g,discovery:I,events:M,originalEnvelope:_,originalPrompt:ie,originalOutput:de,originalExecution:k,compiledYaml:P,step:R,maxReachable:K,stepLabels:Q,setManualStep:ce,compileAppId:o,setCompileAppId:s,compileName:m,setCompileName:l,compileDescription:x,setCompileDescription:c,compileTags:u,setCompileTags:f,compileFeedback:b,setCompileFeedback:y,describeData:X,describePrompt:ne,allAppIds:ue,handleCompile:Pe,createYaml:T,isUncompilable:G,isRoundsExhausted:z,displayEscalation:se,activeEscalation:$,handleRetryTriage:re,claimMutation:J,resolveMutation:ae,rerunWorkflowId:Y,profileNextStep:xe}}function ua({workflowId:t,status:a,discovery:r,execution:n,result:d}){return e.jsx("div",{className:"bg-surface-raised border border-surface-border rounded-md px-6 py-4 mb-6",children:e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-y-3 gap-x-8",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Run ID"}),e.jsx(js,{label:"",value:t??null,href:`/workflows/executions/${t}`})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Duration"}),e.jsx("p",{className:"text-xs text-text-primary font-mono",children:(n==null?void 0:n.duration_ms)!=null?`${(n.duration_ms/1e3).toFixed(1)}s`:"—"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Started"}),e.jsx("p",{className:"text-xs text-text-primary",children:n!=null&&n.start_time?e.jsx(vs,{date:n.start_time}):"—"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool Calls"}),e.jsx("p",{className:"text-xs text-text-primary",children:typeof(d==null?void 0:d.tool_calls_made)=="number"?d.tool_calls_made:"—"})]})]})})}function _e({title:t,subtitle:a,actions:r}){return e.jsxs("div",{className:"flex items-start justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:t}),a&&e.jsx("p",{className:"text-base text-text-secondary",children:a})]}),r&&e.jsx("div",{className:"flex items-center gap-3 shrink-0",children:r})]})}function ha({status:t,originalEnvelope:a,originalPrompt:r,originalOutput:n,originalDurationMs:d,resultSummary:o,onNext:s}){return e.jsxs("div",{children:[e.jsx(_e,{title:"Describe",subtitle:"Dynamic LLM-orchestrated execution — the discovery run",icon:ve,iconClass:"text-accent"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Input"}),a?e.jsx(U,{data:a,defaultMode:"tree"}):r?e.jsx(U,{data:{prompt:r},defaultMode:"tree"}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"Loading..."})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Output"}),t!=="completed"&&t!=="failed"?e.jsx("p",{className:"text-sm text-text-secondary animate-pulse",children:"Pending..."}):n?e.jsx(U,{data:n,defaultMode:"tree"}):o?e.jsx(U,{data:{summary:o},defaultMode:"tree"}):e.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No structured output"}),d!=null&&e.jsxs("p",{className:"text-[10px] text-text-tertiary mt-2",children:[(d/1e3).toFixed(1),"s"]})]})]}),e.jsxs(le,{children:[e.jsx("span",{}),e.jsx("button",{onClick:s,disabled:!s,className:"btn-primary text-xs",children:"Next: Timeline"})]})]})}function fa({events:t,onBack:a,onNext:r}){return e.jsxs("div",{children:[e.jsx(_e,{title:"Discover",subtitle:"Activity swimlane showing tool calls and their durations",icon:vt,iconClass:"text-status-warning"}),e.jsx(Ns,{events:t}),e.jsxs(le,{children:[e.jsx("button",{onClick:a,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),e.jsx("button",{onClick:r,disabled:!r,className:"btn-primary text-xs",children:"Next: Compile"})]})]})}function ga({compiledYaml:t,onBack:a,onNext:r}){var S;const n=pe(),d=Fe(),[o,s]=p.useState(!1),[m,l]=p.useState(t.description||""),[x,c]=p.useState(t.tags||[]),u=async()=>{await d.mutateAsync({id:t.id,description:m.trim(),tags:x}),n.invalidateQueries({queryKey:["yamlWorkflowForSource"],refetchType:"all"}),s(!1)},f=()=>{l(t.description||""),c(t.tags||[]),s(!1)};return e.jsxs("div",{children:[e.jsx(_e,{title:"Compile",subtitle:"Compiled deterministic pipeline — name, tags, and deployment target",icon:Ne,iconClass:"text-status-success",actions:o?e.jsxs(e.Fragment,{children:[e.jsx(me,{icon:Re,label:"Cancel",onClick:f}),e.jsx(me,{icon:Ae,label:d.isPending?"Saving...":"Save",onClick:u,disabled:d.isPending})]}):e.jsx(me,{icon:We,label:"Edit Profile",onClick:()=>s(!0)})}),e.jsxs("div",{className:"flex gap-6 mb-6",children:[e.jsxs("div",{className:"w-[30%] shrink-0 space-y-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Namespace"}),e.jsx("p",{className:"text-sm text-text-primary",children:t.app_id||"—"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool Name"}),e.jsx("p",{className:"text-sm text-text-primary",children:t.name})]})]}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"}),o?e.jsx("textarea",{value:m,onChange:i=>l(i.target.value),className:"w-full min-h-[80px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}):e.jsx("p",{className:"text-sm text-text-secondary leading-relaxed",children:t.description||"—"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tags"}),o?e.jsx(Ee,{tags:x,onChange:c,placeholder:"Add tags..."}):e.jsx("div",{className:"flex gap-1.5 flex-wrap",children:(t.tags||[]).length>0?t.tags.map(i=>e.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-surface-sunken text-text-secondary",children:i},i)):e.jsx("span",{className:"text-[10px] text-text-tertiary",children:"No tags"})})]}),((S=t.activity_manifest)==null?void 0:S.length)>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Pipeline"}),e.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:t.activity_manifest.filter(i=>i.tool_source!=="trigger").map((i,b,y)=>e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded bg-surface-sunken font-mono text-text-primary",children:i.mcp_tool_name||i.title}),b<y.length-1&&e.jsx("span",{className:"text-text-tertiary text-[10px]",children:"→"})]},b))})]})]})]}),e.jsxs(le,{children:[e.jsx("button",{onClick:a,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),t.status!=="active"?e.jsx("button",{onClick:r,className:"btn-primary text-xs",children:"Next: Deploy"}):e.jsx("button",{onClick:r,className:"btn-primary text-xs",children:"Next: Test"})]})]})}function ya({originalPrompt:t,compileAppId:a,setCompileAppId:r,compileName:n,setCompileName:d,compileDescription:o,setCompileDescription:s,compileTags:m,setCompileTags:l,describeData:x,describePrompt:c,allAppIds:u,onCompile:f,isCompiling:S,compileError:i,onBack:b}){const[y,h]=p.useState(null),[j,w]=p.useState(!1),T=p.useRef(null),v=i&&i!==y?i:null;p.useEffect(()=>{v&&T.current&&T.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[v]),p.useEffect(()=>{i&&i!==y&&(h(null),w(!1))},[i]);const k=()=>{w(!0),setTimeout(()=>{h(i),w(!1)},250)};return e.jsxs("div",{children:[e.jsx(_e,{title:"Compile",subtitle:"Define the deterministic workflow tool from this execution",icon:Ne,iconClass:"text-status-success"}),v&&e.jsxs("div",{ref:T,className:"mb-6 rounded-lg border border-status-error/30 bg-status-error/[0.04] px-4 py-3 flex items-start gap-3 overflow-hidden transition-all duration-250 ease-in-out",style:{animation:j?void 0:"fadeIn 300ms ease-out both",opacity:j?0:1,maxHeight:j?"0px":"200px",paddingTop:j?"0px":void 0,paddingBottom:j?"0px":void 0,marginBottom:j?"0px":void 0},children:[e.jsx(Nt,{className:"w-4 h-4 text-status-error shrink-0 mt-0.5",strokeWidth:1.5}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-status-error",children:"Compilation failed"}),e.jsx("p",{className:"text-xs text-text-secondary mt-0.5 leading-relaxed",children:v})]}),e.jsx("button",{onClick:k,className:"text-text-tertiary hover:text-text-secondary transition-colors shrink-0 mt-0.5",children:e.jsx(Re,{className:"w-3.5 h-3.5"})})]}),t&&e.jsxs("div",{className:"mb-6",children:[e.jsx(je,{children:"Original Query"}),e.jsx("p",{className:"text-xs font-mono text-text-primary leading-relaxed bg-surface-sunken rounded-md px-3 py-2",children:t})]}),e.jsx(je,{children:"Workflow Configuration"}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"w-[30%] shrink-0 space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Namespace *"}),e.jsx("input",{type:"text",value:a,onChange:N=>r(Le(N.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",placeholder:"e.g. longtail"}),u.length>0&&e.jsx("div",{className:"flex gap-1.5 mt-1.5 flex-wrap",children:u.map(N=>e.jsx("button",{type:"button",onClick:()=>r(N),className:`text-[10px] px-2 py-0.5 rounded-full transition-colors ${a===N?"bg-accent/20 text-accent":"bg-surface-sunken text-text-tertiary hover:text-text-secondary"}`,children:N},N))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tool Name *"}),e.jsx("input",{type:"text",value:n,onChange:N=>d(oe(N.target.value)),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",placeholder:"e.g. auth_screenshot_all_nav_pages"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Tags"}),e.jsx(Ee,{tags:m,onChange:l,placeholder:"e.g. browser, screenshots, login"}),e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1",children:"Press Enter or comma to add."})]})]}),e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Description"}),!o&&!x&&c&&e.jsx("span",{className:"text-[10px] text-accent animate-pulse",children:"Generating..."})]}),e.jsx("textarea",{value:o,onChange:N=>s(N.target.value),placeholder:"Describe what this workflow does as a reusable tool...",className:"flex-1 min-h-[120px] w-full px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"}),e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1",children:x?"AI-generated. Edit to refine.":"Describe what this workflow does so future queries can find it."})]})]}),e.jsxs(le,{children:[e.jsx("button",{onClick:b,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),e.jsx("button",{onClick:f,disabled:!n.trim()||!a.trim()||S,className:"btn-primary text-xs",children:S?"Compiling...":"Compile Pipeline"})]})]})}function ba(t){const{compiledYaml:a,isUncompilable:r,onBack:n,onNext:d}=t;return r&&!a?e.jsxs("div",{children:[e.jsx(_e,{title:"Compile",subtitle:"Define the deterministic workflow tool from this execution",icon:Ne,iconClass:"text-status-success"}),e.jsxs("div",{className:"rounded-md bg-status-warning/5 border border-status-warning/20 px-4 py-3 mb-6",children:[e.jsx("p",{className:"text-xs text-status-warning font-medium",children:"Cannot compile this query"}),e.jsx("p",{className:"text-xs text-text-secondary mt-1",children:"This query did not complete successfully. Resolve the escalation before compiling to a deterministic workflow."})]}),e.jsxs(le,{children:[e.jsx("button",{onClick:n,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),e.jsx("span",{})]})]}):a?e.jsx(ga,{compiledYaml:a,onBack:n,onNext:d}):e.jsx(ya,{originalPrompt:t.originalPrompt,compileAppId:t.compileAppId,setCompileAppId:t.setCompileAppId,compileName:t.compileName,setCompileName:t.setCompileName,compileDescription:t.compileDescription,setCompileDescription:t.setCompileDescription,compileTags:t.compileTags,setCompileTags:t.setCompileTags,describeData:t.describeData,describePrompt:t.describePrompt,allAppIds:t.allAppIds,onCompile:t.onCompile,isCompiling:t.isCompiling,compileError:t.compileError,onBack:n})}const ft=["Discover","Evaluate","Execute"];function ja(t){if(!(t!=null&&t.length))return{step:0,label:"Starting...",detail:"Initializing query router",path:null};const a=t.find(n=>n.event_type==="child_workflow_execution_started");if(a){const n=a.attributes.child_workflow_id??"",d=n.includes("mcpDeterministic");return t.some(s=>s.event_type==="child_workflow_execution_completed")?{step:3,label:d?"Deterministic complete":"Dynamic complete",detail:d?"Compiled workflow executed successfully":"Dynamic MCP orchestration completed",path:d?"deterministic":"dynamic",childWorkflowId:n}:{step:3,label:d?"Running deterministic workflow":"Running dynamic MCP query",detail:d?"Executing compiled workflow":"LLM agentic orchestration in progress (30–60s)",path:d?"deterministic":"dynamic",childWorkflowId:n}}const r=t.filter(n=>n.category==="activity").map(n=>n.attributes.activity_type??"");return r.some(n=>n==="extractWorkflowInputs")?{step:2,label:"Extracting inputs...",detail:"Preparing structured inputs for compiled workflow",path:null}:r.some(n=>n==="evaluateWorkflowMatch")?{step:2,label:"Evaluating match...",detail:"LLM judge determining best compiled workflow",path:null}:r.some(n=>n==="findCompiledWorkflows")?{step:1,label:"Searching compiled workflows...",detail:"Full-text + tag discovery of candidates",path:null}:{step:0,label:"Starting...",detail:"Initializing query router",path:null}}function va({events:t,status:a,verifyRunId:r}){const n=ja(t),d=a==="completed"||a==="failed";return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center gap-1",children:ft.map((o,s)=>{const m=s+1,l=n.step>m||d,x=n.step===m&&!d;return e.jsxs("div",{className:"flex items-center gap-1 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsx("div",{className:`w-5 h-5 rounded-full flex items-center justify-center text-[9px] font-medium shrink-0 transition-colors ${l?"bg-status-success/20 text-status-success":x?"bg-accent/20 text-accent animate-pulse":"bg-surface-sunken text-text-tertiary"}`,children:l?e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:3,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}):m}),e.jsx("span",{className:`text-[10px] font-medium whitespace-nowrap ${l?"text-text-secondary":x?"text-text-primary":"text-text-tertiary"}`,children:o})]}),s<ft.length-1&&e.jsx("div",{className:`h-px flex-1 min-w-4 ${l?"bg-status-success/30":"bg-surface-border"}`})]},o)})}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("p",{className:"text-xs text-text-secondary",children:n.detail}),n.path==="deterministic"&&e.jsx("span",{className:"text-[10px] bg-status-success/10 text-status-success px-2 py-0.5 rounded-full",children:"Deterministic"}),n.path==="dynamic"&&e.jsx("span",{className:"text-[10px] bg-status-pending/10 text-status-pending px-2 py-0.5 rounded-full",children:"Dynamic"})]}),r&&n.step>=1&&e.jsx(ke,{to:`/workflows/executions/${r}`,className:"text-[10px] text-accent hover:underline",children:"View execution tree"})]})}function Na({originalWorkflowId:t,originalPrompt:a,workflowName:r,onBack:n,onGoToDeploy:d}){var L,C;const o=gt(),[s,m]=fe(),[l,x]=p.useState(""),[c,u]=p.useState(!1),f=s.get("verifyRun"),S=g=>{m(I=>{const M=new URLSearchParams(I);return g?M.set("verifyRun",g):M.delete("verifyRun"),M},{replace:!0})},{data:i}=Ge(t??""),b=p.useMemo(()=>{if(!(i!=null&&i.envelope))return null;try{return typeof i.envelope=="string"?JSON.parse(i.envelope):i.envelope}catch{return null}},[i==null?void 0:i.envelope]),y=((L=b==null?void 0:b.data)==null?void 0:L.prompt)??a;y&&!c&&(u(!0),x(y));const{data:h}=$e(f??void 0),{data:j}=yt((h==null?void 0:h.status)==="completed"?f??void 0:void 0),w=h==null?void 0:h.status,T=((C=j==null?void 0:j.result)==null?void 0:C.data)??{},v=T.discovery,k=(v==null?void 0:v.method)==="compiled-workflow",N=f&&w!=="completed"&&w!=="failed",_=async()=>{if(!l.trim())return;const g=await o.mutateAsync({prompt:l.trim()});S(g.workflow_id)};return e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-extralight tracking-wide text-accent/75 mb-1",children:"Verify"}),e.jsxs("p",{className:"text-base text-text-secondary mb-6",children:["Submit the original prompt through the router to verify that",e.jsx("span",{className:"font-mono text-text-primary mx-1",children:r}),"is selected and handles it deterministically."]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Query Prompt"}),e.jsx("p",{className:"text-[10px] text-text-tertiary",children:l!==y&&y?e.jsx("button",{onClick:()=>x(y),className:"text-accent hover:underline",children:"Reset to original"}):"Edit and submit to verify"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Result"}),!f&&e.jsx("p",{className:"text-[10px] text-text-tertiary italic",children:"Awaiting submission"}),N&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ye,{status:"in_progress"}),e.jsx("span",{className:"text-[10px] text-text-secondary animate-pulse",children:"Routing..."})]}),w==="failed"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ye,{status:"failed"}),e.jsx("span",{className:"text-[10px] text-status-error",children:"Failed"})]}),w==="completed"&&e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx(ye,{status:"completed"}),k?e.jsxs("span",{className:"text-[10px] bg-status-success/10 text-status-success px-2 py-0.5 rounded-full",children:["Deterministic (",((v==null?void 0:v.confidence)*100).toFixed(0),"%)"]}):e.jsx("span",{className:"text-[10px] bg-status-pending/10 text-status-pending px-2 py-0.5 rounded-full",children:"Dynamic (no match)"}),(h==null?void 0:h.duration_ms)!=null&&e.jsxs("span",{className:"text-[10px] text-text-tertiary",children:[(h.duration_ms/1e3).toFixed(1),"s"]})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("textarea",{value:l,onChange:g=>x(g.target.value),className:"w-full min-h-[160px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",placeholder:"Type a natural language query..."}),e.jsx("div",{className:"flex justify-end mt-2",children:e.jsxs("button",{onClick:_,disabled:!l.trim()||o.isPending||!!N,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-accent/10 text-accent rounded-md hover:bg-accent/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 12 12",fill:"currentColor",children:e.jsx("path",{d:"M3 1.5v9l7.5-4.5z"})}),o.isPending?"Starting...":N?"Running...":f?"Resubmit":"Submit"]})})]}),e.jsxs("div",{children:[!f&&e.jsx("div",{className:"flex items-center justify-center min-h-[160px] text-xs text-text-tertiary italic",children:"Submit a query to see the result"}),N&&e.jsx("div",{className:"min-h-[160px] flex items-start pt-4",children:e.jsx(va,{events:h==null?void 0:h.events,status:w,verifyRunId:f})}),w==="completed"&&e.jsxs("div",{className:"space-y-3",children:[typeof T.title=="string"&&e.jsx("p",{className:"text-sm text-text-primary",children:T.title}),T.result!=null&&e.jsx(U,{data:T.result,defaultMode:"tree"}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx(ke,{to:`/mcp/queries/${f}`,className:"text-[10px] text-accent hover:underline",children:"View full details"}),e.jsx("button",{onClick:()=>S(null),className:"text-[10px] text-text-tertiary hover:text-text-primary",children:"Clear"})]})]}),w==="failed"&&e.jsx("p",{className:"text-xs text-status-error py-4",children:"Query failed. Try modifying the prompt."})]})]}),e.jsxs(le,{children:[e.jsx("button",{onClick:n,className:"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary",children:"Back"}),e.jsx("span",{className:"text-[10px] text-text-tertiary",children:"End-to-end verification — modify the prompt and submit to test the full pipeline"})]})]})}function wa({escalation:t,isRoundsExhausted:a,diagnosis:r,onRetryTriage:n,isRetrying:d,rerunWorkflowId:o}){var S;const s=Ke();if(!t&&!a)return null;const m=(t==null?void 0:t.status)==="pending",l=(t==null?void 0:t.status)==="resolved",x=(()=>{if(!(t!=null&&t.resolver_payload))return null;try{return typeof t.resolver_payload=="string"?JSON.parse(t.resolver_payload):t.resolver_payload}catch{return null}})(),c=((S=x==null?void 0:x._lt)==null?void 0:S.triaged)===!0,u=(()=>{if(!(t!=null&&t.escalation_payload))return null;try{return typeof t.escalation_payload=="string"?JSON.parse(t.escalation_payload):t.escalation_payload}catch{return null}})(),f=u==null?void 0:u.diagnosis;return l&&c?e.jsxs("div",{className:"rounded-md mb-4 border border-status-success/30 bg-surface-raised overflow-hidden",children:[e.jsx("div",{className:"px-4 pt-3 pb-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("svg",{className:"w-4 h-4 mt-0.5 shrink-0 text-status-success",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-status-success",children:o?"This query succeeded after AI triage":"AI triage resolved this query"}),e.jsx("p",{className:"text-xs text-text-secondary mt-1.5 leading-relaxed",children:o?"The original run hit a wall, but AI triage diagnosed the issue and re-ran the query successfully. The successful run is ready to compile into a deterministic workflow.":"The original run hit a wall. AI triage diagnosed the issue and resolved it."})]})]})}),f&&e.jsxs("div",{className:"px-4 py-2 mx-4 mb-2 rounded bg-surface-sunken",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"What went wrong"}),e.jsx("p",{className:"text-xs text-text-secondary leading-relaxed line-clamp-2",children:f})]}),e.jsx("div",{className:"px-4 py-3 border-t border-surface-border bg-surface-sunken/50",children:e.jsxs("div",{className:"flex items-center gap-3",children:[o&&e.jsxs("button",{onClick:()=>s(`/mcp/queries/${o}`),className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 transition-colors",children:["Continue to successful run",e.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 12 12",fill:"currentColor",children:e.jsx("path",{d:"M4.5 2l4 4-4 4"})})]}),e.jsx("button",{onClick:()=>s("/mcp/queries"),className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-text-secondary border border-surface-border rounded-md hover:bg-surface-sunken transition-colors",children:"Start fresh"}),e.jsx(ke,{to:`/escalations/detail/${t.id}`,className:"text-[10px] text-text-tertiary hover:text-accent hover:underline ml-auto",children:"Details"})]})})]}):l?e.jsx("div",{className:"rounded-md px-4 py-3 mb-4 border bg-surface-raised border-status-success/30",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("svg",{className:"w-4 h-4 mt-0.5 shrink-0 text-status-success",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-status-success",children:"Escalation resolved"}),e.jsx("p",{className:"text-xs text-text-tertiary mt-1",children:"This escalation was resolved manually. You can continue to compile."}),e.jsx("div",{className:"flex items-center gap-3 mt-2",children:t&&e.jsx(ke,{to:`/escalations/detail/${t.id}`,className:"text-[10px] text-accent hover:underline",children:"View escalation"})})]})]})}):e.jsx("div",{className:"rounded-md px-4 py-3 mb-4 border bg-surface-raised border-status-warning/30",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("svg",{className:"w-4 h-4 mt-0.5 shrink-0 text-status-warning",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-status-warning",children:a?"This query exceeded the maximum tool rounds":"This query has a pending escalation"}),r&&e.jsx("p",{className:"text-xs text-text-secondary mt-1 line-clamp-2",children:r}),e.jsxs("div",{className:"flex items-center gap-3 mt-2",children:[m&&n&&e.jsxs("button",{onClick:n,disabled:d,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[e.jsx("svg",{className:"w-3 h-3",viewBox:"0 0 12 12",fill:"currentColor",children:e.jsx("path",{d:"M6 0.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zm2 6l-3 1.75v-3.5l3 1.75z"})}),d?"Sending...":"Retry with AI Triage"]}),t&&e.jsx(ke,{to:`/escalations/detail/${t.id}`,className:"text-[10px] text-accent hover:underline",children:"View escalation"})]})]})]})})}function Qa(){const{workflowId:t}=Be(),[a]=fe();return t==="new"?e.jsx(Ps,{}):a.get("mode")==="plan"?e.jsx(xa,{}):a.get("mode")==="builder"?e.jsx(sa,{}):e.jsx(ka,{})}function ka(){var a,r,n,d;const t=pa();return e.jsxs("div",{className:"flex flex-col min-h-[calc(100vh-12rem)]",children:[e.jsx(Ie,{title:"MCP Tool Compiler",actions:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(ye,{status:t.status}),((a=t.discovery)==null?void 0:a.method)==="compiled-workflow"&&e.jsxs("span",{className:"text-xs bg-status-success/10 text-status-success px-2 py-0.5 rounded-full",children:["Deterministic (",(t.discovery.confidence*100).toFixed(0),"% match)"]})]})}),e.jsx(ua,{workflowId:t.workflowId,status:t.status,discovery:t.discovery,execution:t.execution,result:t.result}),e.jsx(wa,{escalation:t.displayEscalation,isRoundsExhausted:t.isRoundsExhausted,diagnosis:(r=t.result)==null?void 0:r.diagnosis,onRetryTriage:t.activeEscalation?t.handleRetryTriage:void 0,isRetrying:t.claimMutation.isPending||t.resolveMutation.isPending,rerunWorkflowId:t.rerunWorkflowId}),e.jsx(Xe,{labels:t.stepLabels,current:t.step,maxReachable:t.maxReachable,onStepClick:o=>t.setManualStep(o)}),e.jsxs("div",{className:"flex-1",children:[t.step===1&&e.jsx(ha,{status:t.status,originalEnvelope:t.originalEnvelope,originalPrompt:t.originalPrompt,originalOutput:t.originalOutput,originalDurationMs:(n=t.originalExecution)==null?void 0:n.duration_ms,resultSummary:(d=t.result)==null?void 0:d.summary,onNext:t.maxReachable>=2?()=>t.setManualStep(2):void 0}),t.step===2&&e.jsx(fa,{events:t.events,onBack:()=>t.setManualStep(1),onNext:t.maxReachable>=3?()=>t.setManualStep(3):void 0}),t.step===3&&e.jsx(ba,{compiledYaml:t.compiledYaml,originalPrompt:t.originalPrompt,compileAppId:t.compileAppId,setCompileAppId:t.setCompileAppId,compileName:t.compileName,setCompileName:t.setCompileName,compileDescription:t.compileDescription,setCompileDescription:t.setCompileDescription,compileTags:t.compileTags,setCompileTags:t.setCompileTags,describeData:t.describeData,describePrompt:t.describePrompt,allAppIds:t.allAppIds,onCompile:t.handleCompile,isCompiling:t.createYaml.isPending,compileError:t.createYaml.isError?t.createYaml.error.message:void 0,isUncompilable:t.isUncompilable,onBack:()=>t.setManualStep(2),onNext:()=>t.setManualStep(t.profileNextStep)}),t.step===4&&t.compiledYaml&&e.jsx(Ze,{yamlId:t.compiledYaml.id,onAdvance:()=>t.setManualStep(5),onBack:()=>t.setManualStep(3)}),t.step===5&&t.compiledYaml&&e.jsx(et,{yamlId:t.compiledYaml.id,originalWorkflowId:t.workflowId,originalResult:t.result,originalPrompt:t.originalPrompt,onBack:()=>t.setManualStep(4),onAdvance:()=>t.setManualStep(6)}),t.step===6&&t.compiledYaml&&e.jsx(Na,{originalWorkflowId:t.workflowId,originalPrompt:t.originalPrompt,workflowName:t.compiledYaml.name,onBack:()=>t.setManualStep(5),onGoToDeploy:()=>t.setManualStep(4)})]})]})}export{Qa as McpQueryDetailPage};
|
|
5
|
+
//# sourceMappingURL=McpQueryDetailPage-5Dsj6PlL.js.map
|