@hotmeshio/long-tail 0.1.6 → 0.1.8
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/README.md +47 -5
- package/build/api/auth.d.ts +16 -0
- package/build/api/auth.js +53 -0
- package/build/api/bot-accounts.d.ts +137 -0
- package/build/api/bot-accounts.js +302 -0
- package/build/api/controlplane.d.ts +68 -0
- package/build/api/controlplane.js +158 -0
- package/build/api/dba.d.ts +42 -0
- package/build/api/dba.js +95 -0
- package/build/api/escalations.d.ts +271 -0
- package/build/api/escalations.js +892 -0
- package/build/api/exports.d.ts +90 -0
- package/build/api/exports.js +204 -0
- package/build/api/index.d.ts +18 -0
- package/build/api/index.js +54 -0
- package/build/api/insight.d.ts +86 -0
- package/build/api/insight.js +147 -0
- package/build/api/maintenance.d.ts +22 -0
- package/build/api/maintenance.js +43 -0
- package/build/api/mcp-runs.d.ts +43 -0
- package/build/api/mcp-runs.js +89 -0
- package/build/api/mcp.d.ts +160 -0
- package/build/api/mcp.js +320 -0
- package/build/api/namespaces.d.ts +20 -0
- package/build/{routes/escalations/helpers.js → api/namespaces.js} +35 -10
- package/build/api/roles.d.ts +88 -0
- package/build/api/roles.js +217 -0
- package/build/api/settings.d.ts +10 -0
- package/build/api/settings.js +43 -0
- package/build/api/tasks.d.ts +70 -0
- package/build/api/tasks.js +139 -0
- package/build/api/users.d.ts +115 -0
- package/build/api/users.js +228 -0
- package/build/api/workflow-sets.d.ts +77 -0
- package/build/api/workflow-sets.js +170 -0
- package/build/api/workflows.d.ts +158 -0
- package/build/api/workflows.js +407 -0
- package/build/api/yaml-workflows.d.ts +282 -0
- package/build/api/yaml-workflows.js +751 -0
- package/build/examples/types/envelopes.d.ts +27 -0
- package/build/examples/types/index.d.ts +1 -1
- package/build/examples/workers.js +8 -0
- package/build/examples/workflows/assembly-line/activities.d.ts +28 -0
- package/build/examples/workflows/assembly-line/activities.js +53 -0
- package/build/examples/workflows/assembly-line/index.d.ts +17 -0
- package/build/examples/workflows/assembly-line/index.js +60 -0
- package/build/examples/workflows/assembly-line/iterator.d.ts +12 -0
- package/build/examples/workflows/assembly-line/iterator.js +54 -0
- package/build/examples/workflows/assembly-line/reverter.d.ts +18 -0
- package/build/examples/workflows/assembly-line/reverter.js +89 -0
- package/build/examples/workflows/assembly-line/types.d.ts +25 -0
- package/build/examples/workflows/assembly-line/types.js +8 -0
- package/build/examples/workflows/assembly-line/worker.d.ts +13 -0
- package/build/examples/workflows/assembly-line/worker.js +81 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +6 -1
- package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
- package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
- package/build/lib/db/schemas/011_system_workflow_configs.sql +7 -0
- package/build/lib/events/callback.d.ts +41 -0
- package/build/lib/events/callback.js +98 -0
- package/build/modules/config.js +1 -1
- package/build/routes/auth.js +37 -36
- package/build/routes/bot-accounts.js +34 -164
- package/build/routes/controlplane.js +20 -60
- package/build/routes/dba.js +18 -28
- package/build/routes/escalations/bulk.js +17 -192
- package/build/routes/escalations/list.js +51 -75
- package/build/routes/escalations/resolve.js +3 -193
- package/build/routes/escalations/single.js +13 -122
- package/build/routes/exports.js +44 -95
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +46 -88
- package/build/routes/maintenance.js +41 -17
- package/build/routes/mcp-runs.js +52 -60
- package/build/routes/mcp.js +49 -177
- package/build/routes/namespaces.js +9 -20
- package/build/routes/roles.js +23 -97
- package/build/routes/settings.js +37 -25
- package/build/routes/tasks.js +28 -64
- package/build/routes/users.js +24 -113
- package/build/routes/workflow-sets.d.ts +2 -0
- package/build/routes/workflow-sets.js +98 -0
- package/build/routes/workflows/config.js +23 -57
- package/build/routes/workflows/discovery.js +11 -85
- package/build/routes/workflows/invocation.js +28 -90
- package/build/routes/yaml-workflows/cron.js +12 -61
- package/build/routes/yaml-workflows/crud.js +30 -223
- package/build/routes/yaml-workflows/deployment.js +15 -115
- package/build/routes/yaml-workflows/versions.js +20 -58
- package/build/sdk/index.d.ts +338 -0
- package/build/sdk/index.js +299 -0
- package/build/services/controlplane/index.d.ts +1 -2
- package/build/services/controlplane/index.js +3 -3
- package/build/services/controlplane/sql.d.ts +2 -2
- package/build/services/controlplane/sql.js +4 -5
- package/build/services/controlplane/types.d.ts +1 -0
- package/build/services/export/index.js +6 -1
- package/build/services/hotmesh-utils.js +2 -4
- package/build/services/insight/index.d.ts +7 -0
- package/build/services/insight/index.js +30 -0
- package/build/services/mcp/client/tools.js +13 -1
- package/build/services/mcp-runs/sql.js +1 -1
- package/build/services/workflow-invocation.d.ts +15 -2
- package/build/services/workflow-invocation.js +11 -6
- package/build/services/workflow-sets/db.d.ts +16 -0
- package/build/services/workflow-sets/db.js +78 -0
- package/build/services/workflow-sets/index.d.ts +1 -0
- package/build/services/workflow-sets/index.js +11 -0
- package/build/services/workflow-sets/sql.d.ts +6 -0
- package/build/services/workflow-sets/sql.js +24 -0
- package/build/services/yaml-workflow/db-utils.d.ts +1 -0
- package/build/services/yaml-workflow/db-utils.js +4 -0
- package/build/services/yaml-workflow/db.d.ts +5 -0
- package/build/services/yaml-workflow/db.js +17 -0
- package/build/services/yaml-workflow/pipeline/build/wiring.js +14 -1
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +1 -1
- package/build/services/yaml-workflow/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +8 -3
- package/build/services/yaml-workflow/types.d.ts +3 -0
- package/build/services/yaml-workflow/workers/callbacks.js +7 -1
- package/build/services/yaml-workflow/workers/register.js +7 -0
- package/build/start/adapters.js +4 -0
- package/build/system/index.js +6 -0
- package/build/system/mcp-servers/knowledge.js +1 -1
- package/build/system/seed/server-definitions.js +2 -1
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +2 -1
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +6 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +26 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +26 -2
- package/build/system/workflows/mcp-workflow-builder/prompts.js +104 -35
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
- package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/sdk.d.ts +27 -0
- package/build/types/sdk.js +2 -0
- package/build/types/workflow-set.d.ts +44 -0
- package/build/types/workflow-set.js +5 -0
- package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js → AdminDashboard-B15jSEV2.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js.map → AdminDashboard-B15jSEV2.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js → AvailableEscalationsPage-0V2yvKak.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js.map → AvailableEscalationsPage-0V2yvKak.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-B4UxHcek.js +2 -0
- package/dashboard/dist/assets/{BotPicker-A6LtzyuO.js.map → BotPicker-B4UxHcek.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js → CollapsibleSection-BBexNWVd.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js.map → CollapsibleSection-BBexNWVd.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js → ConfirmDeleteModal-DlPDJSq_.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js.map → ConfirmDeleteModal-DlPDJSq_.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js → CopyableId-BxHW1ahb.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js.map → CopyableId-BxHW1ahb.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js → CredentialsPage-Bp_Y1Szk.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js.map → CredentialsPage-Bp_Y1Szk.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js → CustomDurationPicker-ByBFqXSO.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js.map → CustomDurationPicker-ByBFqXSO.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js → DataTable-DyIXg-tQ.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js.map → DataTable-DyIXg-tQ.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js → ElapsedCell-BgnA0qpS.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js.map → ElapsedCell-BgnA0qpS.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-BBn78pmm.js → EmptyState-DlMImvgm.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-BBn78pmm.js.map → EmptyState-DlMImvgm.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js → EscalationsOverview-D90kdfw1.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js.map → EscalationsOverview-D90kdfw1.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-C1en_KZ0.js → EventTable-BNxtlgNz.js} +2 -2
- package/dashboard/dist/assets/{EventTable-C1en_KZ0.js.map → EventTable-BNxtlgNz.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js → FilterBar-BTiaAhCx.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js.map → FilterBar-BTiaAhCx.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js → ListToolbar-BUcagSCn.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js.map → ListToolbar-BUcagSCn.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js → McpOverview-B-tCvz8C.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js.map → McpOverview-B-tCvz8C.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js.map +1 -0
- package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js → McpRunDetailPage-Di_qpL2V.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js.map → McpRunDetailPage-Di_qpL2V.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js → McpRunsPage-BBgybBEa.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js.map → McpRunsPage-BBgybBEa.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-kB_P7ZOr.js → Modal-CaJ0gTEa.js} +2 -2
- package/dashboard/dist/assets/{Modal-kB_P7ZOr.js.map → Modal-CaJ0gTEa.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-DDfMmrmR.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-jc0vrgDI.js.map → OperatorDashboard-DDfMmrmR.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-NkOeBR05.js → PageHeader-C5D-G5rp.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-NkOeBR05.js.map → PageHeader-C5D-G5rp.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js → PageHeaderWithStats-DCa2eZh2.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js.map → PageHeaderWithStats-DCa2eZh2.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js → PriorityBadge-DTHq6OUZ.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js.map → PriorityBadge-DTHq6OUZ.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js → ProcessDetailPage-fC4dhrd0.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js.map → ProcessDetailPage-fC4dhrd0.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js → ProcessesListPage-CL2MY8uD.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js.map → ProcessesListPage-CL2MY8uD.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-C1dgC-fK.js → RolePill-kgKPANly.js} +2 -2
- package/dashboard/dist/assets/{RolePill-C1dgC-fK.js.map → RolePill-kgKPANly.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js → RolesPage-Be2lXTHD.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js.map → RolesPage-Be2lXTHD.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-lYaHGI-v.js → RowActions-DIzJCwqR.js} +2 -2
- package/dashboard/dist/assets/{RowActions-lYaHGI-v.js.map → RowActions-DIzJCwqR.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-v2TiITVr.js → StatCard-CRi2Jy6t.js} +2 -2
- package/dashboard/dist/assets/{StatCard-v2TiITVr.js.map → StatCard-CRi2Jy6t.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js → StatusBadge-BETI_8Mr.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js.map → StatusBadge-BETI_8Mr.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js → StepIndicator-DjpMqCjz.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js.map → StepIndicator-DjpMqCjz.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js → StickyPagination-BZbExQ9t.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js.map → StickyPagination-BZbExQ9t.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js → SwimlaneTimeline-DZthQyhR.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js.map → SwimlaneTimeline-DZthQyhR.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-CH8qMGhC.js → TagInput-CukbOfYn.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CH8qMGhC.js.map → TagInput-CukbOfYn.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js → TaskDetailPage-CIZHIKo9.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js.map → TaskDetailPage-CIZHIKo9.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js → TaskQueuePill-Q7DGoysj.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js.map → TaskQueuePill-Q7DGoysj.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js → TasksListPage-CsC9wjb0.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js.map → TasksListPage-CsC9wjb0.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js → TimeAgo-BcOOnJeH.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js.map → TimeAgo-BcOOnJeH.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js → TimestampCell-CEMapYDQ.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js.map → TimestampCell-CEMapYDQ.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-BUFYCnRa.js → UserName-BHoN7iRL.js} +2 -2
- package/dashboard/dist/assets/{UserName-BUFYCnRa.js.map → UserName-BHoN7iRL.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js → WorkflowExecutionPage-DawKl1LT.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js.map → WorkflowExecutionPage-DawKl1LT.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CP84Vqeg.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-DPKOcbf4.js.map → WorkflowPill-CP84Vqeg.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js → WorkflowsDashboard-QrvVFxtQ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js.map → WorkflowsDashboard-QrvVFxtQ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js → WorkflowsOverview-DuhAi_OY.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js.map → WorkflowsOverview-DuhAi_OY.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js.map +1 -0
- package/dashboard/dist/assets/{bots-Bi2_O1Ts.js → bots-Dny-rmmI.js} +2 -2
- package/dashboard/dist/assets/{bots-Bi2_O1Ts.js.map → bots-Dny-rmmI.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-Ck1KlLkT.js → escalation-CV0sKNH5.js} +2 -2
- package/dashboard/dist/assets/{escalation-Ck1KlLkT.js.map → escalation-CV0sKNH5.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js → escalation-columns-30CKyoWI.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js.map → escalation-columns-30CKyoWI.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-BoD2SgUY.js → helpers-C1-30CzH.js} +2 -2
- package/dashboard/dist/assets/{helpers-BoD2SgUY.js.map → helpers-C1-30CzH.js.map} +1 -1
- package/dashboard/dist/assets/helpers-C1jaRD-d.js +2 -0
- package/dashboard/dist/assets/helpers-C1jaRD-d.js.map +1 -0
- package/dashboard/dist/assets/{index-FuohTtaM.js → index-BUVQ6wmy.js} +3 -3
- package/dashboard/dist/assets/{index-FuohTtaM.js.map → index-BUVQ6wmy.js.map} +1 -1
- package/dashboard/dist/assets/index-CxVB7F4X.js +2 -0
- package/dashboard/dist/assets/{index-Dk2Q51o0.js.map → index-CxVB7F4X.js.map} +1 -1
- package/dashboard/dist/assets/{index-BEtLIsML.js → index-D-oCWCAS.js} +2 -2
- package/dashboard/dist/assets/{index-BEtLIsML.js.map → index-D-oCWCAS.js.map} +1 -1
- package/dashboard/dist/assets/index-D0wPM3Ck.js +2 -0
- package/dashboard/dist/assets/{index-BpT-6WgJ.js.map → index-D0wPM3Ck.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bn2xHDr8.js → index-DHgnkykj.js} +3 -3
- package/dashboard/dist/assets/{index-Bn2xHDr8.js.map → index-DHgnkykj.js.map} +1 -1
- package/dashboard/dist/assets/{index-D3NyVADW.js → index-D_aJBEAG.js} +2 -2
- package/dashboard/dist/assets/index-D_aJBEAG.js.map +1 -0
- package/dashboard/dist/assets/{index-PyCTS05D.css → index-DcIKW-cZ.css} +1 -1
- package/dashboard/dist/assets/{index-CZrJ09p-.js → index-Dd_U4mLm.js} +2 -2
- package/dashboard/dist/assets/{index-CZrJ09p-.js.map → index-Dd_U4mLm.js.map} +1 -1
- package/dashboard/dist/assets/{index-DYyLF-Qb.js → index-DnmZbNxk.js} +8 -8
- package/dashboard/dist/assets/index-DnmZbNxk.js.map +1 -0
- package/dashboard/dist/assets/index-_RBvi7s6.js +2 -0
- package/dashboard/dist/assets/{index-D7zYZOnH.js.map → index-_RBvi7s6.js.map} +1 -1
- package/dashboard/dist/assets/index-n7td8zgX.js +17 -0
- package/dashboard/dist/assets/{index-DOkHXmyf.js.map → index-n7td8zgX.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CJtYjA7A.js → mcp-CRFr4L9W.js} +2 -2
- package/dashboard/dist/assets/{mcp-CJtYjA7A.js.map → mcp-CRFr4L9W.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js +2 -0
- package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js → mcp-runs-BqPHqwAO.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js.map → mcp-runs-BqPHqwAO.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BM5P2qmL.js → namespaces-TG1aIpo_.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BM5P2qmL.js.map → namespaces-TG1aIpo_.js.map} +1 -1
- package/dashboard/dist/assets/{roles-lv0shpjJ.js → roles-DhhLTvXg.js} +2 -2
- package/dashboard/dist/assets/{roles-lv0shpjJ.js.map → roles-DhhLTvXg.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Wlq92mRo.js → settings-D9MBzEeB.js} +2 -2
- package/dashboard/dist/assets/{settings-Wlq92mRo.js.map → settings-D9MBzEeB.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BFGm4PuE.js → tasks-BxmcZoev.js} +2 -2
- package/dashboard/dist/assets/{tasks-BFGm4PuE.js.map → tasks-BxmcZoev.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js → useEventHooks-BylecvvI.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js.map → useEventHooks-BylecvvI.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js → useYamlActivityEvents-ocmj11e_.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js.map → useYamlActivityEvents-ocmj11e_.js.map} +1 -1
- package/dashboard/dist/assets/{users-tA5-K0wA.js → users-Ce5r-JAv.js} +2 -2
- package/dashboard/dist/assets/{users-tA5-K0wA.js.map → users-Ce5r-JAv.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-BiIug1SK.js → vendor-icons-D1DdudfH.js} +93 -73
- package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CfLc15Wr.js → workflows-ykIeVbRJ.js} +2 -2
- package/dashboard/dist/assets/{workflows-CfLc15Wr.js.map → workflows-ykIeVbRJ.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-WypmKYht.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-WypmKYht.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/api/sdk/auth.md +27 -0
- package/docs/api/sdk/bot-accounts.md +243 -0
- package/docs/api/sdk/controlplane.md +103 -0
- package/docs/api/sdk/dba.md +52 -0
- package/docs/api/sdk/escalations.md +374 -0
- package/docs/api/sdk/events.md +68 -0
- package/docs/api/sdk/exports.md +124 -0
- package/docs/api/sdk/insight.md +112 -0
- package/docs/api/sdk/maintenance.md +54 -0
- package/docs/api/sdk/mcp-runs.md +71 -0
- package/docs/api/sdk/mcp.md +250 -0
- package/docs/api/sdk/namespaces.md +43 -0
- package/docs/api/sdk/roles.md +183 -0
- package/docs/api/sdk/settings.md +24 -0
- package/docs/api/sdk/tasks.md +120 -0
- package/docs/api/sdk/users.md +196 -0
- package/docs/api/sdk/workflow-sets.md +135 -0
- package/docs/api/sdk/workflows.md +271 -0
- package/docs/api/sdk/yaml-workflows.md +408 -0
- package/docs/events.md +28 -0
- package/docs/sdk.md +177 -0
- package/docs/story.md +157 -0
- package/package.json +3 -2
- package/build/routes/escalations/helpers.d.ts +0 -5
- package/build/routes/resolve.d.ts +0 -9
- package/build/routes/resolve.js +0 -19
- package/build/routes/yaml-workflows/helpers.d.ts +0 -2
- package/build/routes/yaml-workflows/helpers.js +0 -8
- package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +0 -1
- package/dashboard/dist/assets/index-BpT-6WgJ.js +0 -2
- package/dashboard/dist/assets/index-D3NyVADW.js.map +0 -1
- package/dashboard/dist/assets/index-D7zYZOnH.js +0 -2
- package/dashboard/dist/assets/index-DOkHXmyf.js +0 -17
- package/dashboard/dist/assets/index-DYyLF-Qb.js.map +0 -1
- package/dashboard/dist/assets/index-Dk2Q51o0.js +0 -2
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +0 -2
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js.map +0 -1
- package/docs/img/01-login.png +0 -0
- package/docs/img/02-dashboard-home.png +0 -0
- package/docs/img/03-processes-list.png +0 -0
- package/docs/img/04-escalations-list.png +0 -0
- package/docs/img/05-mcp-servers.png +0 -0
- package/docs/img/06-mcp-pipelines.png +0 -0
- package/docs/img/07-workflows-list.png +0 -0
- package/docs/img/compilation/01-query-submit.png +0 -0
- package/docs/img/compilation/02-mcp-servers.png +0 -0
- package/docs/img/compilation/03-query-completed.png +0 -0
- package/docs/img/compilation/04-wizard-original.png +0 -0
- package/docs/img/compilation/05-wizard-timeline.png +0 -0
- package/docs/img/compilation/06-wizard-profile.png +0 -0
- package/docs/img/compilation/07-wizard-deploy.png +0 -0
- package/docs/img/compilation/08-wizard-test-modal.png +0 -0
- package/docs/img/compilation/09-wizard-test-compare.png +0 -0
- package/docs/img/compilation/10-wizard-verify.png +0 -0
- /package/docs/api/{dba.md → http/dba.md} +0 -0
- /package/docs/api/{escalations.md → http/escalations.md} +0 -0
- /package/docs/api/{exports.md → http/exports.md} +0 -0
- /package/docs/api/{maintenance.md → http/maintenance.md} +0 -0
- /package/docs/api/{mcp-runs.md → http/mcp-runs.md} +0 -0
- /package/docs/api/{mcp-servers.md → http/mcp-servers.md} +0 -0
- /package/docs/api/{namespaces.md → http/namespaces.md} +0 -0
- /package/docs/api/{roles.md → http/roles.md} +0 -0
- /package/docs/api/{service-accounts.md → http/service-accounts.md} +0 -0
- /package/docs/api/{settings.md → http/settings.md} +0 -0
- /package/docs/api/{tasks.md → http/tasks.md} +0 -0
- /package/docs/api/{users.md → http/users.md} +0 -0
- /package/docs/api/{workflows.md → http/workflows.md} +0 -0
- /package/docs/api/{yaml-workflows.md → http/yaml-workflows.md} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpQueryDetailPage-DPlF1wYb.js","sources":["../../src/components/common/layout/WizardSteps.tsx","../../src/api/workflow-builder.ts","../../src/api/workflow-sets.ts","../../src/components/common/layout/WizardNav.tsx","../../src/pages/mcp/workflow-builder-detail/DescribePanel.tsx","../../src/pages/mcp/workflow-builder-detail/BuilderProfilePanel.tsx","../../src/pages/mcp/mcp-query-detail/PlanSidebar.tsx","../../src/pages/mcp/mcp-query-detail/PlanProfilePanel.tsx","../../src/components/common/display/SecondaryAction.tsx","../../src/pages/mcp/mcp-query-detail/InputSchemaEditor.tsx","../../src/pages/mcp/mcp-query-detail/ConfigurationSection.tsx","../../src/components/common/data/DagCanvas.tsx","../../src/components/common/data/YamlComposer.tsx","../../src/components/common/data/DagNodeDetail.tsx","../../src/pages/mcp/mcp-query-detail/LifecycleSidebar.tsx","../../src/pages/mcp/mcp-query-detail/VersionHistory.tsx","../../src/pages/mcp/mcp-query-detail/DeployPanel.tsx","../../src/pages/mcp/mcp-query-detail/SectionHeading.tsx","../../src/pages/mcp/mcp-query-detail/LiveActivityTimeline.tsx","../../src/pages/mcp/mcp-query-detail/TestPanel.tsx","../../src/pages/mcp/mcp-query-detail/PlanWizard.tsx","../../src/hooks/useWizardStep.ts","../../src/pages/mcp/mcp-query-detail/useQueryDetail.ts","../../src/pages/mcp/mcp-query-detail/StatusCard.tsx","../../src/pages/mcp/mcp-query-detail/PanelTitle.tsx","../../src/pages/mcp/mcp-query-detail/OriginalQueryPanel.tsx","../../src/pages/mcp/mcp-query-detail/TimelinePanel.tsx","../../src/pages/mcp/mcp-query-detail/ProfilePanel.tsx","../../src/pages/mcp/mcp-query-detail/RouterProgressTracker.tsx","../../src/pages/mcp/mcp-query-detail/VerifyPanel.tsx","../../src/pages/mcp/mcp-query-detail/EscalationBanner.tsx","../../src/pages/mcp/mcp-query-detail/McpQueryDetailPage.tsx"],"sourcesContent":["/**\n * Reusable wizard step indicator — sticky at top on scroll.\n * Numbered-circle pattern for multi-step wizard flows.\n */\n\ninterface WizardStepsProps {\n labels: readonly string[];\n current: number;\n /** Highest step the user can navigate to */\n maxReachable: number;\n onStepClick: (step: number) => void;\n}\n\nexport function WizardSteps({ labels, current, maxReachable, onStepClick }: WizardStepsProps) {\n return (\n <div className=\"sticky top-0 z-20 bg-surface/95 backdrop-blur-sm pb-6 pt-1 -mt-1\">\n <div className=\"flex items-center gap-3\">\n {labels.map((label, i) => {\n const s = i + 1;\n const isReachable = s <= maxReachable;\n return (\n <div key={s} className=\"flex items-center gap-2\">\n {s > 1 && <div className={`w-8 h-px ${current >= s ? 'bg-accent' : 'bg-surface-border'}`} />}\n <button\n onClick={() => isReachable && onStepClick(s)}\n disabled={!isReachable}\n className={`w-6 h-6 rounded-full text-[11px] font-semibold flex items-center justify-center transition-colors ${\n current === s\n ? 'bg-accent text-text-inverse'\n : isReachable\n ? 'bg-accent/20 text-accent cursor-pointer hover:bg-accent/30'\n : 'bg-surface-sunken text-text-tertiary cursor-default'\n }`}\n >\n {s}\n </button>\n <span className={`text-xs ${current === s ? 'text-text-primary font-medium' : 'text-text-tertiary'}`}>\n {label}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { LTJob } from './types';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface BuildWorkflowResult {\n workflow_id: string;\n status: string;\n prompt: string;\n}\n\nexport interface WorkflowBuilderOutput {\n name: string;\n description: string;\n yaml: string;\n input_schema: Record<string, unknown>;\n activity_manifest: Array<Record<string, unknown>>;\n tags: string[];\n sample_inputs: Record<string, unknown>;\n build_attempts: number;\n}\n\n// ── Query keys ──────────────────────────────────────────────────────────────\n\nexport const BUILDER_JOBS_KEY = ['builderJobs'] as const;\n\n// ── Hooks ───────────────────────────────────────────────────────────────────\n\n/** Submit a new workflow builder request (or answer clarification questions). */\nexport function useSubmitBuildWorkflow() {\n const queryClient = useQueryClient();\n return useMutation<BuildWorkflowResult, Error, {\n prompt: string;\n tags?: string[];\n answers?: string;\n prior_questions?: string[];\n }>({\n mutationFn: (params) =>\n apiFetch<BuildWorkflowResult>('/insight/build-workflow', {\n method: 'POST',\n body: JSON.stringify({ ...params, wait: false }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: BUILDER_JOBS_KEY, refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['jobs'], refetchType: 'all' });\n },\n });\n}\n\n/** Submit a refinement request with prior YAML and feedback. */\nexport function useRefineBuildWorkflow() {\n const queryClient = useQueryClient();\n return useMutation<BuildWorkflowResult, Error, {\n prompt: string;\n prior_yaml: string;\n feedback: string;\n tags?: string[];\n }>({\n mutationFn: (params) =>\n apiFetch<BuildWorkflowResult>('/insight/build-workflow/refine', {\n method: 'POST',\n body: JSON.stringify({ ...params, wait: false }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: BUILDER_JOBS_KEY, refetchType: 'all' });\n },\n });\n}\n\n/** List workflow builder executions. */\nexport function useBuilderJobs(filters: {\n limit?: number;\n offset?: number;\n search?: string;\n} = {}) {\n const params = new URLSearchParams();\n params.set('entity', 'mcpWorkflowBuilder');\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n if (filters.search) params.set('search', filters.search);\n params.set('sort_by', 'created_at');\n params.set('order', 'desc');\n\n return useQuery<{ jobs: LTJob[]; total: number }>({\n queryKey: [...BUILDER_JOBS_KEY, filters],\n queryFn: () => apiFetch(`/workflow-states/jobs?${params}`),\n });\n}\n\n/** Create a YAML workflow directly from builder output (no compilation). */\nexport function useCreateDirectYamlWorkflow() {\n const queryClient = useQueryClient();\n return useMutation<any, Error, {\n name: string;\n description?: string;\n yaml_content: string;\n input_schema?: Record<string, unknown>;\n activity_manifest?: Array<Record<string, unknown>>;\n tags?: string[];\n app_id?: string;\n }>({\n mutationFn: (params) =>\n apiFetch('/yaml-workflows/direct', {\n method: 'POST',\n body: JSON.stringify(params),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflows'], refetchType: 'all' });\n },\n });\n}\n\n/** Get the result from a completed builder workflow. */\nexport function useBuilderResult(workflowId: string | undefined) {\n return useQuery<{ workflowId: string; result: { type: string; data: WorkflowBuilderOutput } }>({\n queryKey: ['builderResult', workflowId],\n queryFn: () => apiFetch(`/workflows/${workflowId}/result`),\n enabled: !!workflowId,\n });\n}\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { WorkflowSetRecord, PlanItem } from './types';\n\n// ── Query keys ──────────────────────────────────────────────────────────────\n\nexport const WORKFLOW_SETS_KEY = ['workflowSets'] as const;\n\n// ── Hooks ───────────────────────────────────────────────────────────────────\n\n/** List workflow sets with optional filters. */\nexport function useWorkflowSets(filters: {\n status?: string;\n search?: string;\n limit?: number;\n offset?: number;\n} = {}) {\n const params = new URLSearchParams();\n if (filters.status) params.set('status', filters.status);\n if (filters.search) params.set('search', filters.search);\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n\n return useQuery<{ sets: WorkflowSetRecord[]; total: number }>({\n queryKey: [...WORKFLOW_SETS_KEY, filters],\n queryFn: () => apiFetch(`/workflow-sets?${params}`),\n });\n}\n\n/** Get a single workflow set by ID. Polls while status is non-terminal. */\nexport function useWorkflowSet(id: string | undefined) {\n return useQuery<WorkflowSetRecord>({\n queryKey: [...WORKFLOW_SETS_KEY, id],\n queryFn: () => apiFetch(`/workflow-sets/${id}`),\n enabled: !!id,\n refetchInterval: (query) => {\n const status = query.state.data?.status;\n if (!status || status === 'completed' || status === 'failed') return false;\n return 3000;\n },\n });\n}\n\n/** Create a new workflow set from a specification. */\nexport function useCreateWorkflowSet() {\n const queryClient = useQueryClient();\n return useMutation<WorkflowSetRecord & { planner_workflow_id: string }, Error, {\n name: string;\n description?: string;\n specification: string;\n }>({\n mutationFn: (params) =>\n apiFetch('/workflow-sets', {\n method: 'POST',\n body: JSON.stringify(params),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: WORKFLOW_SETS_KEY, refetchType: 'all' });\n },\n });\n}\n\n/** Update a workflow set's plan (engineer adjustments). */\nexport function useUpdateWorkflowSetPlan() {\n const queryClient = useQueryClient();\n return useMutation<WorkflowSetRecord, Error, {\n id: string;\n plan: PlanItem[];\n namespaces?: string[];\n }>({\n mutationFn: ({ id, ...body }) =>\n apiFetch(`/workflow-sets/${id}/plan`, {\n method: 'PUT',\n body: JSON.stringify(body),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: WORKFLOW_SETS_KEY, refetchType: 'all' });\n },\n });\n}\n\n/** Trigger build phase for a workflow set. */\nexport function useBuildWorkflowSet() {\n const queryClient = useQueryClient();\n return useMutation<{ status: string; id: string }, Error, string>({\n mutationFn: (id) =>\n apiFetch(`/workflow-sets/${id}/build`, { method: 'POST' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: WORKFLOW_SETS_KEY, refetchType: 'all' });\n },\n });\n}\n\n/** Deploy all namespaces in a workflow set. */\nexport function useDeployWorkflowSet() {\n const queryClient = useQueryClient();\n return useMutation<{ status: string; id: string }, Error, string>({\n mutationFn: (id) =>\n apiFetch(`/workflow-sets/${id}/deploy`, { method: 'POST' }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: WORKFLOW_SETS_KEY, refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflows'], refetchType: 'all' });\n },\n });\n}\n","/**\n * Sticky bottom navigation bar for wizard flows.\n * Pins Back/Next buttons to the bottom of the viewport.\n */\n\ninterface WizardNavProps {\n children: React.ReactNode;\n}\n\nexport function WizardNav({ children }: WizardNavProps) {\n return (\n <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)' }}>\n {children}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { MessageSquare, HelpCircle, Loader2, CheckCircle, Server, Cpu, FileCode } from 'lucide-react';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { useMcpQueryExecution } from '../../../api/mcp-query';\nimport { useSubmitBuildWorkflow } from '../../../api/workflow-builder';\n\ninterface DescribePanelProps {\n workflowId: string;\n status: string;\n builderData: any;\n onBuilt: () => void;\n onNext: () => void;\n}\n\nconst BUILD_PHASES = [\n { icon: Server, label: 'Discovering MCP servers and tools', key: 'discover' },\n { icon: Cpu, label: 'LLM constructing YAML pipeline', key: 'build' },\n { icon: FileCode, label: 'Validating workflow structure', key: 'validate' },\n];\n\nexport function DescribePanel({ workflowId, status, builderData, onBuilt, onNext }: DescribePanelProps) {\n const [answers, setAnswers] = useState('');\n const [activePhase, setActivePhase] = useState(0);\n const submitBuild = useSubmitBuildWorkflow();\n\n // Always fetch execution — needed for prompt extraction even when complete\n const { data: execution } = useMcpQueryExecution(workflowId);\n\n const isClarification = builderData?.clarification_needed;\n const questions: string[] = builderData?.questions || [];\n const toolsIdentified: string[] = builderData?.tools_identified || [];\n const isBuilding = status === 'in_progress';\n const isComplete = status === 'completed' && builderData?.yaml;\n const isFailed = status === 'failed' || (builderData?.title?.includes('Failed'));\n\n // Extract original prompt from the workflow_execution_started event's input envelope\n const startEvent = execution?.events?.find(\n (e: any) => e.event_type === 'workflow_execution_started',\n );\n const envelope = Array.isArray(startEvent?.attributes?.input)\n ? startEvent.attributes.input[0]\n : startEvent?.attributes?.input;\n const originalPrompt: string | null = envelope?.data?.prompt || envelope?.data?.question || null;\n\n // Animate build phases based on completed activities\n useEffect(() => {\n if (!isBuilding) return;\n const events = execution?.events || [];\n const activityCount = events.filter((e: any) => e.event_type === 'activity_task_completed' && !e.is_system).length;\n if (activityCount >= 2) setActivePhase(2);\n else if (activityCount >= 1) setActivePhase(1);\n else setActivePhase(0);\n }, [isBuilding, execution?.events]);\n\n const handleAnswer = async () => {\n if (!answers.trim()) return;\n await submitBuild.mutateAsync({\n prompt: builderData?._originalPrompt || workflowId,\n answers: answers.trim(),\n prior_questions: questions,\n });\n onBuilt();\n };\n\n // Two-column layout mirroring the composer: prompt on left, progress on right\n return (\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Describe</h2>\n <p className=\"text-base text-text-secondary mb-6\">\n {isClarification\n ? 'The builder identified tools but needs more details before constructing the workflow.'\n : isBuilding\n ? 'Building your workflow — this typically takes 20-40 seconds.'\n : isComplete\n ? 'Pipeline constructed — YAML definition, input schema, and activity manifest generated.'\n : isFailed\n ? 'Build failed. Try a more specific prompt or use Discover & Compile mode.'\n : 'Workflow build submitted.'}\n </p>\n\n {/* Clarification Q&A — full width, different layout */}\n {isClarification && (\n <div className=\"space-y-4\">\n {toolsIdentified.length > 0 && (\n <div>\n <p className=\"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Tools Identified</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {toolsIdentified.map((t) => (\n <span key={t} className=\"px-2 py-0.5 text-xs font-mono bg-accent/10 text-accent rounded\">\n {t}\n </span>\n ))}\n </div>\n </div>\n )}\n <div>\n <p className=\"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Questions</p>\n <div className=\"space-y-2\">\n {questions.map((q, i) => (\n <div key={i} className=\"flex items-start gap-2 text-sm text-text-secondary\">\n <HelpCircle className=\"w-3.5 h-3.5 text-status-warning shrink-0 mt-0.5\" strokeWidth={1.5} />\n <span>{q}</span>\n </div>\n ))}\n </div>\n </div>\n <div>\n <p className=\"text-xs font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Your Answers</p>\n <textarea\n value={answers}\n onChange={(e) => setAnswers(e.target.value)}\n placeholder=\"Answer each question above...\"\n 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\"\n onKeyDown={(e) => { if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) handleAnswer(); }}\n />\n <div className=\"flex justify-end mt-2\">\n <button\n onClick={handleAnswer}\n disabled={!answers.trim() || submitBuild.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\"\n >\n {submitBuild.isPending ? 'Submitting...' : 'Submit Answers & Build'}\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Main two-column layout: prompt left, progress right */}\n {!isClarification && (\n <div className=\"grid grid-cols-[1fr_240px] gap-6\">\n {/* Left: original prompt */}\n <div className=\"rounded-lg bg-surface-sunken/40 overflow-hidden\">\n <div className=\"flex items-start gap-3 p-4\">\n <MessageSquare className=\"w-4 h-4 text-accent shrink-0 mt-0.5\" strokeWidth={1.5} />\n {originalPrompt ? (\n <p className=\"text-sm font-mono text-text-secondary leading-relaxed whitespace-pre-wrap\">\n {originalPrompt}\n </p>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">Loading prompt...</p>\n )}\n </div>\n </div>\n\n {/* Right: build progress / completion status */}\n <div className=\"space-y-3 pt-1\">\n {BUILD_PHASES.map((phase, i) => {\n const isDone = isComplete || i < activePhase;\n const isActive = isBuilding && i === activePhase;\n return (\n <div key={phase.key} className=\"flex items-start gap-2.5\">\n {isDone ? (\n <CheckCircle className=\"w-3.5 h-3.5 text-status-success shrink-0 mt-0.5\" strokeWidth={1.5} />\n ) : isActive ? (\n <Loader2 className=\"w-3.5 h-3.5 text-accent animate-spin shrink-0 mt-0.5\" strokeWidth={1.5} />\n ) : (\n <phase.icon className=\"w-3.5 h-3.5 text-text-tertiary/40 shrink-0 mt-0.5\" strokeWidth={1.5} />\n )}\n <div>\n <p className={`text-[11px] font-medium ${isDone ? 'text-text-primary' : isActive ? 'text-text-primary' : 'text-text-tertiary/50'}`}>\n {phase.label}\n </p>\n {isDone && !isBuilding && (\n <p className=\"text-[10px] text-status-success mt-0.5\">complete</p>\n )}\n </div>\n </div>\n );\n })}\n\n {isBuilding && (\n <p className=\"text-[10px] text-text-tertiary pl-6\">\n Elapsed: {execution?.duration_ms ? `${(execution.duration_ms / 1000).toFixed(0)}s` : '...'}\n </p>\n )}\n\n {isComplete && builderData.build_attempts > 1 && (\n <p className=\"text-[10px] text-text-tertiary pl-6\">\n Built in {builderData.build_attempts} attempts\n </p>\n )}\n\n {isFailed && (\n <p className=\"text-[10px] text-status-error pl-6\">\n {builderData?.summary || 'Build failed'}\n </p>\n )}\n </div>\n </div>\n )}\n\n <WizardNav>\n <div />\n {isComplete && (\n <button onClick={onNext} className=\"btn-primary text-xs\">\n Next: Profile\n </button>\n )}\n </WizardNav>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { Pencil } from 'lucide-react';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { TagInput } from '../../../components/common/form/TagInput';\nimport { useCreateDirectYamlWorkflow } from '../../../api/workflow-builder';\nimport { useYamlWorkflow, useUpdateYamlWorkflow } from '../../../api/yaml-workflows';\n\ninterface BuilderProfilePanelProps {\n builderData: any;\n resolvedYamlId: string | null;\n originalPrompt?: string;\n onBack: () => void;\n onCreate: (yamlId: string) => void;\n onNext: () => void;\n}\n\nexport function BuilderProfilePanel({ builderData, resolvedYamlId, originalPrompt, onBack, onCreate, onNext }: BuilderProfilePanelProps) {\n const [isEditing, setIsEditing] = useState(false);\n const [name, setName] = useState((builderData?.name || '').toLowerCase().replace(/[^a-z0-9._-]/g, ''));\n const [description, setDescription] = useState(builderData?.description || '');\n const [appId, setAppId] = useState('longtail');\n const [tags, setTags] = useState<string[]>(builderData?.tags || []);\n\n const createYaml = useCreateDirectYamlWorkflow();\n const updateYaml = useUpdateYamlWorkflow();\n const { data: existingWf } = useYamlWorkflow(resolvedYamlId || '');\n\n const isCreated = !!resolvedYamlId;\n\n const handleCreate = async () => {\n const result = await createYaml.mutateAsync({\n name,\n description,\n yaml_content: builderData.yaml,\n input_schema: builderData.input_schema,\n activity_manifest: builderData.activity_manifest,\n tags,\n app_id: appId,\n });\n onCreate(result.id);\n };\n\n const handleSave = async () => {\n if (!resolvedYamlId) return;\n await updateYaml.mutateAsync({\n id: resolvedYamlId,\n name,\n description,\n tags,\n });\n setIsEditing(false);\n };\n\n const editable = !isCreated || isEditing;\n\n return (\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Profile</h2>\n <p className=\"text-base text-text-secondary mb-6\">\n Name the MCP server and tool, add tags for discovery, and describe what this pipeline does.\n </p>\n\n {/* Original prompt — context for filling in the profile fields */}\n {originalPrompt && (\n <div className=\"mb-6\">\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Original Prompt</label>\n <div className=\"rounded-md bg-surface-sunken/50 px-4 py-3\">\n <p className=\"text-xs font-mono text-text-primary leading-relaxed whitespace-pre-wrap\">\n {originalPrompt}\n </p>\n </div>\n </div>\n )}\n\n <div className=\"grid grid-cols-[300px_1fr] gap-4 mb-6\">\n <div className=\"space-y-3\">\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">MCP Server Name</label>\n {editable ? (\n <input\n value={appId}\n onChange={(e) => setAppId(e.target.value.toLowerCase().replace(/[^a-z0-9]/g, ''))}\n 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\"\n />\n ) : (\n <p className=\"text-sm text-text-primary py-1.5\">{existingWf?.app_id || appId}</p>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">MCP Tool Name</label>\n {editable ? (\n <input\n value={name}\n onChange={(e) => setName(e.target.value.toLowerCase().replace(/[^a-z0-9._-]/g, ''))}\n 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\"\n />\n ) : (\n <p className=\"text-sm text-text-primary py-1.5\">{existingWf?.name || name}</p>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</label>\n {editable ? (\n <TagInput tags={tags} onChange={setTags} compact />\n ) : (\n <div className=\"flex flex-wrap gap-1.5 py-1\">\n {(existingWf?.tags || tags).map((t: string) => (\n <span key={t} className=\"px-2 py-0.5 text-sm bg-surface-raised text-text-primary rounded\">{t}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n {isCreated && !isEditing && (\n <button\n onClick={() => setIsEditing(true)}\n className=\"flex items-center gap-1 text-[10px] text-accent hover:text-accent/80 transition-colors\"\n >\n <Pencil className=\"w-3 h-3\" strokeWidth={1.5} />\n Edit\n </button>\n )}\n </div>\n {editable ? (\n <textarea\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n 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\"\n />\n ) : (\n <p className=\"text-sm text-text-primary leading-relaxed py-1.5\">{existingWf?.description || description}</p>\n )}\n {isEditing && (\n <div className=\"flex justify-end gap-2 mt-2\">\n <button onClick={() => setIsEditing(false)} className=\"text-[10px] text-text-tertiary hover:text-text-primary\">Cancel</button>\n <button\n onClick={handleSave}\n disabled={updateYaml.isPending}\n className=\"text-[10px] text-accent hover:text-accent/80 font-medium\"\n >\n {updateYaml.isPending ? 'Saving...' : 'Save Changes'}\n </button>\n </div>\n )}\n </div>\n </div>\n\n {createYaml.isError && (\n <p className=\"text-xs text-status-error mb-4\">{createYaml.error.message}</p>\n )}\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {!isCreated ? (\n <button\n onClick={handleCreate}\n disabled={createYaml.isPending || !name.trim()}\n className=\"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {createYaml.isPending ? 'Creating...' : 'Create & Save'}\n </button>\n ) : (\n <button onClick={onNext} className=\"btn-primary text-xs\">\n Next: Deploy\n </button>\n )}\n </WizardNav>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { Loader2, FileCode2, Rocket, PackageCheck } from 'lucide-react';\nimport type { PlanItem } from '../../../api/types';\n\ninterface PlanSidebarProps {\n plan: PlanItem[];\n namespaces: string[];\n yamlStatuses: Record<string, string>;\n activeWorkflow: string | null;\n onSelect: (name: string) => void;\n}\n\nfunction statusIcon(status: string | undefined) {\n const base = 'w-4 h-4 shrink-0';\n if (!status)\n return <Loader2 className={`${base} text-text-tertiary animate-spin`} strokeWidth={1.5} />;\n if (status === 'active')\n return <Rocket className={`${base} text-status-success`} strokeWidth={1.5} />;\n if (status === 'deployed')\n return <PackageCheck className={`${base} text-accent`} strokeWidth={1.5} />;\n if (status === 'draft')\n return <FileCode2 className={`${base} text-accent/75`} strokeWidth={1.5} />;\n return <Loader2 className={`${base} text-accent animate-spin`} strokeWidth={1.5} />;\n}\n\nexport function PlanSidebar({ plan, namespaces, yamlStatuses, activeWorkflow, onSelect }: PlanSidebarProps) {\n const grouped = useMemo(() => {\n const groups: Record<string, PlanItem[]> = {};\n for (const item of plan) {\n (groups[item.namespace] ||= []).push(item);\n }\n return groups;\n }, [plan]);\n\n const showNsHeaders = namespaces.length > 1;\n\n return (\n <nav className=\"w-56 shrink-0 overflow-y-auto\">\n <p className=\"px-3 py-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Workflows\n </p>\n <div className=\"space-y-0.5\">\n {namespaces.map((ns) => (\n <div key={ns}>\n {showNsHeaders && (\n <p className=\"px-3 pt-3 pb-1 text-[9px] font-semibold uppercase tracking-widest text-text-tertiary\">{ns}</p>\n )}\n {(grouped[ns] || []).map((item) => {\n const isActive = activeWorkflow === item.name;\n return (\n <button\n key={item.name}\n onClick={() => onSelect(item.name)}\n className={`w-full flex items-center gap-3 px-3 py-2 rounded-md transition-colors duration-150 ${\n isActive\n ? 'bg-surface-hover text-text-primary'\n : 'text-text-secondary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {statusIcon(yamlStatuses[item.name])}\n <div className=\"min-w-0 text-left\">\n <span className=\"text-sm block truncate\">{item.name}</span>\n <span className=\"text-[10px] text-text-tertiary block truncate\">{item.description}</span>\n </div>\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </nav>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { Pencil } from 'lucide-react';\n\nimport { TagInput } from '../../../components/common/form/TagInput';\nimport { useYamlWorkflow, useUpdateYamlWorkflow } from '../../../api/yaml-workflows';\nimport type { PlanItem } from '../../../api/types';\n\ninterface PlanProfilePanelProps {\n yamlId: string;\n planItem: PlanItem;\n lockedAppId: string | null;\n isSaved: boolean;\n onSaved: (appId: string) => void;\n onNavigateDeploy: () => void;\n}\n\nexport function PlanProfilePanel({ yamlId, planItem, lockedAppId, isSaved, onSaved, onNavigateDeploy }: PlanProfilePanelProps) {\n const { data: wf } = useYamlWorkflow(yamlId);\n const updateYaml = useUpdateYamlWorkflow();\n\n const [appId, setAppId] = useState(lockedAppId || 'longtail');\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [tags, setTags] = useState<string[]>([]);\n const [loadedId, setLoadedId] = useState<string | null>(null);\n const [isEditing, setIsEditing] = useState(false);\n\n // Re-initialize when switching workflows (yamlId changes) or data arrives\n useEffect(() => {\n if (wf && wf.id !== loadedId) {\n setAppId(lockedAppId || wf.app_id || 'longtail');\n const defaultName = planItem.name.toLowerCase().replace(/[^a-z0-9-]/g, '').replace(/^-|-$/g, '');\n setName((wf.name !== defaultName && wf.name) ? wf.name.toLowerCase().replace(/[^a-z0-9-]/g, '').replace(/^-|-$/g, '') : defaultName);\n setDescription(wf.description || planItem.description || '');\n setTags(wf.tags || []);\n setLoadedId(wf.id);\n setIsEditing(false);\n }\n }, [wf, planItem, lockedAppId, loadedId]);\n\n // Keep appId in sync with lock changes\n useEffect(() => {\n if (lockedAppId) setAppId(lockedAppId);\n }, [lockedAppId]);\n\n const handleSave = async () => {\n if (!wf) return;\n const sanitizedAppId = appId.toLowerCase().replace(/[^a-z0-9]/g, '');\n const sanitizedName = name.toLowerCase().replace(/[^a-z0-9-]/g, '').replace(/^-|-$/g, '');\n\n // Always rewrite YAML to align app.id, subscribes, topic, and activity suffixes\n let yaml = wf.yaml_content || '';\n\n // Extract the actual subscribes value from the YAML (source of truth)\n const subscribesMatch = yaml.match(/^\\s*-?\\s*subscribes:\\s*(.+)$/m);\n const actualOldTopic = subscribesMatch ? subscribesMatch[1].trim() : wf.graph_topic;\n\n // 1. Rewrite app.id\n yaml = yaml.replace(/^(\\s*id:\\s*)(.+)$/m, `$1${sanitizedAppId}`);\n\n // 2. Rewrite subscribes\n yaml = yaml.replace(/^(\\s*-?\\s*subscribes:\\s*)(.+)$/m, `$1${sanitizedName}`);\n\n // 3. Rewrite all worker topic fields that match the old subscribes value\n if (actualOldTopic) {\n yaml = yaml.replace(\n new RegExp(`^(\\\\s*topic:\\\\s*)${actualOldTopic.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}\\\\s*$`, 'gm'),\n `$1${sanitizedName}`,\n );\n }\n\n // 4. Replace activity ID suffixes with a fresh unique 4-char suffix.\n // Activity IDs are defined as YAML keys at 8-space indent: \" trigger_x8kf:\"\n // First, collect all actual activity IDs from their definitions.\n const newSuffix = Math.random().toString(36).slice(2, 6);\n const activityIds = [...yaml.matchAll(/^ {8}(\\w+_[a-z0-9]{4}):\\s*$/gm)].map(m => m[1]);\n for (const actId of activityIds) {\n // Replace this exact activity ID everywhere it appears (definitions + references)\n const newId = actId.replace(/_[a-z0-9]{4}$/, `_${newSuffix}`);\n if (actId !== newId) {\n yaml = yaml.replace(new RegExp(actId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g'), newId);\n }\n }\n\n await updateYaml.mutateAsync({\n id: yamlId,\n name: sanitizedName,\n description,\n tags,\n app_id: sanitizedAppId,\n graph_topic: sanitizedName,\n yaml_content: yaml,\n });\n setIsEditing(false);\n onSaved(sanitizedAppId);\n };\n\n if (!wf) {\n return <div className=\"text-sm text-text-tertiary py-8 text-center\">Loading workflow...</div>;\n }\n\n const saved = isSaved && !isEditing;\n const editable = !isSaved || isEditing;\n const isLocked = !!lockedAppId;\n\n return (\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Profile</h2>\n <p className=\"text-base text-text-secondary mb-6\">\n Configure the MCP server and tool identity for <span className=\"font-medium text-text-primary\">{planItem.name}</span>.\n </p>\n\n <div className=\"grid grid-cols-[300px_1fr] gap-4 mb-6\">\n <div className=\"space-y-3\">\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">MCP Server Name</label>\n {editable && !isLocked ? (\n <input\n value={appId}\n onChange={(e) => setAppId(e.target.value.toLowerCase().replace(/[^a-z0-9]/g, ''))}\n 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\"\n placeholder=\"lowercase alphanumeric only\"\n />\n ) : (\n <p className=\"text-sm font-mono text-text-primary py-1.5\">{wf.app_id || appId}</p>\n )}\n {isLocked && editable && (\n <p className=\"text-[10px] text-text-tertiary mt-1\">Locked to match other workflows in this set.</p>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">MCP Tool Name</label>\n {editable ? (\n <input\n value={name}\n onChange={(e) => setName(e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, ''))}\n 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\"\n placeholder=\"unique tool name (dashes allowed)\"\n />\n ) : (\n <p className=\"text-sm font-mono text-text-primary py-1.5\">{wf.name || name}</p>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</label>\n {editable ? (\n <TagInput tags={tags} onChange={setTags} compact />\n ) : (\n <div className=\"flex flex-wrap gap-1.5 py-1\">\n {(wf.tags || tags).map((t: string) => (\n <span key={t} className=\"px-2 py-0.5 text-sm bg-surface-raised text-text-primary rounded\">{t}</span>\n ))}\n </div>\n )}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n {saved && (\n <button\n onClick={() => setIsEditing(true)}\n className=\"flex items-center gap-1 text-[10px] text-accent hover:text-accent/80 transition-colors\"\n >\n <Pencil className=\"w-3 h-3\" strokeWidth={1.5} />\n Edit\n </button>\n )}\n </div>\n {editable ? (\n <textarea\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n 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\"\n />\n ) : (\n <p className=\"text-sm text-text-primary leading-relaxed py-1.5\">{wf.description || description}</p>\n )}\n {isEditing && (\n <div className=\"flex justify-end gap-2 mt-2\">\n <button onClick={() => setIsEditing(false)} className=\"text-[10px] text-text-tertiary hover:text-text-primary\">Cancel</button>\n <button\n onClick={handleSave}\n disabled={updateYaml.isPending}\n className=\"text-[10px] text-accent hover:text-accent/80 font-medium\"\n >\n {updateYaml.isPending ? 'Saving...' : 'Save Changes'}\n </button>\n </div>\n )}\n </div>\n </div>\n\n {updateYaml.isError && (\n <p className=\"text-xs text-status-error mb-4\">{updateYaml.error.message}</p>\n )}\n\n <div className=\"flex justify-end\">\n {saved ? (\n <button onClick={onNavigateDeploy} className=\"btn-primary text-xs\">\n Next: Deploy\n </button>\n ) : !isEditing ? (\n <button\n onClick={handleSave}\n disabled={updateYaml.isPending || !name.trim() || !appId.trim()}\n className=\"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {updateYaml.isPending ? 'Saving...' : 'Save Profile'}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\n\ninterface SecondaryActionProps {\n icon?: LucideIcon;\n label: string;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport function SecondaryAction({ icon: Icon, label, onClick, disabled }: SecondaryActionProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={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\"\n >\n {Icon && <Icon className=\"w-3.5 h-3.5\" strokeWidth={1.5} />}\n {label}\n </button>\n );\n}\n","import { useState } from 'react';\nimport type { InputFieldMeta } from '../../../api/types';\n\ninterface InputSchemaEditorProps {\n fields: InputFieldMeta[];\n onChange: (fields: InputFieldMeta[]) => void;\n editing: boolean;\n}\n\nconst CLASSIFICATION_STYLES: Record<string, { bg: string; text: string; label: string }> = {\n dynamic: { bg: 'bg-status-success/10', text: 'text-status-success', label: 'Dynamic' },\n fixed: { bg: 'bg-surface-sunken', text: 'text-text-tertiary', label: 'Fixed' },\n wired: { bg: 'bg-blue-500/10', text: 'text-blue-500', label: 'Wired' },\n};\n\nfunction ClassificationBadge({ classification }: { classification: string }) {\n const style = CLASSIFICATION_STYLES[classification] || CLASSIFICATION_STYLES.fixed;\n return (\n <span className={`px-1.5 py-0.5 text-[9px] font-medium rounded ${style.bg} ${style.text}`}>\n {style.label}\n </span>\n );\n}\n\nexport function InputSchemaEditor({ fields, onChange, editing }: InputSchemaEditorProps) {\n const [expandedField, setExpandedField] = useState<string | null>(null);\n\n const updateField = (index: number, updates: Partial<InputFieldMeta>) => {\n const next = fields.map((f, i) => i === index ? { ...f, ...updates } : f);\n onChange(next);\n };\n\n const toggleClassification = (index: number) => {\n const field = fields[index];\n const nextClass = field.classification === 'dynamic' ? 'fixed' : 'dynamic';\n const updates: Partial<InputFieldMeta> = { classification: nextClass };\n if (nextClass === 'fixed' && field.default === undefined) {\n // Set a sensible default when switching to fixed\n updates.default = field.type === 'string' ? '' : field.type === 'number' ? 0 : field.type === 'boolean' ? false : null;\n }\n updateField(index, updates);\n };\n\n const removeField = (index: number) => {\n onChange(fields.filter((_, i) => i !== index));\n };\n\n if (fields.length === 0) {\n return (\n <div className=\"py-4 text-center\">\n <p className=\"text-xs text-text-tertiary\">No input fields detected from the execution.</p>\n </div>\n );\n }\n\n const dynamicFields = fields.filter(f => f.classification === 'dynamic');\n const fixedFields = fields.filter(f => f.classification === 'fixed');\n\n return (\n <div className=\"space-y-4\">\n {/* Summary */}\n <div className=\"flex items-center gap-3 text-[10px] text-text-tertiary\">\n <span>{dynamicFields.length} dynamic (user provides)</span>\n <span>{fixedFields.length} fixed (defaults from execution)</span>\n </div>\n\n {/* Dynamic fields */}\n {dynamicFields.length > 0 && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-status-success/70 mb-2\">\n Dynamic Inputs (required at invocation)\n </p>\n <div className=\"space-y-1\">\n {dynamicFields.map((field) => {\n const index = fields.indexOf(field);\n const isExpanded = expandedField === field.key;\n return (\n <FieldRow\n key={field.key}\n field={field}\n editing={editing}\n expanded={isExpanded}\n onToggleExpand={() => setExpandedField(isExpanded ? null : field.key)}\n onToggleClassification={() => toggleClassification(index)}\n onUpdate={(updates) => updateField(index, updates)}\n onRemove={() => removeField(index)}\n />\n );\n })}\n </div>\n </div>\n )}\n\n {/* Fixed fields */}\n {fixedFields.length > 0 && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">\n Fixed Defaults (from execution)\n </p>\n <div className=\"space-y-1\">\n {fixedFields.map((field) => {\n const index = fields.indexOf(field);\n const isExpanded = expandedField === field.key;\n return (\n <FieldRow\n key={field.key}\n field={field}\n editing={editing}\n expanded={isExpanded}\n onToggleExpand={() => setExpandedField(isExpanded ? null : field.key)}\n onToggleClassification={() => toggleClassification(index)}\n onUpdate={(updates) => updateField(index, updates)}\n onRemove={() => removeField(index)}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n// ── Field Row ────────────────────────────────────────────────────────────────\n\nfunction FieldRow({\n field,\n editing,\n expanded,\n onToggleExpand,\n onToggleClassification,\n onUpdate,\n onRemove,\n}: {\n field: InputFieldMeta;\n editing: boolean;\n expanded: boolean;\n onToggleExpand: () => void;\n onToggleClassification: () => void;\n onUpdate: (updates: Partial<InputFieldMeta>) => void;\n onRemove: () => void;\n}) {\n return (\n <div className=\"border border-surface-border rounded-lg overflow-hidden\">\n <button\n type=\"button\"\n onClick={onToggleExpand}\n className=\"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface-hover/50 transition-colors\"\n >\n <span className=\"font-mono text-xs text-text-primary\">{field.key}</span>\n <span className=\"text-[9px] text-text-tertiary\">{field.type}</span>\n <ClassificationBadge classification={field.classification} />\n {field.default !== undefined && (\n <span className=\"text-[9px] font-mono text-text-tertiary truncate max-w-[120px]\">\n = {JSON.stringify(field.default)}\n </span>\n )}\n <span className=\"text-[9px] text-text-tertiary ml-auto truncate max-w-[150px]\">\n {field.source_tool}\n </span>\n <svg\n className={`w-3 h-3 text-text-tertiary shrink-0 transition-transform ${expanded ? 'rotate-180' : ''}`}\n fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {expanded && (\n <div className=\"px-3 pb-3 pt-1 border-t border-surface-border/50 space-y-2\">\n <p className=\"text-[10px] text-text-tertiary\">{field.description}</p>\n\n {editing && (\n <div className=\"space-y-2\">\n {/* Description */}\n <div>\n <label className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n <input\n type=\"text\"\n value={field.description}\n onChange={(e) => onUpdate({ description: e.target.value })}\n className=\"input text-[11px] w-full mt-0.5\"\n />\n </div>\n\n {/* Default value (for fixed fields) */}\n {field.classification === 'fixed' && (\n <div>\n <label className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary\">Default Value</label>\n <input\n type=\"text\"\n value={field.default !== undefined ? (typeof field.default === 'string' ? field.default : JSON.stringify(field.default)) : ''}\n onChange={(e) => {\n let val: unknown = e.target.value;\n if (field.type === 'number') val = Number(val) || 0;\n else if (field.type === 'boolean') val = val === 'true';\n else { try { val = JSON.parse(val as string); } catch { /* keep as string */ } }\n onUpdate({ default: val });\n }}\n className=\"input text-[11px] font-mono w-full mt-0.5\"\n />\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 pt-1\">\n <button\n type=\"button\"\n onClick={onToggleClassification}\n className=\"text-[10px] text-accent hover:underline\"\n >\n {field.classification === 'dynamic' ? 'Make fixed (add default)' : 'Make dynamic (require input)'}\n </button>\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"text-[10px] text-status-error hover:underline ml-auto\"\n >\n Remove\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useCallback } from 'react';\nimport { Maximize2, Minimize2, Copy, Check, BookOpen } from 'lucide-react';\nimport { CollapsibleSection } from '../../../components/common/layout/CollapsibleSection';\nimport { FullscreenOverlay } from '../../../components/common/layout/FullscreenOverlay';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { InputSchemaEditor } from './InputSchemaEditor';\nimport type { InputFieldMeta } from '../../../api/types';\n\nconst ICON = 'w-3 h-3';\nconst BTN = 'p-1 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised/60 transition-colors duration-150';\nconst BTN_LG = 'p-2 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised transition-colors duration-150';\n\nexport function ConfigurationSection({\n wf,\n resolvedInputSchema,\n resolvedOutputSchema,\n resolvedYaml,\n configEditing,\n setConfigEditing: _setConfigEditing,\n canEditConfig: _canEditConfig,\n yamlDraft,\n setYamlDraft,\n inputSchemaDraft,\n setInputSchemaDraft,\n outputSchemaDraft,\n setOutputSchemaDraft,\n inputFieldMetaDraft,\n setInputFieldMetaDraft,\n onSave,\n onCancel,\n updateMutation,\n yamlTextareaRef,\n isCollapsed,\n onToggle,\n schemasGrid,\n unwrapped,\n}: {\n wf: any;\n resolvedInputSchema: any;\n resolvedOutputSchema: any;\n resolvedYaml: string | undefined;\n configEditing: boolean;\n setConfigEditing: (v: boolean) => void;\n canEditConfig: boolean;\n yamlDraft: string;\n setYamlDraft: (v: string) => void;\n inputSchemaDraft: string;\n setInputSchemaDraft: (v: string) => void;\n outputSchemaDraft: string;\n setOutputSchemaDraft: (v: string) => void;\n inputFieldMetaDraft: InputFieldMeta[];\n setInputFieldMetaDraft: (v: InputFieldMeta[]) => void;\n onSave: () => void;\n onCancel: () => void;\n updateMutation: any;\n yamlTextareaRef: React.RefObject<HTMLTextAreaElement | null>;\n isCollapsed: boolean;\n onToggle: (key: string) => void;\n /** Render input/output schemas side-by-side in a 2-column grid. */\n schemasGrid?: boolean;\n /** Skip the CollapsibleSection wrapper and render content directly. */\n unwrapped?: boolean;\n}) {\n const hasFieldMeta = inputFieldMetaDraft.length > 0;\n const [advancedMode, setAdvancedMode] = useState(false);\n const [yamlFullscreen, setYamlFullscreen] = useState(false);\n const [copied, setCopied] = useState(false);\n const yamlSectionRef = useRef<HTMLDivElement>(null);\n\n const yamlText = configEditing ? yamlDraft : (resolvedYaml ?? wf.yaml_content);\n\n const handleCopyYaml = useCallback(() => {\n navigator.clipboard.writeText(yamlText).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n }, [yamlText]);\n\n const content = (\n <div className=\"space-y-6\">\n {/* Save / Cancel controls — only shown when NOT unwrapped (wizard handles its own) */}\n {!unwrapped && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n {configEditing && hasFieldMeta && (\n <button\n type=\"button\"\n onClick={() => setAdvancedMode(!advancedMode)}\n className=\"text-[10px] text-text-tertiary hover:text-text-primary\"\n >\n {advancedMode ? 'Visual editor' : 'Advanced (JSON)'}\n </button>\n )}\n </div>\n <div className=\"flex items-center gap-3\">\n {configEditing && (\n <>\n <button onClick={onCancel} className=\"text-[10px] text-text-tertiary hover:text-text-primary\">\n Cancel\n </button>\n <button\n onClick={onSave}\n disabled={updateMutation.isPending || (\n yamlDraft === wf.yaml_content\n && inputSchemaDraft === JSON.stringify(wf.input_schema, null, 2)\n && outputSchemaDraft === JSON.stringify(wf.output_schema, null, 2)\n )}\n className=\"text-[10px] text-accent hover:underline disabled:opacity-40 disabled:no-underline\"\n >\n {updateMutation.isPending ? 'Saving...' : 'Save'}\n </button>\n </>\n )}\n </div>\n </div>\n )}\n {/* Advanced mode toggle — shown even when unwrapped */}\n {unwrapped && configEditing && hasFieldMeta && (\n <div>\n <button\n type=\"button\"\n onClick={() => setAdvancedMode(!advancedMode)}\n className=\"text-[10px] text-text-tertiary hover:text-text-primary\"\n >\n {advancedMode ? 'Visual editor' : 'Advanced (JSON)'}\n </button>\n </div>\n )}\n\n {updateMutation.error && (\n <p className=\"text-xs text-status-error\">{updateMutation.error.message}</p>\n )}\n\n {/* Input + Output Schemas */}\n <div className={schemasGrid ? 'grid grid-cols-1 lg:grid-cols-2 gap-6' : 'space-y-6'}>\n {/* Input Schema — visual editor when editing with field meta, JsonViewer otherwise */}\n <div>\n {configEditing && hasFieldMeta && !advancedMode ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Input Schema</h4>\n <InputSchemaEditor\n fields={inputFieldMetaDraft}\n onChange={setInputFieldMetaDraft}\n editing={configEditing}\n />\n </>\n ) : configEditing ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Input Schema</h4>\n <textarea\n value={inputSchemaDraft}\n onChange={(e) => setInputSchemaDraft(e.target.value)}\n 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\"\n rows={Math.max(inputSchemaDraft.split('\\n').length + 1, 6)}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n </>\n ) : (\n <JsonViewer data={resolvedInputSchema ?? {}} label=\"Input Schema\" />\n )}\n </div>\n\n {/* Output Schema */}\n <div>\n {configEditing ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Output Schema</h4>\n <textarea\n value={outputSchemaDraft}\n onChange={(e) => setOutputSchemaDraft(e.target.value)}\n 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\"\n rows={Math.max(outputSchemaDraft.split('\\n').length + 1, 6)}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n </>\n ) : (\n <JsonViewer data={resolvedOutputSchema ?? {}} label=\"Output Schema\" />\n )}\n </div>\n </div>\n\n {/* YAML Definition */}\n <div>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">YAML Definition</h4>\n <div ref={yamlSectionRef} className=\"relative\">\n {/* Toolbar — inside the widget, upper right */}\n <div className=\"absolute top-2 right-2 z-10 flex items-center gap-0.5 bg-surface-sunken/90 rounded backdrop-blur-sm\">\n <a\n href=\"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={BTN}\n title=\"YAML Guide\"\n >\n <BookOpen className={ICON} />\n </a>\n <button onClick={handleCopyYaml} className={BTN} title=\"Copy YAML\">\n {copied ? <Check className={`${ICON} text-status-success`} /> : <Copy className={ICON} />}\n </button>\n <button onClick={() => setYamlFullscreen(true)} className={BTN} title=\"Fullscreen\">\n <Maximize2 className={ICON} />\n </button>\n </div>\n\n {configEditing ? (\n <textarea\n ref={yamlTextareaRef}\n value={yamlDraft}\n onChange={(e) => setYamlDraft(e.target.value)}\n 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\"\n rows={yamlDraft.split('\\n').length + 1}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n ) : (\n <pre className=\"p-4 pr-28 bg-surface-sunken rounded-md text-xs font-mono text-text-secondary overflow-x-auto whitespace-pre\">\n {resolvedYaml ?? wf.yaml_content}\n </pre>\n )}\n </div>\n </div>\n\n {/* YAML Fullscreen overlay — supports both view and edit modes */}\n <FullscreenOverlay open={yamlFullscreen} onClose={() => setYamlFullscreen(false)} sourceRef={yamlSectionRef}>\n <div className=\"sticky top-0 float-right z-10\">\n <div className=\"flex items-center gap-0.5 bg-surface-sunken/80 rounded-md backdrop-blur-sm\">\n <a\n href=\"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={BTN_LG}\n title=\"YAML Guide\"\n >\n <BookOpen className=\"w-5 h-5\" />\n </a>\n <button onClick={handleCopyYaml} className={BTN_LG} title=\"Copy YAML\">\n {copied ? <Check className=\"w-5 h-5 text-status-success\" /> : <Copy className=\"w-5 h-5\" />}\n </button>\n <button onClick={() => setYamlFullscreen(false)} className={BTN_LG} title=\"Close (Esc)\">\n <Minimize2 className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n {configEditing ? (\n <textarea\n value={yamlDraft}\n onChange={(e) => setYamlDraft(e.target.value)}\n 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\"\n spellCheck={false}\n autoFocus\n />\n ) : (\n <pre className=\"text-sm font-mono text-text-secondary leading-relaxed whitespace-pre\">\n {resolvedYaml ?? wf.yaml_content}\n </pre>\n )}\n </FullscreenOverlay>\n\n {/* Activity Manifest — runtime wiring and discovery reference per step */}\n {wf.activity_manifest?.length > 0 && (\n <div>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3\">Activity Manifest</h4>\n <div className=\"space-y-3\">\n {(wf.activity_manifest as any[])\n .filter((a: any) => a.tool_source !== 'trigger')\n .map((a: any) => {\n const hasArgs = a.tool_arguments && Object.keys(a.tool_arguments).length > 0;\n const hasMappings = a.input_mappings && Object.keys(a.input_mappings).length > 0;\n if (!hasArgs && !hasMappings) return null;\n return (\n <div key={a.activity_id} className=\"bg-surface-sunken rounded-md p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <span className=\"text-[10px] font-mono text-text-tertiary\">{a.activity_id}</span>\n <span className=\"text-xs font-medium text-text-primary\">{a.title}</span>\n {a.mcp_tool_name && (\n <span className=\"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface-raised text-text-secondary\">{a.mcp_tool_name}</span>\n )}\n </div>\n {hasMappings && (\n <div className={hasArgs ? 'mb-3' : ''}>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Runtime Wiring</p>\n <div className=\"grid gap-1\">\n {Object.entries(a.input_mappings).map(([k, v]) => (\n <div key={k} className=\"flex items-baseline gap-2 text-xs\">\n <span className=\"font-mono text-text-secondary shrink-0\">{k}</span>\n <span className=\"text-text-tertiary shrink-0\">←</span>\n <span className=\"font-mono text-accent/70\">\n {typeof v === 'object' ? JSON.stringify(v) : String(v)}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n {hasArgs && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Discovery Reference</p>\n <p className=\"text-[10px] text-text-tertiary mb-1.5\">Values from the original execution, stored for context. Runtime values are determined by the wiring above.</p>\n <div className=\"grid gap-1 opacity-60\">\n {Object.entries(a.tool_arguments).map(([k, v]) => {\n const val = typeof v === 'string' ? v : JSON.stringify(v);\n const isLong = val.length > 120;\n return (\n <div key={k} className=\"flex items-baseline gap-2 text-xs\">\n <span className=\"font-mono text-text-secondary shrink-0\">{k}:</span>\n {isLong ? (\n <pre className=\"font-mono text-text-tertiary whitespace-pre-wrap break-all flex-1\">{val}</pre>\n ) : (\n <span className=\"font-mono text-text-tertiary truncate\">{val}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n\n if (unwrapped) return content;\n\n return (\n <CollapsibleSection sectionKey=\"config\" title=\"Configuration\" isCollapsed={isCollapsed} onToggle={onToggle}>\n {content}\n </CollapsibleSection>\n );\n}\n","import { useMemo, useRef, useState, useEffect } from 'react';\nimport type { ActivityManifestEntry } from '../../../api/types';\n\n// ── Colors ──────────────────────────────────────────────────────────────────\n\nconst SOURCE_STYLES: Record<string, { bar: string; dot: string; hex: string; label: string }> = {\n trigger: { bar: 'bg-[#6C47FF]', dot: 'bg-[#6C47FF]', hex: '#6C47FF', label: 'Trigger' },\n mcp: { bar: 'bg-blue-500', dot: 'bg-blue-500', hex: '#3B82F6', label: 'MCP' },\n db: { bar: 'bg-blue-500', dot: 'bg-blue-500', hex: '#3B82F6', label: 'Database' },\n llm: { bar: 'bg-violet-500', dot: 'bg-violet-500', hex: '#8B5CF6', label: 'LLM' },\n transform: { bar: 'bg-emerald-500', dot: 'bg-emerald-500', hex: '#10B981', label: 'Transform' },\n signal: { bar: 'bg-amber-500', dot: 'bg-amber-500', hex: '#F59E0B', label: 'Signal' },\n};\n\nfunction styleFor(source: string) {\n return SOURCE_STYLES[source] ?? { bar: 'bg-gray-500', dot: 'bg-gray-500', hex: '#6B7280', label: source };\n}\n\n// ── Graph helpers ───────────────────────────────────────────────────────────\n\ninterface Edge { from: string; to: string }\n\n/** Recursively extract `{activityId.…}` refs from a mapping value (string or @pipe object). */\nfunction extractMappingRefs(value: unknown): string[] {\n if (typeof value === 'string') {\n return [...value.matchAll(/\\{([\\w-]+)\\./g)].map((m) => m[1]);\n }\n if (Array.isArray(value)) {\n return value.flatMap(extractMappingRefs);\n }\n if (value && typeof value === 'object') {\n return Object.values(value).flatMap(extractMappingRefs);\n }\n return [];\n}\n\n/**\n * Extract `{activityId.…}` refs from YAML input.maps sections.\n * The YAML is the source of truth — manifest input_mappings may flatten\n * nested objects to summary strings, losing dependency references.\n */\nfunction extractYamlRefs(yaml: string | undefined, activityId: string): string[] {\n if (!yaml) return [];\n // Find the maps: block for this activity by locating its ID in the YAML\n const actIdx = yaml.indexOf(`${activityId}:`);\n if (actIdx === -1) return [];\n // Find the next activity block (next line at same/lower indent with \":\")\n const afterAct = yaml.slice(actIdx);\n const mapsIdx = afterAct.indexOf('maps:');\n if (mapsIdx === -1) return [];\n // Grab everything from maps: to the next sibling key (output:, job:, or next activity)\n const afterMaps = afterAct.slice(mapsIdx);\n const endMatch = afterMaps.match(/\\n {6,10}\\w+:|^\\n {0,8}\\w+:/m);\n const mapsBlock = endMatch ? afterMaps.slice(0, afterMaps.indexOf(endMatch[0], 1)) : afterMaps;\n return [...mapsBlock.matchAll(/\\{([\\w-]+)\\./g)].map((m) => m[1]);\n}\n\n/** Derive dependency edges by parsing `{activityId.…}` refs in input_mappings and YAML. */\nfunction deriveEdges(entries: ActivityManifestEntry[], yaml?: string): Edge[] {\n const idSet = new Set(entries.map((e) => e.activity_id));\n const edgeMap = new Map<string, Edge>();\n\n for (const entry of entries) {\n // Collect refs from manifest input_mappings\n const manifestRefs = entry.input_mappings\n ? Object.values(entry.input_mappings).flatMap(extractMappingRefs)\n : [];\n // Supplement with refs from YAML (catches nested objects the manifest may have flattened)\n const yamlRefs = extractYamlRefs(yaml, entry.activity_id);\n const allRefs = new Set([...manifestRefs, ...yamlRefs]);\n\n for (const src of allRefs) {\n if (idSet.has(src) && src !== entry.activity_id) {\n const key = `${src}->${entry.activity_id}`;\n if (!edgeMap.has(key)) edgeMap.set(key, { from: src, to: entry.activity_id });\n }\n }\n }\n\n return [...edgeMap.values()];\n}\n\n/** Longest-path layering — each node's layer = max(dependency layers) + 1. */\nfunction assignLayers(entries: ActivityManifestEntry[], edges: Edge[]): Map<string, number> {\n const inDeps = new Map<string, string[]>();\n for (const e of entries) inDeps.set(e.activity_id, []);\n for (const edge of edges) inDeps.get(edge.to)?.push(edge.from);\n\n const layers = new Map<string, number>();\n\n function computeLayer(id: string, stack: Set<string>): number {\n if (layers.has(id)) return layers.get(id)!;\n if (stack.has(id)) return 0; // cycle guard\n stack.add(id);\n const deps = inDeps.get(id) ?? [];\n const layer = deps.length === 0 ? 0 : Math.max(...deps.map((d) => computeLayer(d, stack))) + 1;\n layers.set(id, layer);\n return layer;\n }\n\n for (const e of entries) computeLayer(e.activity_id, new Set());\n return layers;\n}\n\n// ── Layout constants ────────────────────────────────────────────────────────\n\nconst ROW_H = 44;\nconst BAR_TOP = 10;\nconst BAR_H = 24;\nconst LABEL_REM = 14; // w-56 = 14rem\n\n// ── Component ───────────────────────────────────────────────────────────────\n\ninterface DagCanvasProps {\n manifest: ActivityManifestEntry[];\n selectedId: string | null;\n onSelect: (id: string | null) => void;\n yaml?: string;\n}\n\nexport function DagCanvas({ manifest, selectedId, onSelect, yaml }: DagCanvasProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [graphW, setGraphW] = useState(0);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const measure = () => {\n const labelPx = LABEL_REM * parseFloat(getComputedStyle(document.documentElement).fontSize);\n setGraphW(el.clientWidth - labelPx);\n };\n measure();\n const obs = new ResizeObserver(measure);\n obs.observe(el);\n return () => obs.disconnect();\n }, []);\n\n const { edges, layerMap, numLayers, sortedEntries, rowIndex } = useMemo(() => {\n const edges = deriveEdges(manifest, yaml);\n const layerMap =\n edges.length > 0\n ? assignLayers(manifest, edges)\n : new Map(manifest.map((e, i) => [e.activity_id, i]));\n const numLayers = Math.max(1, ...Array.from(layerMap.values())) + 1;\n\n // Sort by layer, preserve original order within same layer\n const indexed = manifest.map((e, i) => ({ entry: e, origIdx: i }));\n indexed.sort((a, b) => {\n const la = layerMap.get(a.entry.activity_id) ?? 0;\n const lb = layerMap.get(b.entry.activity_id) ?? 0;\n return la !== lb ? la - lb : a.origIdx - b.origIdx;\n });\n const sorted = indexed.map((x) => x.entry);\n const rowIndex = new Map(sorted.map((e, i) => [e.activity_id, i]));\n\n return { edges, layerMap, numLayers, sortedEntries: sorted, rowIndex };\n }, [manifest, yaml]);\n\n if (manifest.length === 0) {\n return <p className=\"text-xs text-text-tertiary italic\">No activities in manifest</p>;\n }\n\n const graphH = sortedEntries.length * ROW_H;\n const barWidthPct = Math.max((0.7 / numLayers) * 100, 4);\n\n // Active tool_sources for legend\n const activeSources = [...new Set(manifest.map((e) => e.tool_source))];\n\n return (\n <div>\n {/* Legend */}\n <div className=\"flex items-center gap-3 mb-3\">\n {activeSources.map((src) => {\n const s = styleFor(src);\n return (\n <div key={src} className=\"flex items-center gap-1\">\n <span className={`w-2 h-2 rounded-full ${s.dot}`} />\n <span className=\"text-[9px] text-text-tertiary\">{s.label}</span>\n </div>\n );\n })}\n </div>\n\n {/* Column headers — dependency depth axis */}\n <div className=\"flex\">\n <div className=\"w-56 shrink-0\" />\n <div className=\"flex-1 relative h-5 border-b border-surface-border\">\n {Array.from({ length: numLayers }).map((_, i) => (\n <span\n key={i}\n className=\"absolute text-[9px] font-mono text-text-tertiary bottom-1 -translate-x-1/2\"\n style={{ left: `${((i + 0.5) / numLayers) * 100}%` }}\n >\n {i === 0 ? 'entry' : `step ${i}`}\n </span>\n ))}\n </div>\n </div>\n\n {/* Lanes + edge overlay */}\n <div ref={containerRef} className=\"relative\">\n {sortedEntries.map((entry) => {\n const layer = layerMap.get(entry.activity_id) ?? 0;\n const barLeftPct = (layer / numLayers) * 100;\n const s = styleFor(entry.tool_source);\n const isSelected = selectedId === entry.activity_id;\n\n return (\n <div\n key={entry.activity_id}\n className={`flex items-center border-b border-surface-border cursor-pointer transition-colors ${\n isSelected ? 'bg-accent/5' : 'hover:bg-surface-raised/30'\n }`}\n style={{ height: ROW_H }}\n onClick={() => onSelect(isSelected ? null : entry.activity_id)}\n >\n {/* Lane label */}\n <div className=\"w-56 shrink-0 pr-4 flex items-center gap-2\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${s.dot}`} />\n <p\n className=\"text-xs font-mono text-text-secondary truncate\"\n title={entry.title}\n >\n {entry.title}\n </p>\n </div>\n\n {/* Graph area */}\n <div className=\"flex-1 relative h-full\">\n {/* Grid lines */}\n {Array.from({ length: numLayers + 1 }).map((_, i) => (\n <div\n key={i}\n className=\"absolute top-0 bottom-0 w-px bg-surface-border opacity-30\"\n style={{ left: `${(i / numLayers) * 100}%` }}\n />\n ))}\n\n {/* Bar */}\n <div\n className={`absolute rounded-sm transition-all ${s.bar} ${\n isSelected\n ? 'ring-2 ring-accent ring-offset-1 ring-offset-surface'\n : 'hover:brightness-110'\n }`}\n style={{\n left: `calc(${barLeftPct}% + 4px)`,\n width: `calc(${barWidthPct}% - 8px)`,\n top: BAR_TOP,\n height: BAR_H,\n minWidth: 40,\n }}\n >\n <span className=\"absolute inset-0 flex items-center px-2 text-[9px] font-mono text-white truncate\">\n {entry.mcp_tool_name ?? entry.tool_source}\n </span>\n </div>\n </div>\n </div>\n );\n })}\n\n {/* Edge overlay — dependency arrows between bars */}\n {edges.length > 0 && graphW > 0 && (\n <svg\n className=\"absolute top-0 left-56 pointer-events-none overflow-visible\"\n style={{ width: graphW, height: graphH }}\n >\n <defs>\n <marker\n id=\"dag-edge-arrow\"\n viewBox=\"0 0 10 8\"\n refX=\"10\"\n refY=\"4\"\n markerWidth=\"6\"\n markerHeight=\"5\"\n orient=\"auto-start-reverse\"\n >\n <path d=\"M0 0 L10 4 L0 8 Z\" fill=\"#6B7280\" opacity=\"0.6\" />\n </marker>\n </defs>\n\n {edges.map((edge, i) => {\n const fromRow = rowIndex.get(edge.from) ?? 0;\n const toRow = rowIndex.get(edge.to) ?? 0;\n const fromLayer = layerMap.get(edge.from) ?? 0;\n const toLayer = layerMap.get(edge.to) ?? 0;\n\n // Bar geometry in pixels\n const colW = graphW / numLayers;\n const barW = Math.max(colW * 0.7 - 8, 40);\n\n // Source: right edge of source bar\n const x1 = fromLayer * colW + 4 + barW;\n const y1 = fromRow * ROW_H + ROW_H / 2;\n // Target: left edge of target bar\n const x2 = toLayer * colW + 4;\n const y2 = toRow * ROW_H + ROW_H / 2;\n\n // Bezier control points — horizontal bias for Gantt feel\n const dx = Math.abs(x2 - x1) * 0.4;\n\n return (\n <path\n key={i}\n d={`M${x1} ${y1} C${x1 + dx} ${y1}, ${x2 - dx} ${y2}, ${x2} ${y2}`}\n fill=\"none\"\n stroke=\"#6B7280\"\n strokeWidth={1.5}\n opacity={0.4}\n markerEnd=\"url(#dag-edge-arrow)\"\n />\n );\n })}\n </svg>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { ConfigurationSection } from '../../../pages/mcp/mcp-query-detail/ConfigurationSection';\nimport { DagCanvas } from './DagCanvas';\nimport type { ActivityManifestEntry, InputFieldMeta } from '../../../api/types';\n\ntype ViewMode = 'design' | 'raw';\n\ninterface YamlComposerProps {\n yamlContent: string | undefined;\n activityManifest: ActivityManifestEntry[];\n inputSchema: Record<string, unknown> | undefined;\n outputSchema: Record<string, unknown> | undefined;\n // DAG selection — controlled by parent (DeployPanel owns the right sidebar)\n selectedNodeId: string | null;\n onNodeSelect: (id: string | null) => void;\n // ConfigurationSection pass-through\n wf: any;\n configEditing: boolean;\n setConfigEditing: (v: boolean) => void;\n canEditConfig: boolean;\n yamlDraft: string;\n setYamlDraft: (v: string) => void;\n inputSchemaDraft: string;\n setInputSchemaDraft: (v: string) => void;\n outputSchemaDraft: string;\n setOutputSchemaDraft: (v: string) => void;\n inputFieldMetaDraft: InputFieldMeta[];\n setInputFieldMetaDraft: (v: InputFieldMeta[]) => void;\n onSave: () => void;\n onCancel: () => void;\n updateMutation: any;\n yamlTextareaRef: React.RefObject<HTMLTextAreaElement | null>;\n}\n\nexport function YamlComposer({\n activityManifest,\n inputSchema,\n outputSchema,\n yamlContent,\n selectedNodeId,\n onNodeSelect,\n wf,\n configEditing,\n setConfigEditing,\n canEditConfig,\n yamlDraft,\n setYamlDraft,\n inputSchemaDraft,\n setInputSchemaDraft,\n outputSchemaDraft,\n setOutputSchemaDraft,\n inputFieldMetaDraft,\n setInputFieldMetaDraft,\n onSave,\n onCancel,\n updateMutation,\n yamlTextareaRef,\n}: YamlComposerProps) {\n const [viewMode, setViewMode] = useState<ViewMode>('design');\n\n // Force raw mode when editing config; clear selection\n useEffect(() => {\n if (configEditing) {\n setViewMode('raw');\n onNodeSelect(null);\n }\n }, [configEditing, onNodeSelect]);\n\n return (\n <div>\n {/* Mode toggle */}\n <div className=\"flex items-center gap-1 mb-4\">\n <button\n onClick={() => {\n setViewMode('design');\n }}\n className={`px-2.5 py-1 text-[10px] font-medium rounded transition-colors ${\n viewMode === 'design'\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n >\n Design\n </button>\n <button\n onClick={() => {\n setViewMode('raw');\n onNodeSelect(null);\n }}\n className={`px-2.5 py-1 text-[10px] font-medium rounded transition-colors ${\n viewMode === 'raw'\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n >\n Raw\n </button>\n </div>\n\n {viewMode === 'design' ? (\n <DagCanvas\n manifest={activityManifest}\n selectedId={selectedNodeId}\n onSelect={onNodeSelect}\n yaml={yamlContent}\n />\n ) : (\n <ConfigurationSection\n wf={wf}\n resolvedInputSchema={inputSchema}\n resolvedOutputSchema={outputSchema}\n resolvedYaml={yamlContent}\n configEditing={configEditing}\n setConfigEditing={setConfigEditing}\n canEditConfig={canEditConfig}\n yamlDraft={yamlDraft}\n setYamlDraft={setYamlDraft}\n inputSchemaDraft={inputSchemaDraft}\n setInputSchemaDraft={setInputSchemaDraft}\n outputSchemaDraft={outputSchemaDraft}\n setOutputSchemaDraft={setOutputSchemaDraft}\n inputFieldMetaDraft={inputFieldMetaDraft}\n setInputFieldMetaDraft={setInputFieldMetaDraft}\n onSave={onSave}\n onCancel={onCancel}\n updateMutation={updateMutation}\n yamlTextareaRef={yamlTextareaRef}\n isCollapsed={false}\n onToggle={() => {}}\n schemasGrid\n unwrapped\n />\n )}\n </div>\n );\n}\n","import type { ActivityManifestEntry } from '../../../api/types';\n\ninterface DagNodeDetailProps {\n entry: ActivityManifestEntry;\n onClose: () => void;\n}\n\nexport function DagNodeDetail({ entry, onClose }: DagNodeDetailProps) {\n const hasMappings = entry.input_mappings && Object.keys(entry.input_mappings).length > 0;\n const hasOutputFields = entry.output_fields?.length > 0;\n\n return (\n <div className=\"space-y-4 text-xs\">\n {/* Header */}\n <div className=\"flex items-baseline justify-between gap-2\">\n <div className=\"min-w-0\">\n <p className=\"font-mono font-medium text-sm text-text-primary truncate\">{entry.title}</p>\n <p className=\"font-mono text-[10px] text-text-tertiary mt-0.5 truncate\">{entry.activity_id}</p>\n </div>\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-[10px] shrink-0\"\n >\n Close\n </button>\n </div>\n\n {/* Metadata — alignment and whitespace, no boxes */}\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-2\">\n <Field label=\"Type\" value={entry.type} />\n <Field label=\"Source\" value={entry.tool_source} />\n {entry.mcp_tool_name && <Field label=\"Tool\" value={entry.mcp_tool_name} />}\n {entry.mcp_server_id && <Field label=\"Server\" value={entry.mcp_server_id} />}\n {entry.model && <Field label=\"Model\" value={entry.model} />}\n {entry.topic && <Field label=\"Topic\" value={entry.topic} />}\n {entry.hook_topic && <Field label=\"Hook\" value={entry.hook_topic} />}\n </div>\n\n {/* Input mappings */}\n {hasMappings && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">\n Input Mappings\n </p>\n <div className=\"grid gap-1\">\n {Object.entries(entry.input_mappings).map(([k, v]) => (\n <div key={k} className=\"flex items-baseline gap-2\">\n <span className=\"font-mono text-text-secondary shrink-0\">{k}</span>\n <span className=\"text-text-tertiary shrink-0\">←</span>\n <span className=\"font-mono text-accent/70 truncate\">\n {typeof v === 'object' ? JSON.stringify(v) : String(v)}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Output fields */}\n {hasOutputFields && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">\n Output Fields\n </p>\n <p className=\"font-mono text-text-secondary leading-relaxed\">\n {entry.output_fields.join(', ')}\n </p>\n </div>\n )}\n\n {/* Prompt template (LLM only) */}\n {entry.prompt_template && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">\n Prompt Template\n </p>\n <pre className=\"text-[11px] font-mono text-text-secondary whitespace-pre-wrap break-words leading-relaxed max-h-48 overflow-y-auto\">\n {entry.prompt_template}\n </pre>\n </div>\n )}\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string }) {\n return (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {label}\n </p>\n <p className=\"font-mono text-text-primary\">{value}</p>\n </div>\n );\n}\n","import { Trash2 } from 'lucide-react';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\n\nconst LIFECYCLE_STEPS = ['draft', 'active', 'archived'] as const;\nconst LIFECYCLE_LABELS: Record<string, string> = {\n draft: 'Draft',\n active: 'Active',\n archived: 'Archived',\n};\n\nconst LIFECYCLE_COLORS: Record<string, { filled: string; line: string }> = {\n draft: { filled: 'bg-status-draft border-status-draft', line: 'bg-status-draft/30' },\n active: { filled: 'bg-status-success border-status-success', line: 'bg-status-success/30' },\n archived: { filled: 'bg-text-tertiary border-text-tertiary', line: 'bg-text-tertiary/30' },\n};\n\nexport function LifecycleSidebar({\n status,\n sourceWorkflowId: _sourceWorkflowId,\n contentVersion,\n deployedContentVersion,\n onDeploy,\n onArchive,\n onDelete,\n onRegenerate: _onRegenerate,\n isPending,\n error,\n}: {\n status: string;\n sourceWorkflowId?: string | null;\n contentVersion?: number;\n deployedContentVersion?: number | null;\n onDeploy: () => void;\n onArchive: () => void;\n onDelete: () => void;\n onRegenerate: () => void;\n isPending: boolean;\n error?: string;\n}) {\n // Treat 'deployed' as 'active' since deploy now auto-activates\n const effectiveStatus = status === 'deployed' ? 'active' : status;\n const currentIdx = LIFECYCLE_STEPS.indexOf(effectiveStatus as any);\n const needsRedeploy = contentVersion != null && contentVersion > (deployedContentVersion ?? 0);\n\n return (\n <div>\n <SectionLabel className=\"mb-4\">Lifecycle</SectionLabel>\n\n {/* Out-of-sync warning */}\n {needsRedeploy && effectiveStatus !== 'draft' && effectiveStatus !== 'archived' && (\n <div className=\"mb-4 px-3 py-2 rounded-md bg-status-pending/10 border border-status-pending/30\">\n <p className=\"text-[10px] font-semibold text-status-pending mb-1\">YAML modified</p>\n <p className=\"text-[10px] text-text-secondary leading-relaxed\">\n v{contentVersion} edited since deploy (v{deployedContentVersion}). Redeploy to apply changes.\n </p>\n <button onClick={onDeploy} disabled={isPending} className=\"mt-1.5 text-[10px] font-medium text-status-pending hover:underline\">\n {isPending ? 'Deploying...' : 'Deploy now'}\n </button>\n </div>\n )}\n\n {/* Step sequence */}\n <div className=\"space-y-0\">\n {LIFECYCLE_STEPS.map((step, idx) => {\n const isCurrent = step === effectiveStatus;\n const isDone = idx < currentIdx;\n const isFuture = idx > currentIdx;\n const isLast = idx === LIFECYCLE_STEPS.length - 1;\n const colors = LIFECYCLE_COLORS[step];\n\n return (\n <div key={step} className=\"flex items-stretch gap-3\">\n {/* Vertical track */}\n <div className=\"flex flex-col items-center w-5 shrink-0\">\n <span\n className={`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${\n isCurrent || isDone\n ? colors.filled\n : 'bg-surface-sunken border-surface-border'\n }`}\n />\n {!isLast && (\n <span className={`w-px flex-1 ${isDone ? colors.line : 'bg-surface-border'}`} />\n )}\n </div>\n\n {/* Label + action */}\n <div className={`pb-5 ${isLast ? 'pb-0' : ''}`}>\n <p className={`text-xs font-medium ${isCurrent ? 'text-text-primary' : isFuture ? 'text-text-tertiary' : 'text-text-secondary'}`}>\n {LIFECYCLE_LABELS[step]}\n </p>\n {/* Show the next-step action */}\n {isCurrent && step === 'draft' && (\n <div className=\"mt-2\">\n <button onClick={onDeploy} disabled={isPending} className=\"btn-primary text-[11px] px-3 py-1\">\n {isPending ? 'Deploying...' : 'Deploy & Activate'}\n </button>\n </div>\n )}\n {isCurrent && step === 'active' && (\n <div className=\"mt-2\">\n <button onClick={onArchive} disabled={isPending} className=\"text-[11px] text-text-tertiary hover:text-status-error\">\n Archive\n </button>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Version info */}\n {contentVersion != null && (\n <div className=\"mt-4 pt-4 border-t border-surface-border\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Content Version</p>\n <p className=\"text-xs font-mono text-text-primary\">\n v{contentVersion}\n {deployedContentVersion != null && (\n <span className=\"text-text-tertiary ml-1.5\">(deployed: v{deployedContentVersion})</span>\n )}\n </p>\n </div>\n )}\n\n {/* Delete -- only for draft/archived */}\n {(status === 'draft' || status === 'archived') && (\n <div className=\"mt-4 pt-4 border-t border-surface-border\">\n <button onClick={onDelete} disabled={isPending} className=\"inline-flex items-center gap-1.5 text-[11px] text-status-error/70 hover:text-status-error transition-colors hover:underline\">\n <Trash2 className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n Delete Compiled Workflow\n </button>\n </div>\n )}\n\n {error && <p className=\"mt-3 text-[11px] text-status-error\">{error}</p>}\n </div>\n );\n}\n","import { SectionLabel } from '../../../components/common/layout/SectionLabel';\n\nexport function VersionHistory({\n versionsData,\n searchParams,\n setSearchParams,\n currentVersion,\n viewingVersion,\n}: {\n versionsData: any;\n searchParams: URLSearchParams;\n setSearchParams: (v: URLSearchParams) => void;\n currentVersion: number;\n viewingVersion: number | null;\n}) {\n return (\n <div>\n <SectionLabel className=\"mb-3\">Version History</SectionLabel>\n <div className=\"space-y-1\">\n {versionsData.versions.map((v: any) => {\n const isCurrent = v.version === currentVersion;\n const isViewing = viewingVersion === v.version;\n return (\n <button\n key={v.version}\n type=\"button\"\n onClick={() => {\n const next = new URLSearchParams(searchParams);\n if (isCurrent) next.delete('version');\n else next.set('version', String(v.version));\n setSearchParams(next);\n }}\n className={`w-full text-left px-2 py-1.5 rounded text-xs transition-colors ${\n isViewing\n ? 'bg-accent/10 text-accent'\n : 'text-text-secondary hover:bg-surface-sunken hover:text-text-primary'\n }`}\n >\n <span className=\"font-mono font-medium\">v{v.version}</span>\n {isCurrent && <span className=\"text-text-tertiary ml-1\">(current)</span>}\n {v.change_summary && (\n <p className=\"text-[10px] text-text-tertiary truncate mt-0.5\">{v.change_summary}</p>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useRef, useMemo, useCallback } from 'react';\nimport { MessageSquarePlus, Pencil, X, Check } from 'lucide-react';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { YamlComposer } from '../../../components/common/data/YamlComposer';\nimport { DagNodeDetail } from '../../../components/common/data/DagNodeDetail';\nimport { LifecycleSidebar } from './LifecycleSidebar';\nimport { VersionHistory } from './VersionHistory';\nimport {\n useYamlWorkflow,\n useYamlWorkflowVersions,\n useYamlWorkflowVersion,\n useUpdateYamlWorkflow,\n useDeployYamlWorkflow,\n useActivateYamlWorkflow,\n useArchiveYamlWorkflow,\n useRegenerateYamlWorkflow,\n useDeleteYamlWorkflow,\n} from '../../../api/yaml-workflows';\nimport type { ActivityManifestEntry, InputFieldMeta } from '../../../api/types';\n\ninterface DeployPanelProps {\n yamlId: string;\n onAdvance: () => void;\n onBack: () => void;\n /** Override the default regeneration pathway. When provided, called instead of the compilation-based regenerate endpoint. */\n onRegenerate?: (feedback: string) => void;\n regeneratePending?: boolean;\n}\n\nexport function DeployPanel({ yamlId, onAdvance, onBack, onRegenerate, regeneratePending }: DeployPanelProps) {\n const queryClient = useQueryClient();\n const yamlTextareaRef = useRef<HTMLTextAreaElement>(null);\n const [feedbackText, setFeedbackText] = useState('');\n const [showFeedback, setShowFeedback] = useState(false);\n const [dismissingFeedback, setDismissingFeedback] = useState(false);\n\n const closeFeedback = () => {\n setDismissingFeedback(true);\n setTimeout(() => { setShowFeedback(false); setDismissingFeedback(false); }, 250);\n };\n\n const { data: wf, refetch } = useYamlWorkflow(yamlId);\n const { data: versionsData } = useYamlWorkflowVersions(yamlId);\n\n const deployMutation = useDeployYamlWorkflow();\n const activateMutation = useActivateYamlWorkflow();\n const archiveMutation = useArchiveYamlWorkflow();\n const deleteMutation = useDeleteYamlWorkflow();\n const regenerateMutation = useRegenerateYamlWorkflow();\n const updateMutation = useUpdateYamlWorkflow();\n\n // Config editing state\n const [yamlDraft, setYamlDraft] = useState('');\n const [inputSchemaDraft, setInputSchemaDraft] = useState('');\n const [outputSchemaDraft, setOutputSchemaDraft] = useState('');\n const [inputFieldMetaDraft, setInputFieldMetaDraft] = useState<InputFieldMeta[]>([]);\n const [configEditing, setConfigEditing] = useState(false);\n\n // Version browsing\n const [versionParam, setVersionParam] = useState<number | null>(null);\n const isViewingHistory = versionParam !== null && wf != null && versionParam !== wf.content_version;\n const { data: versionSnapshot } = useYamlWorkflowVersion(yamlId, isViewingHistory ? versionParam : null);\n\n const resolvedYaml = isViewingHistory && versionSnapshot ? versionSnapshot.yaml_content : wf?.yaml_content;\n const resolvedInputSchema = isViewingHistory && versionSnapshot ? versionSnapshot.input_schema : wf?.input_schema;\n const resolvedOutputSchema = isViewingHistory && versionSnapshot ? versionSnapshot.output_schema : wf?.output_schema;\n\n // Sync drafts when workflow loads\n useEffect(() => {\n if (wf) {\n setYamlDraft(wf.yaml_content);\n setInputSchemaDraft(JSON.stringify(wf.input_schema, null, 2));\n setOutputSchemaDraft(JSON.stringify(wf.output_schema, null, 2));\n if (wf.input_field_meta) setInputFieldMetaDraft(wf.input_field_meta);\n }\n }, [wf?.id, wf?.content_version]);\n\n // Version history adapter (VersionHistory expects URLSearchParams)\n const versionSearchParams = useMemo(() => {\n const sp = new URLSearchParams();\n if (versionParam !== null) sp.set('version', String(versionParam));\n return sp;\n }, [versionParam]);\n const setVersionSearchParams = useCallback((sp: URLSearchParams) => {\n const v = sp.get('version');\n setVersionParam(v ? parseInt(v, 10) : null);\n }, []);\n\n // DAG node selection — drives right sidebar content\n const [selectedNodeId, setSelectedNodeId] = useState<string | null>(null);\n const resolvedManifest: ActivityManifestEntry[] = (isViewingHistory && versionSnapshot)\n ? versionSnapshot.activity_manifest : wf?.activity_manifest ?? [];\n const selectedEntry = useMemo(\n () => resolvedManifest.find((e) => e.activity_id === selectedNodeId) ?? null,\n [resolvedManifest, selectedNodeId],\n );\n\n const canEditConfig = wf?.status !== 'archived' && !isViewingHistory;\n\n const handleSaveConfig = async () => {\n if (!wf) return;\n let inputSchema, outputSchema;\n try { inputSchema = JSON.parse(inputSchemaDraft); } catch { /* keep existing */ }\n try { outputSchema = JSON.parse(outputSchemaDraft); } catch { /* keep existing */ }\n await updateMutation.mutateAsync({\n id: wf.id,\n yaml_content: yamlDraft,\n ...(inputSchema ? { input_schema: inputSchema } : {}),\n ...(outputSchema ? { output_schema: outputSchema } : {}),\n });\n setConfigEditing(false);\n refetch();\n };\n\n const handleCancelEdit = () => {\n if (!wf) return;\n setYamlDraft(wf.yaml_content);\n setInputSchemaDraft(JSON.stringify(wf.input_schema, null, 2));\n setOutputSchemaDraft(JSON.stringify(wf.output_schema, null, 2));\n setConfigEditing(false);\n };\n\n const handleDeploy = async () => {\n if (!wf) return;\n // Always deploy (updates deployed_content_version), then activate\n await deployMutation.mutateAsync(wf.id);\n await activateMutation.mutateAsync(wf.id);\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflow'], refetchType: 'all' });\n refetch();\n onAdvance();\n };\n\n const handleRegenerate = async () => {\n if (onRegenerate) {\n onRegenerate(feedbackText.trim());\n setFeedbackText('');\n setShowFeedback(false);\n return;\n }\n await regenerateMutation.mutateAsync({\n id: yamlId,\n compilation_feedback: feedbackText.trim() || undefined,\n });\n setFeedbackText('');\n setShowFeedback(false);\n refetch();\n };\n\n if (!wf) return <p className=\"text-sm text-text-secondary animate-pulse\">Loading workflow...</p>;\n\n const isPending = deployMutation.isPending || activateMutation.isPending || archiveMutation.isPending || regenerateMutation.isPending || deleteMutation.isPending || !!regeneratePending;\n\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_240px] gap-6\">\n {/* Left: config */}\n <div className=\"min-w-0 overflow-hidden\">\n <div className=\"flex items-start justify-between mb-6\">\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Deploy</h2>\n <p className=\"text-base text-text-secondary\">\n Review and edit the workflow definition. Re/deploy when ready.\n </p>\n </div>\n <div className=\"flex items-center gap-3 shrink-0\">\n {configEditing ? (\n <>\n <SecondaryAction icon={X} label=\"Cancel\" onClick={() => { handleCancelEdit(); setConfigEditing(false); }} />\n <SecondaryAction\n icon={Check}\n label={updateMutation.isPending ? 'Saving...' : 'Save'}\n onClick={handleSaveConfig}\n disabled={updateMutation.isPending || (\n yamlDraft === wf.yaml_content\n && inputSchemaDraft === JSON.stringify(wf.input_schema, null, 2)\n && outputSchemaDraft === JSON.stringify(wf.output_schema, null, 2)\n )}\n />\n </>\n ) : (\n <>\n <SecondaryAction icon={MessageSquarePlus} label=\"Recompile with Feedback\" onClick={() => { setShowFeedback(!showFeedback); }} />\n <SecondaryAction icon={Pencil} label=\"Manual Edit\" onClick={() => { setConfigEditing(true); setShowFeedback(false); }} />\n </>\n )}\n </div>\n </div>\n\n {/* Recompile feedback panel */}\n {showFeedback && (\n <div\n className=\"mb-4 p-4 bg-surface-sunken border border-surface-border rounded-lg overflow-hidden transition-all duration-250 ease-in-out\"\n style={{\n animation: dismissingFeedback ? undefined : 'fadeIn 300ms ease-out both',\n opacity: dismissingFeedback ? 0 : 1,\n maxHeight: dismissingFeedback ? '0px' : '400px',\n paddingTop: dismissingFeedback ? '0px' : undefined,\n paddingBottom: dismissingFeedback ? '0px' : undefined,\n marginBottom: dismissingFeedback ? '0px' : undefined,\n }}\n >\n <div className=\"flex items-center justify-between mb-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">What should change?</p>\n <button onClick={closeFeedback} className=\"text-text-tertiary hover:text-text-secondary transition-colors\">\n <X className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n <textarea value={feedbackText} onChange={(e) => setFeedbackText(e.target.value)}\n placeholder=\"E.g.: 'Only url, username, password, and screenshot_dir should be dynamic inputs. The steps array and script are implementation details.'\"\n 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\" />\n <div className=\"flex items-center justify-between mt-2\">\n <p className=\"text-[10px] text-text-tertiary\">This feedback guides the compiler. The current YAML will be replaced.</p>\n <button onClick={handleRegenerate} disabled={!feedbackText.trim() || regenerateMutation.isPending} className=\"btn-primary text-xs shrink-0 ml-4\">\n {regenerateMutation.isPending ? 'Recompiling...' : 'Recompile Pipeline'}\n </button>\n </div>\n </div>\n )}\n\n {/* Version history banner */}\n {isViewingHistory && (\n <div className=\"mb-4 px-3 py-2 bg-accent-muted/20 border border-accent-muted/40 rounded-md flex items-center justify-between\">\n <span className=\"text-xs text-accent\">Viewing version {versionParam}</span>\n <button onClick={() => setVersionParam(null)} className=\"text-xs text-accent hover:underline\">Back to current</button>\n </div>\n )}\n\n <YamlComposer\n yamlContent={resolvedYaml}\n activityManifest={resolvedManifest}\n inputSchema={resolvedInputSchema}\n outputSchema={resolvedOutputSchema}\n wf={wf}\n configEditing={configEditing}\n setConfigEditing={setConfigEditing}\n canEditConfig={canEditConfig}\n yamlDraft={yamlDraft}\n setYamlDraft={setYamlDraft}\n inputSchemaDraft={inputSchemaDraft}\n setInputSchemaDraft={setInputSchemaDraft}\n outputSchemaDraft={outputSchemaDraft}\n setOutputSchemaDraft={setOutputSchemaDraft}\n inputFieldMetaDraft={inputFieldMetaDraft}\n setInputFieldMetaDraft={setInputFieldMetaDraft}\n onSave={handleSaveConfig}\n onCancel={handleCancelEdit}\n updateMutation={updateMutation}\n yamlTextareaRef={yamlTextareaRef}\n selectedNodeId={selectedNodeId}\n onNodeSelect={setSelectedNodeId}\n />\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {wf.status === 'active'\n ? <button onClick={onAdvance} disabled={showFeedback} className=\"btn-primary text-xs\">Next: Test</button>\n : <button onClick={handleDeploy} disabled={isPending || showFeedback} className=\"btn-primary text-xs\">{isPending ? 'Deploying...' : 'Deploy & Activate'}</button>\n }\n </WizardNav>\n </div>\n\n {/* Right sidebar — swaps between lifecycle tools and node properties */}\n <div className=\"space-y-6\">\n <div className=\"sticky top-6\">\n {selectedEntry ? (\n <DagNodeDetail\n entry={selectedEntry}\n onClose={() => setSelectedNodeId(null)}\n />\n ) : (\n <>\n <LifecycleSidebar\n status={wf.status}\n sourceWorkflowId={wf.source_workflow_id}\n contentVersion={wf.content_version}\n deployedContentVersion={wf.deployed_content_version}\n onDeploy={handleDeploy}\n onArchive={() => archiveMutation.mutateAsync(yamlId).then(() => refetch())}\n onDelete={async () => {\n await deleteMutation.mutateAsync(yamlId);\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n onBack();\n }}\n onRegenerate={handleRegenerate}\n isPending={isPending}\n error={undefined}\n />\n {(versionsData?.versions?.length ?? 0) > 1 && (\n <VersionHistory\n versionsData={versionsData}\n searchParams={versionSearchParams}\n setSearchParams={setVersionSearchParams}\n currentVersion={wf.content_version}\n viewingVersion={isViewingHistory ? versionParam : null}\n />\n )}\n </>\n )}\n </div>{/* end sticky */}\n </div>\n </div>\n );\n}\n","/**\n * A thin section divider: uppercase label with a trailing border line.\n * Reused across multiple wizard panels.\n */\nexport function SectionHeading({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex items-center gap-3 mb-3\">\n <span className=\"text-xs font-semibold uppercase tracking-widest text-text-tertiary\">{children}</span>\n <span className=\"flex-1 border-b border-surface-border\" />\n </div>\n );\n}\n","import type { ActivityManifestEntry } from '../../../api/types';\nimport type { ActivityStep } from '../../../hooks/useYamlActivityEvents';\n\nconst TOOL_SOURCE_COLORS: Record<string, { border: string; text: string; icon: string }> = {\n mcp: { border: 'border-blue-500', text: 'text-blue-500', icon: 'MCP' },\n db: { border: 'border-blue-500', text: 'text-blue-500', icon: 'DB' },\n llm: { border: 'border-violet-500', text: 'text-violet-500', icon: 'LLM' },\n transform: { border: 'border-emerald-500', text: 'text-emerald-500', icon: 'Map' },\n};\n\nexport function LiveActivityTimeline({\n steps,\n manifest,\n isComplete,\n}: {\n steps: ActivityStep[];\n manifest: ActivityManifestEntry[];\n isComplete: boolean;\n}) {\n const workerActivities = manifest.filter((a) => a.type === 'worker');\n const totalSteps = workerActivities.length;\n\n const merged = workerActivities.map((a, i) => {\n const live = steps.find((s) => s.activityId === a.activity_id);\n const source = a.tool_source || 'mcp';\n const colors = TOOL_SOURCE_COLORS[source] || TOOL_SOURCE_COLORS.mcp;\n return {\n activityId: a.activity_id,\n title: a.title || a.mcp_tool_name || a.activity_id,\n toolName: a.mcp_tool_name,\n toolSource: source,\n colors,\n stepIndex: i,\n status: live?.status || 'pending' as const,\n error: live?.error,\n };\n });\n\n return (\n <div>\n <p className=\"text-xs text-text-secondary mb-4\">\n {isComplete\n ? `All ${totalSteps} steps completed`\n : `Running step ${merged.filter((s) => s.status === 'completed').length + 1} of ${totalSteps}...`}\n </p>\n\n <div className=\"space-y-0\">\n {merged.map((step, idx) => {\n const isLast = idx === merged.length - 1;\n return (\n <div key={step.activityId} className=\"flex items-stretch gap-3\">\n {/* Vertical track */}\n <div className=\"flex flex-col items-center w-5 shrink-0\">\n <span className={`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${\n step.status === 'completed' ? 'bg-status-success border-status-success'\n : step.status === 'running' ? `${step.colors.border} bg-transparent animate-pulse`\n : step.status === 'failed' ? 'bg-status-error border-status-error'\n : 'bg-surface-sunken border-surface-border'\n }`} />\n {!isLast && (\n <span className={`w-px flex-1 transition-colors ${\n step.status === 'completed' ? 'bg-status-success/30' : 'bg-surface-border'\n }`} />\n )}\n </div>\n\n {/* Step content */}\n <div className={`pb-4 ${isLast ? 'pb-0' : ''}`}>\n <p className={`text-xs font-medium ${\n step.status === 'running' ? 'text-text-primary'\n : step.status === 'completed' ? 'text-text-secondary'\n : step.status === 'failed' ? 'text-status-error'\n : 'text-text-tertiary'\n }`}>\n {step.title}\n </p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <span className={`text-[9px] font-mono px-1 py-0.5 rounded border ${step.colors.border} ${step.colors.text} bg-transparent`}>\n {step.colors.icon}\n </span>\n {step.toolName && (\n <span className=\"text-[10px] text-text-tertiary font-mono\">{step.toolName}</span>\n )}\n </div>\n {step.error && (\n <p className=\"text-[10px] text-status-error mt-1\">{step.error}</p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {isComplete && (\n <p className=\"text-[10px] text-text-tertiary mt-3 text-center\">Closing...</p>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { Play } from 'lucide-react';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { useYamlWorkflow, useInvokeYamlWorkflow } from '../../../api/yaml-workflows';\nimport { useMcpRuns, useMcpRunExecution } from '../../../api/mcp-runs';\nimport { useWorkflowExecution } from '../../../api/workflows';\nimport { useTaskByWorkflowId } from '../../../api/tasks';\nimport { useYamlActivityEvents } from '../../../hooks/useYamlActivityEvents';\nimport { buildSkeleton } from './helpers';\nimport type { LTJob } from '../../../api/types';\nimport { extractJsonFromSummary } from './helpers';\nimport { SectionHeading } from './SectionHeading';\nimport { LiveActivityTimeline } from './LiveActivityTimeline';\n\nfunction jobLabel(job: LTJob): string {\n const date = new Date(job.created_at);\n const time = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n const day = date.toLocaleDateString([], { month: 'short', day: 'numeric' });\n const status = job.status === 'completed' || Number(job.status) === 0 ? 'completed' : job.is_live ? 'running' : 'failed';\n return `${day} ${time} — ${status}`;\n}\n\ninterface TestPanelProps {\n yamlId: string;\n originalWorkflowId: string | undefined;\n originalResult: Record<string, unknown> | undefined;\n originalPrompt: string | undefined;\n onBack: () => void;\n onAdvance: () => void;\n /** When true, hides the original MCP Query comparison column and shows input/output full-width. */\n builderMode?: boolean;\n}\n\nexport function TestPanel({ yamlId, originalWorkflowId, originalResult, originalPrompt, onBack, onAdvance, builderMode }: TestPanelProps) {\n const queryClient = useQueryClient();\n const [searchParams, setSearchParams] = useSearchParams();\n const { data: wf } = useYamlWorkflow(yamlId);\n\n const { data: runs } = useMcpRuns({\n entity: wf?.graph_topic, app_id: wf?.app_id || 'longtail', limit: 10,\n });\n\n // Deep-linked run selection via ?run= param\n const runParam = searchParams.get('run');\n const setRunParam = (id: string | null) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n if (id) next.set('run', id); else next.delete('run');\n return next;\n }, { replace: true });\n };\n\n const [selectedRunId, setSelectedRunId] = useState<string | null>(runParam);\n const selectRun = (id: string | null) => {\n setSelectedRunId(id);\n setRunParam(id);\n };\n\n const { data: selectedRunExecution, isLoading: runLoading } = useMcpRunExecution(\n selectedRunId ?? '', wf?.app_id || 'longtail',\n );\n\n // Sidebar state: input form or live execution\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const [invokeJsonMode, setInvokeJsonMode] = useState(false);\n const [invokeFields, setInvokeFields] = useState<Record<string, any>>({});\n const [invokeJson, setInvokeJson] = useState('{}');\n const [executeAs, setExecuteAs] = useState('');\n const [activeJobId, setActiveJobId] = useState<string | null>(null);\n const invokeMutation = useInvokeYamlWorkflow();\n const { steps: activitySteps, isComplete: jobComplete } = useYamlActivityEvents(activeJobId);\n\n // Initialize form fields from input schema\n useEffect(() => {\n if (wf?.input_schema) {\n const skeleton = buildSkeleton(wf.input_schema);\n setInvokeFields(skeleton);\n setInvokeJson(JSON.stringify(skeleton, null, 2));\n }\n }, [wf?.id]);\n\n // Auto-select first run if no deep-link and no selection\n const jobs = runs?.jobs ?? [];\n useEffect(() => {\n if (!selectedRunId && !runParam && jobs.length > 0) {\n selectRun(jobs[0].workflow_id);\n }\n }, [jobs.length]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Restore deep-linked run\n useEffect(() => {\n if (runParam && !selectedRunId) setSelectedRunId(runParam);\n }, [runParam]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // When job completes, switch to viewing it and close sidebar\n useEffect(() => {\n if (jobComplete && activeJobId) {\n const completedId = activeJobId;\n const timer = setTimeout(() => {\n selectRun(completedId);\n setActiveJobId(null);\n setSidebarOpen(false);\n queryClient.invalidateQueries({ queryKey: ['mcpRuns'], refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['mcpRunExecution', completedId], refetchType: 'all' });\n }, 1200);\n return () => clearTimeout(timer);\n }\n }, [jobComplete, activeJobId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleInvoke = async () => {\n if (!wf) return;\n try {\n const data = invokeJsonMode ? JSON.parse(invokeJson) : invokeFields;\n const result = await invokeMutation.mutateAsync({\n id: wf.id, data, sync: false,\n ...(executeAs ? { execute_as: executeAs } : {}),\n });\n if (result.job_id) {\n setActiveJobId(result.job_id);\n selectRun(result.job_id);\n }\n } catch { /* error shown in sidebar */ }\n };\n\n const handleOpenSidebar = () => {\n setActiveJobId(null);\n setSidebarOpen(true);\n };\n\n // Original execution + task envelope (only used in non-builder mode)\n const { data: originalExecution } = useWorkflowExecution(!builderMode ? (originalWorkflowId ?? '') : '');\n const { data: originalTask } = useTaskByWorkflowId(!builderMode ? (originalWorkflowId ?? '') : '');\n const originalExecResult = (originalExecution?.result as any)?.data as Record<string, unknown> | undefined;\n\n const originalEnvelope = useMemo(() => {\n if (builderMode || !originalTask?.envelope) return null;\n try { return typeof originalTask.envelope === 'string' ? JSON.parse(originalTask.envelope) : originalTask.envelope; }\n catch { return null; }\n }, [builderMode, originalTask?.envelope]);\n\n const resolvedPrompt = (originalEnvelope as any)?.data?.prompt ?? originalPrompt;\n\n if (!wf) return <p className=\"text-sm text-text-secondary animate-pulse\">Loading...</p>;\n\n // Original output\n const originalOutput = !builderMode ? (\n originalExecResult?.result ??\n (typeof originalExecResult?.summary === 'string' ? extractJsonFromSummary(originalExecResult.summary) : null) ??\n originalResult?.result ??\n (typeof originalResult?.summary === 'string' ? extractJsonFromSummary(originalResult.summary) : null) ??\n originalResult\n ) : null;\n\n // Deterministic run data\n let deterministicOutput: unknown = null;\n let deterministicInput: unknown = null;\n if (selectedRunExecution?.result) {\n const execResult = selectedRunExecution.result as Record<string, unknown>;\n if (typeof execResult.response === 'string') {\n const jsonMatch = (execResult.response as string).match(/```json\\s*([\\s\\S]*?)```/);\n if (jsonMatch) {\n try { deterministicOutput = JSON.parse(jsonMatch[1].trim()); } catch { deterministicOutput = execResult; }\n } else {\n deterministicOutput = extractJsonFromSummary(execResult.response as string) ?? execResult;\n }\n } else {\n deterministicOutput = execResult;\n }\n }\n if (selectedRunExecution?.events?.length) {\n const triggerEvent = selectedRunExecution.events.find(\n (e) => e.event_type === 'activity_task_completed' && e.is_system &&\n (e.attributes as any)?.result && Object.keys((e.attributes as any).result).length > 0,\n );\n deterministicInput = triggerEvent ? (triggerEvent.attributes as any).result : null;\n }\n\n return (\n <div>\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_400px] gap-8\">\n {/* Left: results */}\n <div>\n {/* Header */}\n <div className=\"flex items-start justify-between mb-6\">\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Test</h2>\n <p className=\"text-base text-text-secondary\">\n {builderMode\n ? 'Run the pipeline with test inputs and review the results.'\n : 'Run the pipeline with test inputs and compare results against the original execution.'}\n </p>\n </div>\n <SecondaryAction icon={Play} label=\"Run Test\" onClick={handleOpenSidebar} />\n </div>\n\n {builderMode ? (\n /* Builder mode: input/output stacked full-width */\n <>\n {/* Run selector */}\n {jobs.length > 0 && selectedRunId && (\n <div className=\"flex items-center justify-between mb-4\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Pipeline Run</p>\n <select\n value={selectedRunId}\n onChange={(e) => selectRun(e.target.value)}\n className=\"bg-transparent border-none text-[10px] text-accent hover:text-accent/80 cursor-pointer focus:outline-none p-0 text-right\"\n >\n {jobs.map((job) => <option key={job.workflow_id} value={job.workflow_id}>{jobLabel(job)}</option>)}\n </select>\n </div>\n )}\n\n <SectionHeading>Input</SectionHeading>\n <div className=\"mb-6\">\n {deterministicInput ? (\n <JsonViewer data={deterministicInput} defaultMode=\"tree\" />\n ) : selectedRunId && wf.input_schema ? (\n <JsonViewer data={wf.input_schema} defaultMode=\"tree\" />\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No runs yet — click \"Run Test\" to invoke the pipeline</p>\n )}\n </div>\n\n <SectionHeading>Output</SectionHeading>\n <div className=\"mb-6\">\n {deterministicOutput ? (\n <JsonViewer data={deterministicOutput} defaultMode=\"tree\" />\n ) : selectedRunId && runLoading ? (\n <p className=\"text-xs text-text-tertiary animate-pulse\">Loading...</p>\n ) : selectedRunId && selectedRunExecution ? (\n <JsonViewer data={selectedRunExecution.result ?? selectedRunExecution} defaultMode=\"tree\" />\n ) : selectedRunId ? (\n <p className=\"text-xs text-text-tertiary animate-pulse\">Loading...</p>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No runs yet</p>\n )}\n {selectedRunExecution?.duration_ms != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(selectedRunExecution.duration_ms / 1000).toFixed(1)}s</p>\n )}\n </div>\n </>\n ) : (\n /* Non-builder mode: side-by-side comparison */\n <>\n {/* Grid-aligned comparison: column headers */}\n <div className=\"grid grid-cols-2 gap-8 mb-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Original MCP Query</p>\n <p className=\"text-[10px] text-text-tertiary mt-0.5\">Dynamic LLM orchestration</p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Compiled Pipeline Run</p>\n {jobs.length > 0 && selectedRunId && (\n <select\n value={selectedRunId}\n onChange={(e) => selectRun(e.target.value)}\n 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\"\n >\n {jobs.map((job) => <option key={job.workflow_id} value={job.workflow_id}>{jobLabel(job)}</option>)}\n </select>\n )}\n {!selectedRunId && <p className=\"text-[10px] text-text-tertiary mt-0.5\">No runs yet</p>}\n </div>\n </div>\n\n {/* Row 1: Inputs */}\n <SectionHeading>Input</SectionHeading>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6\">\n <div>\n {originalEnvelope ? (\n <JsonViewer data={originalEnvelope} defaultMode=\"tree\" />\n ) : resolvedPrompt ? (\n <p className=\"text-xs text-text-primary leading-relaxed px-3 py-2 bg-surface-sunken rounded-md\">{resolvedPrompt}</p>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">Loading...</p>\n )}\n </div>\n <div>\n {deterministicInput ? (\n <JsonViewer data={deterministicInput} defaultMode=\"tree\" />\n ) : selectedRunId && wf.input_schema ? (\n <div>\n <p className=\"text-[10px] text-text-tertiary italic mb-1\">Stored defaults</p>\n <JsonViewer data={wf.input_schema} defaultMode=\"tree\" />\n </div>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No runs yet</p>\n )}\n </div>\n </div>\n\n {/* Row 2: Outputs */}\n <SectionHeading>Output</SectionHeading>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6\">\n <div>\n {originalOutput ? (\n <JsonViewer data={originalOutput} defaultMode=\"tree\" />\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No output</p>\n )}\n {originalExecution?.duration_ms != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(originalExecution.duration_ms / 1000).toFixed(1)}s</p>\n )}\n </div>\n <div>\n {deterministicOutput ? (\n <JsonViewer data={deterministicOutput} defaultMode=\"tree\" />\n ) : selectedRunId && runLoading ? (\n <p className=\"text-xs text-text-tertiary animate-pulse\">Loading...</p>\n ) : selectedRunId && selectedRunExecution ? (\n <JsonViewer data={selectedRunExecution.result ?? selectedRunExecution} defaultMode=\"tree\" />\n ) : selectedRunId ? (\n <p className=\"text-xs text-text-tertiary animate-pulse\">Loading...</p>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No runs yet</p>\n )}\n {selectedRunExecution?.duration_ms != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(selectedRunExecution.duration_ms / 1000).toFixed(1)}s</p>\n )}\n </div>\n </div>\n </>\n )}\n\n </div>\n\n {/* Right: test sidebar — sticky */}\n <div className=\"space-y-6\">\n <div className=\"sticky top-6\">\n {sidebarOpen || activeJobId ? (\n <div style={{ animation: 'fadeIn 300ms ease-out both' }}>\n {activeJobId ? (\n /* Live execution timeline */\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3\">Execution</p>\n <LiveActivityTimeline\n steps={activitySteps}\n manifest={wf.activity_manifest}\n isComplete={jobComplete}\n />\n </div>\n ) : (\n /* Input form */\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Test Inputs</p>\n <button onClick={() => {\n if (!invokeJsonMode) setInvokeJson(JSON.stringify(invokeFields, null, 2));\n else try { setInvokeFields(JSON.parse(invokeJson)); } catch { /* keep fields */ }\n setInvokeJsonMode(!invokeJsonMode);\n }} className=\"text-[10px] text-accent hover:underline\">\n {invokeJsonMode ? 'Form view' : 'JSON view'}\n </button>\n </div>\n\n <RunAsSelector selected={executeAs} onChange={setExecuteAs} />\n\n <div className=\"mt-3\">\n {invokeJsonMode ? (\n <textarea\n value={invokeJson}\n onChange={(e) => setInvokeJson(e.target.value)}\n 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\"\n />\n ) : (\n <div className=\"space-y-3 max-h-[400px] overflow-y-auto\">\n {Object.entries(invokeFields).map(([key, value]) => (\n <div key={key}>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">{key}</label>\n {typeof value === 'boolean' ? (\n <select\n value={String(value)}\n onChange={(e) => setInvokeFields({ ...invokeFields, [key]: e.target.value === 'true' })}\n 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\"\n >\n <option value=\"true\">true</option>\n <option value=\"false\">false</option>\n </select>\n ) : typeof value === 'object' ? (\n <textarea\n value={JSON.stringify(value, null, 2)}\n onChange={(e) => { try { setInvokeFields({ ...invokeFields, [key]: JSON.parse(e.target.value) }); } catch { /* invalid json */ } }}\n 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\"\n />\n ) : (\n <input\n type={typeof value === 'number' ? 'number' : 'text'}\n value={String(value ?? '')}\n onChange={(e) => setInvokeFields({ ...invokeFields, [key]: typeof value === 'number' ? Number(e.target.value) : e.target.value })}\n 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\"\n />\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n\n {invokeMutation.isError && (\n <p className=\"mt-2 text-xs text-status-error\">{invokeMutation.error.message}</p>\n )}\n\n <div className=\"flex justify-end gap-3 mt-4\">\n <button onClick={() => setSidebarOpen(false)} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Cancel</button>\n <button onClick={handleInvoke} disabled={invokeMutation.isPending} className=\"btn-primary text-xs\">\n {invokeMutation.isPending ? 'Starting...' : 'Invoke'}\n </button>\n </div>\n </div>\n )}\n </div>\n ) : (\n /* Empty state — prompt to run */\n <div className=\"text-center py-8\">\n <p className=\"text-xs text-text-tertiary\">Click \"Run Test\" to invoke the compiled pipeline</p>\n </div>\n )}\n </div>\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {!builderMode && <button onClick={onAdvance} className=\"btn-primary text-xs\">Next: Verify</button>}\n </WizardNav>\n </div>\n );\n}\n","import { useMemo, useEffect, useRef } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Loader2, AlertCircle, GitBranch } from 'lucide-react';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { WizardSteps } from '../../../components/common/layout/WizardSteps';\nimport { useWorkflowSet } from '../../../api/workflow-sets';\nimport { useYamlWorkflows } from '../../../api/yaml-workflows';\nimport { useBuilderResult } from '../../../api/workflow-builder';\nimport { useMcpQueryDetailEvents } from '../../../hooks/useEventHooks';\nimport { PlanSidebar } from './PlanSidebar';\nimport { PlanProfilePanel } from './PlanProfilePanel';\nimport { DeployPanel } from './DeployPanel';\nimport { TestPanel } from './TestPanel';\nimport type { WorkflowSetStatus } from '../../../api/types';\n\n// ── Constants ─────────────────────────────────────────────────────────────────\n\ntype PlanStep = 1 | 2 | 3 | 4;\nconst STEP_LABELS = ['Plan', 'Profile', 'Deploy', 'Test'];\n\nfunction badgeStatus(status: WorkflowSetStatus): string {\n if (status === 'completed') return 'completed';\n if (status === 'failed') return 'failed';\n if (status === 'planning' || status === 'building' || status === 'deploying') return 'in_progress';\n return 'pending';\n}\n\nfunction roleLabel(role: string): string {\n switch (role) {\n case 'leaf': return 'Leaf';\n case 'composition': return 'Composition';\n case 'router': return 'Router';\n default: return role;\n }\n}\n\n// ── PlanWizard ────────────────────────────────────────────────────────────────\n\nexport function PlanWizard() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const [searchParams, setSearchParams] = useSearchParams();\n const queryClient = useQueryClient();\n\n useMcpQueryDetailEvents(workflowId);\n\n // ── Resolve set_id (URL param first, planner result fallback) ───────────\n const urlSetId = searchParams.get('set_id') || undefined;\n const { data: plannerResult } = useBuilderResult(workflowId);\n const plannerData = plannerResult?.result?.data as Record<string, unknown> | undefined;\n const setId = urlSetId || (plannerData?.set_id as string | undefined);\n\n // ── Fetch set + yaml workflows ──────────────────────────────────────────\n const { data: workflowSet } = useWorkflowSet(setId);\n const plan = workflowSet?.plan || [];\n const namespaces = workflowSet?.namespaces || [];\n const setStatus: WorkflowSetStatus = (workflowSet?.status as WorkflowSetStatus) || 'planning';\n\n const yamlFilters = useMemo(() => setId ? { set_id: setId, limit: 50 } : {}, [setId]);\n const { data: yamlData } = useYamlWorkflows(yamlFilters);\n const yamlWorkflows = yamlData?.workflows || [];\n\n // Refetch yaml list when set status changes\n const prevStatus = useRef(setStatus);\n useEffect(() => {\n if (prevStatus.current !== setStatus) {\n prevStatus.current = setStatus;\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflows'] });\n }\n }, [setStatus, queryClient]);\n\n // ── Plan-item → YAML workflow mapping (by build_order) ──────────────────\n const yamlByPlanName = useMemo(() => {\n const map: Record<string, (typeof yamlWorkflows)[number]> = {};\n for (const item of plan) {\n const match = yamlWorkflows.find(w => w.set_build_order === item.build_order);\n if (match) map[item.name] = match;\n }\n return map;\n }, [plan, yamlWorkflows]);\n\n const yamlStatuses = useMemo(() => {\n const map: Record<string, string> = {};\n for (const [name, wf] of Object.entries(yamlByPlanName)) {\n map[name] = wf.status;\n }\n return map;\n }, [yamlByPlanName]);\n\n // ── Namespace lock (first saved non-default app_id wins) ────────────────\n const lockedAppId = useMemo(() => {\n const saved = yamlWorkflows.find(w => w.app_id && w.app_id !== 'longtail');\n return saved?.app_id || null;\n }, [yamlWorkflows]);\n\n // ── Profile saved tracking ──────────────────────────────────────────────\n // A workflow is \"profiled\" if its app_id matches the locked namespace\n // (meaning the user explicitly saved it with a chosen server name)\n const profiledSet = useMemo(() => {\n const set = new Set<string>();\n if (!lockedAppId) return set;\n for (const [planName, wf] of Object.entries(yamlByPlanName)) {\n if (wf.app_id === lockedAppId) set.add(planName);\n }\n return set;\n }, [yamlByPlanName, lockedAppId]);\n\n const hasProfiled = profiledSet.size > 0;\n\n // ── URL-driven state ────────────────────────────────────────────────────\n const selectedWorkflow = searchParams.get('workflow') || null;\n const selectedYamlId = selectedWorkflow ? yamlByPlanName[selectedWorkflow]?.id || null : null;\n const selectedPlanItem = plan.find(p => p.name === selectedWorkflow) || null;\n\n const isPlanning = setStatus === 'planning';\n const isFailed = setStatus === 'failed';\n const hasYaml = yamlWorkflows.length > 0;\n const hasActive = yamlWorkflows.some(w => w.status === 'active');\n\n let maxReachable: PlanStep = 1;\n if (plan.length > 0 && hasYaml) maxReachable = 2;\n if (hasProfiled) maxReachable = 3;\n if (hasActive) maxReachable = 4;\n\n const stepParam = Number(searchParams.get('step')) || 0;\n const step: PlanStep = (stepParam >= 1 && stepParam <= 4 ? Math.min(stepParam, maxReachable) : 1) as PlanStep;\n\n const builtCount = yamlWorkflows.length;\n const totalCount = plan.length;\n const activeCount = yamlWorkflows.filter(w => w.status === 'active').length;\n\n // ── URL sync helpers ────────────────────────────────────────────────────\n const updateUrl = (overrides: Record<string, string | undefined>) => {\n const params: Record<string, string> = { mode: 'plan' };\n if (setId) params.set_id = setId;\n params.step = overrides.step ?? String(step);\n if (overrides.workflow !== undefined) {\n if (overrides.workflow) params.workflow = overrides.workflow;\n } else if (selectedWorkflow) {\n params.workflow = selectedWorkflow;\n }\n setSearchParams(params);\n };\n\n const handleStepClick = (s: number) => {\n if (s > maxReachable) return;\n const firstWf = plan[0]?.name;\n if (s >= 2 && !selectedWorkflow && firstWf) {\n updateUrl({ step: String(s), workflow: firstWf });\n } else {\n updateUrl({ step: String(s) });\n }\n };\n\n const handleSelectWorkflow = (name: string) => {\n updateUrl({ workflow: name });\n };\n\n const handleProfileSaved = () => {\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflows'] });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflow'] });\n };\n\n const handleNavigateDeploy = () => {\n updateUrl({ step: '3' });\n };\n\n // ── Render ──────────────────────────────────────────────────────────────\n return (\n <div className=\"flex flex-col min-h-[calc(100vh-12rem)]\">\n <PageHeader\n title=\"MCP Tool Designer\"\n actions={\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] px-2 py-0.5 rounded-full bg-accent/10 text-accent font-medium\">Plan</span>\n {totalCount > 0 && (\n <span className=\"text-[10px] text-text-tertiary\">\n {builtCount}/{totalCount} built\n {activeCount > 0 && ` | ${activeCount} deployed`}\n </span>\n )}\n <StatusBadge status={badgeStatus(setStatus)} />\n </div>\n }\n />\n\n <WizardSteps labels={STEP_LABELS} current={step} maxReachable={maxReachable} onStepClick={handleStepClick} />\n\n <div className=\"flex-1 mt-4\">\n {/* ── Step 1: Plan ──────────────────────────────────────────────── */}\n {step === 1 && (\n <div className=\"space-y-6\">\n {/* Original specification */}\n {workflowSet?.specification && (\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Specification</label>\n <div className=\"rounded-md bg-surface-sunken/50 px-4 py-3\">\n <p className=\"text-xs font-mono text-text-primary leading-relaxed whitespace-pre-wrap\">\n {workflowSet.specification}\n </p>\n </div>\n </div>\n )}\n\n {/* Planning spinner */}\n {isPlanning && (\n <div className=\"flex items-center gap-3 py-4\">\n <Loader2 className=\"w-4 h-4 text-accent animate-spin\" />\n <span className=\"text-sm text-text-secondary\">Analyzing specification and generating plan...</span>\n </div>\n )}\n\n {isFailed && (\n <div className=\"flex items-center gap-3 p-4 rounded-lg border border-status-error/20 bg-status-error/5\">\n <AlertCircle className=\"w-4 h-4 text-status-error\" />\n <span className=\"text-sm text-status-error\">Plan generation failed.</span>\n </div>\n )}\n\n {/* Plan description + workflow list */}\n {plan.length > 0 && (\n <div>\n {workflowSet?.description && (\n <p className=\"text-sm text-text-secondary mb-4 leading-relaxed\">{workflowSet.description}</p>\n )}\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">\n Planned Workflows ({plan.length})\n </label>\n <div className=\"space-y-2\">\n {plan.map((item) => (\n <div key={item.name} className=\"px-3 py-2.5 rounded-md bg-surface-raised/50\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-medium text-text-primary\">{item.name}</span>\n <span className=\"text-[10px] px-1.5 py-0.5 rounded bg-surface-sunken text-text-tertiary\">{roleLabel(item.role)}</span>\n </div>\n <p className=\"text-[11px] text-text-secondary mt-1\">{item.description}</p>\n {item.dependencies.length > 0 && (\n <div className=\"flex items-center gap-1 mt-1\">\n <GitBranch className=\"w-2.5 h-2.5 text-text-tertiary\" />\n <span className=\"text-[10px] text-text-tertiary\">{item.dependencies.join(', ')}</span>\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {!isPlanning && !isFailed && plan.length > 0 && (\n <button\n onClick={() => handleStepClick(2)}\n className=\"px-4 py-2 bg-accent text-white text-xs font-medium rounded-md hover:bg-accent/90 transition-colors\"\n >\n Continue to Profile\n </button>\n )}\n </div>\n )}\n\n {/* ── Steps 2-4: Sidebar + Main ────────────────────────────────── */}\n {step >= 2 && (\n <div className=\"flex gap-6\">\n <PlanSidebar\n plan={plan}\n namespaces={namespaces}\n yamlStatuses={yamlStatuses}\n activeWorkflow={selectedWorkflow}\n onSelect={handleSelectWorkflow}\n />\n <div className=\"flex-1 min-w-0\">\n {!selectedWorkflow ? (\n <p className=\"text-sm text-text-tertiary py-12 text-center\">Select a workflow from the sidebar.</p>\n ) : !selectedYamlId ? (\n <div className=\"flex items-center gap-3 py-12 justify-center\">\n <Loader2 className=\"w-4 h-4 text-accent animate-spin\" />\n <span className=\"text-sm text-text-secondary\">Building {selectedWorkflow}...</span>\n </div>\n ) : step === 2 && selectedPlanItem ? (\n <PlanProfilePanel\n yamlId={selectedYamlId}\n planItem={selectedPlanItem}\n lockedAppId={lockedAppId}\n isSaved={profiledSet.has(selectedWorkflow!)}\n onSaved={handleProfileSaved}\n onNavigateDeploy={handleNavigateDeploy}\n />\n ) : step === 3 ? (\n <DeployPanel\n yamlId={selectedYamlId}\n onAdvance={() => handleStepClick(4)}\n onBack={() => handleStepClick(2)}\n />\n ) : step === 4 ? (\n <TestPanel\n yamlId={selectedYamlId}\n originalWorkflowId={workflowId}\n originalResult={undefined}\n originalPrompt={undefined}\n onBack={() => handleStepClick(3)}\n onAdvance={() => {}}\n builderMode\n />\n ) : null}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useCallback, useRef } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\n/**\n * Manage wizard step via URL search param for deep-linkable browser history.\n *\n * Returns [manualStep, setStep, syncToUrl]:\n * - manualStep: the step explicitly chosen by the user (click or deep-link),\n * null when auto-step is driving.\n * - setStep: user-initiated step change (pushes history).\n * - syncToUrl: mirror the resolved step to the address bar (replace, no history).\n */\nexport function useWizardStep(): [\n number | null,\n (step: number | null) => void,\n (step: number) => void,\n] {\n const [searchParams, setSearchParams] = useSearchParams();\n\n // On mount: if ?step=N was in the URL, treat as a deep link (user-initiated).\n // After mount, only explicit setStep calls mark it as user-chosen.\n const initialUrlStep = useRef<number | null | undefined>(undefined);\n if (initialUrlStep.current === undefined) {\n const raw = searchParams.get('step');\n initialUrlStep.current = raw ? parseInt(raw, 10) : null;\n }\n\n const userChoseStep = useRef(initialUrlStep.current !== null);\n\n const current = searchParams.get('step');\n const manualStep = userChoseStep.current\n ? (current ? parseInt(current, 10) : null)\n : null;\n\n const setStep = useCallback((step: number | null) => {\n userChoseStep.current = step !== null;\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n if (step === null) {\n next.delete('step');\n } else {\n next.set('step', String(step));\n }\n return next;\n }, { replace: false });\n window.scrollTo?.({ top: 0, behavior: 'smooth' });\n }, [setSearchParams]);\n\n const syncToUrl = useCallback((step: number) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('step', String(step));\n return next;\n }, { replace: true });\n }, [setSearchParams]);\n\n return [manualStep, setStep, syncToUrl];\n}\n","import { useState, useMemo, useEffect, useRef } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { useMcpQueryDetailEvents } from '../../../hooks/useEventHooks';\nimport { useWizardStep } from '../../../hooks/useWizardStep';\nimport { useMcpQueryExecution, useMcpQueryResult, useYamlWorkflowForSource, useDescribeMcpQuery } from '../../../api/mcp-query';\nimport { useCreateYamlWorkflow, useYamlWorkflowAppIds } from '../../../api/yaml-workflows';\nimport { useWorkflowExecution } from '../../../api/workflows';\nimport { useTaskByWorkflowId } from '../../../api/tasks';\nimport { useEscalationsByWorkflowId, useClaimEscalation, useResolveEscalation } from '../../../api/escalations';\n\nimport { mapStatus, extractJsonFromSummary, STEP_LABELS_BASE } from './helpers';\nimport type { Step } from './helpers';\n\nexport function useQueryDetail() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const [searchParams, setSearchParams] = useSearchParams();\n const queryClient = useQueryClient();\n\n // Strip ?prompt= from URL on mount (keep only step)\n const promptFromUrl = useRef(searchParams.get('prompt'));\n useEffect(() => {\n if (searchParams.has('prompt')) {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.delete('prompt');\n return next;\n }, { replace: true });\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const [compileAppId, setCompileAppId] = useState('longtail');\n const [compileName, setCompileName] = useState('');\n const [compileDescription, setCompileDescription] = useState('');\n const [compileTags, setCompileTags] = useState<string[]>([]);\n const [compileInitialized, setCompileInitialized] = useState(false);\n const [compileFeedback, setCompileFeedback] = useState('');\n\n const { data: execution } = useMcpQueryExecution(workflowId);\n const { data: resultData } = useMcpQueryResult(workflowId);\n const { data: yamlSearch } = useYamlWorkflowForSource(workflowId);\n useMcpQueryDetailEvents(workflowId);\n\n const createYaml = useCreateYamlWorkflow();\n const { data: appIdData } = useYamlWorkflowAppIds();\n\n // Original execution + task envelope (for Panel 1 and prompt extraction)\n const { data: originalExecution } = useWorkflowExecution(workflowId ?? '');\n const { data: originalTask } = useTaskByWorkflowId(workflowId ?? '');\n const originalEnvelope = useMemo(() => {\n if (!originalTask?.envelope) return null;\n try { return typeof originalTask.envelope === 'string' ? JSON.parse(originalTask.envelope) : originalTask.envelope; }\n catch { return null; }\n }, [originalTask?.envelope]);\n const originalExecResult = (originalExecution?.result as any)?.data as Record<string, unknown> | undefined;\n\n const status = mapStatus(execution);\n const result = resultData?.result?.data as Record<string, unknown> | undefined;\n const discovery = (result?.discovery as Record<string, unknown>) || {};\n const events = execution?.events ?? [];\n\n // Escalation data + triage action hooks\n const { data: escalationData } = useEscalationsByWorkflowId(workflowId);\n const activeEscalation = escalationData?.escalations?.find((e: any) => e.status === 'pending');\n const resolvedEscalation = escalationData?.escalations?.find((e: any) => e.status === 'resolved');\n const displayEscalation = activeEscalation || resolvedEscalation;\n const claimMutation = useClaimEscalation();\n const resolveMutation = useResolveEscalation();\n\n // Extract triage metadata from resolved escalation\n const resolvedPayload = useMemo(() => {\n if (!resolvedEscalation?.resolver_payload) return null;\n try {\n return typeof resolvedEscalation.resolver_payload === 'string'\n ? JSON.parse(resolvedEscalation.resolver_payload)\n : resolvedEscalation.resolver_payload;\n } catch { return null; }\n }, [resolvedEscalation?.resolver_payload]);\n const triageWorkflowId = resolvedPayload?._lt?.triageWorkflowId as string | undefined;\n\n // Fetch the triage result to discover the re-run workflow ID\n const { data: triageResultData } = useWorkflowExecution(\n resolvedPayload?._lt?.triaged ? (triageWorkflowId ?? '') : '',\n );\n const triageResult = (triageResultData?.result as any)?.data as Record<string, unknown> | undefined;\n const rerunWorkflowId = triageResult?.rerunWorkflowId as string | undefined;\n\n // Detect rounds_exhausted from result data OR milestones (covers old + new runs)\n const milestones = (resultData?.result as any)?.milestones as Array<{ name: string; value: string }> | undefined;\n const isRoundsExhausted = !!(result as any)?.rounds_exhausted ||\n !!milestones?.some((m) => m.name === 'rounds_exhausted');\n\n // This run is uncompilable if it failed — triage resolving doesn't make THIS run compilable\n const isUncompilable = isRoundsExhausted || !!activeEscalation;\n\n // Extract original prompt: envelope > URL param (captured on mount) > execution events\n const originalPrompt = useMemo(() => {\n const fromEnvelope = (originalEnvelope as any)?.data?.prompt;\n if (fromEnvelope) return fromEnvelope as string;\n if (promptFromUrl.current) return promptFromUrl.current;\n for (const e of events) {\n const attrs = e.attributes as Record<string, unknown>;\n if (attrs.activity_type === 'findCompiledWorkflows' && Array.isArray(attrs.input) && typeof (attrs.input as unknown[])[0] === 'string') {\n return (attrs.input as string[])[0];\n }\n }\n return undefined;\n }, [originalEnvelope, events]);\n\n // Extract structured output from original execution\n const originalOutput = useMemo(() => {\n return originalExecResult?.result ??\n (typeof originalExecResult?.summary === 'string' ? extractJsonFromSummary(originalExecResult.summary) : null) ??\n result?.result ??\n (typeof result?.summary === 'string' ? extractJsonFromSummary(result.summary as string) : null) ??\n null;\n }, [originalExecResult, result]);\n\n const describePrompt = originalPrompt || (result?.title as string | undefined);\n const { data: describeData } = useDescribeMcpQuery({\n prompt: status === 'completed' ? describePrompt : undefined,\n resultTitle: result?.title as string | undefined,\n resultSummary: result?.summary as string | undefined,\n });\n\n const compiledYaml = yamlSearch?.workflows?.find(\n (w) => w.status === 'active' || w.status === 'deployed' || w.status === 'draft',\n );\n\n const autoStep: Step = useMemo(() => {\n if (status === 'pending') return 1;\n if (status === 'in_progress') return 2;\n if (!result) return 1;\n if (!compiledYaml) return 2;\n if (compiledYaml.status === 'draft' || compiledYaml.status === 'deployed') return 4;\n return 5;\n }, [status, result, compiledYaml]);\n\n const [manualStep, setManualStep, syncStepToUrl] = useWizardStep();\n const step = (manualStep as Step | null) ?? autoStep;\n\n // Keep URL in sync with the active step (auto or manual) without\n // affecting the manual/auto distinction used by auto-advance logic.\n useEffect(() => {\n syncStepToUrl(step);\n }, [step, syncStepToUrl]);\n\n // Sequential unlock: each step requires the prior step to be satisfied\n const maxReachable: Step = (() => {\n if (status === 'pending') return 1;\n if (status === 'in_progress' || !result) return 2;\n if (isUncompilable) return 2;\n if (!compiledYaml) return 3;\n if (compiledYaml.status === 'draft') return 4;\n if (compiledYaml.status === 'deployed') return 5;\n return 6; // active\n })() as Step;\n\n // Auto-advance from step 2 → step 3 when workflow completes\n const prevStatusRef = useRef(status);\n useEffect(() => {\n if (prevStatusRef.current === 'in_progress' && status === 'completed' && manualStep === null) {\n setManualStep(3);\n }\n prevStatusRef.current = status;\n }, [status, manualStep, setManualStep]);\n\n const stepLabels = useMemo((): string[] => {\n const labels: string[] = [...STEP_LABELS_BASE];\n if (compiledYaml?.status === 'active') labels[3] = 'Redeploy';\n return labels;\n }, [compiledYaml?.status]);\n\n // Pre-fill compile fields from LLM\n if (describeData && !compileInitialized) {\n setCompileInitialized(true);\n if (!compileDescription) setCompileDescription(describeData.description);\n if (compileTags.length === 0 && describeData.tags.length > 0) setCompileTags(describeData.tags);\n if (!compileName && describeData.tool_name) setCompileName(describeData.tool_name);\n }\n\n // Topic always derives from workflow name (not namespace — using namespace causes topic collisions)\n const derivedSubscribes = compileName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');\n const allAppIds = useMemo(() => appIdData?.app_ids ?? [], [appIdData?.app_ids]);\n\n const handleCompile = async () => {\n if (!workflowId || !compileName.trim() || !compileAppId.trim()) return;\n await createYaml.mutateAsync({\n workflow_id: workflowId, task_queue: 'long-tail-system', workflow_name: 'mcpQuery',\n name: compileName.trim(), description: compileDescription.trim() || undefined,\n app_id: compileAppId.trim(), subscribes: derivedSubscribes, tags: compileTags,\n compilation_feedback: compileFeedback.trim() || undefined,\n });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n setManualStep(4);\n };\n\n const handleRetryTriage = async () => {\n if (!activeEscalation) return;\n await claimMutation.mutateAsync({ id: activeEscalation.id, durationMinutes: 30 });\n const diagnosis = (result as any)?.diagnosis as string || activeEscalation.description || '';\n await resolveMutation.mutateAsync({\n id: activeEscalation.id,\n resolverPayload: { _lt: { needsTriage: true }, notes: diagnosis },\n });\n };\n\n // Determine the correct next step for profile panel navigation\n const profileNextStep = compiledYaml?.status === 'active' ? 5 : 4;\n\n return {\n workflowId,\n execution,\n status,\n result,\n discovery,\n events,\n originalEnvelope,\n originalPrompt,\n originalOutput,\n originalExecution,\n compiledYaml,\n step,\n maxReachable,\n stepLabels,\n setManualStep,\n compileAppId,\n setCompileAppId,\n compileName,\n setCompileName,\n compileDescription,\n setCompileDescription,\n compileTags,\n setCompileTags,\n compileFeedback,\n setCompileFeedback,\n describeData,\n describePrompt,\n allAppIds,\n handleCompile,\n createYaml,\n isUncompilable,\n isRoundsExhausted,\n displayEscalation,\n activeEscalation,\n handleRetryTriage,\n claimMutation,\n resolveMutation,\n rerunWorkflowId,\n profileNextStep,\n };\n}\n","import { CopyableId } from '../../../components/common/display/CopyableId';\nimport { TimeAgo } from '../../../components/common/display/TimeAgo';\n\ninterface StatusCardProps {\n workflowId: string | undefined;\n status: string;\n discovery: Record<string, unknown>;\n execution: { duration_ms?: number | null; start_time?: string | null } | undefined;\n result: Record<string, unknown> | undefined;\n}\n\nexport function StatusCard({ workflowId, status: _status, discovery: _discovery, execution, result }: StatusCardProps) {\n return (\n <div className=\"bg-surface-raised border border-surface-border rounded-md px-6 py-4 mb-6\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-y-3 gap-x-8\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Run ID</p>\n <CopyableId label=\"\" value={workflowId ?? null} href={`/workflows/executions/${workflowId}`} />\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Duration</p>\n <p className=\"text-xs text-text-primary font-mono\">\n {execution?.duration_ms != null ? `${(execution.duration_ms / 1000).toFixed(1)}s` : '\\u2014'}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Started</p>\n <p className=\"text-xs text-text-primary\">\n {execution?.start_time ? <TimeAgo date={execution.start_time} /> : '\\u2014'}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool Calls</p>\n <p className=\"text-xs text-text-primary\">\n {typeof result?.tool_calls_made === 'number' ? result.tool_calls_made : '\\u2014'}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport function PanelTitle({ title, subtitle, actions }: {\n title: string;\n subtitle?: string;\n icon?: unknown;\n iconClass?: string;\n actions?: ReactNode;\n}) {\n return (\n <div className=\"flex items-start justify-between mb-6\">\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">{title}</h2>\n {subtitle && <p className=\"text-base text-text-secondary\">{subtitle}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-3 shrink-0\">{actions}</div>}\n </div>\n );\n}\n","import { MessageSquare } from 'lucide-react';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { PanelTitle } from './PanelTitle';\n\n\ninterface OriginalQueryPanelProps {\n status: string;\n originalEnvelope: Record<string, unknown> | null;\n originalPrompt: string | undefined;\n originalOutput: unknown;\n originalDurationMs: number | null | undefined;\n resultSummary: string | undefined;\n onNext?: () => void;\n}\n\nexport function OriginalQueryPanel({\n status,\n originalEnvelope,\n originalPrompt,\n originalOutput,\n originalDurationMs,\n resultSummary,\n onNext,\n}: OriginalQueryPanelProps) {\n return (\n <div>\n <PanelTitle title=\"Describe\" subtitle=\"Dynamic LLM-orchestrated execution — the discovery run\" icon={MessageSquare} iconClass=\"text-accent\" />\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8\">\n {/* Left: Input */}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Input</p>\n {originalEnvelope ? (\n <JsonViewer data={originalEnvelope} defaultMode=\"tree\" />\n ) : originalPrompt ? (\n <JsonViewer data={{ prompt: originalPrompt }} defaultMode=\"tree\" />\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">Loading...</p>\n )}\n </div>\n\n {/* Right: Output */}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Output</p>\n {status !== 'completed' && status !== 'failed' ? (\n <p className=\"text-sm text-text-secondary animate-pulse\">Pending...</p>\n ) : originalOutput ? (\n <JsonViewer data={originalOutput} defaultMode=\"tree\" />\n ) : resultSummary ? (\n <JsonViewer data={{ summary: resultSummary }} defaultMode=\"tree\" />\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No structured output</p>\n )}\n {originalDurationMs != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(originalDurationMs / 1000).toFixed(1)}s</p>\n )}\n </div>\n </div>\n\n <WizardNav><span /><button onClick={onNext} disabled={!onNext} className=\"btn-primary text-xs\">Next: Timeline</button></WizardNav>\n </div>\n );\n}\n","import { Lightbulb } from 'lucide-react';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { SwimlaneTimeline } from '../../workflows/workflow-execution/SwimlaneTimeline';\nimport { PanelTitle } from './PanelTitle';\n\ninterface TimelinePanelProps {\n events: any[];\n onBack: () => void;\n onNext?: () => void;\n}\n\nexport function TimelinePanel({ events, onBack, onNext }: TimelinePanelProps) {\n return (\n <div>\n <PanelTitle title=\"Discover\" subtitle=\"Activity swimlane showing tool calls and their durations\" icon={Lightbulb} iconClass=\"text-status-warning\" />\n <SwimlaneTimeline events={events} />\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <button onClick={onNext} disabled={!onNext} className=\"btn-primary text-xs\">Next: Compile</button>\n </WizardNav>\n </div>\n );\n}\n","import { useState, useEffect, useRef } from 'react';\nimport { Layers, AlertCircle, X, Pencil, Check } from 'lucide-react';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { TagInput } from '../../../components/common/form/TagInput';\nimport { useUpdateYamlWorkflow } from '../../../api/yaml-workflows';\nimport { PanelTitle } from './PanelTitle';\nimport { SectionHeading } from './SectionHeading';\n\n// ── Sub-components ───────────────────────────────────────────────────────────\n\ninterface ExistingProfileViewProps {\n compiledYaml: any;\n onBack: () => void;\n onNext: () => void;\n}\n\n/**\n * Read-only view of an already-compiled workflow profile (step 3, existing path)\n * with inline editing for description and tags.\n */\nfunction ExistingProfileView({ compiledYaml, onBack, onNext }: ExistingProfileViewProps) {\n const queryClient = useQueryClient();\n const updateMutation = useUpdateYamlWorkflow();\n const [editing, setEditing] = useState(false);\n const [descDraft, setDescDraft] = useState(compiledYaml.description || '');\n const [tagsDraft, setTagsDraft] = useState<string[]>(compiledYaml.tags || []);\n\n const handleSave = async () => {\n await updateMutation.mutateAsync({\n id: compiledYaml.id,\n description: descDraft.trim(),\n tags: tagsDraft,\n });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n setEditing(false);\n };\n\n const handleCancel = () => {\n setDescDraft(compiledYaml.description || '');\n setTagsDraft(compiledYaml.tags || []);\n setEditing(false);\n };\n\n return (\n <div>\n <PanelTitle\n title=\"Compile\"\n subtitle=\"Compiled deterministic pipeline — name, tags, and deployment target\"\n icon={Layers}\n iconClass=\"text-status-success\"\n actions={!editing ? (\n <SecondaryAction icon={Pencil} label=\"Edit Profile\" onClick={() => setEditing(true)} />\n ) : (\n <>\n <SecondaryAction icon={X} label=\"Cancel\" onClick={handleCancel} />\n <SecondaryAction icon={Check} label={updateMutation.isPending ? 'Saving...' : 'Save'} onClick={handleSave} disabled={updateMutation.isPending} />\n </>\n )}\n />\n\n <div className=\"flex gap-6 mb-6\">\n {/* Col 1 (~30%): namespace, tool name */}\n <div className=\"w-[30%] shrink-0 space-y-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Namespace</p>\n <p className=\"text-sm text-text-primary\">{compiledYaml.app_id || '\\u2014'}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool Name</p>\n <p className=\"text-sm text-text-primary\">{compiledYaml.name}</p>\n </div>\n </div>\n\n {/* Col 2 (~70%): description, tags, pipeline */}\n <div className=\"flex-1 min-w-0 space-y-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Description</p>\n {editing ? (\n <textarea value={descDraft} onChange={(e) => setDescDraft(e.target.value)}\n 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\" />\n ) : (\n <p className=\"text-sm text-text-secondary leading-relaxed\">{compiledYaml.description || '\\u2014'}</p>\n )}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</p>\n {editing ? (\n <TagInput tags={tagsDraft} onChange={setTagsDraft} placeholder=\"Add tags...\" />\n ) : (\n <div className=\"flex gap-1.5 flex-wrap\">\n {(compiledYaml.tags as string[] || []).length > 0 ? (\n (compiledYaml.tags as string[]).map((tag: string) => (\n <span key={tag} className=\"text-[10px] px-2 py-0.5 rounded-full bg-surface-sunken text-text-secondary\">{tag}</span>\n ))\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">No tags</span>\n )}\n </div>\n )}\n </div>\n {compiledYaml.activity_manifest?.length > 0 && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Pipeline</p>\n <div className=\"flex items-center gap-1 flex-wrap\">\n {(compiledYaml.activity_manifest as any[])\n .filter((a: any) => a.tool_source !== 'trigger')\n .map((a: any, i: number, arr: any[]) => (\n <span key={i} className=\"flex items-center gap-1\">\n <span className=\"text-[10px] px-2 py-0.5 rounded bg-surface-sunken font-mono text-text-primary\">{a.mcp_tool_name || a.title}</span>\n {i < arr.length - 1 && <span className=\"text-text-tertiary text-[10px]\">{'\\u2192'}</span>}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {compiledYaml.status !== 'active'\n ? <button onClick={onNext} className=\"btn-primary text-xs\">Next: Deploy</button>\n : <button onClick={onNext} className=\"btn-primary text-xs\">Next: Test</button>}\n </WizardNav>\n </div>\n );\n}\n\n// ── Create-new form ──────────────────────────────────────────────────────────\n\ninterface CreateProfileFormProps {\n originalPrompt: string | undefined;\n compileAppId: string;\n setCompileAppId: (v: string) => void;\n compileName: string;\n setCompileName: (v: string) => void;\n compileDescription: string;\n setCompileDescription: (v: string) => void;\n compileTags: string[];\n setCompileTags: (v: string[]) => void;\n describeData: { tool_name?: string; description: string; tags: string[] } | undefined;\n describePrompt: string | undefined;\n allAppIds: string[];\n onCompile: () => Promise<void>;\n isCompiling: boolean;\n compileError: string | undefined;\n onBack: () => void;\n}\n\nfunction CreateProfileForm({\n originalPrompt,\n compileAppId,\n setCompileAppId,\n compileName,\n setCompileName,\n compileDescription,\n setCompileDescription,\n compileTags,\n setCompileTags,\n describeData,\n describePrompt,\n allAppIds,\n onCompile,\n isCompiling,\n compileError,\n onBack,\n}: CreateProfileFormProps) {\n const [dismissedError, setDismissedError] = useState<string | null>(null);\n const [dismissing, setDismissing] = useState(false);\n const errorRef = useRef<HTMLDivElement>(null);\n const visibleError = compileError && compileError !== dismissedError ? compileError : null;\n\n // Scroll error into view and reset dismissed state when a new error appears\n useEffect(() => {\n if (visibleError && errorRef.current) {\n errorRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [visibleError]);\n useEffect(() => {\n if (compileError && compileError !== dismissedError) {\n setDismissedError(null);\n setDismissing(false);\n }\n }, [compileError]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleDismiss = () => {\n setDismissing(true);\n setTimeout(() => {\n setDismissedError(compileError!);\n setDismissing(false);\n }, 250);\n };\n\n return (\n <div>\n <PanelTitle title=\"Compile\" subtitle=\"Define the deterministic workflow tool from this execution\" icon={Layers} iconClass=\"text-status-success\" />\n\n {visibleError && (\n <div\n ref={errorRef}\n 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\"\n style={{\n animation: dismissing ? undefined : 'fadeIn 300ms ease-out both',\n opacity: dismissing ? 0 : 1,\n maxHeight: dismissing ? '0px' : '200px',\n paddingTop: dismissing ? '0px' : undefined,\n paddingBottom: dismissing ? '0px' : undefined,\n marginBottom: dismissing ? '0px' : undefined,\n }}\n >\n <AlertCircle className=\"w-4 h-4 text-status-error shrink-0 mt-0.5\" strokeWidth={1.5} />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-status-error\">Compilation failed</p>\n <p className=\"text-xs text-text-secondary mt-0.5 leading-relaxed\">{visibleError}</p>\n </div>\n <button onClick={handleDismiss} className=\"text-text-tertiary hover:text-text-secondary transition-colors shrink-0 mt-0.5\">\n <X className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n )}\n\n {originalPrompt && (\n <div className=\"mb-6\">\n <SectionHeading>Original Query</SectionHeading>\n <p className=\"text-xs font-mono text-text-primary leading-relaxed bg-surface-sunken rounded-md px-3 py-2\">{originalPrompt}</p>\n </div>\n )}\n\n <SectionHeading>Workflow Configuration</SectionHeading>\n <div className=\"flex gap-6\">\n {/* Col 1: identity fields (~30%) */}\n <div className=\"w-[30%] shrink-0 space-y-4\">\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Namespace *</label>\n <input type=\"text\" value={compileAppId} onChange={(e) => setCompileAppId(e.target.value.toLowerCase().replace(/[^a-z0-9]/g, ''))}\n 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\" />\n {allAppIds.length > 0 && (\n <div className=\"flex gap-1.5 mt-1.5 flex-wrap\">\n {allAppIds.map((id) => (\n <button key={id} type=\"button\" onClick={() => setCompileAppId(id)}\n className={`text-[10px] px-2 py-0.5 rounded-full transition-colors ${compileAppId === id ? 'bg-accent/20 text-accent' : 'bg-surface-sunken text-text-tertiary hover:text-text-secondary'}`}>{id}</button>\n ))}\n </div>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tool Name *</label>\n <input type=\"text\" value={compileName} onChange={(e) => setCompileName(e.target.value)}\n 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\" />\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</label>\n <TagInput tags={compileTags} onChange={setCompileTags} placeholder=\"e.g. browser, screenshots, login\" />\n <p className=\"text-[10px] text-text-tertiary mt-1\">Press Enter or comma to add.</p>\n </div>\n </div>\n\n {/* Col 2: description (~80%) */}\n <div className=\"flex-1 min-w-0 flex flex-col\">\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n {!compileDescription && !describeData && describePrompt && <span className=\"text-[10px] text-accent animate-pulse\">Generating...</span>}\n </div>\n <textarea value={compileDescription} onChange={(e) => setCompileDescription(e.target.value)}\n placeholder=\"Describe what this workflow does as a reusable tool...\"\n 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\" />\n <p className=\"text-[10px] text-text-tertiary mt-1\">{describeData ? 'AI-generated. Edit to refine.' : 'Describe what this workflow does so future queries can find it.'}</p>\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <button onClick={onCompile} disabled={!compileName.trim() || !compileAppId.trim() || isCompiling} className=\"btn-primary text-xs\">\n {isCompiling ? 'Compiling...' : 'Compile Pipeline'}\n </button>\n </WizardNav>\n </div>\n );\n}\n\n// ── Composite panel ──────────────────────────────────────────────────────────\n\ninterface ProfilePanelProps {\n compiledYaml: any | undefined;\n /* Create-form props (only used when compiledYaml is absent) */\n originalPrompt: string | undefined;\n compileAppId: string;\n setCompileAppId: (v: string) => void;\n compileName: string;\n setCompileName: (v: string) => void;\n compileDescription: string;\n setCompileDescription: (v: string) => void;\n compileTags: string[];\n setCompileTags: (v: string[]) => void;\n describeData: { tool_name?: string; description: string; tags: string[] } | undefined;\n describePrompt: string | undefined;\n allAppIds: string[];\n onCompile: () => Promise<void>;\n isCompiling: boolean;\n compileError: string | undefined;\n isUncompilable?: boolean;\n onBack: () => void;\n onNext: () => void;\n}\n\nexport function ProfilePanel(props: ProfilePanelProps) {\n const { compiledYaml, isUncompilable, onBack, onNext } = props;\n\n if (isUncompilable && !compiledYaml) {\n return (\n <div>\n <PanelTitle title=\"Compile\" subtitle=\"Define the deterministic workflow tool from this execution\" icon={Layers} iconClass=\"text-status-success\" />\n <div className=\"rounded-md bg-status-warning/5 border border-status-warning/20 px-4 py-3 mb-6\">\n <p className=\"text-xs text-status-warning font-medium\">Cannot compile this query</p>\n <p className=\"text-xs text-text-secondary mt-1\">\n This query did not complete successfully. Resolve the escalation before compiling to a deterministic workflow.\n </p>\n </div>\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <span />\n </WizardNav>\n </div>\n );\n }\n\n if (compiledYaml) {\n return <ExistingProfileView compiledYaml={compiledYaml} onBack={onBack} onNext={onNext} />;\n }\n\n return (\n <CreateProfileForm\n originalPrompt={props.originalPrompt}\n compileAppId={props.compileAppId}\n setCompileAppId={props.setCompileAppId}\n compileName={props.compileName}\n setCompileName={props.setCompileName}\n compileDescription={props.compileDescription}\n setCompileDescription={props.setCompileDescription}\n compileTags={props.compileTags}\n setCompileTags={props.setCompileTags}\n describeData={props.describeData}\n describePrompt={props.describePrompt}\n allAppIds={props.allAppIds}\n onCompile={props.onCompile}\n isCompiling={props.isCompiling}\n compileError={props.compileError}\n onBack={onBack}\n />\n );\n}\n","import { Link } from 'react-router-dom';\nimport type { WorkflowExecutionEvent } from '../../../api/types';\n\ninterface RouterPhase {\n step: number; // 0=starting, 1=discover, 2=evaluate, 3=execute\n label: string;\n detail: string;\n path: 'deterministic' | 'dynamic' | null;\n childWorkflowId?: string;\n}\n\nconst STEPS = ['Discover', 'Evaluate', 'Execute'] as const;\n\nfunction derivePhase(events: WorkflowExecutionEvent[] | undefined): RouterPhase {\n if (!events?.length) return { step: 0, label: 'Starting...', detail: 'Initializing query router', path: null };\n\n // Check for child workflow — this reveals the routing decision\n const childStart = events.find((e) => e.event_type === 'child_workflow_execution_started');\n if (childStart) {\n const childId = childStart.attributes.child_workflow_id ?? '';\n const isDeterministic = childId.includes('mcpDeterministic');\n const childCompleted = events.some((e) => e.event_type === 'child_workflow_execution_completed');\n if (childCompleted) {\n return {\n step: 3, label: isDeterministic ? 'Deterministic complete' : 'Dynamic complete',\n detail: isDeterministic ? 'Compiled workflow executed successfully' : 'Dynamic MCP orchestration completed',\n path: isDeterministic ? 'deterministic' : 'dynamic', childWorkflowId: childId,\n };\n }\n return {\n step: 3,\n label: isDeterministic ? 'Running deterministic workflow' : 'Running dynamic MCP query',\n detail: isDeterministic ? 'Executing compiled workflow' : 'LLM agentic orchestration in progress (30\\u201360s)',\n path: isDeterministic ? 'deterministic' : 'dynamic',\n childWorkflowId: childId,\n };\n }\n\n // Derive from activity names\n const activityTypes = events\n .filter((e) => e.category === 'activity')\n .map((e) => e.attributes.activity_type ?? '');\n\n if (activityTypes.some((a) => a === 'extractWorkflowInputs')) {\n return { step: 2, label: 'Extracting inputs...', detail: 'Preparing structured inputs for compiled workflow', path: null };\n }\n if (activityTypes.some((a) => a === 'evaluateWorkflowMatch')) {\n return { step: 2, label: 'Evaluating match...', detail: 'LLM judge determining best compiled workflow', path: null };\n }\n if (activityTypes.some((a) => a === 'findCompiledWorkflows')) {\n return { step: 1, label: 'Searching compiled workflows...', detail: 'Full-text + tag discovery of candidates', path: null };\n }\n\n return { step: 0, label: 'Starting...', detail: 'Initializing query router', path: null };\n}\n\ninterface RouterProgressTrackerProps {\n events: WorkflowExecutionEvent[] | undefined;\n status: string | undefined;\n verifyRunId: string | null;\n}\n\nexport function RouterProgressTracker({ events, status, verifyRunId }: RouterProgressTrackerProps) {\n const phase = derivePhase(events);\n const isDone = status === 'completed' || status === 'failed';\n\n return (\n <div className=\"space-y-4\">\n {/* Stepper */}\n <div className=\"flex items-center gap-1\">\n {STEPS.map((label, i) => {\n const stepNum = i + 1;\n const isComplete = phase.step > stepNum || isDone;\n const isActive = phase.step === stepNum && !isDone;\n return (\n <div key={label} className=\"flex items-center gap-1 flex-1\">\n <div className=\"flex items-center gap-2 flex-1\">\n <div className={`w-5 h-5 rounded-full flex items-center justify-center text-[9px] font-medium shrink-0 transition-colors ${\n isComplete ? 'bg-status-success/20 text-status-success' :\n isActive ? 'bg-accent/20 text-accent animate-pulse' :\n 'bg-surface-sunken text-text-tertiary'\n }`}>\n {isComplete ? (\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={3}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : stepNum}\n </div>\n <span className={`text-[10px] font-medium whitespace-nowrap ${\n isComplete ? 'text-text-secondary' : isActive ? 'text-text-primary' : 'text-text-tertiary'\n }`}>{label}</span>\n </div>\n {i < STEPS.length - 1 && (\n <div className={`h-px flex-1 min-w-4 ${isComplete ? 'bg-status-success/30' : 'bg-surface-border'}`} />\n )}\n </div>\n );\n })}\n </div>\n\n {/* Detail + badges */}\n <div className=\"flex items-center gap-2 flex-wrap\">\n <p className=\"text-xs text-text-secondary\">{phase.detail}</p>\n {phase.path === 'deterministic' && (\n <span className=\"text-[10px] bg-status-success/10 text-status-success px-2 py-0.5 rounded-full\">\n Deterministic\n </span>\n )}\n {phase.path === 'dynamic' && (\n <span className=\"text-[10px] bg-status-pending/10 text-status-pending px-2 py-0.5 rounded-full\">\n Dynamic\n </span>\n )}\n </div>\n\n {/* Escape hatch link */}\n {verifyRunId && phase.step >= 1 && (\n <Link\n to={`/workflows/executions/${verifyRunId}`}\n className=\"text-[10px] text-accent hover:underline\"\n >\n View execution tree\n </Link>\n )}\n </div>\n );\n}\n","import { useState, useMemo } from 'react';\nimport { Link, useSearchParams } from 'react-router-dom';\n\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { useSubmitMcpQueryRouted, useMcpQueryExecution, useMcpQueryResult } from '../../../api/mcp-query';\nimport { useTaskByWorkflowId } from '../../../api/tasks';\nimport { RouterProgressTracker } from './RouterProgressTracker';\n\ninterface VerifyPanelProps {\n originalWorkflowId: string | undefined;\n originalPrompt: string | undefined;\n workflowName: string;\n onBack: () => void;\n onGoToDeploy: () => void;\n}\n\nexport function VerifyPanel({ originalWorkflowId, originalPrompt, workflowName, onBack, onGoToDeploy: _onGoToDeploy }: VerifyPanelProps) {\n const submitQuery = useSubmitMcpQueryRouted();\n const [searchParams, setSearchParams] = useSearchParams();\n\n const [testPrompt, setTestPrompt] = useState('');\n const [promptInitialized, setPromptInitialized] = useState(false);\n\n // Persist verifyRunId in URL so it survives navigation\n const verifyRunId = searchParams.get('verifyRun');\n const setVerifyRunId = (id: string | null) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n if (id) next.set('verifyRun', id);\n else next.delete('verifyRun');\n return next;\n }, { replace: true });\n };\n\n // Original prompt\n const { data: originalTask } = useTaskByWorkflowId(originalWorkflowId ?? '');\n const originalEnvelope = useMemo(() => {\n if (!originalTask?.envelope) return null;\n try { return typeof originalTask.envelope === 'string' ? JSON.parse(originalTask.envelope) : originalTask.envelope; }\n catch { return null; }\n }, [originalTask?.envelope]);\n const resolvedPrompt = (originalEnvelope as any)?.data?.prompt ?? originalPrompt;\n\n // Pre-fill prompt once\n if (resolvedPrompt && !promptInitialized) {\n setPromptInitialized(true);\n setTestPrompt(resolvedPrompt);\n }\n\n // Verify run\n const { data: verifyExecution } = useMcpQueryExecution(verifyRunId ?? undefined);\n const { data: verifyResult } = useMcpQueryResult(\n verifyExecution?.status === 'completed' ? verifyRunId ?? undefined : undefined,\n );\n\n const verifyStatus = verifyExecution?.status;\n const verifyData = (verifyResult?.result?.data ?? {}) as Record<string, unknown>;\n const verifyDiscovery = verifyData.discovery as Record<string, unknown> | undefined;\n const usedDeterministic = verifyDiscovery?.method === 'compiled-workflow';\n const isRunning = verifyRunId && verifyStatus !== 'completed' && verifyStatus !== 'failed';\n\n const handleSubmit = async () => {\n if (!testPrompt.trim()) return;\n const res = await submitQuery.mutateAsync({ prompt: testPrompt.trim() });\n setVerifyRunId(res.workflow_id);\n };\n\n return (\n <div>\n <h2 className=\"text-2xl font-extralight tracking-wide text-accent/75 mb-1\">Verify</h2>\n <p className=\"text-base text-text-secondary mb-6\">\n Submit the original prompt through the router to verify that\n <span className=\"font-mono text-text-primary mx-1\">{workflowName}</span>\n is selected and handles it deterministically.\n </p>\n\n {/* Row 1: Headers + metadata (aligned) */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Query Prompt</p>\n <p className=\"text-[10px] text-text-tertiary\">\n {testPrompt !== resolvedPrompt && resolvedPrompt\n ? <button onClick={() => setTestPrompt(resolvedPrompt)} className=\"text-accent hover:underline\">Reset to original</button>\n : 'Edit and submit to verify'}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Result</p>\n {!verifyRunId && (\n <p className=\"text-[10px] text-text-tertiary italic\">Awaiting submission</p>\n )}\n {isRunning && (\n <div className=\"flex items-center gap-2\">\n <StatusBadge status=\"in_progress\" />\n <span className=\"text-[10px] text-text-secondary animate-pulse\">Routing...</span>\n </div>\n )}\n {verifyStatus === 'failed' && (\n <div className=\"flex items-center gap-2\">\n <StatusBadge status=\"failed\" />\n <span className=\"text-[10px] text-status-error\">Failed</span>\n </div>\n )}\n {verifyStatus === 'completed' && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n <StatusBadge status=\"completed\" />\n {usedDeterministic ? (\n <span className=\"text-[10px] bg-status-success/10 text-status-success px-2 py-0.5 rounded-full\">\n Deterministic ({((verifyDiscovery?.confidence as number) * 100).toFixed(0)}%)\n </span>\n ) : (\n <span className=\"text-[10px] bg-status-pending/10 text-status-pending px-2 py-0.5 rounded-full\">\n Dynamic (no match)\n </span>\n )}\n {verifyExecution?.duration_ms != null && (\n <span className=\"text-[10px] text-text-tertiary\">{(verifyExecution.duration_ms / 1000).toFixed(1)}s</span>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Row 2: Prompt input + output (aligned) */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8\">\n {/* Left: editable prompt */}\n <div>\n <textarea\n value={testPrompt}\n onChange={(e) => setTestPrompt(e.target.value)}\n 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\"\n placeholder=\"Type a natural language query...\"\n />\n <div className=\"flex justify-end mt-2\">\n <button\n onClick={handleSubmit}\n disabled={!testPrompt.trim() || submitQuery.isPending || !!isRunning}\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\"\n >\n <svg className=\"w-3 h-3\" viewBox=\"0 0 12 12\" fill=\"currentColor\"><path d=\"M3 1.5v9l7.5-4.5z\" /></svg>\n {submitQuery.isPending ? 'Starting...' : isRunning ? 'Running...' : verifyRunId ? 'Resubmit' : 'Submit'}\n </button>\n </div>\n </div>\n\n {/* Right: output */}\n <div>\n {!verifyRunId && (\n <div className=\"flex items-center justify-center min-h-[160px] text-xs text-text-tertiary italic\">\n Submit a query to see the result\n </div>\n )}\n\n {isRunning && (\n <div className=\"min-h-[160px] flex items-start pt-4\">\n <RouterProgressTracker\n events={verifyExecution?.events}\n status={verifyStatus}\n verifyRunId={verifyRunId}\n />\n </div>\n )}\n\n {verifyStatus === 'completed' && (\n <div className=\"space-y-3\">\n {typeof verifyData.title === 'string' && (\n <p className=\"text-sm text-text-primary\">{verifyData.title}</p>\n )}\n {verifyData.result != null && (\n <JsonViewer data={verifyData.result} defaultMode=\"tree\" />\n )}\n <div className=\"flex items-center gap-3 pt-1\">\n <Link to={`/mcp/queries/${verifyRunId}`} className=\"text-[10px] text-accent hover:underline\">\n View full details\n </Link>\n <button onClick={() => setVerifyRunId(null)} className=\"text-[10px] text-text-tertiary hover:text-text-primary\">\n Clear\n </button>\n </div>\n </div>\n )}\n\n {verifyStatus === 'failed' && (\n <p className=\"text-xs text-status-error py-4\">Query failed. Try modifying the prompt.</p>\n )}\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <span className=\"text-[10px] text-text-tertiary\">End-to-end verification — modify the prompt and submit to test the full pipeline</span>\n </WizardNav>\n </div>\n );\n}\n","import { Link, useNavigate } from 'react-router-dom';\n\ninterface EscalationBannerProps {\n escalation: any | undefined;\n isRoundsExhausted: boolean;\n diagnosis: string | undefined;\n onRetryTriage?: () => void;\n isRetrying?: boolean;\n /** The successful re-run workflow ID (discovered from triage result) */\n rerunWorkflowId?: string;\n}\n\nexport function EscalationBanner({ escalation, isRoundsExhausted, diagnosis, onRetryTriage, isRetrying, rerunWorkflowId }: EscalationBannerProps) {\n const navigate = useNavigate();\n\n if (!escalation && !isRoundsExhausted) return null;\n\n const isPending = escalation?.status === 'pending';\n const isResolved = escalation?.status === 'resolved';\n\n // Extract triage metadata from resolver_payload\n const resolverPayload = (() => {\n if (!escalation?.resolver_payload) return null;\n try {\n return typeof escalation.resolver_payload === 'string'\n ? JSON.parse(escalation.resolver_payload)\n : escalation.resolver_payload;\n } catch { return null; }\n })();\n const wasTriaged = resolverPayload?._lt?.triaged === true;\n\n // Extract original failure context from escalation_payload\n const escalationPayload = (() => {\n if (!escalation?.escalation_payload) return null;\n try {\n return typeof escalation.escalation_payload === 'string'\n ? JSON.parse(escalation.escalation_payload)\n : escalation.escalation_payload;\n } catch { return null; }\n })();\n const originalDiagnosis = escalationPayload?.diagnosis as string | undefined;\n\n // ── Resolved by triage: outcome-focused ────────────────────────\n if (isResolved && wasTriaged) {\n return (\n <div className=\"rounded-md mb-4 border border-status-success/30 bg-surface-raised overflow-hidden\">\n <div className=\"px-4 pt-3 pb-2\">\n <div className=\"flex items-start gap-3\">\n <svg className=\"w-4 h-4 mt-0.5 shrink-0 text-status-success\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <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\" />\n </svg>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-status-success\">\n {rerunWorkflowId\n ? 'This query succeeded after AI triage'\n : 'AI triage resolved this query'}\n </p>\n <p className=\"text-xs text-text-secondary mt-1.5 leading-relaxed\">\n {rerunWorkflowId\n ? '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.'\n : 'The original run hit a wall. AI triage diagnosed the issue and resolved it.'}\n </p>\n </div>\n </div>\n </div>\n\n {originalDiagnosis && (\n <div className=\"px-4 py-2 mx-4 mb-2 rounded bg-surface-sunken\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">What went wrong</p>\n <p className=\"text-xs text-text-secondary leading-relaxed line-clamp-2\">{originalDiagnosis}</p>\n </div>\n )}\n\n {/* Clear outcomes */}\n <div className=\"px-4 py-3 border-t border-surface-border bg-surface-sunken/50\">\n <div className=\"flex items-center gap-3\">\n {rerunWorkflowId && (\n <button\n onClick={() => navigate(`/mcp/queries/${rerunWorkflowId}`)}\n 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\"\n >\n Continue to successful run\n <svg className=\"w-3 h-3\" viewBox=\"0 0 12 12\" fill=\"currentColor\">\n <path d=\"M4.5 2l4 4-4 4\" />\n </svg>\n </button>\n )}\n <button\n onClick={() => navigate('/mcp/queries')}\n 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\"\n >\n Start fresh\n </button>\n <Link\n to={`/escalations/detail/${escalation.id}`}\n className=\"text-[10px] text-text-tertiary hover:text-accent hover:underline ml-auto\"\n >\n Details\n </Link>\n </div>\n </div>\n </div>\n );\n }\n\n // ── Resolved (non-triage) ──────────────────────────────────────\n if (isResolved) {\n return (\n <div className=\"rounded-md px-4 py-3 mb-4 border bg-surface-raised border-status-success/30\">\n <div className=\"flex items-start gap-3\">\n <svg className=\"w-4 h-4 mt-0.5 shrink-0 text-status-success\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <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\" />\n </svg>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-status-success\">Escalation resolved</p>\n <p className=\"text-xs text-text-tertiary mt-1\">\n This escalation was resolved manually. You can continue to compile.\n </p>\n <div className=\"flex items-center gap-3 mt-2\">\n {escalation && (\n <Link to={`/escalations/detail/${escalation.id}`} className=\"text-[10px] text-accent hover:underline\">\n View escalation\n </Link>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ── Pending / rounds exhausted ─────────────────────────────────\n return (\n <div className=\"rounded-md px-4 py-3 mb-4 border bg-surface-raised border-status-warning/30\">\n <div className=\"flex items-start gap-3\">\n <svg className=\"w-4 h-4 mt-0.5 shrink-0 text-status-warning\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <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\" />\n </svg>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-status-warning\">\n {isRoundsExhausted\n ? 'This query exceeded the maximum tool rounds'\n : 'This query has a pending escalation'}\n </p>\n {diagnosis && (\n <p className=\"text-xs text-text-secondary mt-1 line-clamp-2\">{diagnosis}</p>\n )}\n <div className=\"flex items-center gap-3 mt-2\">\n {isPending && onRetryTriage && (\n <button\n onClick={onRetryTriage}\n disabled={isRetrying}\n 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\"\n >\n <svg className=\"w-3 h-3\" viewBox=\"0 0 12 12\" fill=\"currentColor\"><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\" /></svg>\n {isRetrying ? 'Sending...' : 'Retry with AI Triage'}\n </button>\n )}\n {escalation && (\n <Link to={`/escalations/detail/${escalation.id}`} className=\"text-[10px] text-accent hover:underline\">\n View escalation\n </Link>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { useParams, useNavigate, useSearchParams } from 'react-router-dom';\nimport { MessageSquare, Lightbulb, Layers, Hammer, Wand2, GitBranch } from 'lucide-react';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { WizardSteps } from '../../../components/common/layout/WizardSteps';\nimport { useSubmitMcpQuery, useSubmitMcpQueryRouted, useMcpQueryExecution } from '../../../api/mcp-query';\nimport { useSubmitBuildWorkflow, useBuilderResult, useRefineBuildWorkflow } from '../../../api/workflow-builder';\nimport { useCreateWorkflowSet } from '../../../api/workflow-sets';\nimport { useYamlWorkflows, useYamlWorkflow } from '../../../api/yaml-workflows';\nimport { useMcpQueryDetailEvents } from '../../../hooks/useEventHooks';\nimport { DescribePanel } from '../../mcp/workflow-builder-detail/DescribePanel';\nimport { BuilderProfilePanel } from '../../mcp/workflow-builder-detail/BuilderProfilePanel';\nimport { PlanWizard } from './PlanWizard';\n\nimport type { Step } from './helpers';\nimport { useQueryDetail } from './useQueryDetail';\nimport { StatusCard } from './StatusCard';\nimport { OriginalQueryPanel } from './OriginalQueryPanel';\nimport { TimelinePanel } from './TimelinePanel';\nimport { ProfilePanel } from './ProfilePanel';\nimport { DeployPanel } from './DeployPanel';\nimport { TestPanel } from './TestPanel';\nimport { VerifyPanel } from './VerifyPanel';\nimport { EscalationBanner } from './EscalationBanner';\n\n// ── Composer (shown for /mcp/queries/new) ─────────────────────────────────────\n\ntype DesignMode = 'discover' | 'direct' | 'plan';\n\nconst DISCOVER_STEPS = [\n { icon: MessageSquare, color: 'text-accent', title: 'Describe', detail: 'Write a prompt. The LLM executes tools dynamically to fulfill your request.' },\n { icon: Lightbulb, color: 'text-status-warning', title: 'Discover', detail: 'Review the execution trace — which tools were called, what data flowed between them.' },\n { icon: Layers, color: 'text-status-success', title: 'Compile', detail: 'Successful runs compile into deterministic pipelines. No LLM needed at runtime.' },\n];\n\nconst DIRECT_STEPS = [\n { icon: MessageSquare, color: 'text-accent', title: 'Describe', detail: 'Specify what tools to use, what inputs to accept, and how data should flow between steps.' },\n { icon: Layers, color: 'text-status-warning', title: 'Review', detail: 'The LLM will create the pipeline (DAG) directly from tool schemas. Review the generated pipeline.' },\n { icon: Wand2, color: 'text-status-success', title: 'Deploy & Test', detail: 'Deploy, run with sample inputs, and refine until the pipeline works correctly.' },\n];\n\nconst PLAN_STEPS = [\n { icon: MessageSquare, color: 'text-accent', title: 'Specification', detail: 'Paste a PRD, TDD, or multi-workflow spec. The planner decomposes it into workflows.' },\n { icon: GitBranch, color: 'text-status-warning', title: 'Plan & Build', detail: 'Review the decomposition, adjust namespaces, then build each workflow leaf-first.' },\n { icon: Layers, color: 'text-status-success', title: 'Deploy & Test', detail: 'Deploy all namespaces. Test individual workflows and the full composition.' },\n];\n\nfunction ComposerPanel() {\n const navigate = useNavigate();\n const [promptText, setPromptText] = useState('');\n const [mode, setMode] = useState<DesignMode>('discover');\n const [forceDiscovery, setForceDiscovery] = useState(true);\n const submitDirect = useSubmitMcpQuery();\n const submitRouted = useSubmitMcpQueryRouted();\n const submitBuilder = useSubmitBuildWorkflow();\n const createSet = useCreateWorkflowSet();\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const prompt = promptText.trim();\n if (!prompt) return;\n\n if (mode === 'plan') {\n const name = `plan-${Date.now().toString(36)}`;\n const result = await createSet.mutateAsync({ name, specification: prompt });\n setPromptText('');\n navigate(`/mcp/queries/${result.planner_workflow_id}?mode=plan&set_id=${result.id}`, { replace: true });\n } else if (mode === 'direct') {\n const result = await submitBuilder.mutateAsync({ prompt });\n setPromptText('');\n navigate(`/mcp/queries/${result.workflow_id}?mode=builder`, { replace: true });\n } else {\n const mutation = forceDiscovery ? submitDirect : submitRouted;\n const result = await mutation.mutateAsync({ prompt });\n setPromptText('');\n if (forceDiscovery) {\n navigate(`/mcp/queries/${result.workflow_id}?step=2`, { replace: true });\n } else {\n navigate(`/workflows/executions/${result.workflow_id}`, { replace: true });\n }\n }\n };\n\n const activeMutation = mode === 'plan' ? createSet\n : mode === 'direct' ? submitBuilder\n : forceDiscovery ? submitDirect : submitRouted;\n const lifecycleSteps = mode === 'plan' ? PLAN_STEPS\n : mode === 'discover' ? DISCOVER_STEPS : DIRECT_STEPS;\n\n return (\n <div>\n <PageHeader title=\"MCP Tool Designer\" />\n <p className=\"text-sm text-text-secondary mb-6 leading-relaxed max-w-xl\">\n Create deterministic MCP tools from natural language. Choose how to get there.\n </p>\n\n {/* Mode toggle */}\n <div className=\"flex gap-1 mb-6 p-0.5 bg-surface-sunken rounded-lg w-fit\">\n <button\n onClick={() => setMode('discover')}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${\n mode === 'discover'\n ? 'bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n >\n <Wand2 className=\"w-3 h-3\" strokeWidth={1.5} />\n Discover & Compile\n </button>\n <button\n onClick={() => setMode('direct')}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${\n mode === 'direct'\n ? 'bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n >\n <Hammer className=\"w-3 h-3\" strokeWidth={1.5} />\n Direct Build\n </button>\n <button\n onClick={() => setMode('plan')}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${\n mode === 'plan'\n ? 'bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n >\n <GitBranch className=\"w-3 h-3\" strokeWidth={1.5} />\n Plan Build\n </button>\n </div>\n\n <div className=\"grid grid-cols-[1fr_240px] gap-6\">\n <form onSubmit={handleSubmit}>\n <div className=\"rounded-lg border border-surface-border bg-surface-raised overflow-hidden h-full flex flex-col\">\n <div className=\"flex items-start gap-3 flex-1\">\n <MessageSquare className=\"w-4 h-4 text-accent shrink-0 mt-3.5 ml-4\" strokeWidth={1.5} />\n <textarea\n ref={(el) => { if (el) { el.style.height = 'auto'; el.style.height = Math.min(400, Math.max(160, el.scrollHeight)) + 'px'; } }}\n value={promptText}\n onChange={(e) => {\n setPromptText(e.target.value);\n const el = e.target;\n el.style.height = 'auto';\n el.style.height = Math.min(400, Math.max(160, el.scrollHeight)) + 'px';\n }}\n placeholder={mode === 'plan'\n ? 'Paste a PRD, TDD, or multi-workflow specification. The planner will decompose it into a set of related workflows...'\n : mode === 'discover'\n ? 'Describe what you want to accomplish. The LLM will discover and execute the right tools...'\n : 'Describe the pipeline steps, tools, inputs, and outputs. The LLM will create the pipeline (DAG) directly...'\n }\n 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\"\n autoFocus\n onKeyDown={(e) => { if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) handleSubmit(e); }}\n />\n </div>\n <div className=\"flex items-center justify-between px-4 py-2 border-t border-surface-border bg-surface-sunken/30\">\n {mode === 'plan' ? (\n <span className=\"text-[10px] text-text-tertiary\">\n Decomposes specification into composed workflows — builds leaf-first\n </span>\n ) : mode === 'discover' ? (\n <label className=\"flex items-center gap-2 cursor-pointer select-none group\">\n <input\n type=\"checkbox\"\n checked={forceDiscovery}\n onChange={(e) => setForceDiscovery(e.target.checked)}\n className=\"w-3.5 h-3.5 rounded border-border text-accent-primary focus:ring-accent-primary/50 bg-surface-sunken cursor-pointer\"\n />\n <span className=\"text-[10px] text-text-secondary group-hover:text-text-primary transition-colors\">Force discovery</span>\n <span className=\"text-[10px] text-text-tertiary\">{forceDiscovery ? '— skip compiled pipelines' : '— prefer compiled pipelines'}</span>\n </label>\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">\n LLM builds pipeline from tool schemas — no execution needed\n </span>\n )}\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] text-text-tertiary\">Cmd+Enter</span>\n <button\n type=\"submit\"\n disabled={!promptText.trim() || activeMutation.isPending}\n 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\"\n >\n {activeMutation.isPending ? 'Starting...' : mode === 'plan' ? 'Plan' : mode === 'discover' ? 'Discover' : 'Build'}\n </button>\n </div>\n </div>\n </div>\n {activeMutation.isError && (\n <p className=\"mt-2 text-sm text-status-error\">{activeMutation.error.message}</p>\n )}\n </form>\n\n <div className=\"space-y-4 pt-1\">\n {lifecycleSteps.map((step) => (\n <div key={step.title} className=\"flex items-start gap-2.5\">\n <step.icon className={`w-3.5 h-3.5 mt-0.5 shrink-0 ${step.color}`} strokeWidth={1.5} />\n <div>\n <p className=\"text-[11px] font-medium text-text-primary\">{step.title}</p>\n <p className=\"text-[10px] text-text-tertiary mt-0.5 leading-relaxed\">{step.detail}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n// ── Builder wizard (direct build mode) ────────────────────────────────────────\n\nfunction BuilderWizard() {\n const navigate = useNavigate();\n const { workflowId } = useParams<{ workflowId: string }>();\n const [searchParams, setSearchParams] = useSearchParams();\n const [createdYamlId, setCreatedYamlId] = useState<string | null>(null);\n const refineMutation = useRefineBuildWorkflow();\n\n useMcpQueryDetailEvents(workflowId);\n\n const { data: resultData, refetch } = useBuilderResult(workflowId);\n const builderData = resultData?.result?.data as any;\n\n const hasYaml = !!builderData?.yaml;\n const isClarification = !!builderData?.clarification_needed;\n const isBuilding = !resultData || (!hasYaml && !isClarification && !builderData?.title?.includes('Failed'));\n\n // Look up existing YAML workflow by name (survives page reload)\n const builderName = builderData?.name as string | undefined;\n const { data: existingYaml } = useYamlWorkflows(\n builderName ? { search: builderName, limit: 1 } : {},\n );\n const existingYamlId = existingYaml?.workflows?.[0]?.id;\n const resolvedYamlId = createdYamlId || existingYamlId || null;\n\n // Fetch YAML workflow status for step gating\n const { data: yamlWorkflow } = useYamlWorkflow(resolvedYamlId || '');\n const yamlStatus = yamlWorkflow?.status || 'draft';\n const isDeployedOrActive = yamlStatus === 'deployed' || yamlStatus === 'active';\n type BStep = 1 | 2 | 3 | 4;\n const BUILDER_LABELS = ['Describe', 'Profile', 'Deploy', 'Test'];\n\n let maxReachable: BStep = 1;\n if (hasYaml) maxReachable = 2;\n if (resolvedYamlId) maxReachable = 3;\n if (isDeployedOrActive) maxReachable = 4;\n\n const stepParam = searchParams.get('step');\n const [manualStep, setManualStep] = useState<BStep | null>(null);\n const defaultStep: BStep = hasYaml ? 2 : 1;\n const step: BStep = manualStep ?? (stepParam ? Math.min(Number(stepParam), maxReachable) as BStep : defaultStep);\n\n // Sync URL to reflect the resolved step when no step param is present\n useEffect(() => {\n if (!stepParam && resultData) {\n setSearchParams({ mode: 'builder', step: String(step) }, { replace: true });\n }\n }, [resultData, step]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleStepClick = (s: number) => {\n if (s <= maxReachable) {\n setManualStep(s as BStep);\n setSearchParams({ mode: 'builder', step: String(s) });\n }\n };\n\n // Extract original prompt from the workflow execution events (same approach as DescribePanel)\n const { data: builderExecution } = useMcpQueryExecution(workflowId);\n const startEvent = builderExecution?.events?.find(\n (e: any) => e.event_type === 'workflow_execution_started',\n );\n const envelope = Array.isArray(startEvent?.attributes?.input)\n ? startEvent.attributes.input[0]\n : startEvent?.attributes?.input;\n const originalPrompt: string | undefined = envelope?.data?.prompt || envelope?.data?.question || undefined;\n\n // Builder-specific recompilation: submits feedback + prior YAML to the builder LLM,\n // which starts a new builder workflow. Navigate to it so the user sees build progress.\n const handleBuilderRegenerate = async (feedback: string) => {\n if (!builderData?.yaml || !originalPrompt) return;\n const result = await refineMutation.mutateAsync({\n prompt: originalPrompt,\n prior_yaml: yamlWorkflow?.yaml_content || builderData.yaml,\n feedback,\n tags: builderData.tags,\n });\n navigate(`/mcp/queries/${result.workflow_id}?mode=builder`, { replace: true });\n };\n\n return (\n <div className=\"flex flex-col min-h-[calc(100vh-12rem)]\">\n <PageHeader\n title=\"MCP Tool Designer\"\n actions={\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] px-2 py-0.5 rounded-full bg-accent/10 text-accent font-medium\">Direct Build</span>\n <StatusBadge status={isClarification ? 'pending' : isBuilding ? 'in_progress' : hasYaml ? 'completed' : 'failed'} />\n </div>\n }\n />\n\n <WizardSteps labels={BUILDER_LABELS} current={step} maxReachable={maxReachable} onStepClick={handleStepClick} />\n\n <div className=\"flex-1 mt-4\">\n {step === 1 && (\n <DescribePanel\n workflowId={workflowId!}\n status={isClarification ? 'clarification' : isBuilding ? 'in_progress' : hasYaml ? 'completed' : 'failed'}\n builderData={builderData}\n onBuilt={() => { refetch(); setManualStep(2); }}\n onNext={() => handleStepClick(2)}\n />\n )}\n {step === 2 && hasYaml && (\n <BuilderProfilePanel\n builderData={builderData}\n resolvedYamlId={resolvedYamlId}\n originalPrompt={originalPrompt}\n onBack={() => handleStepClick(1)}\n onCreate={(yamlId) => {\n setCreatedYamlId(yamlId);\n handleStepClick(3);\n }}\n onNext={() => handleStepClick(3)}\n />\n )}\n {step === 3 && resolvedYamlId && (\n <DeployPanel\n yamlId={resolvedYamlId}\n onAdvance={() => handleStepClick(4)}\n onBack={() => handleStepClick(2)}\n onRegenerate={handleBuilderRegenerate}\n regeneratePending={refineMutation.isPending}\n />\n )}\n {step === 4 && resolvedYamlId && (\n <TestPanel\n yamlId={resolvedYamlId}\n originalWorkflowId={workflowId}\n originalResult={undefined}\n originalPrompt={originalPrompt}\n onBack={() => handleStepClick(3)}\n onAdvance={() => {}}\n builderMode\n />\n )}\n </div>\n </div>\n );\n}\n\n// ── Detail page (existing workflow or new composer) ───────────────────────────\n\nexport function McpQueryDetailPage() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const [searchParams] = useSearchParams();\n\n if (workflowId === 'new') return <ComposerPanel />;\n if (searchParams.get('mode') === 'plan') return <PlanWizard />;\n if (searchParams.get('mode') === 'builder') return <BuilderWizard />;\n\n return <McpQueryWizard />;\n}\n\nfunction McpQueryWizard() {\n const d = useQueryDetail();\n\n return (\n <div className=\"flex flex-col min-h-[calc(100vh-12rem)]\">\n <PageHeader\n title=\"MCP Tool Compiler\"\n actions={\n <div className=\"flex items-center gap-4\">\n <StatusBadge status={d.status} />\n {d.discovery?.method === 'compiled-workflow' && (\n <span className=\"text-xs bg-status-success/10 text-status-success px-2 py-0.5 rounded-full\">\n Deterministic ({((d.discovery.confidence as number) * 100).toFixed(0)}% match)\n </span>\n )}\n </div>\n }\n />\n\n <StatusCard\n workflowId={d.workflowId}\n status={d.status}\n discovery={d.discovery}\n execution={d.execution}\n result={d.result}\n />\n\n <EscalationBanner\n escalation={d.displayEscalation}\n isRoundsExhausted={d.isRoundsExhausted}\n diagnosis={(d.result as any)?.diagnosis as string | undefined}\n onRetryTriage={d.activeEscalation ? d.handleRetryTriage : undefined}\n isRetrying={d.claimMutation.isPending || d.resolveMutation.isPending}\n rerunWorkflowId={d.rerunWorkflowId}\n />\n\n <WizardSteps labels={d.stepLabels} current={d.step} maxReachable={d.maxReachable} onStepClick={(s) => d.setManualStep(s as Step)} />\n\n <div className=\"flex-1\">\n\n {d.step === 1 && (\n <OriginalQueryPanel\n status={d.status}\n originalEnvelope={d.originalEnvelope}\n originalPrompt={d.originalPrompt}\n originalOutput={d.originalOutput}\n originalDurationMs={d.originalExecution?.duration_ms}\n resultSummary={d.result?.summary as string | undefined}\n onNext={d.maxReachable >= 2 ? () => d.setManualStep(2) : undefined}\n />\n )}\n\n {d.step === 2 && (\n <TimelinePanel\n events={d.events}\n onBack={() => d.setManualStep(1)}\n onNext={d.maxReachable >= 3 ? () => d.setManualStep(3) : undefined}\n />\n )}\n\n {d.step === 3 && (\n <ProfilePanel\n compiledYaml={d.compiledYaml}\n originalPrompt={d.originalPrompt}\n compileAppId={d.compileAppId}\n setCompileAppId={d.setCompileAppId}\n compileName={d.compileName}\n setCompileName={d.setCompileName}\n compileDescription={d.compileDescription}\n setCompileDescription={d.setCompileDescription}\n compileTags={d.compileTags}\n setCompileTags={d.setCompileTags}\n describeData={d.describeData}\n describePrompt={d.describePrompt}\n allAppIds={d.allAppIds}\n onCompile={d.handleCompile}\n isCompiling={d.createYaml.isPending}\n compileError={d.createYaml.isError ? d.createYaml.error.message : undefined}\n isUncompilable={d.isUncompilable}\n onBack={() => d.setManualStep(2)}\n onNext={() => d.setManualStep(d.profileNextStep as Step)}\n />\n )}\n\n {d.step === 4 && d.compiledYaml && (\n <DeployPanel\n yamlId={d.compiledYaml.id}\n onAdvance={() => d.setManualStep(5)}\n onBack={() => d.setManualStep(3)}\n />\n )}\n\n {d.step === 5 && d.compiledYaml && (\n <TestPanel\n yamlId={d.compiledYaml.id}\n originalWorkflowId={d.workflowId}\n originalResult={d.result}\n originalPrompt={d.originalPrompt}\n onBack={() => d.setManualStep(4)}\n onAdvance={() => d.setManualStep(6)}\n />\n )}\n\n {d.step === 6 && d.compiledYaml && (\n <VerifyPanel\n originalWorkflowId={d.workflowId}\n originalPrompt={d.originalPrompt}\n workflowName={d.compiledYaml.name}\n onBack={() => d.setManualStep(5)}\n onGoToDeploy={() => d.setManualStep(4)}\n />\n )}\n\n </div>{/* end flex-1 panel content */}\n </div>\n );\n}\n"],"names":["WizardSteps","labels","current","maxReachable","onStepClick","jsxDEV","label","i","s","isReachable","BUILDER_JOBS_KEY","useSubmitBuildWorkflow","queryClient","useQueryClient","useMutation","params","apiFetch","useRefineBuildWorkflow","useCreateDirectYamlWorkflow","useBuilderResult","workflowId","useQuery","WORKFLOW_SETS_KEY","useWorkflowSet","id","query","status","_a","useCreateWorkflowSet","WizardNav","children","BUILD_PHASES","Server","Cpu","FileCode","DescribePanel","builderData","onBuilt","onNext","answers","setAnswers","useState","activePhase","setActivePhase","submitBuild","execution","useMcpQueryExecution","isClarification","questions","toolsIdentified","isBuilding","isComplete","isFailed","startEvent","_b","e","envelope","_c","_d","originalPrompt","_e","_f","useEffect","activityCount","handleAnswer","t","q","HelpCircle","MessageSquare","phase","isDone","isActive","CheckCircle","Loader2","BuilderProfilePanel","resolvedYamlId","onBack","onCreate","isEditing","setIsEditing","name","setName","description","setDescription","appId","setAppId","tags","setTags","createYaml","updateYaml","useUpdateYamlWorkflow","existingWf","useYamlWorkflow","isCreated","handleCreate","result","handleSave","editable","TagInput","Pencil","statusIcon","base","Rocket","PackageCheck","FileCode2","PlanSidebar","plan","namespaces","yamlStatuses","activeWorkflow","onSelect","grouped","useMemo","groups","item","showNsHeaders","ns","PlanProfilePanel","yamlId","planItem","lockedAppId","isSaved","onSaved","onNavigateDeploy","wf","loadedId","setLoadedId","defaultName","sanitizedAppId","sanitizedName","yaml","subscribesMatch","actualOldTopic","newSuffix","activityIds","m","actId","newId","saved","isLocked","SecondaryAction","Icon","onClick","disabled","CLASSIFICATION_STYLES","ClassificationBadge","classification","style","InputSchemaEditor","fields","onChange","editing","expandedField","setExpandedField","updateField","index","updates","next","f","toggleClassification","field","nextClass","removeField","_","dynamicFields","fixedFields","isExpanded","FieldRow","expanded","onToggleExpand","onToggleClassification","onUpdate","onRemove","val","ICON","BTN","BTN_LG","ConfigurationSection","resolvedInputSchema","resolvedOutputSchema","resolvedYaml","configEditing","_setConfigEditing","_canEditConfig","yamlDraft","setYamlDraft","inputSchemaDraft","setInputSchemaDraft","outputSchemaDraft","setOutputSchemaDraft","inputFieldMetaDraft","setInputFieldMetaDraft","onSave","onCancel","updateMutation","yamlTextareaRef","isCollapsed","onToggle","schemasGrid","unwrapped","hasFieldMeta","advancedMode","setAdvancedMode","yamlFullscreen","setYamlFullscreen","copied","setCopied","yamlSectionRef","useRef","yamlText","handleCopyYaml","useCallback","content","Fragment","JsonViewer","BookOpen","Check","Copy","Maximize2","FullscreenOverlay","Minimize2","a","hasArgs","hasMappings","k","v","isLong","CollapsibleSection","SOURCE_STYLES","styleFor","source","extractMappingRefs","value","extractYamlRefs","activityId","actIdx","afterAct","mapsIdx","afterMaps","endMatch","deriveEdges","entries","idSet","edgeMap","entry","manifestRefs","yamlRefs","allRefs","src","key","assignLayers","edges","inDeps","edge","layers","computeLayer","stack","deps","layer","d","ROW_H","BAR_TOP","BAR_H","LABEL_REM","DagCanvas","manifest","selectedId","containerRef","graphW","setGraphW","el","measure","labelPx","obs","layerMap","numLayers","sortedEntries","rowIndex","indexed","b","la","lb","sorted","x","graphH","barWidthPct","activeSources","barLeftPct","isSelected","fromRow","toRow","fromLayer","toLayer","colW","barW","x1","y1","x2","y2","dx","YamlComposer","activityManifest","inputSchema","outputSchema","yamlContent","selectedNodeId","onNodeSelect","setConfigEditing","canEditConfig","viewMode","setViewMode","DagNodeDetail","onClose","hasOutputFields","Field","LIFECYCLE_STEPS","LIFECYCLE_LABELS","LIFECYCLE_COLORS","LifecycleSidebar","_sourceWorkflowId","contentVersion","deployedContentVersion","onDeploy","onArchive","onDelete","_onRegenerate","isPending","error","effectiveStatus","currentIdx","needsRedeploy","SectionLabel","step","idx","isCurrent","isFuture","isLast","colors","Trash2","VersionHistory","versionsData","searchParams","setSearchParams","currentVersion","viewingVersion","isViewing","DeployPanel","onAdvance","onRegenerate","regeneratePending","feedbackText","setFeedbackText","showFeedback","setShowFeedback","dismissingFeedback","setDismissingFeedback","closeFeedback","refetch","useYamlWorkflowVersions","deployMutation","useDeployYamlWorkflow","activateMutation","useActivateYamlWorkflow","archiveMutation","useArchiveYamlWorkflow","deleteMutation","useDeleteYamlWorkflow","regenerateMutation","useRegenerateYamlWorkflow","versionParam","setVersionParam","isViewingHistory","versionSnapshot","useYamlWorkflowVersion","versionSearchParams","sp","setVersionSearchParams","setSelectedNodeId","resolvedManifest","selectedEntry","handleSaveConfig","handleCancelEdit","handleDeploy","handleRegenerate","X","MessageSquarePlus","SectionHeading","TOOL_SOURCE_COLORS","LiveActivityTimeline","steps","workerActivities","totalSteps","merged","live","jobLabel","job","date","time","day","TestPanel","originalWorkflowId","originalResult","builderMode","useSearchParams","runs","useMcpRuns","runParam","setRunParam","prev","selectedRunId","setSelectedRunId","selectRun","selectedRunExecution","runLoading","useMcpRunExecution","sidebarOpen","setSidebarOpen","invokeJsonMode","setInvokeJsonMode","invokeFields","setInvokeFields","invokeJson","setInvokeJson","executeAs","setExecuteAs","activeJobId","setActiveJobId","invokeMutation","useInvokeYamlWorkflow","activitySteps","jobComplete","useYamlActivityEvents","skeleton","buildSkeleton","jobs","completedId","timer","handleInvoke","data","handleOpenSidebar","originalExecution","useWorkflowExecution","originalTask","useTaskByWorkflowId","originalExecResult","originalEnvelope","resolvedPrompt","originalOutput","extractJsonFromSummary","deterministicOutput","deterministicInput","execResult","jsonMatch","triggerEvent","Play","RunAsSelector","STEP_LABELS","badgeStatus","roleLabel","role","PlanWizard","useParams","useMcpQueryDetailEvents","urlSetId","plannerResult","plannerData","setId","workflowSet","setStatus","yamlFilters","yamlData","useYamlWorkflows","yamlWorkflows","prevStatus","yamlByPlanName","map","match","w","profiledSet","set","planName","hasProfiled","selectedWorkflow","selectedYamlId","selectedPlanItem","p","isPlanning","hasYaml","hasActive","stepParam","builtCount","totalCount","activeCount","updateUrl","overrides","handleStepClick","firstWf","handleSelectWorkflow","handleProfileSaved","handleNavigateDeploy","PageHeader","StatusBadge","AlertCircle","GitBranch","useWizardStep","initialUrlStep","raw","userChoseStep","manualStep","setStep","syncToUrl","useQueryDetail","promptFromUrl","compileAppId","setCompileAppId","compileName","setCompileName","compileDescription","setCompileDescription","compileTags","setCompileTags","compileInitialized","setCompileInitialized","compileFeedback","setCompileFeedback","resultData","useMcpQueryResult","yamlSearch","useYamlWorkflowForSource","useCreateYamlWorkflow","appIdData","useYamlWorkflowAppIds","mapStatus","discovery","events","escalationData","useEscalationsByWorkflowId","activeEscalation","resolvedEscalation","displayEscalation","claimMutation","useClaimEscalation","resolveMutation","useResolveEscalation","resolvedPayload","triageWorkflowId","triageResultData","triageResult","_g","rerunWorkflowId","milestones","_h","isRoundsExhausted","isUncompilable","fromEnvelope","attrs","describePrompt","describeData","useDescribeMcpQuery","compiledYaml","_i","autoStep","setManualStep","syncStepToUrl","prevStatusRef","stepLabels","STEP_LABELS_BASE","derivedSubscribes","allAppIds","handleCompile","handleRetryTriage","diagnosis","profileNextStep","StatusCard","_status","_discovery","CopyableId","TimeAgo","PanelTitle","title","subtitle","actions","OriginalQueryPanel","originalDurationMs","resultSummary","TimelinePanel","Lightbulb","SwimlaneTimeline","ExistingProfileView","setEditing","descDraft","setDescDraft","tagsDraft","setTagsDraft","handleCancel","Layers","tag","arr","CreateProfileForm","onCompile","isCompiling","compileError","dismissedError","setDismissedError","dismissing","setDismissing","errorRef","visibleError","handleDismiss","ProfilePanel","props","STEPS","derivePhase","childStart","childId","isDeterministic","activityTypes","RouterProgressTracker","verifyRunId","stepNum","Link","VerifyPanel","workflowName","_onGoToDeploy","submitQuery","useSubmitMcpQueryRouted","testPrompt","setTestPrompt","promptInitialized","setPromptInitialized","setVerifyRunId","verifyExecution","verifyResult","verifyStatus","verifyData","verifyDiscovery","usedDeterministic","isRunning","handleSubmit","res","EscalationBanner","escalation","onRetryTriage","isRetrying","navigate","useNavigate","isResolved","resolverPayload","wasTriaged","escalationPayload","originalDiagnosis","DISCOVER_STEPS","DIRECT_STEPS","Wand2","PLAN_STEPS","ComposerPanel","promptText","setPromptText","mode","setMode","forceDiscovery","setForceDiscovery","submitDirect","useSubmitMcpQuery","submitRouted","submitBuilder","createSet","prompt","activeMutation","lifecycleSteps","Hammer","BuilderWizard","createdYamlId","setCreatedYamlId","refineMutation","builderName","existingYaml","existingYamlId","yamlWorkflow","yamlStatus","isDeployedOrActive","BUILDER_LABELS","builderExecution","handleBuilderRegenerate","feedback","McpQueryDetailPage","McpQueryWizard"],"mappings":"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"}
|