@hotmeshio/long-tail 0.1.13 → 0.1.15

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.
Files changed (424) hide show
  1. package/README.md +15 -0
  2. package/build/api/escalations/bulk.d.ts +78 -0
  3. package/build/api/escalations/bulk.js +279 -0
  4. package/build/api/escalations/claim.d.ts +30 -0
  5. package/build/api/escalations/claim.js +121 -0
  6. package/build/api/escalations/create.d.ts +29 -0
  7. package/build/api/escalations/create.js +101 -0
  8. package/build/api/escalations/helpers.d.ts +10 -0
  9. package/build/api/escalations/helpers.js +80 -0
  10. package/build/api/escalations/index.d.ts +6 -0
  11. package/build/api/escalations/index.js +26 -0
  12. package/build/api/escalations/list.d.ts +75 -0
  13. package/build/api/escalations/list.js +170 -0
  14. package/build/api/escalations/resolve.d.ts +18 -0
  15. package/build/api/escalations/resolve.js +243 -0
  16. package/build/api/escalations/single.d.ts +37 -0
  17. package/build/api/escalations/single.js +123 -0
  18. package/build/api/files.d.ts +16 -0
  19. package/build/api/files.js +61 -0
  20. package/build/api/knowledge.d.ts +36 -0
  21. package/build/api/knowledge.js +112 -0
  22. package/build/api/mcp/index.d.ts +2 -0
  23. package/build/api/mcp/index.js +16 -0
  24. package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
  25. package/build/api/{mcp.js → mcp/servers.js} +4 -65
  26. package/build/api/mcp/tools.d.ts +33 -0
  27. package/build/api/mcp/tools.js +64 -0
  28. package/build/api/mcp-runs.d.ts +2 -0
  29. package/build/api/mcp-runs.js +2 -0
  30. package/build/api/settings.js +9 -1
  31. package/build/api/workflow-sets.d.ts +11 -0
  32. package/build/api/workflow-sets.js +62 -0
  33. package/build/api/workflows/config.d.ts +64 -0
  34. package/build/api/workflows/config.js +142 -0
  35. package/build/api/workflows/discovery.d.ts +29 -0
  36. package/build/api/workflows/discovery.js +153 -0
  37. package/build/api/workflows/index.d.ts +3 -0
  38. package/build/api/workflows/index.js +18 -0
  39. package/build/api/workflows/invocation.d.ts +67 -0
  40. package/build/api/workflows/invocation.js +188 -0
  41. package/build/api/yaml-workflows/cron.d.ts +39 -0
  42. package/build/api/yaml-workflows/cron.js +127 -0
  43. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -137
  44. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
  45. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  46. package/build/api/yaml-workflows/deploy.js +223 -0
  47. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  48. package/build/api/yaml-workflows/helpers.js +8 -0
  49. package/build/api/yaml-workflows/index.d.ts +4 -0
  50. package/build/api/yaml-workflows/index.js +27 -0
  51. package/build/api/yaml-workflows/versions.d.ts +43 -0
  52. package/build/api/yaml-workflows/versions.js +124 -0
  53. package/build/bin/ltc.d.ts +2 -0
  54. package/build/bin/ltc.js +220 -0
  55. package/build/examples/seed-data.d.ts +55 -0
  56. package/build/examples/seed-data.js +161 -0
  57. package/build/examples/seed.js +7 -164
  58. package/build/lib/cli/auth.d.ts +23 -0
  59. package/build/lib/cli/auth.js +167 -0
  60. package/build/lib/cli/client.d.ts +6 -0
  61. package/build/lib/cli/client.js +31 -0
  62. package/build/lib/cli/commands/escalations.d.ts +19 -0
  63. package/build/lib/cli/commands/escalations.js +69 -0
  64. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  65. package/build/lib/cli/commands/knowledge.js +87 -0
  66. package/build/lib/cli/commands/mcp.d.ts +8 -0
  67. package/build/lib/cli/commands/mcp.js +33 -0
  68. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  69. package/build/lib/cli/commands/pipelines.js +67 -0
  70. package/build/lib/cli/commands/status.d.ts +1 -0
  71. package/build/lib/cli/commands/status.js +28 -0
  72. package/build/lib/cli/commands/users.d.ts +7 -0
  73. package/build/lib/cli/commands/users.js +25 -0
  74. package/build/lib/cli/commands/workflows.d.ts +16 -0
  75. package/build/lib/cli/commands/workflows.js +104 -0
  76. package/build/lib/cli/compile.d.ts +2 -0
  77. package/build/lib/cli/compile.js +165 -0
  78. package/build/lib/cli/format.d.ts +23 -0
  79. package/build/lib/cli/format.js +94 -0
  80. package/build/lib/cli/init.d.ts +1 -0
  81. package/build/lib/cli/init.js +61 -0
  82. package/build/lib/cli/output.d.ts +27 -0
  83. package/build/lib/cli/output.js +126 -0
  84. package/build/lib/cli/scanner.d.ts +10 -0
  85. package/build/lib/cli/scanner.js +164 -0
  86. package/build/lib/cli/types.d.ts +16 -0
  87. package/build/lib/cli/types.js +2 -0
  88. package/build/lib/logger/index.d.ts +0 -9
  89. package/build/lib/logger/index.js +9 -4
  90. package/build/lib/storage/index.js +2 -2
  91. package/build/lib/storage/local.d.ts +15 -0
  92. package/build/lib/storage/local.js +63 -0
  93. package/build/lib/storage/mime.d.ts +4 -0
  94. package/build/lib/storage/mime.js +31 -0
  95. package/build/lib/storage/s3.d.ts +16 -0
  96. package/build/lib/storage/s3.js +70 -0
  97. package/build/lib/storage/types.d.ts +18 -0
  98. package/build/modules/utils.d.ts +73 -0
  99. package/build/modules/utils.js +84 -0
  100. package/build/routes/file-browser.d.ts +2 -0
  101. package/build/routes/file-browser.js +126 -0
  102. package/build/routes/files.js +25 -17
  103. package/build/routes/index.js +4 -0
  104. package/build/routes/knowledge.d.ts +2 -0
  105. package/build/routes/knowledge.js +141 -0
  106. package/build/routes/mcp-runs.js +2 -0
  107. package/build/routes/workflow-sets.js +9 -0
  108. package/build/routes/yaml-workflows/crud.js +9 -0
  109. package/build/routes/yaml-workflows/deployment.js +8 -0
  110. package/build/sdk/index.d.ts +17 -0
  111. package/build/sdk/index.js +19 -0
  112. package/build/services/insight/index.d.ts +13 -0
  113. package/build/services/insight/index.js +4 -7
  114. package/build/services/insight/prompts.d.ts +1 -1
  115. package/build/services/insight/prompts.js +1 -1
  116. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  117. package/build/services/mcp/client/connection-dispatch.js +78 -0
  118. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  119. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  120. package/build/services/mcp/client/connection-test.d.ts +10 -0
  121. package/build/services/mcp/client/connection-test.js +49 -0
  122. package/build/services/mcp/client/connection.d.ts +3 -68
  123. package/build/services/mcp/client/connection.js +15 -393
  124. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  125. package/build/services/mcp/server-lifecycle.js +49 -0
  126. package/build/services/mcp/server-tools.d.ts +13 -0
  127. package/build/services/mcp/server-tools.js +287 -0
  128. package/build/services/mcp/server.d.ts +2 -26
  129. package/build/services/mcp/server.js +7 -315
  130. package/build/services/mcp-runs/queries.d.ts +2 -0
  131. package/build/services/mcp-runs/queries.js +11 -1
  132. package/build/services/mcp-runs/sql.d.ts +1 -1
  133. package/build/services/mcp-runs/sql.js +2 -2
  134. package/build/services/workflow-sets/db.d.ts +1 -0
  135. package/build/services/workflow-sets/db.js +6 -0
  136. package/build/services/workflow-sets/index.d.ts +1 -1
  137. package/build/services/workflow-sets/index.js +2 -1
  138. package/build/services/workflow-sets/sql.d.ts +1 -0
  139. package/build/services/workflow-sets/sql.js +6 -1
  140. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  141. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  142. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  143. package/build/services/yaml-workflow/db-versions.js +76 -0
  144. package/build/services/yaml-workflow/db.d.ts +14 -12
  145. package/build/services/yaml-workflow/db.js +32 -70
  146. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  147. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  148. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  149. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  150. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  151. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  152. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  153. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  154. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  155. package/build/services/yaml-workflow/generator.js +4 -4
  156. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  157. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  158. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  159. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  160. package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
  161. package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
  162. package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
  163. package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
  164. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  165. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  166. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  167. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  168. package/build/services/yaml-workflow/sql.d.ts +2 -1
  169. package/build/services/yaml-workflow/sql.js +10 -3
  170. package/build/start/workers.js +6 -5
  171. package/build/system/activities/file-storage.d.ts +4 -0
  172. package/build/system/activities/file-storage.js +7 -1
  173. package/build/system/activities/knowledge.d.ts +23 -0
  174. package/build/system/activities/knowledge.js +50 -10
  175. package/build/system/activities/schema-exchange.d.ts +50 -0
  176. package/build/system/activities/schema-exchange.js +210 -0
  177. package/build/system/activities/sql.d.ts +4 -1
  178. package/build/system/activities/sql.js +37 -2
  179. package/build/system/index.js +1 -0
  180. package/build/system/mcp-servers/file-storage.js +3 -1
  181. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  182. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  183. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  184. package/build/system/mcp-servers/human-queue.js +9 -51
  185. package/build/system/mcp-servers/knowledge.js +69 -6
  186. package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
  187. package/build/system/mcp-servers/schema-exchange.js +93 -0
  188. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  189. package/build/system/seed/server-definitions.d.ts +112 -1
  190. package/build/system/seed/server-definitions.js +37 -0
  191. package/build/system/seed/tool-manifests-data.d.ts +87 -0
  192. package/build/system/seed/tool-manifests-data.js +37 -1
  193. package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
  194. package/build/system/seed/tool-manifests-knowledge.js +6 -5
  195. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  196. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  197. package/build/system/workflows/mcp-triage/index.js +17 -75
  198. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
  199. package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
  200. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +2 -1
  201. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
  202. package/build/system/workflows/mcp-workflow-planner/index.js +41 -5
  203. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
  204. package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
  205. package/build/tsconfig.tsbuildinfo +1 -1
  206. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-NLryl1_B.js} +2 -2
  207. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
  208. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
  209. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
  210. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
  211. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
  212. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
  213. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
  214. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
  215. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
  216. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
  217. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
  218. package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
  219. package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
  220. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
  221. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
  222. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
  223. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
  224. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
  225. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
  226. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
  227. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
  228. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
  229. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
  230. package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
  231. package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
  232. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
  233. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
  234. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
  235. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
  236. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
  237. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
  238. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
  239. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
  240. package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +2 -0
  241. package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
  242. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
  243. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
  244. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
  245. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
  246. package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
  247. package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
  248. package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
  249. package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
  250. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
  251. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
  252. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
  253. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
  254. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
  255. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
  256. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
  257. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
  258. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
  259. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
  260. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
  261. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
  262. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
  263. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
  264. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
  265. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DurFwIwe.js.map} +1 -1
  266. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
  267. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
  268. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
  269. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
  270. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
  271. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
  272. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
  273. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
  274. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
  275. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
  276. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
  277. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
  278. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
  279. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
  280. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
  281. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
  282. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
  283. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
  284. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
  285. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
  286. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
  287. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
  288. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
  289. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
  290. package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
  291. package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
  292. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
  293. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
  294. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
  295. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
  296. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
  297. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
  298. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
  299. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
  300. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
  301. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
  302. package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
  303. package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
  304. package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
  305. package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
  306. package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
  307. package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
  308. package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
  309. package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-CmznCuAx.js.map} +1 -1
  310. package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
  311. package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
  312. package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
  313. package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
  314. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  315. package/dashboard/dist/assets/index-C8-UaN4N.js +2 -0
  316. package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-C8-UaN4N.js.map} +1 -1
  317. package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
  318. package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
  319. package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
  320. package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-CjxHCVxl.js.map} +1 -1
  321. package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
  322. package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
  323. package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
  324. package/dashboard/dist/assets/{index-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
  325. package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
  326. package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
  327. package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
  328. package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-XGOmZ117.js.map} +1 -1
  329. package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
  330. package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
  331. package/dashboard/dist/assets/{index-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
  332. package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
  333. package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
  334. package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
  335. package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
  336. package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
  337. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
  338. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
  339. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
  340. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
  341. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
  342. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
  343. package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
  344. package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
  345. package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
  346. package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
  347. package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
  348. package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
  349. package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
  350. package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
  351. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
  352. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
  353. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
  354. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
  355. package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
  356. package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
  357. package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
  358. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  359. package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
  360. package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
  361. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
  362. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
  363. package/dashboard/dist/index.html +3 -3
  364. package/docs/api/http/file-browser.md +101 -0
  365. package/docs/api/http/knowledge.md +203 -0
  366. package/docs/api/http/settings.md +6 -4
  367. package/docs/api/sdk/files.md +68 -0
  368. package/docs/api/sdk/knowledge.md +126 -0
  369. package/docs/api/sdk/settings.md +3 -2
  370. package/docs/cli.md +171 -0
  371. package/docs/compilation.md +16 -0
  372. package/docs/compiler.md +311 -0
  373. package/docs/events.md +19 -0
  374. package/docs/schema-exchange.md +173 -0
  375. package/docs/self-test.md +106 -0
  376. package/docs/workflows.md +19 -0
  377. package/package.json +15 -2
  378. package/build/api/escalations.d.ts +0 -271
  379. package/build/api/escalations.js +0 -932
  380. package/build/api/workflows.d.ts +0 -158
  381. package/build/api/workflows.js +0 -414
  382. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js +0 -2
  383. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
  384. package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
  385. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
  386. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
  387. package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
  388. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
  389. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
  390. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
  391. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
  392. package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
  393. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js +0 -2
  394. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
  395. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
  396. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
  397. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
  398. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
  399. package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
  400. package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
  401. package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
  402. package/dashboard/dist/assets/index-BUK3qR-1.js +0 -2
  403. package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
  404. package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
  405. package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
  406. package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
  407. package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
  408. package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
  409. package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
  410. package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
  411. package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
  412. package/dashboard/dist/assets/index-Di12t56M.js +0 -2
  413. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
  414. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
  415. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
  416. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
  417. package/dashboard/dist/assets/useEventHooks-anv_B2Yy.js +0 -2
  418. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
  419. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
  420. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
  421. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
  422. package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
  423. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
  424. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpQueryDetailPage-t3qW3QNa.js","sources":["../../src/components/common/layout/WizardSteps.tsx","../../src/api/workflow-builder.ts","../../src/pages/mcp/mcp-query-detail/ComposerPanel.tsx","../../src/components/common/layout/WizardNav.tsx","../../src/pages/mcp/workflow-builder-detail/DescribePanel.tsx","../../src/lib/sanitize.ts","../../src/pages/mcp/workflow-builder-detail/BuilderProfilePanel.tsx","../../src/components/common/display/SecondaryAction.tsx","../../src/pages/mcp/mcp-query-detail/InputSchemaEditor.tsx","../../src/pages/mcp/mcp-query-detail/YamlDefinitionSection.tsx","../../src/pages/mcp/mcp-query-detail/ActivityManifestSection.tsx","../../src/pages/mcp/mcp-query-detail/ConfigurationSection.tsx","../../src/components/common/data/dag-canvas-layout.ts","../../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/RecompileFeedbackPanel.tsx","../../src/pages/mcp/mcp-query-detail/DeployPanel.tsx","../../src/pages/mcp/mcp-query-detail/LiveActivityTimeline.tsx","../../src/pages/mcp/mcp-query-detail/TestSidebar.tsx","../../src/pages/mcp/mcp-query-detail/SectionHeading.tsx","../../src/pages/mcp/mcp-query-detail/TestResults.tsx","../../src/pages/mcp/mcp-query-detail/TestPanel.tsx","../../src/pages/mcp/mcp-query-detail/BuilderWizard.tsx","../../src/pages/mcp/mcp-query-detail/PlanSidebar.tsx","../../src/pages/mcp/mcp-query-detail/PlanProfilePanel.tsx","../../src/pages/mcp/mcp-query-detail/PlanStep1.tsx","../../src/pages/mcp/mcp-query-detail/AddToSetDialog.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/ExistingProfileView.tsx","../../src/pages/mcp/mcp-query-detail/CreateProfileForm.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 { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { MessageSquare, Lightbulb, Layers, Wand2, GitBranch } from 'lucide-react';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { useSubmitMcpQuery, useSubmitMcpQueryRouted } from '../../../api/mcp-query';\nimport { useSubmitBuildWorkflow } from '../../../api/workflow-builder';\nimport { useCreateWorkflowSet } from '../../../api/workflow-sets';\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: 'Describe API endpoints, processes, or paste a spec. The system decomposes it into pipeline tools.' },\n { icon: GitBranch, color: 'text-status-warning', title: 'Plan & Build', detail: 'Review the decomposition, configure the toolset, then build each tool leaf-first.' },\n { icon: Layers, color: 'text-status-success', title: 'Deploy & Test', detail: 'Deploy the toolset. Test individual tools and the full composition.' },\n];\n\nexport function 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('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 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 ? 'Describe the tools you want to build — API specs, process descriptions, or a full PRD. The system will decompose, build, and deploy them as a composable toolset...'\n : 'Describe what you want to accomplish. The system will discover and execute the right tools...'\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 into composable pipeline tools — 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 * 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","/**\n * Sanitize a value for use as an MCP tool name or HotMesh graph topic\n * (the `subscribes` field in a YAML DAG).\n *\n * ## Why snake_case\n *\n * MCP tool names become the `subscribes` topic in a HotMesh YAML DAG.\n * That topic is how the system routes incoming messages to the correct\n * workflow. The same value also appears in `worker` activity `topic`\n * fields and in the `mcp_<server>_<tool>` activity type encoding.\n *\n * Because the activity type uses underscores to delimit server from tool\n * (`mcp_longtail_take_screenshot`), both the server name (letters only)\n * and the tool name (snake_case) must avoid dashes, dots, or other\n * separators that would create ambiguity when parsing activity types.\n *\n * ## Risks if violated\n *\n * - Dashes in tool names cause `parseMcpActivityType()` to mis-split\n * the server/tool boundary in activity type strings.\n * - Dots or special chars can produce invalid HotMesh topic subscriptions\n * that silently fail to route.\n * - Mixed conventions across entry points (builder, planner, discovery)\n * cause topic collisions or deployment failures when merging workflows\n * into a single app namespace.\n *\n * ## Contract\n *\n * Input: any string (LLM output, user input, URL slug, etc.)\n * Output: lowercase letters, digits, and underscores only.\n * Runs of non-alphanumeric chars become a single underscore.\n * No leading or trailing underscores.\n *\n * This is the ONE canonical frontend implementation. The backend has an\n * identical copy at `modules/utils.ts`. No other file in the platform\n * may inline this logic.\n */\nexport function sanitizeToolName(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_|_$/g, '');\n}\n\n/**\n * Sanitize a value for use as an MCP server name (the HotMesh `app.id`\n * and Postgres schema name that isolates one server's workflows from another).\n *\n * ## Why lowercase alphanumeric, leading letter\n *\n * The server name becomes:\n * 1. A Postgres schema name — must start with a letter; letters and digits\n * are safe without quoting.\n * 2. The first segment in the `mcp_<server>_<tool>` activity type encoding.\n * Because underscores delimit server from tool, the server name itself\n * must never contain underscores (or dashes, dots, etc.).\n *\n * ## Risks if violated\n *\n * - Underscores or dashes in the server name make `parseMcpActivityType()`\n * split incorrectly — it uses the first `_` after `mcp_` as the boundary.\n * - A leading digit produces an invalid Postgres schema name that requires\n * quoting and breaks HotMesh's unquoted SQL paths.\n * - Special characters can cause silent deployment failures or schema\n * creation errors.\n *\n * ## Contract\n *\n * Input: any string (LLM suggestion, user input, etc.)\n * Output: lowercase letters and digits only, guaranteed to start with a letter.\n * All non-alphanumeric chars are stripped (not replaced).\n * Leading digits are stripped so the result starts with a letter.\n * Default: 'longtail' if the result is empty after sanitization.\n *\n * This is the ONE canonical frontend implementation. The backend has an\n * identical copy at `modules/utils.ts`. No other file in the platform\n * may inline this logic.\n */\nexport function sanitizeServerName(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]/g, '').replace(/^[0-9]+/, '');\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';\nimport { sanitizeToolName, sanitizeServerName } from '../../../lib/sanitize';\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(sanitizeToolName(builderData?.name || ''));\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(sanitizeServerName(e.target.value))}\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(sanitizeToolName(e.target.value))}\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 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 { FullscreenOverlay } from '../../../components/common/layout/FullscreenOverlay';\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\ninterface YamlDefinitionSectionProps {\n yamlText: string;\n configEditing: boolean;\n yamlDraft: string;\n setYamlDraft: (v: string) => void;\n yamlTextareaRef: React.RefObject<HTMLTextAreaElement | null>;\n}\n\nexport function YamlDefinitionSection({\n yamlText,\n configEditing,\n yamlDraft,\n setYamlDraft,\n yamlTextareaRef,\n}: YamlDefinitionSectionProps) {\n const [yamlFullscreen, setYamlFullscreen] = useState(false);\n const [copied, setCopied] = useState(false);\n const yamlSectionRef = useRef<HTMLDivElement>(null);\n\n const handleCopyYaml = useCallback(() => {\n navigator.clipboard.writeText(yamlText).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n }, [yamlText]);\n\n return (\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 {yamlText}\n </pre>\n )}\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 {yamlText}\n </pre>\n )}\n </FullscreenOverlay>\n </div>\n );\n}\n","interface ActivityManifestSectionProps {\n manifest: any[];\n}\n\nexport function ActivityManifestSection({ manifest }: ActivityManifestSectionProps) {\n return (\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 {manifest\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\">&larr;</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}\n","import { useState } from 'react';\nimport { CollapsibleSection } from '../../../components/common/layout/CollapsibleSection';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { InputSchemaEditor } from './InputSchemaEditor';\nimport { YamlDefinitionSection } from './YamlDefinitionSection';\nimport { ActivityManifestSection } from './ActivityManifestSection';\nimport type { InputFieldMeta } from '../../../api/types';\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\n const yamlText = configEditing ? yamlDraft : (resolvedYaml ?? wf.yaml_content);\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 */}\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 <YamlDefinitionSection\n yamlText={yamlText}\n configEditing={configEditing}\n yamlDraft={yamlDraft}\n setYamlDraft={setYamlDraft}\n yamlTextareaRef={yamlTextareaRef}\n />\n\n {/* Activity Manifest */}\n {wf.activity_manifest?.length > 0 && (\n <ActivityManifestSection manifest={wf.activity_manifest} />\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 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\nexport function 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\nexport interface 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. */\nexport function 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. */\nexport function 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\nexport const ROW_H = 44;\nexport const BAR_TOP = 10;\nexport const BAR_H = 24;\nexport const LABEL_REM = 14; // w-56 = 14rem\n","import { useMemo, useRef, useState, useEffect } from 'react';\nimport type { ActivityManifestEntry } from '../../../api/types';\nimport { styleFor, deriveEdges, assignLayers, ROW_H, BAR_TOP, BAR_H, LABEL_REM } from './dag-canvas-layout';\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\">&larr;</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 appId,\n appVersion,\n siblingCount,\n onDeploy,\n onArchive,\n onRestore,\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 appId?: string;\n appVersion?: number;\n siblingCount?: number;\n onDeploy: () => void;\n onArchive: () => void;\n onRestore?: () => 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 {isCurrent && step === 'archived' && onRestore && (\n <div className=\"mt-2\">\n <button onClick={onRestore} disabled={isPending} className=\"text-[11px] font-medium text-accent hover:text-accent/80\">\n {isPending ? 'Restoring...' : 'Restore to Draft'}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* App namespace info */}\n {appId && (\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\">App Namespace</p>\n <p className=\"text-xs font-mono text-text-primary\">{appId}</p>\n <div className=\"flex items-center gap-3 mt-1.5\">\n {appVersion != null && (\n <span className=\"text-[10px] text-text-secondary\">\n app v{appVersion} {'\\u2192'} <span className=\"text-accent\">v{appVersion + 1}</span> on deploy\n </span>\n )}\n </div>\n {siblingCount != null && siblingCount > 1 && (\n <p className=\"text-[10px] text-text-tertiary mt-1\">\n {siblingCount} tool{siblingCount === 1 ? '' : 's'} in this namespace\n </p>\n )}\n </div>\n )}\n\n {/* Content version */}\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\">Tool Content</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 { X } from 'lucide-react';\n\ninterface RecompileFeedbackPanelProps {\n feedbackText: string;\n setFeedbackText: (v: string) => void;\n dismissing: boolean;\n onClose: () => void;\n onRegenerate: () => void;\n isPending: boolean;\n}\n\nexport function RecompileFeedbackPanel({\n feedbackText,\n setFeedbackText,\n dismissing,\n onClose,\n onRegenerate,\n isPending,\n}: RecompileFeedbackPanelProps) {\n return (\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: dismissing ? undefined : 'fadeIn 300ms ease-out both',\n opacity: dismissing ? 0 : 1,\n maxHeight: dismissing ? '0px' : '400px',\n paddingTop: dismissing ? '0px' : undefined,\n paddingBottom: dismissing ? '0px' : undefined,\n marginBottom: dismissing ? '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={onClose} 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={onRegenerate} disabled={!feedbackText.trim() || isPending} className=\"btn-primary text-xs shrink-0 ml-4\">\n {isPending ? 'Recompiling...' : 'Recompile Pipeline'}\n </button>\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 { RecompileFeedbackPanel } from './RecompileFeedbackPanel';\nimport {\n useYamlWorkflow,\n useYamlWorkflows,\n useYamlWorkflowVersions,\n useYamlWorkflowVersion,\n useUpdateYamlWorkflow,\n useDeployYamlWorkflow,\n useActivateYamlWorkflow,\n useArchiveYamlWorkflow,\n useRestoreYamlWorkflow,\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: siblingsData } = useYamlWorkflows(wf ? { app_id: wf.app_id } : {});\n const siblingCount = siblingsData?.workflows?.length ?? 0;\n const currentAppVersion = Math.max(...(siblingsData?.workflows?.map(w => parseInt(w.app_version || '0', 10)) ?? [0]));\n const { data: versionsData } = useYamlWorkflowVersions(yamlId);\n\n const deployMutation = useDeployYamlWorkflow();\n const activateMutation = useActivateYamlWorkflow();\n const archiveMutation = useArchiveYamlWorkflow();\n const restoreMutation = useRestoreYamlWorkflow();\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\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 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 try {\n await regenerateMutation.mutateAsync({\n id: yamlId,\n compilation_feedback: feedbackText.trim() || undefined,\n });\n setFeedbackText('');\n setShowFeedback(false);\n refetch();\n } catch {\n // Error is surfaced via regenerateMutation.isError below\n }\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 || restoreMutation.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 <RecompileFeedbackPanel\n feedbackText={feedbackText}\n setFeedbackText={setFeedbackText}\n dismissing={dismissingFeedback}\n onClose={closeFeedback}\n onRegenerate={handleRegenerate}\n isPending={regenerateMutation.isPending}\n />\n )}\n\n {/* Recompile error */}\n {regenerateMutation.isError && (\n <div className=\"mb-4 px-3 py-2 bg-status-error/5 border border-status-error/20 rounded-md\">\n <p className=\"text-xs text-status-error\">{regenerateMutation.error?.message || 'Recompilation failed'}</p>\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 */}\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 appId={wf.app_id}\n appVersion={currentAppVersion}\n siblingCount={siblingCount}\n onDeploy={handleDeploy}\n onArchive={() => archiveMutation.mutateAsync(yamlId).then(() => refetch())}\n onRestore={() => restoreMutation.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>\n </div>\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 { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { LiveActivityTimeline } from './LiveActivityTimeline';\nimport type { ActivityManifestEntry } from '../../../api/types';\nimport type { ActivityStep } from '../../../hooks/useYamlActivityEvents';\n\ninterface TestSidebarProps {\n sidebarOpen: boolean;\n activeJobId: string | null;\n activitySteps: ActivityStep[];\n activityManifest: ActivityManifestEntry[] | undefined;\n jobComplete: boolean;\n invokeJsonMode: boolean;\n setInvokeJsonMode: (v: boolean) => void;\n invokeJson: string;\n setInvokeJson: (v: string) => void;\n invokeFields: Record<string, any>;\n setInvokeFields: (v: Record<string, any>) => void;\n executeAs: string;\n setExecuteAs: (v: string) => void;\n invokeError: string | undefined;\n invokePending: boolean;\n onInvoke: () => void;\n onClose: () => void;\n}\n\nexport function TestSidebar({\n sidebarOpen,\n activeJobId,\n activitySteps,\n activityManifest,\n jobComplete,\n invokeJsonMode,\n setInvokeJsonMode,\n invokeJson,\n setInvokeJson,\n invokeFields,\n setInvokeFields,\n executeAs,\n setExecuteAs,\n invokeError,\n invokePending,\n onInvoke,\n onClose,\n}: TestSidebarProps) {\n if (!sidebarOpen && !activeJobId) {\n return (\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 }\n\n return (\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={activityManifest ?? []}\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 {invokeError && (\n <p className=\"mt-2 text-xs text-status-error\">{invokeError}</p>\n )}\n\n <div className=\"flex justify-end gap-3 mt-4\">\n <button onClick={onClose} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Cancel</button>\n <button onClick={onInvoke} disabled={invokePending} className=\"btn-primary text-xs\">\n {invokePending ? 'Starting...' : 'Invoke'}\n </button>\n </div>\n </div>\n )}\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 { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { SectionHeading } from './SectionHeading';\nimport type { LTJob } from '../../../api/types';\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 TestResultsBuilderProps {\n jobs: LTJob[];\n selectedRunId: string | null;\n onSelectRun: (id: string) => void;\n deterministicInput: unknown;\n deterministicOutput: unknown;\n inputSchema: any;\n runLoading: boolean;\n selectedRunExecution: any;\n}\n\nexport function TestResultsBuilder({\n jobs,\n selectedRunId,\n onSelectRun,\n deterministicInput,\n deterministicOutput,\n inputSchema,\n runLoading,\n selectedRunExecution,\n}: TestResultsBuilderProps) {\n return (\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) => onSelectRun(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 && inputSchema ? (\n <JsonViewer data={inputSchema} 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}\n\ninterface TestResultsComparisonProps {\n jobs: LTJob[];\n selectedRunId: string | null;\n onSelectRun: (id: string) => void;\n originalEnvelope: any;\n resolvedPrompt: string | undefined;\n originalOutput: unknown;\n originalDurationMs: number | null | undefined;\n deterministicInput: unknown;\n deterministicOutput: unknown;\n inputSchema: any;\n runLoading: boolean;\n selectedRunExecution: any;\n}\n\nexport function TestResultsComparison({\n jobs,\n selectedRunId,\n onSelectRun,\n originalEnvelope,\n resolvedPrompt,\n originalOutput,\n originalDurationMs,\n deterministicInput,\n deterministicOutput,\n inputSchema,\n runLoading,\n selectedRunExecution,\n}: TestResultsComparisonProps) {\n return (\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) => onSelectRun(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 && inputSchema ? (\n <div>\n <p className=\"text-[10px] text-text-tertiary italic mb-1\">Stored defaults</p>\n <JsonViewer data={inputSchema} 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 {originalDurationMs != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(originalDurationMs / 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","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 { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\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, extractJsonFromSummary } from './helpers';\nimport { TestSidebar } from './TestSidebar';\nimport { TestResultsBuilder, TestResultsComparison } from './TestResults';\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: any) => 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 min-w-0\">\n {/* Left: results */}\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\">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 <TestResultsBuilder\n jobs={jobs}\n selectedRunId={selectedRunId}\n onSelectRun={selectRun}\n deterministicInput={deterministicInput}\n deterministicOutput={deterministicOutput}\n inputSchema={wf.input_schema}\n runLoading={runLoading}\n selectedRunExecution={selectedRunExecution}\n />\n ) : (\n <TestResultsComparison\n jobs={jobs}\n selectedRunId={selectedRunId}\n onSelectRun={selectRun}\n originalEnvelope={originalEnvelope}\n resolvedPrompt={resolvedPrompt}\n originalOutput={originalOutput}\n originalDurationMs={originalExecution?.duration_ms}\n deterministicInput={deterministicInput}\n deterministicOutput={deterministicOutput}\n inputSchema={wf.input_schema}\n runLoading={runLoading}\n selectedRunExecution={selectedRunExecution}\n />\n )}\n </div>\n\n {/* Right: test sidebar */}\n <div className=\"space-y-6\">\n <div className=\"sticky top-6\">\n <TestSidebar\n sidebarOpen={sidebarOpen}\n activeJobId={activeJobId}\n activitySteps={activitySteps}\n activityManifest={wf.activity_manifest}\n jobComplete={jobComplete}\n invokeJsonMode={invokeJsonMode}\n setInvokeJsonMode={setInvokeJsonMode}\n invokeJson={invokeJson}\n setInvokeJson={setInvokeJson}\n invokeFields={invokeFields}\n setInvokeFields={setInvokeFields}\n executeAs={executeAs}\n setExecuteAs={setExecuteAs}\n invokeError={invokeMutation.isError ? invokeMutation.error.message : undefined}\n invokePending={invokeMutation.isPending}\n onInvoke={handleInvoke}\n onClose={() => setSidebarOpen(false)}\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 { useState, useEffect } from 'react';\nimport { useParams, useNavigate, useSearchParams } from 'react-router-dom';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { WizardSteps } from '../../../components/common/layout/WizardSteps';\nimport { useBuilderResult, useRefineBuildWorkflow } from '../../../api/workflow-builder';\nimport { useMcpQueryExecution } from '../../../api/mcp-query';\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 { DeployPanel } from './DeployPanel';\nimport { TestPanel } from './TestPanel';\n\nexport function 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","import { useMemo } from 'react';\nimport { Loader2, FileCode2, Rocket, PackageCheck, Plus, Minus } 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 isAddOpen?: boolean;\n onSelect: (name: string) => void;\n onAdd?: () => 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, isAddOpen, onSelect, onAdd }: 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 sticky top-0 self-start\">\n <div className=\"flex items-center justify-between px-3 py-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Pipeline Tools\n </p>\n {onAdd && (\n <button\n onClick={onAdd}\n className={`w-6 h-6 flex items-center justify-center rounded-full border transition-all duration-200 ${\n isAddOpen\n ? 'bg-accent/20 border-accent/40 text-accent rotate-0'\n : 'border-accent/30 text-accent/60 hover:bg-accent/10 hover:border-accent/50 hover:text-accent'\n }`}\n title={isAddOpen ? 'Cancel' : 'Add additional tools'}\n >\n {isAddOpen\n ? <Minus className=\"w-3 h-3\" strokeWidth={2} />\n : <Plus className=\"w-3 h-3\" strokeWidth={2} />\n }\n </button>\n )}\n </div>\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 { sanitizeToolName, sanitizeServerName } from '../../../lib/sanitize';\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 = sanitizeToolName(planItem.name);\n setName((wf.name !== defaultName && wf.name) ? sanitizeToolName(wf.name) : 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 = sanitizeServerName(appId);\n const sanitizedName = sanitizeToolName(name);\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(sanitizeServerName(e.target.value))}\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 letters 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(sanitizeToolName(e.target.value))}\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=\"snake_case tool name (e.g. take_screenshot)\"\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 { Loader2, AlertCircle, GitBranch } from 'lucide-react';\n\ninterface PlanItem {\n name: string;\n role: string;\n description: string;\n dependencies: string[];\n build_order: number;\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\ninterface PlanStep1Props {\n specification: string | undefined;\n description: string | null | undefined;\n plan: PlanItem[];\n isPlanning: boolean;\n isFailed: boolean;\n onContinue: () => void;\n}\n\nexport function PlanStep1({ specification, description, plan, isPlanning, isFailed, onContinue }: PlanStep1Props) {\n return (\n <div className=\"space-y-6\">\n {/* Original specification */}\n {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 {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 {description && (\n <p className=\"text-sm text-text-secondary mb-4 leading-relaxed\">{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={onContinue}\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","import { Loader2 } from 'lucide-react';\n\ninterface AddToSetDialogProps {\n isOpen: boolean;\n addSubmitted: boolean;\n addSpec: string;\n setAddSpec: (v: string) => void;\n planCount: number;\n isPending: boolean;\n isError: boolean;\n errorMessage: string | undefined;\n onSubmit: () => void;\n onCancel: () => void;\n onDismiss: () => void;\n}\n\nexport function AddToSetDialog({\n isOpen,\n addSubmitted,\n addSpec,\n setAddSpec,\n planCount,\n isPending,\n isError,\n errorMessage,\n onSubmit,\n onCancel,\n onDismiss,\n}: AddToSetDialogProps) {\n return (\n <div\n className=\"transition-all duration-300 ease-in-out grid\"\n style={{\n gridTemplateRows: isOpen ? '1fr' : '0fr',\n opacity: isOpen ? 1 : 0,\n marginBottom: isOpen ? '24px' : '0px',\n }}\n >\n <div className=\"overflow-hidden\">\n <div className=\"rounded-lg border border-accent/20 bg-gradient-to-b from-accent/[0.04] to-transparent p-5\">\n {addSubmitted ? (\n <>\n <div className=\"flex items-center gap-3 py-6 justify-center\">\n <Loader2 className=\"w-5 h-5 text-accent animate-spin\" strokeWidth={1.5} />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">Building new tools...</p>\n <p className=\"text-[11px] text-text-tertiary mt-0.5\">Watch the sidebar — new tools will appear as they're built.</p>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-text-tertiary\">{planCount} tool{planCount === 1 ? '' : 's'} in set</span>\n <button\n onClick={onDismiss}\n className=\"text-[10px] text-text-tertiary hover:text-text-primary transition-colors\"\n >\n Dismiss\n </button>\n </div>\n </>\n ) : (\n <>\n <p className=\"text-sm font-medium text-text-primary mb-1\">Expand this Toolset</p>\n <p className=\"text-[11px] text-text-tertiary mb-4\">Describe additional activities you would like to add.</p>\n <textarea\n value={addSpec}\n onChange={(e) => {\n setAddSpec(e.target.value);\n const el = e.target;\n el.style.height = 'auto';\n el.style.height = `${Math.max(100, el.scrollHeight)}px`;\n }}\n placeholder=\"What else should this set do?\"\n className=\"w-full min-h-[100px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm font-mono text-text-primary placeholder:text-text-tertiary/50 focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n style={{ resize: 'none', overflow: 'hidden' }}\n />\n {isError && (\n <p className=\"text-xs text-status-error mt-2\">{errorMessage}</p>\n )}\n <div className=\"flex items-center justify-between mt-3\">\n <span className=\"text-[10px] text-text-tertiary\">\n {planCount} tool{planCount === 1 ? '' : 's'} in set\n </span>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={onCancel}\n className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors\"\n >\n Cancel\n </button>\n <button\n onClick={onSubmit}\n disabled={!addSpec.trim() || isPending}\n className=\"btn-primary text-xs disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {isPending ? 'Submitting...' : 'Add to Set'}\n </button>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import { useState, useMemo, useEffect, useRef } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Loader2 } 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, useAddToWorkflowSet } from '../../../api/workflow-sets';\nimport { useYamlWorkflows } from '../../../api/yaml-workflows';\nimport { useBuilderResult } from '../../../api/workflow-builder';\nimport { useMcpQueryDetailEvents, usePlanDetailEvents } from '../../../hooks/useEventHooks';\nimport { PlanSidebar } from './PlanSidebar';\nimport { PlanProfilePanel } from './PlanProfilePanel';\nimport { DeployPanel } from './DeployPanel';\nimport { TestPanel } from './TestPanel';\nimport { PlanStep1 } from './PlanStep1';\nimport { AddToSetDialog } from './AddToSetDialog';\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\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 usePlanDetailEvents(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 to YAML workflow mapping ──────────────────────────────────\n const yamlByPlanName = useMemo(() => {\n const map: Record<string, (typeof yamlWorkflows)[number]> = {};\n const used = new Set<string>();\n\n // Pass 1: exact name or graph_topic match\n for (const item of plan) {\n const match = yamlWorkflows.find(w =>\n !used.has(w.id) && (w.name === item.name || w.graph_topic === item.name),\n );\n if (match) { map[item.name] = match; used.add(match.id); }\n }\n\n // Pass 2: positional match within build_order groups\n if (Object.keys(map).length < plan.length) {\n const remaining = yamlWorkflows\n .filter(w => !used.has(w.id))\n .sort((a, b) => (a.created_at || '').localeCompare(b.created_at || ''));\n const byOrder = new Map<number, typeof remaining>();\n for (const w of remaining) {\n const order = w.set_build_order ?? 0;\n if (!byOrder.has(order)) byOrder.set(order, []);\n byOrder.get(order)!.push(w);\n }\n for (const item of plan) {\n if (map[item.name]) continue;\n const group = byOrder.get(item.build_order);\n if (group?.length) {\n const match = group.shift()!;\n map[item.name] = match;\n used.add(match.id);\n }\n }\n }\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 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 hasActive = yamlWorkflows.some(w => w.status === 'active');\n\n let maxReachable: PlanStep = 1;\n if (plan.length > 0) maxReachable = 2; // Allow step 2 as soon as plan exists (YAML may still be building)\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 // ── Add-to-set dialog state ────────────────────────────────────────────\n const [showAddDialog, setShowAddDialog] = useState(false);\n const [addSpec, setAddSpec] = useState('');\n const addMutation = useAddToWorkflowSet();\n const [addSubmitted, setAddSubmitted] = useState(false);\n\n // Auto-close the expand dialog when set returns to completed after an addition\n const prevSetStatus = useRef(setStatus);\n useEffect(() => {\n if (addSubmitted && prevSetStatus.current !== 'completed' && setStatus === 'completed') {\n setAddSubmitted(false);\n setShowAddDialog(false);\n setAddSpec('');\n }\n prevSetStatus.current = setStatus;\n }, [setStatus, addSubmitted]);\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 const handleAddSubmit = async () => {\n if (!setId || !addSpec.trim()) return;\n await addMutation.mutateAsync({ id: setId, specification: addSpec.trim() });\n setAddSubmitted(true);\n };\n\n const handleAddCancel = () => {\n setShowAddDialog(false);\n setAddSpec('');\n };\n\n const handleAddDismiss = () => {\n setAddSubmitted(false);\n setShowAddDialog(false);\n setAddSpec('');\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 <PlanStep1\n specification={workflowSet?.specification}\n description={workflowSet?.description}\n plan={plan}\n isPlanning={isPlanning}\n isFailed={isFailed}\n onContinue={() => handleStepClick(2)}\n />\n )}\n\n {/* ── Steps 2-4: Sidebar + Main ────────────────────────────────── */}\n {step >= 2 && (\n <div className=\"flex gap-6 max-h-[calc(100vh-220px)]\">\n <PlanSidebar\n plan={plan}\n namespaces={namespaces}\n yamlStatuses={yamlStatuses}\n activeWorkflow={selectedWorkflow}\n isAddOpen={showAddDialog}\n onSelect={handleSelectWorkflow}\n onAdd={() => setShowAddDialog(!showAddDialog)}\n />\n <div className=\"flex-1 min-w-0 overflow-y-auto\">\n <AddToSetDialog\n isOpen={showAddDialog}\n addSubmitted={addSubmitted}\n addSpec={addSpec}\n setAddSpec={setAddSpec}\n planCount={plan.length}\n isPending={addMutation.isPending}\n isError={addMutation.isError}\n errorMessage={addMutation.error?.message}\n onSubmit={handleAddSubmit}\n onCancel={handleAddCancel}\n onDismiss={handleAddDismiss}\n />\n {!selectedWorkflow ? (\n <p className=\"text-sm text-text-tertiary py-12 text-center\">Select a pipeline tool 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 key={selectedYamlId}\n yamlId={selectedYamlId}\n onAdvance={() => handleStepClick(4)}\n onBack={() => handleStepClick(2)}\n />\n ) : step === 4 ? (\n <TestPanel\n key={`test-${selectedYamlId}`}\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 { sanitizeToolName } from '../../../lib/sanitize';\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(sanitizeToolName(describeData.tool_name));\n }\n\n // Topic always derives from workflow name (not namespace — using namespace causes topic collisions)\n const derivedSubscribes = sanitizeToolName(compileName);\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 } from 'react';\nimport { Layers, 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';\n\nexport interface 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 */\nexport function 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","import { useState, useEffect, useRef } from 'react';\nimport { Layers, AlertCircle, X } from 'lucide-react';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { TagInput } from '../../../components/common/form/TagInput';\nimport { sanitizeToolName, sanitizeServerName } from '../../../lib/sanitize';\nimport { PanelTitle } from './PanelTitle';\nimport { SectionHeading } from './SectionHeading';\n\nexport interface 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\nexport function 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(sanitizeServerName(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. 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(sanitizeToolName(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","import { Layers } from 'lucide-react';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { PanelTitle } from './PanelTitle';\nimport { ExistingProfileView } from './ExistingProfileView';\nimport { CreateProfileForm } from './CreateProfileForm';\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 { useParams, useSearchParams } from 'react-router-dom';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { WizardSteps } from '../../../components/common/layout/WizardSteps';\nimport { ComposerPanel } from './ComposerPanel';\nimport { BuilderWizard } from './BuilderWizard';\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// ── 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","isReachable","BUILDER_JOBS_KEY","useSubmitBuildWorkflow","queryClient","useQueryClient","useMutation","params","apiFetch","useRefineBuildWorkflow","useCreateDirectYamlWorkflow","useBuilderResult","workflowId","useQuery","DISCOVER_STEPS","MessageSquare","Lightbulb","Layers","DIRECT_STEPS","Wand2","PLAN_STEPS","GitBranch","ComposerPanel","navigate","useNavigate","promptText","setPromptText","useState","mode","setMode","forceDiscovery","setForceDiscovery","submitDirect","useSubmitMcpQuery","submitRouted","useSubmitMcpQueryRouted","submitBuilder","createSet","useCreateWorkflowSet","handleSubmit","e","prompt","name","result","activeMutation","lifecycleSteps","PageHeader","el","step","WizardNav","children","BUILD_PHASES","Server","Cpu","FileCode","DescribePanel","status","builderData","onBuilt","onNext","answers","setAnswers","activePhase","setActivePhase","submitBuild","execution","useMcpQueryExecution","isClarification","questions","toolsIdentified","isBuilding","isComplete","isFailed","_a","startEvent","_b","envelope","_c","_d","originalPrompt","_e","_f","useEffect","activityCount","handleAnswer","t","q","HelpCircle","phase","isDone","isActive","CheckCircle","Loader2","sanitizeToolName","value","sanitizeServerName","BuilderProfilePanel","resolvedYamlId","onBack","onCreate","isEditing","setIsEditing","setName","description","setDescription","appId","setAppId","tags","setTags","createYaml","updateYaml","useUpdateYamlWorkflow","existingWf","useYamlWorkflow","isCreated","handleCreate","handleSave","editable","TagInput","Pencil","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","YamlDefinitionSection","yamlText","configEditing","yamlDraft","setYamlDraft","yamlTextareaRef","yamlFullscreen","setYamlFullscreen","copied","setCopied","yamlSectionRef","useRef","handleCopyYaml","useCallback","BookOpen","Check","Copy","Maximize2","FullscreenOverlay","Minimize2","ActivityManifestSection","manifest","a","hasArgs","hasMappings","k","v","isLong","ConfigurationSection","wf","resolvedInputSchema","resolvedOutputSchema","resolvedYaml","_setConfigEditing","_canEditConfig","inputSchemaDraft","setInputSchemaDraft","outputSchemaDraft","setOutputSchemaDraft","inputFieldMetaDraft","setInputFieldMetaDraft","onSave","onCancel","updateMutation","isCollapsed","onToggle","schemasGrid","unwrapped","hasFieldMeta","advancedMode","setAdvancedMode","content","Fragment","JsonViewer","CollapsibleSection","SOURCE_STYLES","styleFor","source","extractMappingRefs","m","extractYamlRefs","yaml","activityId","actIdx","afterAct","mapsIdx","afterMaps","endMatch","deriveEdges","entries","idSet","edgeMap","entry","manifestRefs","yamlRefs","allRefs","src","key","assignLayers","edges","inDeps","edge","layers","computeLayer","id","stack","deps","layer","d","ROW_H","BAR_TOP","BAR_H","LABEL_REM","DagCanvas","selectedId","onSelect","containerRef","graphW","setGraphW","measure","labelPx","obs","layerMap","numLayers","sortedEntries","rowIndex","useMemo","indexed","b","la","lb","sorted","x","graphH","barWidthPct","activeSources","s","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","appVersion","siblingCount","onDeploy","onArchive","onRestore","onDelete","_onRegenerate","isPending","error","effectiveStatus","currentIdx","needsRedeploy","SectionLabel","idx","isCurrent","isFuture","isLast","colors","Trash2","VersionHistory","versionsData","searchParams","setSearchParams","currentVersion","viewingVersion","isViewing","RecompileFeedbackPanel","feedbackText","setFeedbackText","dismissing","onRegenerate","X","DeployPanel","yamlId","onAdvance","regeneratePending","showFeedback","setShowFeedback","dismissingFeedback","setDismissingFeedback","closeFeedback","refetch","siblingsData","useYamlWorkflows","currentAppVersion","w","useYamlWorkflowVersions","deployMutation","useDeployYamlWorkflow","activateMutation","useActivateYamlWorkflow","archiveMutation","useArchiveYamlWorkflow","restoreMutation","useRestoreYamlWorkflow","deleteMutation","useDeleteYamlWorkflow","regenerateMutation","useRegenerateYamlWorkflow","versionParam","setVersionParam","isViewingHistory","versionSnapshot","useYamlWorkflowVersion","versionSearchParams","sp","setVersionSearchParams","setSelectedNodeId","resolvedManifest","selectedEntry","handleSaveConfig","handleCancelEdit","handleDeploy","handleRegenerate","MessageSquarePlus","TOOL_SOURCE_COLORS","LiveActivityTimeline","steps","workerActivities","totalSteps","merged","live","TestSidebar","sidebarOpen","activeJobId","activitySteps","jobComplete","invokeJsonMode","setInvokeJsonMode","invokeJson","setInvokeJson","invokeFields","setInvokeFields","executeAs","setExecuteAs","invokeError","invokePending","onInvoke","RunAsSelector","SectionHeading","jobLabel","job","date","time","day","TestResultsBuilder","jobs","selectedRunId","onSelectRun","deterministicInput","deterministicOutput","runLoading","selectedRunExecution","TestResultsComparison","originalEnvelope","resolvedPrompt","originalOutput","originalDurationMs","TestPanel","originalWorkflowId","originalResult","builderMode","useSearchParams","runs","useMcpRuns","runParam","setRunParam","prev","setSelectedRunId","selectRun","useMcpRunExecution","setSidebarOpen","setActiveJobId","invokeMutation","useInvokeYamlWorkflow","useYamlActivityEvents","skeleton","buildSkeleton","completedId","timer","handleInvoke","data","handleOpenSidebar","originalExecution","useWorkflowExecution","originalTask","useTaskByWorkflowId","originalExecResult","extractJsonFromSummary","execResult","jsonMatch","triggerEvent","Play","BuilderWizard","useParams","createdYamlId","setCreatedYamlId","refineMutation","useMcpQueryDetailEvents","resultData","hasYaml","builderName","existingYaml","existingYamlId","yamlWorkflow","yamlStatus","isDeployedOrActive","BUILDER_LABELS","stepParam","manualStep","setManualStep","handleStepClick","builderExecution","_g","_h","_i","handleBuilderRegenerate","feedback","StatusBadge","statusIcon","base","Rocket","PackageCheck","FileCode2","PlanSidebar","plan","namespaces","yamlStatuses","activeWorkflow","isAddOpen","onAdd","grouped","groups","item","showNsHeaders","Minus","Plus","ns","PlanProfilePanel","planItem","lockedAppId","isSaved","onSaved","onNavigateDeploy","loadedId","setLoadedId","defaultName","sanitizedAppId","sanitizedName","subscribesMatch","actualOldTopic","newSuffix","activityIds","actId","newId","saved","isLocked","roleLabel","role","PlanStep1","specification","isPlanning","onContinue","AlertCircle","AddToSetDialog","isOpen","addSubmitted","addSpec","setAddSpec","planCount","isError","errorMessage","onSubmit","onDismiss","STEP_LABELS","badgeStatus","PlanWizard","usePlanDetailEvents","urlSetId","plannerResult","plannerData","setId","workflowSet","useWorkflowSet","setStatus","yamlFilters","yamlData","yamlWorkflows","prevStatus","yamlByPlanName","map","used","match","remaining","byOrder","order","group","profiledSet","set","planName","hasProfiled","selectedWorkflow","selectedYamlId","selectedPlanItem","p","hasActive","builtCount","totalCount","activeCount","showAddDialog","setShowAddDialog","addMutation","useAddToWorkflowSet","setAddSubmitted","prevSetStatus","updateUrl","overrides","firstWf","handleSelectWorkflow","handleProfileSaved","handleNavigateDeploy","handleAddSubmit","handleAddCancel","handleAddDismiss","useWizardStep","initialUrlStep","raw","userChoseStep","setStep","syncToUrl","useQueryDetail","promptFromUrl","compileAppId","setCompileAppId","compileName","setCompileName","compileDescription","setCompileDescription","compileTags","setCompileTags","compileInitialized","setCompileInitialized","compileFeedback","setCompileFeedback","useMcpQueryResult","yamlSearch","useYamlWorkflowForSource","useCreateYamlWorkflow","appIdData","useYamlWorkflowAppIds","mapStatus","discovery","events","escalationData","useEscalationsByWorkflowId","activeEscalation","resolvedEscalation","displayEscalation","claimMutation","useClaimEscalation","resolveMutation","useResolveEscalation","resolvedPayload","triageWorkflowId","triageResultData","triageResult","rerunWorkflowId","milestones","isRoundsExhausted","isUncompilable","fromEnvelope","attrs","describePrompt","describeData","useDescribeMcpQuery","compiledYaml","autoStep","syncStepToUrl","prevStatusRef","stepLabels","STEP_LABELS_BASE","derivedSubscribes","allAppIds","handleCompile","handleRetryTriage","diagnosis","profileNextStep","StatusCard","_status","_discovery","CopyableId","TimeAgo","PanelTitle","title","subtitle","actions","OriginalQueryPanel","resultSummary","TimelinePanel","SwimlaneTimeline","ExistingProfileView","setEditing","descDraft","setDescDraft","tagsDraft","setTagsDraft","handleCancel","tag","arr","CreateProfileForm","onCompile","isCompiling","compileError","dismissedError","setDismissedError","setDismissing","errorRef","visibleError","handleDismiss","ProfilePanel","props","STEPS","derivePhase","childStart","childId","isDeterministic","activityTypes","RouterProgressTracker","verifyRunId","stepNum","Link","VerifyPanel","workflowName","_onGoToDeploy","submitQuery","testPrompt","setTestPrompt","promptInitialized","setPromptInitialized","setVerifyRunId","verifyExecution","verifyResult","verifyStatus","verifyData","verifyDiscovery","usedDeterministic","isRunning","res","EscalationBanner","escalation","onRetryTriage","isRetrying","isResolved","resolverPayload","wasTriaged","escalationPayload","originalDiagnosis","McpQueryDetailPage","McpQueryWizard"],"mappings":"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"}