@hotmeshio/long-tail 0.1.5 → 0.1.7

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 (431) hide show
  1. package/README.md +78 -8
  2. package/build/api/auth.d.ts +5 -0
  3. package/build/api/auth.js +42 -0
  4. package/build/api/bot-accounts.d.ts +50 -0
  5. package/build/api/bot-accounts.js +215 -0
  6. package/build/api/controlplane.d.ts +20 -0
  7. package/build/api/controlplane.js +110 -0
  8. package/build/api/dba.d.ts +15 -0
  9. package/build/api/dba.js +68 -0
  10. package/build/api/escalations.d.ts +70 -0
  11. package/build/api/escalations.js +656 -0
  12. package/build/api/exports.d.ts +32 -0
  13. package/build/api/exports.js +146 -0
  14. package/build/api/index.d.ts +18 -0
  15. package/build/api/index.js +54 -0
  16. package/build/api/insight.d.ts +29 -0
  17. package/build/api/insight.js +90 -0
  18. package/build/api/maintenance.d.ts +7 -0
  19. package/build/api/maintenance.js +28 -0
  20. package/build/api/mcp-runs.d.ts +16 -0
  21. package/build/api/mcp-runs.js +62 -0
  22. package/build/api/mcp.d.ts +52 -0
  23. package/build/api/mcp.js +212 -0
  24. package/build/api/namespaces.d.ts +7 -0
  25. package/build/{routes/escalations/helpers.js → api/namespaces.js} +24 -12
  26. package/build/api/roles.d.ts +25 -0
  27. package/build/api/roles.js +159 -0
  28. package/build/api/settings.d.ts +2 -0
  29. package/build/api/settings.js +35 -0
  30. package/build/api/tasks.d.ts +27 -0
  31. package/build/api/tasks.js +96 -0
  32. package/build/api/users.d.ts +44 -0
  33. package/build/api/users.js +162 -0
  34. package/build/api/workflow-sets.d.ts +26 -0
  35. package/build/api/workflow-sets.js +119 -0
  36. package/build/api/workflows.d.ts +48 -0
  37. package/build/api/workflows.js +298 -0
  38. package/build/api/yaml-workflows.d.ts +87 -0
  39. package/build/api/yaml-workflows.js +556 -0
  40. package/build/index.d.ts +4 -0
  41. package/build/index.js +6 -1
  42. package/build/lib/db/migrate.js +3 -6
  43. package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
  44. package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
  45. package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
  46. package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +14 -0
  47. package/build/lib/db/schemas/016_streamable_http.sql +7 -0
  48. package/build/lib/events/callback.d.ts +41 -0
  49. package/build/lib/events/callback.js +98 -0
  50. package/build/modules/config.js +1 -1
  51. package/build/routes/auth.js +37 -36
  52. package/build/routes/bot-accounts.js +34 -164
  53. package/build/routes/controlplane.js +20 -60
  54. package/build/routes/dba.js +18 -28
  55. package/build/routes/docs.js +25 -7
  56. package/build/routes/escalations/bulk.js +17 -192
  57. package/build/routes/escalations/list.js +29 -75
  58. package/build/routes/escalations/resolve.js +3 -193
  59. package/build/routes/escalations/single.js +13 -122
  60. package/build/routes/exports.js +44 -95
  61. package/build/routes/index.js +2 -0
  62. package/build/routes/insight.js +61 -40
  63. package/build/routes/maintenance.js +41 -17
  64. package/build/routes/mcp-runs.js +52 -60
  65. package/build/routes/mcp.js +55 -161
  66. package/build/routes/namespaces.js +9 -20
  67. package/build/routes/roles.js +23 -97
  68. package/build/routes/settings.js +37 -25
  69. package/build/routes/tasks.js +28 -64
  70. package/build/routes/users.js +24 -113
  71. package/build/routes/workflow-sets.d.ts +2 -0
  72. package/build/routes/workflow-sets.js +98 -0
  73. package/build/routes/workflows/config.js +23 -57
  74. package/build/routes/workflows/discovery.js +11 -85
  75. package/build/routes/workflows/invocation.js +16 -84
  76. package/build/routes/yaml-workflows/cron.d.ts +2 -0
  77. package/build/routes/yaml-workflows/cron.js +68 -0
  78. package/build/routes/yaml-workflows/crud.js +38 -193
  79. package/build/routes/yaml-workflows/deployment.js +15 -140
  80. package/build/routes/yaml-workflows/index.js +4 -1
  81. package/build/routes/yaml-workflows/versions.js +20 -58
  82. package/build/sdk/index.d.ts +327 -0
  83. package/build/sdk/index.js +298 -0
  84. package/build/services/controlplane/index.d.ts +1 -2
  85. package/build/services/controlplane/index.js +3 -3
  86. package/build/services/controlplane/sql.d.ts +2 -2
  87. package/build/services/controlplane/sql.js +4 -5
  88. package/build/services/controlplane/types.d.ts +1 -0
  89. package/build/services/cron/index.d.ts +17 -0
  90. package/build/services/cron/index.js +94 -1
  91. package/build/services/export/index.js +6 -1
  92. package/build/services/hotmesh-utils.js +2 -4
  93. package/build/services/insight/index.d.ts +18 -0
  94. package/build/services/insight/index.js +60 -0
  95. package/build/services/mcp/client/connection.d.ts +9 -0
  96. package/build/services/mcp/client/connection.js +49 -1
  97. package/build/services/mcp/client/tools.js +13 -1
  98. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  99. package/build/services/mcp/db.d.ts +1 -1
  100. package/build/services/mcp/db.js +10 -0
  101. package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
  102. package/build/services/mcp/sql.d.ts +1 -1
  103. package/build/services/mcp/sql.js +2 -2
  104. package/build/services/mcp/types.d.ts +3 -1
  105. package/build/services/mcp-runs/sql.js +1 -1
  106. package/build/services/workflow-sets/db.d.ts +16 -0
  107. package/build/services/workflow-sets/db.js +78 -0
  108. package/build/services/workflow-sets/index.d.ts +1 -0
  109. package/build/services/workflow-sets/index.js +11 -0
  110. package/build/services/workflow-sets/sql.d.ts +6 -0
  111. package/build/services/workflow-sets/sql.js +24 -0
  112. package/build/services/yaml-workflow/db-utils.d.ts +1 -0
  113. package/build/services/yaml-workflow/db-utils.js +4 -0
  114. package/build/services/yaml-workflow/db.d.ts +8 -0
  115. package/build/services/yaml-workflow/db.js +41 -0
  116. package/build/services/yaml-workflow/invoke.d.ts +19 -0
  117. package/build/services/yaml-workflow/invoke.js +80 -0
  118. package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
  119. package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
  120. package/build/services/yaml-workflow/pipeline/build/wiring.js +102 -2
  121. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  122. package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
  123. package/build/services/yaml-workflow/sql.d.ts +5 -1
  124. package/build/services/yaml-workflow/sql.js +23 -3
  125. package/build/services/yaml-workflow/types.d.ts +16 -1
  126. package/build/services/yaml-workflow/workers/callbacks.js +16 -2
  127. package/build/services/yaml-workflow/workers/register.js +36 -1
  128. package/build/start/adapters.js +4 -0
  129. package/build/system/index.js +12 -0
  130. package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
  131. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  132. package/build/system/mcp-servers/knowledge.js +1 -1
  133. package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
  134. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
  135. package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
  136. package/build/system/mcp-servers/vision.js +54 -17
  137. package/build/system/seed/server-definitions.d.ts +7 -0
  138. package/build/system/seed/server-definitions.js +6 -2
  139. package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
  140. package/build/system/seed/tool-manifests-workflows.js +10 -3
  141. package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
  142. package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
  143. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
  144. package/build/system/workflows/mcp-workflow-builder/activities/index.js +8 -0
  145. package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
  146. package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
  147. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +11 -0
  148. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +34 -0
  149. package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
  150. package/build/system/workflows/mcp-workflow-builder/index.js +253 -0
  151. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
  152. package/build/system/workflows/mcp-workflow-builder/prompts.js +316 -0
  153. package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
  154. package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
  155. package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
  156. package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
  157. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
  158. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
  159. package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
  162. package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
  163. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
  164. package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
  165. package/build/system/workflows/shared/tool-loader.js +3 -0
  166. package/build/tsconfig.tsbuildinfo +1 -1
  167. package/build/types/index.d.ts +1 -0
  168. package/build/types/mcp.d.ts +4 -3
  169. package/build/types/sdk.d.ts +27 -0
  170. package/build/types/sdk.js +2 -0
  171. package/build/types/workflow-set.d.ts +44 -0
  172. package/build/types/workflow-set.js +5 -0
  173. package/build/types/yaml-workflow.d.ts +6 -2
  174. package/dashboard/dist/assets/AdminDashboard-DRjkRSjJ.js +2 -0
  175. package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-DRjkRSjJ.js.map} +1 -1
  176. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js +2 -0
  177. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js.map +1 -0
  178. package/dashboard/dist/assets/BotPicker-DwwaBhTH.js +2 -0
  179. package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-DwwaBhTH.js.map} +1 -1
  180. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-DQpaVA0M.js} +2 -2
  181. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-DQpaVA0M.js.map} +1 -1
  182. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-B7JoDNvt.js} +2 -2
  183. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-B7JoDNvt.js.map} +1 -1
  184. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-AqoZayBG.js} +2 -2
  185. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-AqoZayBG.js.map} +1 -1
  186. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js +2 -0
  187. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js.map +1 -0
  188. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-D1HUQcd0.js} +2 -2
  189. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-D1HUQcd0.js.map} +1 -1
  190. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-DKvSKoVG.js} +2 -2
  191. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-DKvSKoVG.js.map} +1 -1
  192. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-B0yrReGQ.js} +2 -2
  193. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-B0yrReGQ.js.map} +1 -1
  194. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-X0fIzYID.js} +2 -2
  195. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-X0fIzYID.js.map} +1 -1
  196. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BQAT9W7r.js} +2 -2
  197. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BQAT9W7r.js.map} +1 -1
  198. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-CX1KNLhZ.js} +2 -2
  199. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-CX1KNLhZ.js.map} +1 -1
  200. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-DMTvuQy-.js} +2 -2
  201. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-DMTvuQy-.js.map} +1 -1
  202. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js +2 -0
  203. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js.map +1 -0
  204. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-BaKTIWrG.js} +2 -2
  205. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-BaKTIWrG.js.map} +1 -1
  206. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js +5 -0
  207. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js.map +1 -0
  208. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js +2 -0
  209. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js.map +1 -0
  210. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js +2 -0
  211. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js.map +1 -0
  212. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js +2 -0
  213. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js.map +1 -0
  214. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-_2AbWxJT.js} +2 -2
  215. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-_2AbWxJT.js.map} +1 -1
  216. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js +2 -0
  217. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js.map +1 -0
  218. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-DVr5Qyzm.js} +2 -2
  219. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-DVr5Qyzm.js.map} +1 -1
  220. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-D0KRASML.js} +2 -2
  221. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-D0KRASML.js.map} +1 -1
  222. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-Bx2559OU.js} +2 -2
  223. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-Bx2559OU.js.map} +1 -1
  224. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js +2 -0
  225. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js.map +1 -0
  226. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js +2 -0
  227. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js.map +1 -0
  228. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-CcAqEaSt.js} +2 -2
  229. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-CcAqEaSt.js.map} +1 -1
  230. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-Cl23Hjet.js} +2 -2
  231. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-Cl23Hjet.js.map} +1 -1
  232. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-B4mqIt3Z.js} +2 -2
  233. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-B4mqIt3Z.js.map} +1 -1
  234. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-Cz_2OjAZ.js} +2 -2
  235. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-Cz_2OjAZ.js.map} +1 -1
  236. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-Wi2FJZsn.js} +2 -2
  237. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-Wi2FJZsn.js.map} +1 -1
  238. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js +2 -0
  239. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js.map +1 -0
  240. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-Bl2Uzz65.js} +2 -2
  241. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map} +1 -1
  242. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CUPqMd0z.js} +2 -2
  243. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map} +1 -1
  244. package/dashboard/dist/assets/TagInput-BLtf86Ly.js +2 -0
  245. package/dashboard/dist/assets/TagInput-BLtf86Ly.js.map +1 -0
  246. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-BXJFX74D.js} +2 -2
  247. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map} +1 -1
  248. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-CWYj3xKe.js} +2 -2
  249. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-CWYj3xKe.js.map} +1 -1
  250. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-C3cX94Mw.js} +2 -2
  251. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-C3cX94Mw.js.map} +1 -1
  252. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-B_5yDDHV.js} +2 -2
  253. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-B_5yDDHV.js.map} +1 -1
  254. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-DRX724uU.js} +2 -2
  255. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-DRX724uU.js.map} +1 -1
  256. package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-Ca8FA469.js} +2 -2
  257. package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-Ca8FA469.js.map} +1 -1
  258. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js +2 -0
  259. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js.map +1 -0
  260. package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +2 -0
  261. package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-BXifAuLi.js.map} +1 -1
  262. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +2 -0
  263. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +1 -0
  264. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-03IRrDLg.js} +2 -2
  265. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-03IRrDLg.js.map} +1 -1
  266. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js +2 -0
  267. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js.map +1 -0
  268. package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-DZEXcgiJ.js} +2 -2
  269. package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-DZEXcgiJ.js.map} +1 -1
  270. package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Cw48lNaF.js} +2 -2
  271. package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Cw48lNaF.js.map} +1 -1
  272. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-NINpo3qf.js} +2 -2
  273. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-NINpo3qf.js.map} +1 -1
  274. package/dashboard/dist/assets/helpers-Cuu3xKfr.js +2 -0
  275. package/dashboard/dist/assets/helpers-Cuu3xKfr.js.map +1 -0
  276. package/dashboard/dist/assets/helpers-fk_qr729.js +2 -0
  277. package/dashboard/dist/assets/helpers-fk_qr729.js.map +1 -0
  278. package/dashboard/dist/assets/index-B98ipWxE.js +2 -0
  279. package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-B98ipWxE.js.map} +1 -1
  280. package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BIG3KooI.js} +2 -2
  281. package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BIG3KooI.js.map} +1 -1
  282. package/dashboard/dist/assets/{index-DSzSoku1.js → index-BwN3KP_L.js} +91 -93
  283. package/dashboard/dist/assets/index-BwN3KP_L.js.map +1 -0
  284. package/dashboard/dist/assets/index-Bxe8h1x4.js +17 -0
  285. package/dashboard/dist/assets/index-Bxe8h1x4.js.map +1 -0
  286. package/dashboard/dist/assets/index-CNI7k7oB.js +6 -0
  287. package/dashboard/dist/assets/index-CNI7k7oB.js.map +1 -0
  288. package/dashboard/dist/assets/index-CORHB0WC.js +2 -0
  289. package/dashboard/dist/assets/index-CORHB0WC.js.map +1 -0
  290. package/dashboard/dist/assets/index-DcIKW-cZ.css +1 -0
  291. package/dashboard/dist/assets/index-Dj-z-x8M.js +2 -0
  292. package/dashboard/dist/assets/index-Dj-z-x8M.js.map +1 -0
  293. package/dashboard/dist/assets/index-DwRytW9O.js +5 -0
  294. package/dashboard/dist/assets/index-DwRytW9O.js.map +1 -0
  295. package/dashboard/dist/assets/index-aRvL-dXp.js +2 -0
  296. package/dashboard/dist/assets/index-aRvL-dXp.js.map +1 -0
  297. package/dashboard/dist/assets/index-b03HlbnH.js +2 -0
  298. package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-b03HlbnH.js.map} +1 -1
  299. package/dashboard/dist/assets/mcp-BZoFryNc.js +2 -0
  300. package/dashboard/dist/assets/mcp-BZoFryNc.js.map +1 -0
  301. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js +2 -0
  302. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js.map +1 -0
  303. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-BaEKnf5v.js} +2 -2
  304. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-BaEKnf5v.js.map} +1 -1
  305. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BwnZI4_A.js} +2 -2
  306. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BwnZI4_A.js.map} +1 -1
  307. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-Bgn1K8zU.js} +2 -2
  308. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-Bgn1K8zU.js.map} +1 -1
  309. package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-CizYiutL.js} +2 -2
  310. package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-CizYiutL.js.map} +1 -1
  311. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-Bmte_hc4.js} +2 -2
  312. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-Bmte_hc4.js.map} +1 -1
  313. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js +2 -0
  314. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js.map +1 -0
  315. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
  316. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
  317. package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-Cum02Ej9.js} +2 -2
  318. package/dashboard/dist/assets/useYamlActivityEvents-Cum02Ej9.js.map +1 -0
  319. package/dashboard/dist/assets/{users-BTagPmGW.js → users-NSDgTt-z.js} +2 -2
  320. package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-NSDgTt-z.js.map} +1 -1
  321. package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-D1DdudfH.js} +141 -66
  322. package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
  323. package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-k0XRdGXx.js} +2 -2
  324. package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-k0XRdGXx.js.map} +1 -1
  325. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js +2 -0
  326. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js.map +1 -0
  327. package/dashboard/dist/index.html +3 -3
  328. package/docs/api/mcp-servers.md +60 -2
  329. package/docs/architecture.md +3 -3
  330. package/docs/dashboard.md +1 -1
  331. package/docs/epic-integration.md +224 -0
  332. package/docs/escalation-strategies.md +2 -3
  333. package/docs/events.md +28 -0
  334. package/docs/mcp.md +301 -31
  335. package/docs/sdk.md +177 -0
  336. package/docs/story.md +157 -0
  337. package/docs/workflow-builder.md +371 -0
  338. package/package.json +5 -4
  339. package/build/routes/escalations/helpers.d.ts +0 -5
  340. package/build/routes/resolve.d.ts +0 -9
  341. package/build/routes/resolve.js +0 -19
  342. package/build/routes/yaml-workflows/helpers.d.ts +0 -2
  343. package/build/routes/yaml-workflows/helpers.js +0 -8
  344. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
  345. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
  346. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
  347. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
  348. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
  349. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
  350. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
  351. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
  352. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
  353. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
  354. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
  355. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
  356. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
  357. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
  358. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
  359. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
  360. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
  361. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
  362. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
  363. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
  364. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
  365. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
  366. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
  367. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
  368. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
  369. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
  370. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +0 -2
  371. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
  372. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
  373. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
  374. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
  375. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
  376. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
  377. package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
  378. package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
  379. package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
  380. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
  381. package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
  382. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
  383. package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
  384. package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
  385. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
  386. package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
  387. package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
  388. package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
  389. package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
  390. package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
  391. package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
  392. package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
  393. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
  394. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
  395. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
  396. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
  397. package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
  398. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
  399. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
  400. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +0 -1
  401. package/docs/img/01-login.png +0 -0
  402. package/docs/img/02-dashboard-home.png +0 -0
  403. package/docs/img/03-processes-list.png +0 -0
  404. package/docs/img/04-escalations-list.png +0 -0
  405. package/docs/img/05-mcp-servers.png +0 -0
  406. package/docs/img/06-mcp-pipelines.png +0 -0
  407. package/docs/img/07-workflows-list.png +0 -0
  408. package/docs/img/compilation/01-query-submit.png +0 -0
  409. package/docs/img/compilation/02-mcp-servers.png +0 -0
  410. package/docs/img/compilation/03-query-completed.png +0 -0
  411. package/docs/img/compilation/04-wizard-original.png +0 -0
  412. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  413. package/docs/img/compilation/06-wizard-profile.png +0 -0
  414. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  415. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  416. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  417. package/docs/img/compilation/10-wizard-verify.png +0 -0
  418. package/lib/db/README.md +0 -8
  419. /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
  420. /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
  421. /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
  422. /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
  423. /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
  424. /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
  425. /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
  426. /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
  427. /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
  428. /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
  429. /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
  430. /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
  431. /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpQueryDetailPage-CGoR9XK6.js","sources":["../../src/components/common/layout/WizardSteps.tsx","../../src/hooks/useWizardStep.ts","../../src/pages/mcp/mcp-query-detail/useQueryDetail.ts","../../src/pages/mcp/mcp-query-detail/StatusCard.tsx","../../src/components/common/layout/WizardNav.tsx","../../src/pages/mcp/mcp-query-detail/PanelTitle.tsx","../../src/pages/mcp/mcp-query-detail/ResultSummary.tsx","../../src/pages/mcp/mcp-query-detail/OriginalQueryPanel.tsx","../../src/pages/mcp/mcp-query-detail/TimelinePanel.tsx","../../src/components/common/display/SecondaryAction.tsx","../../src/components/common/form/TagInput.tsx","../../src/pages/mcp/mcp-query-detail/SectionHeading.tsx","../../src/pages/mcp/mcp-query-detail/ProfilePanel.tsx","../../src/pages/mcp/mcp-query-detail/InputSchemaEditor.tsx","../../src/pages/mcp/mcp-query-detail/ConfigurationSection.tsx","../../src/components/common/data/DagCanvas.tsx","../../src/components/common/data/YamlComposer.tsx","../../src/components/common/data/DagNodeDetail.tsx","../../src/pages/mcp/mcp-query-detail/LifecycleSidebar.tsx","../../src/pages/mcp/mcp-query-detail/VersionHistory.tsx","../../src/pages/mcp/mcp-query-detail/DeployPanel.tsx","../../src/pages/mcp/mcp-query-detail/LiveActivityTimeline.tsx","../../src/pages/mcp/mcp-query-detail/TestPanel.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 { 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 { useWorkflowDetailEvents } from '../../../hooks/useNatsEvents';\nimport { useWizardStep } from '../../../hooks/useWizardStep';\nimport { useMcpQueryExecution, useMcpQueryResult, useYamlWorkflowForSource, useDescribeMcpQuery } from '../../../api/mcp-query';\nimport { useCreateYamlWorkflow, useYamlWorkflowAppIds } from '../../../api/yaml-workflows';\nimport { useWorkflowExecution } from '../../../api/workflows';\nimport { useTaskByWorkflowId } from '../../../api/tasks';\nimport { useEscalationsByWorkflowId, useClaimEscalation, useResolveEscalation } from '../../../api/escalations';\n\nimport { mapStatus, extractJsonFromSummary, STEP_LABELS_BASE } from './helpers';\nimport type { Step } from './helpers';\n\nexport function useQueryDetail() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const [searchParams, setSearchParams] = useSearchParams();\n const queryClient = useQueryClient();\n\n // Strip ?prompt= from URL on mount (keep only step)\n const promptFromUrl = useRef(searchParams.get('prompt'));\n useEffect(() => {\n if (searchParams.has('prompt')) {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.delete('prompt');\n return next;\n }, { replace: true });\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const [compileAppId, setCompileAppId] = useState('longtail');\n const [compileName, setCompileName] = useState('');\n const [compileDescription, setCompileDescription] = useState('');\n const [compileTags, setCompileTags] = useState<string[]>([]);\n const [compileInitialized, setCompileInitialized] = useState(false);\n const [compileFeedback, setCompileFeedback] = useState('');\n\n const { data: execution } = useMcpQueryExecution(workflowId);\n const { data: resultData } = useMcpQueryResult(workflowId);\n const { data: yamlSearch } = useYamlWorkflowForSource(workflowId);\n useWorkflowDetailEvents(workflowId);\n\n const createYaml = useCreateYamlWorkflow();\n const { data: appIdData } = useYamlWorkflowAppIds();\n\n // Original execution + task envelope (for Panel 1 and prompt extraction)\n const { data: originalExecution } = useWorkflowExecution(workflowId ?? '');\n const { data: originalTask } = useTaskByWorkflowId(workflowId ?? '');\n const originalEnvelope = useMemo(() => {\n if (!originalTask?.envelope) return null;\n try { return typeof originalTask.envelope === 'string' ? JSON.parse(originalTask.envelope) : originalTask.envelope; }\n catch { return null; }\n }, [originalTask?.envelope]);\n const originalExecResult = (originalExecution?.result as any)?.data as Record<string, unknown> | undefined;\n\n const status = mapStatus(execution);\n const result = resultData?.result?.data as Record<string, unknown> | undefined;\n const discovery = (result?.discovery as Record<string, unknown>) || {};\n const events = execution?.events ?? [];\n\n // Escalation data + triage action hooks\n const { data: escalationData } = useEscalationsByWorkflowId(workflowId);\n const activeEscalation = escalationData?.escalations?.find((e: any) => e.status === 'pending');\n const resolvedEscalation = escalationData?.escalations?.find((e: any) => e.status === 'resolved');\n const displayEscalation = activeEscalation || resolvedEscalation;\n const claimMutation = useClaimEscalation();\n const resolveMutation = useResolveEscalation();\n\n // Extract triage metadata from resolved escalation\n const resolvedPayload = useMemo(() => {\n if (!resolvedEscalation?.resolver_payload) return null;\n try {\n return typeof resolvedEscalation.resolver_payload === 'string'\n ? JSON.parse(resolvedEscalation.resolver_payload)\n : resolvedEscalation.resolver_payload;\n } catch { return null; }\n }, [resolvedEscalation?.resolver_payload]);\n const triageWorkflowId = resolvedPayload?._lt?.triageWorkflowId as string | undefined;\n\n // Fetch the triage result to discover the re-run workflow ID\n const { data: triageResultData } = useWorkflowExecution(\n resolvedPayload?._lt?.triaged ? (triageWorkflowId ?? '') : '',\n );\n const triageResult = (triageResultData?.result as any)?.data as Record<string, unknown> | undefined;\n const rerunWorkflowId = triageResult?.rerunWorkflowId as string | undefined;\n\n // Detect rounds_exhausted from result data OR milestones (covers old + new runs)\n const milestones = (resultData?.result as any)?.milestones as Array<{ name: string; value: string }> | undefined;\n const isRoundsExhausted = !!(result as any)?.rounds_exhausted ||\n !!milestones?.some((m) => m.name === 'rounds_exhausted');\n\n // This run is uncompilable if it failed — triage resolving doesn't make THIS run compilable\n const isUncompilable = isRoundsExhausted || !!activeEscalation;\n\n // Extract original prompt: envelope > URL param (captured on mount) > execution events\n const originalPrompt = useMemo(() => {\n const fromEnvelope = (originalEnvelope as any)?.data?.prompt;\n if (fromEnvelope) return fromEnvelope as string;\n if (promptFromUrl.current) return promptFromUrl.current;\n for (const e of events) {\n const attrs = e.attributes as Record<string, unknown>;\n if (attrs.activity_type === 'findCompiledWorkflows' && Array.isArray(attrs.input) && typeof (attrs.input as unknown[])[0] === 'string') {\n return (attrs.input as string[])[0];\n }\n }\n return undefined;\n }, [originalEnvelope, events]);\n\n // Extract structured output from original execution\n const originalOutput = useMemo(() => {\n return originalExecResult?.result ??\n (typeof originalExecResult?.summary === 'string' ? extractJsonFromSummary(originalExecResult.summary) : null) ??\n result?.result ??\n (typeof result?.summary === 'string' ? extractJsonFromSummary(result.summary as string) : null) ??\n null;\n }, [originalExecResult, result]);\n\n const describePrompt = originalPrompt || (result?.title as string | undefined);\n const { data: describeData } = useDescribeMcpQuery({\n prompt: status === 'completed' ? describePrompt : undefined,\n resultTitle: result?.title as string | undefined,\n resultSummary: result?.summary as string | undefined,\n });\n\n const compiledYaml = yamlSearch?.workflows?.find(\n (w) => w.status === 'active' || w.status === 'deployed' || w.status === 'draft',\n );\n\n const autoStep: Step = useMemo(() => {\n if (status === 'pending') return 1;\n if (status === 'in_progress') return 2;\n if (!result) return 1;\n if (!compiledYaml) return 2;\n if (compiledYaml.status === 'draft' || compiledYaml.status === 'deployed') return 4;\n return 5;\n }, [status, result, compiledYaml]);\n\n const [manualStep, setManualStep, syncStepToUrl] = useWizardStep();\n const step = (manualStep as Step | null) ?? autoStep;\n\n // Keep URL in sync with the active step (auto or manual) without\n // affecting the manual/auto distinction used by auto-advance logic.\n useEffect(() => {\n syncStepToUrl(step);\n }, [step, syncStepToUrl]);\n\n // Sequential unlock: each step requires the prior step to be satisfied\n const maxReachable: Step = (() => {\n if (status === 'pending') return 1;\n if (status === 'in_progress' || !result) return 2;\n if (isUncompilable) return 2;\n if (!compiledYaml) return 3;\n if (compiledYaml.status === 'draft') return 4;\n if (compiledYaml.status === 'deployed') return 5;\n return 6; // active\n })() as Step;\n\n // Auto-advance from step 2 → step 3 when workflow completes\n const prevStatusRef = useRef(status);\n useEffect(() => {\n if (prevStatusRef.current === 'in_progress' && status === 'completed' && manualStep === null) {\n setManualStep(3);\n }\n prevStatusRef.current = status;\n }, [status, manualStep, setManualStep]);\n\n const stepLabels = useMemo((): string[] => {\n const labels: string[] = [...STEP_LABELS_BASE];\n if (compiledYaml?.status === 'active') labels[3] = 'Redeploy';\n return labels;\n }, [compiledYaml?.status]);\n\n // Pre-fill compile fields from LLM\n if (describeData && !compileInitialized) {\n setCompileInitialized(true);\n if (!compileDescription) setCompileDescription(describeData.description);\n if (compileTags.length === 0 && describeData.tags.length > 0) setCompileTags(describeData.tags);\n if (!compileName && describeData.tool_name) setCompileName(describeData.tool_name);\n }\n\n // Topic always derives from workflow name (not namespace — using namespace causes topic collisions)\n const derivedSubscribes = compileName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');\n const allAppIds = useMemo(() => appIdData?.app_ids ?? [], [appIdData?.app_ids]);\n\n const handleCompile = async () => {\n if (!workflowId || !compileName.trim() || !compileAppId.trim()) return;\n await createYaml.mutateAsync({\n workflow_id: workflowId, task_queue: 'long-tail-system', workflow_name: 'mcpQuery',\n name: compileName.trim(), description: compileDescription.trim() || undefined,\n app_id: compileAppId.trim(), subscribes: derivedSubscribes, tags: compileTags,\n compilation_feedback: compileFeedback.trim() || undefined,\n });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n setManualStep(4);\n };\n\n const handleRetryTriage = async () => {\n if (!activeEscalation) return;\n await claimMutation.mutateAsync({ id: activeEscalation.id, durationMinutes: 30 });\n const diagnosis = (result as any)?.diagnosis as string || activeEscalation.description || '';\n await resolveMutation.mutateAsync({\n id: activeEscalation.id,\n resolverPayload: { _lt: { needsTriage: true }, notes: diagnosis },\n });\n };\n\n // Determine the correct next step for profile panel navigation\n const profileNextStep = compiledYaml?.status === 'active' ? 5 : 4;\n\n return {\n workflowId,\n execution,\n status,\n result,\n discovery,\n events,\n originalEnvelope,\n originalPrompt,\n originalOutput,\n originalExecution,\n compiledYaml,\n step,\n maxReachable,\n stepLabels,\n setManualStep,\n compileAppId,\n setCompileAppId,\n compileName,\n setCompileName,\n compileDescription,\n setCompileDescription,\n compileTags,\n setCompileTags,\n compileFeedback,\n setCompileFeedback,\n describeData,\n describePrompt,\n allAppIds,\n handleCompile,\n createYaml,\n isUncompilable,\n isRoundsExhausted,\n displayEscalation,\n activeEscalation,\n handleRetryTriage,\n claimMutation,\n resolveMutation,\n rerunWorkflowId,\n profileNextStep,\n };\n}\n","import { CopyableId } from '../../../components/common/display/CopyableId';\nimport { TimeAgo } from '../../../components/common/display/TimeAgo';\n\ninterface StatusCardProps {\n workflowId: string | undefined;\n status: string;\n discovery: Record<string, unknown>;\n execution: { duration_ms?: number | null; start_time?: string | null } | undefined;\n result: Record<string, unknown> | undefined;\n}\n\nexport function StatusCard({ workflowId, status: _status, discovery: _discovery, execution, result }: StatusCardProps) {\n return (\n <div className=\"bg-surface-raised border border-surface-border rounded-md px-6 py-4 mb-6\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-y-3 gap-x-8\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Run ID</p>\n <CopyableId label=\"\" value={workflowId ?? null} href={`/workflows/executions/${workflowId}`} />\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Duration</p>\n <p className=\"text-xs text-text-primary font-mono\">\n {execution?.duration_ms != null ? `${(execution.duration_ms / 1000).toFixed(1)}s` : '\\u2014'}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Started</p>\n <p className=\"text-xs text-text-primary\">\n {execution?.start_time ? <TimeAgo date={execution.start_time} /> : '\\u2014'}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool Calls</p>\n <p className=\"text-xs text-text-primary\">\n {typeof result?.tool_calls_made === 'number' ? result.tool_calls_made : '\\u2014'}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","/**\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 type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport function PanelTitle({ title, subtitle, icon: Icon, iconClass, actions }: {\n title: string;\n subtitle?: string;\n icon?: LucideIcon;\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-lg font-light text-text-primary flex items-center gap-2\">\n {Icon && <Icon className={`w-4.5 h-4.5 ${iconClass || 'text-text-tertiary'}`} strokeWidth={1.5} />}\n {title}\n </h2>\n {subtitle && <p className=\"text-xs text-text-tertiary mt-0.5\">{subtitle}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-3 shrink-0\">{actions}</div>}\n </div>\n );\n}\n","import { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { SimpleMarkdown } from '../../../components/common/display/SimpleMarkdown';\n\n/**\n * Renders an LLM result string that may contain interleaved prose and JSON blocks.\n * JSON blocks are rendered as interactive tree viewers; prose as markdown.\n */\nexport function ResultSummary({ text }: { text: string }) {\n const parts: Array<{ type: 'text' | 'json'; content: string }> = [];\n const jsonBlockRe = /\\n?\\{[\\s\\S]*?\\n\\}/g;\n let lastIndex = 0;\n for (const match of text.matchAll(jsonBlockRe)) {\n try {\n JSON.parse(match[0].trim());\n if (match.index! > lastIndex) parts.push({ type: 'text', content: text.slice(lastIndex, match.index) });\n parts.push({ type: 'json', content: match[0].trim() });\n lastIndex = match.index! + match[0].length;\n } catch { /* not JSON */ }\n }\n if (lastIndex < text.length) parts.push({ type: 'text', content: text.slice(lastIndex) });\n if (!parts.length) parts.push({ type: 'text', content: text });\n return (\n <div className=\"space-y-3\">\n {parts.map((p, i) => p.type === 'json'\n ? <JsonViewer key={i} data={JSON.parse(p.content)} defaultMode=\"tree\" />\n : p.content.trim() ? <SimpleMarkdown key={i} content={p.content.trim()} /> : null)}\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';\nimport { ResultSummary } from './ResultSummary';\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 <ResultSummary text={resultSummary} />\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} 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} className=\"btn-primary text-xs\">Next: Compile</button>\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, useRef, type KeyboardEvent } from 'react';\nimport { X } from 'lucide-react';\n\ninterface TagInputProps {\n tags: string[];\n onChange: (tags: string[]) => void;\n placeholder?: string;\n /** Show as compact inline pills (no border wrapper) */\n compact?: boolean;\n}\n\nfunction sanitizeTag(raw: string): string {\n return raw.toLowerCase().replace(/[^a-z0-9-]/g, '').replace(/^-|-$/g, '');\n}\n\nexport function TagInput({ tags, onChange, placeholder = 'Add tag...', compact }: TagInputProps) {\n const [input, setInput] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n const addTag = (raw: string) => {\n const tag = sanitizeTag(raw);\n if (tag && !tags.includes(tag)) {\n onChange([...tags, tag]);\n }\n setInput('');\n };\n\n const removeTag = (tag: string) => {\n onChange(tags.filter((t) => t !== tag));\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n addTag(input);\n } else if (e.key === 'Backspace' && !input && tags.length > 0) {\n removeTag(tags[tags.length - 1]);\n }\n };\n\n return (\n <div\n className={\n compact\n ? 'flex flex-wrap items-center gap-1.5'\n : 'flex flex-wrap items-center gap-1.5 bg-surface-sunken border border-surface-border rounded-md px-2 py-1.5 focus-within:ring-1 focus-within:ring-accent-primary cursor-text'\n }\n onClick={() => inputRef.current?.focus()}\n >\n {tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); removeTag(tag); }}\n className=\"hover:text-status-error transition-colors\"\n >\n <X className=\"w-2.5 h-2.5\" />\n </button>\n </span>\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => { if (input.trim()) addTag(input); }}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"flex-1 min-w-[80px] bg-transparent text-xs text-text-primary outline-none placeholder:text-text-tertiary\"\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 { useState, useEffect, useRef } from 'react';\nimport { Layers, AlertCircle, X, Pencil, Check } from 'lucide-react';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { TagInput } from '../../../components/common/form/TagInput';\nimport { useUpdateYamlWorkflow } from '../../../api/yaml-workflows';\nimport { PanelTitle } from './PanelTitle';\nimport { SectionHeading } from './SectionHeading';\n\n// ── Sub-components ───────────────────────────────────────────────────────────\n\ninterface ExistingProfileViewProps {\n compiledYaml: any;\n onBack: () => void;\n onNext: () => void;\n}\n\n/**\n * Read-only view of an already-compiled workflow profile (step 3, existing path)\n * with inline editing for description and tags.\n */\nfunction ExistingProfileView({ compiledYaml, onBack, onNext }: ExistingProfileViewProps) {\n const queryClient = useQueryClient();\n const updateMutation = useUpdateYamlWorkflow();\n const [editing, setEditing] = useState(false);\n const [descDraft, setDescDraft] = useState(compiledYaml.description || '');\n const [tagsDraft, setTagsDraft] = useState<string[]>(compiledYaml.tags || []);\n\n const handleSave = async () => {\n await updateMutation.mutateAsync({\n id: compiledYaml.id,\n description: descDraft.trim(),\n tags: tagsDraft,\n });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n setEditing(false);\n };\n\n const handleCancel = () => {\n setDescDraft(compiledYaml.description || '');\n setTagsDraft(compiledYaml.tags || []);\n setEditing(false);\n };\n\n return (\n <div>\n <PanelTitle\n title=\"Compile\"\n subtitle=\"Compiled deterministic pipeline — name, tags, and deployment target\"\n icon={Layers}\n iconClass=\"text-status-success\"\n actions={!editing ? (\n <SecondaryAction icon={Pencil} label=\"Edit Profile\" onClick={() => setEditing(true)} />\n ) : (\n <>\n <SecondaryAction icon={X} label=\"Cancel\" onClick={handleCancel} />\n <SecondaryAction icon={Check} label={updateMutation.isPending ? 'Saving...' : 'Save'} onClick={handleSave} disabled={updateMutation.isPending} />\n </>\n )}\n />\n\n <div className=\"flex gap-6 mb-6\">\n {/* Col 1 (~30%): namespace, tool name */}\n <div className=\"w-[30%] shrink-0 space-y-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Namespace</p>\n <p className=\"text-sm text-text-primary\">{compiledYaml.app_id || '\\u2014'}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool Name</p>\n <p className=\"text-sm text-text-primary\">{compiledYaml.name}</p>\n </div>\n </div>\n\n {/* Col 2 (~70%): description, tags, pipeline */}\n <div className=\"flex-1 min-w-0 space-y-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Description</p>\n {editing ? (\n <textarea value={descDraft} onChange={(e) => setDescDraft(e.target.value)}\n className=\"w-full min-h-[80px] px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\" />\n ) : (\n <p className=\"text-sm text-text-secondary leading-relaxed\">{compiledYaml.description || '\\u2014'}</p>\n )}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</p>\n {editing ? (\n <TagInput tags={tagsDraft} onChange={setTagsDraft} placeholder=\"Add tags...\" />\n ) : (\n <div className=\"flex gap-1.5 flex-wrap\">\n {(compiledYaml.tags as string[] || []).length > 0 ? (\n (compiledYaml.tags as string[]).map((tag: string) => (\n <span key={tag} className=\"text-[10px] px-2 py-0.5 rounded-full bg-surface-sunken text-text-secondary\">{tag}</span>\n ))\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">No tags</span>\n )}\n </div>\n )}\n </div>\n {compiledYaml.activity_manifest?.length > 0 && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Pipeline</p>\n <div className=\"flex items-center gap-1 flex-wrap\">\n {(compiledYaml.activity_manifest as any[])\n .filter((a: any) => a.tool_source !== 'trigger')\n .map((a: any, i: number, arr: any[]) => (\n <span key={i} className=\"flex items-center gap-1\">\n <span className=\"text-[10px] px-2 py-0.5 rounded bg-surface-sunken font-mono text-text-primary\">{a.mcp_tool_name || a.title}</span>\n {i < arr.length - 1 && <span className=\"text-text-tertiary text-[10px]\">{'\\u2192'}</span>}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {compiledYaml.status !== 'active'\n ? <button onClick={onNext} className=\"btn-primary text-xs\">Next: Deploy</button>\n : <button onClick={onNext} className=\"btn-primary text-xs\">Next: Test</button>}\n </WizardNav>\n </div>\n );\n}\n\n// ── Create-new form ──────────────────────────────────────────────────────────\n\ninterface CreateProfileFormProps {\n originalPrompt: string | undefined;\n compileAppId: string;\n setCompileAppId: (v: string) => void;\n compileName: string;\n setCompileName: (v: string) => void;\n compileDescription: string;\n setCompileDescription: (v: string) => void;\n compileTags: string[];\n setCompileTags: (v: string[]) => void;\n describeData: { tool_name?: string; description: string; tags: string[] } | undefined;\n describePrompt: string | undefined;\n allAppIds: string[];\n onCompile: () => Promise<void>;\n isCompiling: boolean;\n compileError: string | undefined;\n onBack: () => void;\n}\n\nfunction CreateProfileForm({\n originalPrompt,\n compileAppId,\n setCompileAppId,\n compileName,\n setCompileName,\n compileDescription,\n setCompileDescription,\n compileTags,\n setCompileTags,\n describeData,\n describePrompt,\n allAppIds,\n onCompile,\n isCompiling,\n compileError,\n onBack,\n}: CreateProfileFormProps) {\n const [dismissedError, setDismissedError] = useState<string | null>(null);\n const [dismissing, setDismissing] = useState(false);\n const errorRef = useRef<HTMLDivElement>(null);\n const visibleError = compileError && compileError !== dismissedError ? compileError : null;\n\n // Scroll error into view and reset dismissed state when a new error appears\n useEffect(() => {\n if (visibleError && errorRef.current) {\n errorRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [visibleError]);\n useEffect(() => {\n if (compileError && compileError !== dismissedError) {\n setDismissedError(null);\n setDismissing(false);\n }\n }, [compileError]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleDismiss = () => {\n setDismissing(true);\n setTimeout(() => {\n setDismissedError(compileError!);\n setDismissing(false);\n }, 250);\n };\n\n return (\n <div>\n <PanelTitle title=\"Compile\" subtitle=\"Define the deterministic workflow tool from this execution\" icon={Layers} iconClass=\"text-status-success\" />\n\n {visibleError && (\n <div\n ref={errorRef}\n className=\"mb-6 rounded-lg border border-status-error/30 bg-status-error/[0.04] px-4 py-3 flex items-start gap-3 overflow-hidden transition-all duration-250 ease-in-out\"\n style={{\n animation: dismissing ? undefined : 'fadeIn 300ms ease-out both',\n opacity: dismissing ? 0 : 1,\n maxHeight: dismissing ? '0px' : '200px',\n paddingTop: dismissing ? '0px' : undefined,\n paddingBottom: dismissing ? '0px' : undefined,\n marginBottom: dismissing ? '0px' : undefined,\n }}\n >\n <AlertCircle className=\"w-4 h-4 text-status-error shrink-0 mt-0.5\" strokeWidth={1.5} />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-status-error\">Compilation failed</p>\n <p className=\"text-xs text-text-secondary mt-0.5 leading-relaxed\">{visibleError}</p>\n </div>\n <button onClick={handleDismiss} className=\"text-text-tertiary hover:text-text-secondary transition-colors shrink-0 mt-0.5\">\n <X className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n )}\n\n {originalPrompt && (\n <div className=\"mb-6\">\n <SectionHeading>Original Query</SectionHeading>\n <p className=\"text-xs font-mono text-text-primary leading-relaxed bg-surface-sunken rounded-md px-3 py-2\">{originalPrompt}</p>\n </div>\n )}\n\n <SectionHeading>Workflow Configuration</SectionHeading>\n <div className=\"flex gap-6\">\n {/* Col 1: identity fields (~30%) */}\n <div className=\"w-[30%] shrink-0 space-y-4\">\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Namespace *</label>\n <input type=\"text\" value={compileAppId} onChange={(e) => setCompileAppId(e.target.value.toLowerCase().replace(/[^a-z0-9]/g, ''))}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\" placeholder=\"e.g. longtail\" />\n {allAppIds.length > 0 && (\n <div className=\"flex gap-1.5 mt-1.5 flex-wrap\">\n {allAppIds.map((id) => (\n <button key={id} type=\"button\" onClick={() => setCompileAppId(id)}\n className={`text-[10px] px-2 py-0.5 rounded-full transition-colors ${compileAppId === id ? 'bg-accent/20 text-accent' : 'bg-surface-sunken text-text-tertiary hover:text-text-secondary'}`}>{id}</button>\n ))}\n </div>\n )}\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tool Name *</label>\n <input type=\"text\" value={compileName} onChange={(e) => setCompileName(e.target.value)}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\" placeholder=\"e.g. auth-screenshot-all-nav-pages\" />\n </div>\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Tags</label>\n <TagInput tags={compileTags} onChange={setCompileTags} placeholder=\"e.g. browser, screenshots, login\" />\n <p className=\"text-[10px] text-text-tertiary mt-1\">Press Enter or comma to add.</p>\n </div>\n </div>\n\n {/* Col 2: description (~80%) */}\n <div className=\"flex-1 min-w-0 flex flex-col\">\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n {!compileDescription && !describeData && describePrompt && <span className=\"text-[10px] text-accent animate-pulse\">Generating...</span>}\n </div>\n <textarea value={compileDescription} onChange={(e) => setCompileDescription(e.target.value)}\n placeholder=\"Describe what this workflow does as a reusable tool...\"\n className=\"flex-1 min-h-[120px] w-full px-3 py-2 bg-surface-sunken border border-surface-border rounded-md text-sm text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\" />\n <p className=\"text-[10px] text-text-tertiary mt-1\">{describeData ? 'AI-generated. Edit to refine.' : 'Describe what this workflow does so future queries can find it.'}</p>\n </div>\n </div>\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <button onClick={onCompile} disabled={!compileName.trim() || !compileAppId.trim() || isCompiling} className=\"btn-primary text-xs\">\n {isCompiling ? 'Compiling...' : 'Compile Pipeline'}\n </button>\n </WizardNav>\n </div>\n );\n}\n\n// ── Composite panel ──────────────────────────────────────────────────────────\n\ninterface ProfilePanelProps {\n compiledYaml: any | undefined;\n /* Create-form props (only used when compiledYaml is absent) */\n originalPrompt: string | undefined;\n compileAppId: string;\n setCompileAppId: (v: string) => void;\n compileName: string;\n setCompileName: (v: string) => void;\n compileDescription: string;\n setCompileDescription: (v: string) => void;\n compileTags: string[];\n setCompileTags: (v: string[]) => void;\n describeData: { tool_name?: string; description: string; tags: string[] } | undefined;\n describePrompt: string | undefined;\n allAppIds: string[];\n onCompile: () => Promise<void>;\n isCompiling: boolean;\n compileError: string | undefined;\n isUncompilable?: boolean;\n onBack: () => void;\n onNext: () => void;\n}\n\nexport function ProfilePanel(props: ProfilePanelProps) {\n const { compiledYaml, isUncompilable, onBack, onNext } = props;\n\n if (isUncompilable && !compiledYaml) {\n return (\n <div>\n <PanelTitle title=\"Compile\" subtitle=\"Define the deterministic workflow tool from this execution\" icon={Layers} iconClass=\"text-status-success\" />\n <div className=\"rounded-md bg-status-warning/5 border border-status-warning/20 px-4 py-3 mb-6\">\n <p className=\"text-xs text-status-warning font-medium\">Cannot compile this query</p>\n <p className=\"text-xs text-text-secondary mt-1\">\n This query did not complete successfully. Resolve the escalation before compiling to a deterministic workflow.\n </p>\n </div>\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n <span />\n </WizardNav>\n </div>\n );\n }\n\n if (compiledYaml) {\n return <ExistingProfileView compiledYaml={compiledYaml} onBack={onBack} onNext={onNext} />;\n }\n\n return (\n <CreateProfileForm\n originalPrompt={props.originalPrompt}\n compileAppId={props.compileAppId}\n setCompileAppId={props.setCompileAppId}\n compileName={props.compileName}\n setCompileName={props.setCompileName}\n compileDescription={props.compileDescription}\n setCompileDescription={props.setCompileDescription}\n compileTags={props.compileTags}\n setCompileTags={props.setCompileTags}\n describeData={props.describeData}\n describePrompt={props.describePrompt}\n allAppIds={props.allAppIds}\n onCompile={props.onCompile}\n isCompiling={props.isCompiling}\n compileError={props.compileError}\n onBack={onBack}\n />\n );\n}\n","import { useState } from 'react';\nimport type { InputFieldMeta } from '../../../api/types';\n\ninterface InputSchemaEditorProps {\n fields: InputFieldMeta[];\n onChange: (fields: InputFieldMeta[]) => void;\n editing: boolean;\n}\n\nconst CLASSIFICATION_STYLES: Record<string, { bg: string; text: string; label: string }> = {\n dynamic: { bg: 'bg-status-success/10', text: 'text-status-success', label: 'Dynamic' },\n fixed: { bg: 'bg-surface-sunken', text: 'text-text-tertiary', label: 'Fixed' },\n wired: { bg: 'bg-blue-500/10', text: 'text-blue-500', label: 'Wired' },\n};\n\nfunction ClassificationBadge({ classification }: { classification: string }) {\n const style = CLASSIFICATION_STYLES[classification] || CLASSIFICATION_STYLES.fixed;\n return (\n <span className={`px-1.5 py-0.5 text-[9px] font-medium rounded ${style.bg} ${style.text}`}>\n {style.label}\n </span>\n );\n}\n\nexport function InputSchemaEditor({ fields, onChange, editing }: InputSchemaEditorProps) {\n const [expandedField, setExpandedField] = useState<string | null>(null);\n\n const updateField = (index: number, updates: Partial<InputFieldMeta>) => {\n const next = fields.map((f, i) => i === index ? { ...f, ...updates } : f);\n onChange(next);\n };\n\n const toggleClassification = (index: number) => {\n const field = fields[index];\n const nextClass = field.classification === 'dynamic' ? 'fixed' : 'dynamic';\n const updates: Partial<InputFieldMeta> = { classification: nextClass };\n if (nextClass === 'fixed' && field.default === undefined) {\n // Set a sensible default when switching to fixed\n updates.default = field.type === 'string' ? '' : field.type === 'number' ? 0 : field.type === 'boolean' ? false : null;\n }\n updateField(index, updates);\n };\n\n const removeField = (index: number) => {\n onChange(fields.filter((_, i) => i !== index));\n };\n\n if (fields.length === 0) {\n return (\n <div className=\"py-4 text-center\">\n <p className=\"text-xs text-text-tertiary\">No input fields detected from the execution.</p>\n </div>\n );\n }\n\n const dynamicFields = fields.filter(f => f.classification === 'dynamic');\n const fixedFields = fields.filter(f => f.classification === 'fixed');\n\n return (\n <div className=\"space-y-4\">\n {/* Summary */}\n <div className=\"flex items-center gap-3 text-[10px] text-text-tertiary\">\n <span>{dynamicFields.length} dynamic (user provides)</span>\n <span>{fixedFields.length} fixed (defaults from execution)</span>\n </div>\n\n {/* Dynamic fields */}\n {dynamicFields.length > 0 && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-status-success/70 mb-2\">\n Dynamic Inputs (required at invocation)\n </p>\n <div className=\"space-y-1\">\n {dynamicFields.map((field) => {\n const index = fields.indexOf(field);\n const isExpanded = expandedField === field.key;\n return (\n <FieldRow\n key={field.key}\n field={field}\n editing={editing}\n expanded={isExpanded}\n onToggleExpand={() => setExpandedField(isExpanded ? null : field.key)}\n onToggleClassification={() => toggleClassification(index)}\n onUpdate={(updates) => updateField(index, updates)}\n onRemove={() => removeField(index)}\n />\n );\n })}\n </div>\n </div>\n )}\n\n {/* Fixed fields */}\n {fixedFields.length > 0 && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">\n Fixed Defaults (from execution)\n </p>\n <div className=\"space-y-1\">\n {fixedFields.map((field) => {\n const index = fields.indexOf(field);\n const isExpanded = expandedField === field.key;\n return (\n <FieldRow\n key={field.key}\n field={field}\n editing={editing}\n expanded={isExpanded}\n onToggleExpand={() => setExpandedField(isExpanded ? null : field.key)}\n onToggleClassification={() => toggleClassification(index)}\n onUpdate={(updates) => updateField(index, updates)}\n onRemove={() => removeField(index)}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n// ── Field Row ────────────────────────────────────────────────────────────────\n\nfunction FieldRow({\n field,\n editing,\n expanded,\n onToggleExpand,\n onToggleClassification,\n onUpdate,\n onRemove,\n}: {\n field: InputFieldMeta;\n editing: boolean;\n expanded: boolean;\n onToggleExpand: () => void;\n onToggleClassification: () => void;\n onUpdate: (updates: Partial<InputFieldMeta>) => void;\n onRemove: () => void;\n}) {\n return (\n <div className=\"border border-surface-border rounded-lg overflow-hidden\">\n <button\n type=\"button\"\n onClick={onToggleExpand}\n className=\"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface-hover/50 transition-colors\"\n >\n <span className=\"font-mono text-xs text-text-primary\">{field.key}</span>\n <span className=\"text-[9px] text-text-tertiary\">{field.type}</span>\n <ClassificationBadge classification={field.classification} />\n {field.default !== undefined && (\n <span className=\"text-[9px] font-mono text-text-tertiary truncate max-w-[120px]\">\n = {JSON.stringify(field.default)}\n </span>\n )}\n <span className=\"text-[9px] text-text-tertiary ml-auto truncate max-w-[150px]\">\n {field.source_tool}\n </span>\n <svg\n className={`w-3 h-3 text-text-tertiary shrink-0 transition-transform ${expanded ? 'rotate-180' : ''}`}\n fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {expanded && (\n <div className=\"px-3 pb-3 pt-1 border-t border-surface-border/50 space-y-2\">\n <p className=\"text-[10px] text-text-tertiary\">{field.description}</p>\n\n {editing && (\n <div className=\"space-y-2\">\n {/* Description */}\n <div>\n <label className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary\">Description</label>\n <input\n type=\"text\"\n value={field.description}\n onChange={(e) => onUpdate({ description: e.target.value })}\n className=\"input text-[11px] w-full mt-0.5\"\n />\n </div>\n\n {/* Default value (for fixed fields) */}\n {field.classification === 'fixed' && (\n <div>\n <label className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary\">Default Value</label>\n <input\n type=\"text\"\n value={field.default !== undefined ? (typeof field.default === 'string' ? field.default : JSON.stringify(field.default)) : ''}\n onChange={(e) => {\n let val: unknown = e.target.value;\n if (field.type === 'number') val = Number(val) || 0;\n else if (field.type === 'boolean') val = val === 'true';\n else { try { val = JSON.parse(val as string); } catch { /* keep as string */ } }\n onUpdate({ default: val });\n }}\n className=\"input text-[11px] font-mono w-full mt-0.5\"\n />\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 pt-1\">\n <button\n type=\"button\"\n onClick={onToggleClassification}\n className=\"text-[10px] text-accent hover:underline\"\n >\n {field.classification === 'dynamic' ? 'Make fixed (add default)' : 'Make dynamic (require input)'}\n </button>\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"text-[10px] text-status-error hover:underline ml-auto\"\n >\n Remove\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useCallback } from 'react';\nimport { Maximize2, Minimize2, Copy, Check, BookOpen } from 'lucide-react';\nimport { CollapsibleSection } from '../../../components/common/layout/CollapsibleSection';\nimport { FullscreenOverlay } from '../../../components/common/layout/FullscreenOverlay';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { InputSchemaEditor } from './InputSchemaEditor';\nimport type { InputFieldMeta } from '../../../api/types';\n\nconst ICON = 'w-3 h-3';\nconst BTN = 'p-1 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised/60 transition-colors duration-150';\nconst BTN_LG = 'p-2 rounded text-text-tertiary hover:text-text-primary hover:bg-surface-raised transition-colors duration-150';\n\nexport function ConfigurationSection({\n wf,\n resolvedInputSchema,\n resolvedOutputSchema,\n resolvedYaml,\n configEditing,\n setConfigEditing: _setConfigEditing,\n canEditConfig: _canEditConfig,\n yamlDraft,\n setYamlDraft,\n inputSchemaDraft,\n setInputSchemaDraft,\n outputSchemaDraft,\n setOutputSchemaDraft,\n inputFieldMetaDraft,\n setInputFieldMetaDraft,\n onSave,\n onCancel,\n updateMutation,\n yamlTextareaRef,\n isCollapsed,\n onToggle,\n schemasGrid,\n unwrapped,\n}: {\n wf: any;\n resolvedInputSchema: any;\n resolvedOutputSchema: any;\n resolvedYaml: string | undefined;\n configEditing: boolean;\n setConfigEditing: (v: boolean) => void;\n canEditConfig: boolean;\n yamlDraft: string;\n setYamlDraft: (v: string) => void;\n inputSchemaDraft: string;\n setInputSchemaDraft: (v: string) => void;\n outputSchemaDraft: string;\n setOutputSchemaDraft: (v: string) => void;\n inputFieldMetaDraft: InputFieldMeta[];\n setInputFieldMetaDraft: (v: InputFieldMeta[]) => void;\n onSave: () => void;\n onCancel: () => void;\n updateMutation: any;\n yamlTextareaRef: React.RefObject<HTMLTextAreaElement | null>;\n isCollapsed: boolean;\n onToggle: (key: string) => void;\n /** Render input/output schemas side-by-side in a 2-column grid. */\n schemasGrid?: boolean;\n /** Skip the CollapsibleSection wrapper and render content directly. */\n unwrapped?: boolean;\n}) {\n const hasFieldMeta = inputFieldMetaDraft.length > 0;\n const [advancedMode, setAdvancedMode] = useState(false);\n const [yamlFullscreen, setYamlFullscreen] = useState(false);\n const [copied, setCopied] = useState(false);\n const yamlSectionRef = useRef<HTMLDivElement>(null);\n\n const yamlText = configEditing ? yamlDraft : (resolvedYaml ?? wf.yaml_content);\n\n const handleCopyYaml = useCallback(() => {\n navigator.clipboard.writeText(yamlText).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n }, [yamlText]);\n\n const content = (\n <div className=\"space-y-6\">\n {/* Save / Cancel controls — only shown when NOT unwrapped (wizard handles its own) */}\n {!unwrapped && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n {configEditing && hasFieldMeta && (\n <button\n type=\"button\"\n onClick={() => setAdvancedMode(!advancedMode)}\n className=\"text-[10px] text-text-tertiary hover:text-text-primary\"\n >\n {advancedMode ? 'Visual editor' : 'Advanced (JSON)'}\n </button>\n )}\n </div>\n <div className=\"flex items-center gap-3\">\n {configEditing && (\n <>\n <button onClick={onCancel} className=\"text-[10px] text-text-tertiary hover:text-text-primary\">\n Cancel\n </button>\n <button\n onClick={onSave}\n disabled={updateMutation.isPending || (\n yamlDraft === wf.yaml_content\n && inputSchemaDraft === JSON.stringify(wf.input_schema, null, 2)\n && outputSchemaDraft === JSON.stringify(wf.output_schema, null, 2)\n )}\n className=\"text-[10px] text-accent hover:underline disabled:opacity-40 disabled:no-underline\"\n >\n {updateMutation.isPending ? 'Saving...' : 'Save'}\n </button>\n </>\n )}\n </div>\n </div>\n )}\n {/* Advanced mode toggle — shown even when unwrapped */}\n {unwrapped && configEditing && hasFieldMeta && (\n <div>\n <button\n type=\"button\"\n onClick={() => setAdvancedMode(!advancedMode)}\n className=\"text-[10px] text-text-tertiary hover:text-text-primary\"\n >\n {advancedMode ? 'Visual editor' : 'Advanced (JSON)'}\n </button>\n </div>\n )}\n\n {updateMutation.error && (\n <p className=\"text-xs text-status-error\">{updateMutation.error.message}</p>\n )}\n\n {/* Input + Output Schemas */}\n <div className={schemasGrid ? 'grid grid-cols-1 lg:grid-cols-2 gap-6' : 'space-y-6'}>\n {/* Input Schema — visual editor when editing with field meta, JsonViewer otherwise */}\n <div>\n {configEditing && hasFieldMeta && !advancedMode ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Input Schema</h4>\n <InputSchemaEditor\n fields={inputFieldMetaDraft}\n onChange={setInputFieldMetaDraft}\n editing={configEditing}\n />\n </>\n ) : configEditing ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Input Schema</h4>\n <textarea\n value={inputSchemaDraft}\n onChange={(e) => setInputSchemaDraft(e.target.value)}\n className=\"w-full p-4 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden\"\n rows={Math.max(inputSchemaDraft.split('\\n').length + 1, 6)}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n </>\n ) : (\n <JsonViewer data={resolvedInputSchema ?? {}} label=\"Input Schema\" />\n )}\n </div>\n\n {/* Output Schema */}\n <div>\n {configEditing ? (\n <>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">Output Schema</h4>\n <textarea\n value={outputSchemaDraft}\n onChange={(e) => setOutputSchemaDraft(e.target.value)}\n className=\"w-full p-4 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden\"\n rows={Math.max(outputSchemaDraft.split('\\n').length + 1, 6)}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n </>\n ) : (\n <JsonViewer data={resolvedOutputSchema ?? {}} label=\"Output Schema\" />\n )}\n </div>\n </div>\n\n {/* YAML Definition */}\n <div>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">YAML Definition</h4>\n <div ref={yamlSectionRef} className=\"relative\">\n {/* Toolbar — inside the widget, upper right */}\n <div className=\"absolute top-2 right-2 z-10 flex items-center gap-0.5 bg-surface-sunken/90 rounded backdrop-blur-sm\">\n <a\n href=\"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={BTN}\n title=\"YAML Guide\"\n >\n <BookOpen className={ICON} />\n </a>\n <button onClick={handleCopyYaml} className={BTN} title=\"Copy YAML\">\n {copied ? <Check className={`${ICON} text-status-success`} /> : <Copy className={ICON} />}\n </button>\n <button onClick={() => setYamlFullscreen(true)} className={BTN} title=\"Fullscreen\">\n <Maximize2 className={ICON} />\n </button>\n </div>\n\n {configEditing ? (\n <textarea\n ref={yamlTextareaRef}\n value={yamlDraft}\n onChange={(e) => setYamlDraft(e.target.value)}\n className=\"w-full p-4 pr-28 bg-surface-sunken rounded-md text-xs font-mono text-text-primary leading-relaxed border border-surface-border focus:border-accent focus:outline-none resize-none overflow-hidden\"\n rows={yamlDraft.split('\\n').length + 1}\n style={{ fieldSizing: 'content' } as React.CSSProperties}\n spellCheck={false}\n />\n ) : (\n <pre className=\"p-4 pr-28 bg-surface-sunken rounded-md text-xs font-mono text-text-secondary overflow-x-auto whitespace-pre\">\n {resolvedYaml ?? wf.yaml_content}\n </pre>\n )}\n </div>\n </div>\n\n {/* YAML Fullscreen overlay — supports both view and edit modes */}\n <FullscreenOverlay open={yamlFullscreen} onClose={() => setYamlFullscreen(false)} sourceRef={yamlSectionRef}>\n <div className=\"sticky top-0 float-right z-10\">\n <div className=\"flex items-center gap-0.5 bg-surface-sunken/80 rounded-md backdrop-blur-sm\">\n <a\n href=\"https://github.com/hotmeshio/sdk-typescript/blob/main/docs/quickstart.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={BTN_LG}\n title=\"YAML Guide\"\n >\n <BookOpen className=\"w-5 h-5\" />\n </a>\n <button onClick={handleCopyYaml} className={BTN_LG} title=\"Copy YAML\">\n {copied ? <Check className=\"w-5 h-5 text-status-success\" /> : <Copy className=\"w-5 h-5\" />}\n </button>\n <button onClick={() => setYamlFullscreen(false)} className={BTN_LG} title=\"Close (Esc)\">\n <Minimize2 className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n {configEditing ? (\n <textarea\n value={yamlDraft}\n onChange={(e) => setYamlDraft(e.target.value)}\n className=\"w-full min-h-[calc(100vh-80px)] p-6 bg-transparent text-sm font-mono text-text-primary leading-relaxed focus:outline-none resize-none\"\n spellCheck={false}\n autoFocus\n />\n ) : (\n <pre className=\"text-sm font-mono text-text-secondary leading-relaxed whitespace-pre\">\n {resolvedYaml ?? wf.yaml_content}\n </pre>\n )}\n </FullscreenOverlay>\n\n {/* Activity Manifest — runtime wiring and discovery reference per step */}\n {wf.activity_manifest?.length > 0 && (\n <div>\n <h4 className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3\">Activity Manifest</h4>\n <div className=\"space-y-3\">\n {(wf.activity_manifest as any[])\n .filter((a: any) => a.tool_source !== 'trigger')\n .map((a: any) => {\n const hasArgs = a.tool_arguments && Object.keys(a.tool_arguments).length > 0;\n const hasMappings = a.input_mappings && Object.keys(a.input_mappings).length > 0;\n if (!hasArgs && !hasMappings) return null;\n return (\n <div key={a.activity_id} className=\"bg-surface-sunken rounded-md p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <span className=\"text-[10px] font-mono text-text-tertiary\">{a.activity_id}</span>\n <span className=\"text-xs font-medium text-text-primary\">{a.title}</span>\n {a.mcp_tool_name && (\n <span className=\"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface-raised text-text-secondary\">{a.mcp_tool_name}</span>\n )}\n </div>\n {hasMappings && (\n <div className={hasArgs ? 'mb-3' : ''}>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Runtime Wiring</p>\n <div className=\"grid gap-1\">\n {Object.entries(a.input_mappings).map(([k, v]) => (\n <div key={k} className=\"flex items-baseline gap-2 text-xs\">\n <span className=\"font-mono text-text-secondary shrink-0\">{k}</span>\n <span className=\"text-text-tertiary shrink-0\">&larr;</span>\n <span className=\"font-mono text-accent/70\">{v as string}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n {hasArgs && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Discovery Reference</p>\n <p className=\"text-[10px] text-text-tertiary mb-1.5\">Values from the original execution, stored for context. Runtime values are determined by the wiring above.</p>\n <div className=\"grid gap-1 opacity-60\">\n {Object.entries(a.tool_arguments).map(([k, v]) => {\n const val = typeof v === 'string' ? v : JSON.stringify(v);\n const isLong = val.length > 120;\n return (\n <div key={k} className=\"flex items-baseline gap-2 text-xs\">\n <span className=\"font-mono text-text-secondary shrink-0\">{k}:</span>\n {isLong ? (\n <pre className=\"font-mono text-text-tertiary whitespace-pre-wrap break-all flex-1\">{val}</pre>\n ) : (\n <span className=\"font-mono text-text-tertiary truncate\">{val}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n\n if (unwrapped) return content;\n\n return (\n <CollapsibleSection sectionKey=\"config\" title=\"Configuration\" isCollapsed={isCollapsed} onToggle={onToggle}>\n {content}\n </CollapsibleSection>\n );\n}\n","import { useMemo, useRef, useState, useEffect } from 'react';\nimport type { ActivityManifestEntry } from '../../../api/types';\n\n// ── Colors ──────────────────────────────────────────────────────────────────\n\nconst SOURCE_STYLES: Record<string, { bar: string; dot: string; hex: string; label: string }> = {\n trigger: { bar: 'bg-[#6C47FF]', dot: 'bg-[#6C47FF]', hex: '#6C47FF', label: 'Trigger' },\n mcp: { bar: 'bg-blue-500', dot: 'bg-blue-500', hex: '#3B82F6', label: 'MCP' },\n db: { bar: 'bg-blue-500', dot: 'bg-blue-500', hex: '#3B82F6', label: 'Database' },\n llm: { bar: 'bg-violet-500', dot: 'bg-violet-500', hex: '#8B5CF6', label: 'LLM' },\n transform: { bar: 'bg-emerald-500', dot: 'bg-emerald-500', hex: '#10B981', label: 'Transform' },\n signal: { bar: 'bg-amber-500', dot: 'bg-amber-500', hex: '#F59E0B', label: 'Signal' },\n};\n\nfunction styleFor(source: string) {\n return SOURCE_STYLES[source] ?? { bar: 'bg-gray-500', dot: 'bg-gray-500', hex: '#6B7280', label: source };\n}\n\n// ── Graph helpers ───────────────────────────────────────────────────────────\n\ninterface Edge { from: string; to: string }\n\n/** Derive dependency edges by parsing `{activityId.…}` refs in input_mappings. */\nfunction deriveEdges(entries: ActivityManifestEntry[]): 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 if (!entry.input_mappings) continue;\n for (const mapping of Object.values(entry.input_mappings)) {\n const refs = String(mapping).matchAll(/\\{([\\w-]+)\\./g);\n for (const m of refs) {\n const src = m[1];\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\n return [...edgeMap.values()];\n}\n\n/** Longest-path layering — each node's layer = max(dependency layers) + 1. */\nfunction assignLayers(entries: ActivityManifestEntry[], edges: Edge[]): Map<string, number> {\n const inDeps = new Map<string, string[]>();\n for (const e of entries) inDeps.set(e.activity_id, []);\n for (const edge of edges) inDeps.get(edge.to)?.push(edge.from);\n\n const layers = new Map<string, number>();\n\n function computeLayer(id: string, stack: Set<string>): number {\n if (layers.has(id)) return layers.get(id)!;\n if (stack.has(id)) return 0; // cycle guard\n stack.add(id);\n const deps = inDeps.get(id) ?? [];\n const layer = deps.length === 0 ? 0 : Math.max(...deps.map((d) => computeLayer(d, stack))) + 1;\n layers.set(id, layer);\n return layer;\n }\n\n for (const e of entries) computeLayer(e.activity_id, new Set());\n return layers;\n}\n\n// ── Layout constants ────────────────────────────────────────────────────────\n\nconst ROW_H = 44;\nconst BAR_TOP = 10;\nconst BAR_H = 24;\nconst LABEL_REM = 14; // w-56 = 14rem\n\n// ── Component ───────────────────────────────────────────────────────────────\n\ninterface DagCanvasProps {\n manifest: ActivityManifestEntry[];\n selectedId: string | null;\n onSelect: (id: string | null) => void;\n}\n\nexport function DagCanvas({ manifest, selectedId, onSelect }: 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);\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]);\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 />\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\">{v}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Output fields */}\n {hasOutputFields && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">\n Output Fields\n </p>\n <p className=\"font-mono text-text-secondary leading-relaxed\">\n {entry.output_fields.join(', ')}\n </p>\n </div>\n )}\n\n {/* Prompt template (LLM only) */}\n {entry.prompt_template && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">\n Prompt Template\n </p>\n <pre className=\"text-[11px] font-mono text-text-secondary whitespace-pre-wrap break-words leading-relaxed max-h-48 overflow-y-auto\">\n {entry.prompt_template}\n </pre>\n </div>\n )}\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string }) {\n return (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {label}\n </p>\n <p className=\"font-mono text-text-primary\">{value}</p>\n </div>\n );\n}\n","import { Trash2 } from 'lucide-react';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\n\nconst LIFECYCLE_STEPS = ['draft', 'active', 'archived'] as const;\nconst LIFECYCLE_LABELS: Record<string, string> = {\n draft: 'Draft',\n active: 'Active',\n archived: 'Archived',\n};\n\nconst LIFECYCLE_COLORS: Record<string, { filled: string; line: string }> = {\n draft: { filled: 'bg-status-draft border-status-draft', line: 'bg-status-draft/30' },\n active: { filled: 'bg-status-success border-status-success', line: 'bg-status-success/30' },\n archived: { filled: 'bg-text-tertiary border-text-tertiary', line: 'bg-text-tertiary/30' },\n};\n\nexport function LifecycleSidebar({\n status,\n sourceWorkflowId: _sourceWorkflowId,\n contentVersion,\n deployedContentVersion,\n onDeploy,\n onArchive,\n onDelete,\n onRegenerate: _onRegenerate,\n isPending,\n error,\n}: {\n status: string;\n sourceWorkflowId?: string | null;\n contentVersion?: number;\n deployedContentVersion?: number | null;\n onDeploy: () => void;\n onArchive: () => void;\n onDelete: () => void;\n onRegenerate: () => void;\n isPending: boolean;\n error?: string;\n}) {\n // Treat 'deployed' as 'active' since deploy now auto-activates\n const effectiveStatus = status === 'deployed' ? 'active' : status;\n const currentIdx = LIFECYCLE_STEPS.indexOf(effectiveStatus as any);\n const needsRedeploy = contentVersion != null && contentVersion > (deployedContentVersion ?? 0);\n\n return (\n <div>\n <SectionLabel className=\"mb-4\">Lifecycle</SectionLabel>\n\n {/* Out-of-sync warning */}\n {needsRedeploy && effectiveStatus !== 'draft' && effectiveStatus !== 'archived' && (\n <div className=\"mb-4 px-3 py-2 rounded-md bg-status-pending/10 border border-status-pending/30\">\n <p className=\"text-[10px] font-semibold text-status-pending mb-1\">YAML modified</p>\n <p className=\"text-[10px] text-text-secondary leading-relaxed\">\n v{contentVersion} edited since deploy (v{deployedContentVersion}). Redeploy to apply changes.\n </p>\n <button onClick={onDeploy} disabled={isPending} className=\"mt-1.5 text-[10px] font-medium text-status-pending hover:underline\">\n {isPending ? 'Deploying...' : 'Deploy now'}\n </button>\n </div>\n )}\n\n {/* Step sequence */}\n <div className=\"space-y-0\">\n {LIFECYCLE_STEPS.map((step, idx) => {\n const isCurrent = step === effectiveStatus;\n const isDone = idx < currentIdx;\n const isFuture = idx > currentIdx;\n const isLast = idx === LIFECYCLE_STEPS.length - 1;\n const colors = LIFECYCLE_COLORS[step];\n\n return (\n <div key={step} className=\"flex items-stretch gap-3\">\n {/* Vertical track */}\n <div className=\"flex flex-col items-center w-5 shrink-0\">\n <span\n className={`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${\n isCurrent || isDone\n ? colors.filled\n : 'bg-surface-sunken border-surface-border'\n }`}\n />\n {!isLast && (\n <span className={`w-px flex-1 ${isDone ? colors.line : 'bg-surface-border'}`} />\n )}\n </div>\n\n {/* Label + action */}\n <div className={`pb-5 ${isLast ? 'pb-0' : ''}`}>\n <p className={`text-xs font-medium ${isCurrent ? 'text-text-primary' : isFuture ? 'text-text-tertiary' : 'text-text-secondary'}`}>\n {LIFECYCLE_LABELS[step]}\n </p>\n {/* Show the next-step action */}\n {isCurrent && step === 'draft' && (\n <div className=\"mt-2\">\n <button onClick={onDeploy} disabled={isPending} className=\"btn-primary text-[11px] px-3 py-1\">\n {isPending ? 'Deploying...' : 'Deploy & Activate'}\n </button>\n </div>\n )}\n {isCurrent && step === 'active' && (\n <div className=\"mt-2\">\n <button onClick={onArchive} disabled={isPending} className=\"text-[11px] text-text-tertiary hover:text-status-error\">\n Archive\n </button>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Version info */}\n {contentVersion != null && (\n <div className=\"mt-4 pt-4 border-t border-surface-border\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Content Version</p>\n <p className=\"text-xs font-mono text-text-primary\">\n v{contentVersion}\n {deployedContentVersion != null && (\n <span className=\"text-text-tertiary ml-1.5\">(deployed: v{deployedContentVersion})</span>\n )}\n </p>\n </div>\n )}\n\n {/* Delete -- only for draft/archived */}\n {(status === 'draft' || status === 'archived') && (\n <div className=\"mt-4 pt-4 border-t border-surface-border\">\n <button onClick={onDelete} disabled={isPending} className=\"inline-flex items-center gap-1.5 text-[11px] text-status-error/70 hover:text-status-error transition-colors hover:underline\">\n <Trash2 className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n Delete Compiled Workflow\n </button>\n </div>\n )}\n\n {error && <p className=\"mt-3 text-[11px] text-status-error\">{error}</p>}\n </div>\n );\n}\n","import { SectionLabel } from '../../../components/common/layout/SectionLabel';\n\nexport function VersionHistory({\n versionsData,\n searchParams,\n setSearchParams,\n currentVersion,\n viewingVersion,\n}: {\n versionsData: any;\n searchParams: URLSearchParams;\n setSearchParams: (v: URLSearchParams) => void;\n currentVersion: number;\n viewingVersion: number | null;\n}) {\n return (\n <div>\n <SectionLabel className=\"mb-3\">Version History</SectionLabel>\n <div className=\"space-y-1\">\n {versionsData.versions.map((v: any) => {\n const isCurrent = v.version === currentVersion;\n const isViewing = viewingVersion === v.version;\n return (\n <button\n key={v.version}\n type=\"button\"\n onClick={() => {\n const next = new URLSearchParams(searchParams);\n if (isCurrent) next.delete('version');\n else next.set('version', String(v.version));\n setSearchParams(next);\n }}\n className={`w-full text-left px-2 py-1.5 rounded text-xs transition-colors ${\n isViewing\n ? 'bg-accent/10 text-accent'\n : 'text-text-secondary hover:bg-surface-sunken hover:text-text-primary'\n }`}\n >\n <span className=\"font-mono font-medium\">v{v.version}</span>\n {isCurrent && <span className=\"text-text-tertiary ml-1\">(current)</span>}\n {v.change_summary && (\n <p className=\"text-[10px] text-text-tertiary truncate mt-0.5\">{v.change_summary}</p>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useRef, useMemo, useCallback } from 'react';\nimport { MessageSquarePlus, Pencil, X, Check } from 'lucide-react';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { YamlComposer } from '../../../components/common/data/YamlComposer';\nimport { DagNodeDetail } from '../../../components/common/data/DagNodeDetail';\nimport { LifecycleSidebar } from './LifecycleSidebar';\nimport { VersionHistory } from './VersionHistory';\nimport {\n useYamlWorkflow,\n useYamlWorkflowVersions,\n useYamlWorkflowVersion,\n useUpdateYamlWorkflow,\n useDeployYamlWorkflow,\n useActivateYamlWorkflow,\n useArchiveYamlWorkflow,\n useRegenerateYamlWorkflow,\n useDeleteYamlWorkflow,\n} from '../../../api/yaml-workflows';\nimport type { ActivityManifestEntry, InputFieldMeta } from '../../../api/types';\n\ninterface DeployPanelProps {\n yamlId: string;\n onAdvance: () => void;\n onBack: () => void;\n}\n\nexport function DeployPanel({ yamlId, onAdvance, onBack }: DeployPanelProps) {\n const queryClient = useQueryClient();\n const yamlTextareaRef = useRef<HTMLTextAreaElement>(null);\n const [feedbackText, setFeedbackText] = useState('');\n const [showFeedback, setShowFeedback] = useState(false);\n const [dismissingFeedback, setDismissingFeedback] = useState(false);\n\n const closeFeedback = () => {\n setDismissingFeedback(true);\n setTimeout(() => { setShowFeedback(false); setDismissingFeedback(false); }, 250);\n };\n\n const { data: wf, refetch } = useYamlWorkflow(yamlId);\n const { data: versionsData } = useYamlWorkflowVersions(yamlId);\n\n const deployMutation = useDeployYamlWorkflow();\n const activateMutation = useActivateYamlWorkflow();\n const archiveMutation = useArchiveYamlWorkflow();\n const deleteMutation = useDeleteYamlWorkflow();\n const regenerateMutation = useRegenerateYamlWorkflow();\n const updateMutation = useUpdateYamlWorkflow();\n\n // Config editing state\n const [yamlDraft, setYamlDraft] = useState('');\n const [inputSchemaDraft, setInputSchemaDraft] = useState('');\n const [outputSchemaDraft, setOutputSchemaDraft] = useState('');\n const [inputFieldMetaDraft, setInputFieldMetaDraft] = useState<InputFieldMeta[]>([]);\n const [configEditing, setConfigEditing] = useState(false);\n\n // Version browsing\n const [versionParam, setVersionParam] = useState<number | null>(null);\n const isViewingHistory = versionParam !== null && wf != null && versionParam !== wf.content_version;\n const { data: versionSnapshot } = useYamlWorkflowVersion(yamlId, isViewingHistory ? versionParam : null);\n\n const resolvedYaml = isViewingHistory && versionSnapshot ? versionSnapshot.yaml_content : wf?.yaml_content;\n const resolvedInputSchema = isViewingHistory && versionSnapshot ? versionSnapshot.input_schema : wf?.input_schema;\n const resolvedOutputSchema = isViewingHistory && versionSnapshot ? versionSnapshot.output_schema : wf?.output_schema;\n\n // Sync drafts when workflow loads\n useEffect(() => {\n if (wf) {\n setYamlDraft(wf.yaml_content);\n setInputSchemaDraft(JSON.stringify(wf.input_schema, null, 2));\n setOutputSchemaDraft(JSON.stringify(wf.output_schema, null, 2));\n if (wf.input_field_meta) setInputFieldMetaDraft(wf.input_field_meta);\n }\n }, [wf?.id, wf?.content_version]);\n\n // Version history adapter (VersionHistory expects URLSearchParams)\n const versionSearchParams = useMemo(() => {\n const sp = new URLSearchParams();\n if (versionParam !== null) sp.set('version', String(versionParam));\n return sp;\n }, [versionParam]);\n const setVersionSearchParams = useCallback((sp: URLSearchParams) => {\n const v = sp.get('version');\n setVersionParam(v ? parseInt(v, 10) : null);\n }, []);\n\n // DAG node selection — drives right sidebar content\n const [selectedNodeId, setSelectedNodeId] = useState<string | null>(null);\n const resolvedManifest: ActivityManifestEntry[] = (isViewingHistory && versionSnapshot)\n ? versionSnapshot.activity_manifest : wf?.activity_manifest ?? [];\n const selectedEntry = useMemo(\n () => resolvedManifest.find((e) => e.activity_id === selectedNodeId) ?? null,\n [resolvedManifest, selectedNodeId],\n );\n\n const canEditConfig = wf?.status !== 'archived' && !isViewingHistory;\n\n const handleSaveConfig = async () => {\n if (!wf) return;\n let inputSchema, outputSchema;\n try { inputSchema = JSON.parse(inputSchemaDraft); } catch { /* keep existing */ }\n try { outputSchema = JSON.parse(outputSchemaDraft); } catch { /* keep existing */ }\n await updateMutation.mutateAsync({\n id: wf.id,\n yaml_content: yamlDraft,\n ...(inputSchema ? { input_schema: inputSchema } : {}),\n ...(outputSchema ? { output_schema: outputSchema } : {}),\n });\n setConfigEditing(false);\n refetch();\n };\n\n const handleCancelEdit = () => {\n if (!wf) return;\n setYamlDraft(wf.yaml_content);\n setInputSchemaDraft(JSON.stringify(wf.input_schema, null, 2));\n setOutputSchemaDraft(JSON.stringify(wf.output_schema, null, 2));\n setConfigEditing(false);\n };\n\n const handleDeploy = async () => {\n if (!wf) return;\n // Always deploy (updates deployed_content_version), then activate\n await deployMutation.mutateAsync(wf.id);\n await activateMutation.mutateAsync(wf.id);\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflow'], refetchType: 'all' });\n refetch();\n onAdvance();\n };\n\n const handleRegenerate = async () => {\n await regenerateMutation.mutateAsync({\n id: yamlId,\n compilation_feedback: feedbackText.trim() || undefined,\n });\n setFeedbackText('');\n setShowFeedback(false);\n refetch();\n };\n\n if (!wf) return <p className=\"text-sm text-text-secondary animate-pulse\">Loading workflow...</p>;\n\n const isPending = deployMutation.isPending || activateMutation.isPending || archiveMutation.isPending || regenerateMutation.isPending || deleteMutation.isPending;\n\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_400px] gap-8\">\n {/* Left: config */}\n <div>\n <div className=\"flex items-start justify-between mb-6\">\n <div>\n <h2 className=\"text-lg font-light text-text-primary\">\n {wf.status === 'active' ? 'Redeploy' : 'Deploy'} Workflow\n </h2>\n <p className=\"text-xs text-text-tertiary mt-0.5\">Review configuration, input/output schemas, and YAML definition</p>\n </div>\n <div className=\"flex items-center gap-3 shrink-0\">\n {configEditing ? (\n <>\n <SecondaryAction icon={X} label=\"Cancel\" onClick={() => { handleCancelEdit(); setConfigEditing(false); }} />\n <SecondaryAction\n icon={Check}\n label={updateMutation.isPending ? 'Saving...' : 'Save'}\n onClick={handleSaveConfig}\n disabled={updateMutation.isPending || (\n yamlDraft === wf.yaml_content\n && inputSchemaDraft === JSON.stringify(wf.input_schema, null, 2)\n && outputSchemaDraft === JSON.stringify(wf.output_schema, null, 2)\n )}\n />\n </>\n ) : (\n <>\n <SecondaryAction icon={MessageSquarePlus} label=\"Recompile with Feedback\" onClick={() => { setShowFeedback(!showFeedback); }} />\n <SecondaryAction icon={Pencil} label=\"Manual Edit\" onClick={() => { setConfigEditing(true); setShowFeedback(false); }} />\n </>\n )}\n </div>\n </div>\n\n {/* Recompile feedback panel */}\n {showFeedback && (\n <div\n className=\"mb-4 p-4 bg-surface-sunken border border-surface-border rounded-lg overflow-hidden transition-all duration-250 ease-in-out\"\n style={{\n animation: dismissingFeedback ? undefined : 'fadeIn 300ms ease-out both',\n opacity: dismissingFeedback ? 0 : 1,\n maxHeight: dismissingFeedback ? '0px' : '400px',\n paddingTop: dismissingFeedback ? '0px' : undefined,\n paddingBottom: dismissingFeedback ? '0px' : undefined,\n marginBottom: dismissingFeedback ? '0px' : undefined,\n }}\n >\n <div className=\"flex items-center justify-between mb-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">What should change?</p>\n <button onClick={closeFeedback} className=\"text-text-tertiary hover:text-text-secondary transition-colors\">\n <X className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n <textarea value={feedbackText} onChange={(e) => setFeedbackText(e.target.value)}\n placeholder=\"E.g.: 'Only url, username, password, and screenshot_dir should be dynamic inputs. The steps array and script are implementation details.'\"\n className=\"w-full min-h-[80px] px-3 py-2 bg-surface border border-surface-border rounded-md text-xs text-text-primary placeholder:text-text-tertiary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\" />\n <div className=\"flex items-center justify-between mt-2\">\n <p className=\"text-[10px] text-text-tertiary\">This feedback guides the compiler. The current YAML will be replaced.</p>\n <button onClick={handleRegenerate} disabled={!feedbackText.trim() || regenerateMutation.isPending} className=\"btn-primary text-xs shrink-0 ml-4\">\n {regenerateMutation.isPending ? 'Recompiling...' : 'Recompile Pipeline'}\n </button>\n </div>\n </div>\n )}\n\n {/* Version history banner */}\n {isViewingHistory && (\n <div className=\"mb-4 px-3 py-2 bg-accent-muted/20 border border-accent-muted/40 rounded-md flex items-center justify-between\">\n <span className=\"text-xs text-accent\">Viewing version {versionParam}</span>\n <button onClick={() => setVersionParam(null)} className=\"text-xs text-accent hover:underline\">Back to current</button>\n </div>\n )}\n\n <YamlComposer\n yamlContent={resolvedYaml}\n activityManifest={resolvedManifest}\n inputSchema={resolvedInputSchema}\n outputSchema={resolvedOutputSchema}\n wf={wf}\n configEditing={configEditing}\n setConfigEditing={setConfigEditing}\n canEditConfig={canEditConfig}\n yamlDraft={yamlDraft}\n setYamlDraft={setYamlDraft}\n inputSchemaDraft={inputSchemaDraft}\n setInputSchemaDraft={setInputSchemaDraft}\n outputSchemaDraft={outputSchemaDraft}\n setOutputSchemaDraft={setOutputSchemaDraft}\n inputFieldMetaDraft={inputFieldMetaDraft}\n setInputFieldMetaDraft={setInputFieldMetaDraft}\n onSave={handleSaveConfig}\n onCancel={handleCancelEdit}\n updateMutation={updateMutation}\n yamlTextareaRef={yamlTextareaRef}\n selectedNodeId={selectedNodeId}\n onNodeSelect={setSelectedNodeId}\n />\n\n <WizardNav>\n <button onClick={onBack} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Back</button>\n {wf.status === 'active'\n ? <button onClick={onAdvance} disabled={showFeedback} className=\"btn-primary text-xs\">Next: Test</button>\n : <button onClick={handleDeploy} disabled={isPending || showFeedback} className=\"btn-primary text-xs\">{isPending ? 'Deploying...' : 'Deploy & Activate'}</button>\n }\n </WizardNav>\n </div>\n\n {/* Right sidebar — swaps between lifecycle tools and node properties */}\n <div className=\"space-y-6\">\n <div className=\"sticky top-6\">\n {selectedEntry ? (\n <DagNodeDetail\n entry={selectedEntry}\n onClose={() => setSelectedNodeId(null)}\n />\n ) : (\n <>\n <LifecycleSidebar\n status={wf.status}\n sourceWorkflowId={wf.source_workflow_id}\n contentVersion={wf.content_version}\n deployedContentVersion={wf.deployed_content_version}\n onDeploy={handleDeploy}\n onArchive={() => archiveMutation.mutateAsync(yamlId).then(() => refetch())}\n onDelete={async () => {\n await deleteMutation.mutateAsync(yamlId);\n queryClient.invalidateQueries({ queryKey: ['yamlWorkflowForSource'], refetchType: 'all' });\n onBack();\n }}\n onRegenerate={handleRegenerate}\n isPending={isPending}\n error={undefined}\n />\n {(versionsData?.versions?.length ?? 0) > 1 && (\n <VersionHistory\n versionsData={versionsData}\n searchParams={versionSearchParams}\n setSearchParams={setVersionSearchParams}\n currentVersion={wf.content_version}\n viewingVersion={isViewingHistory ? versionParam : null}\n />\n )}\n </>\n )}\n </div>{/* end sticky */}\n </div>\n </div>\n );\n}\n","import type { ActivityManifestEntry } from '../../../api/types';\nimport type { ActivityStep } from '../../../hooks/useYamlActivityEvents';\n\nconst TOOL_SOURCE_COLORS: Record<string, { border: string; text: string; icon: string }> = {\n mcp: { border: 'border-blue-500', text: 'text-blue-500', icon: 'MCP' },\n db: { border: 'border-blue-500', text: 'text-blue-500', icon: 'DB' },\n llm: { border: 'border-violet-500', text: 'text-violet-500', icon: 'LLM' },\n transform: { border: 'border-emerald-500', text: 'text-emerald-500', icon: 'Map' },\n};\n\nexport function LiveActivityTimeline({\n steps,\n manifest,\n isComplete,\n}: {\n steps: ActivityStep[];\n manifest: ActivityManifestEntry[];\n isComplete: boolean;\n}) {\n const workerActivities = manifest.filter((a) => a.type === 'worker');\n const totalSteps = workerActivities.length;\n\n const merged = workerActivities.map((a, i) => {\n const live = steps.find((s) => s.activityId === a.activity_id);\n const source = a.tool_source || 'mcp';\n const colors = TOOL_SOURCE_COLORS[source] || TOOL_SOURCE_COLORS.mcp;\n return {\n activityId: a.activity_id,\n title: a.title || a.mcp_tool_name || a.activity_id,\n toolName: a.mcp_tool_name,\n toolSource: source,\n colors,\n stepIndex: i,\n status: live?.status || 'pending' as const,\n error: live?.error,\n };\n });\n\n return (\n <div>\n <p className=\"text-xs text-text-secondary mb-4\">\n {isComplete\n ? `All ${totalSteps} steps completed`\n : `Running step ${merged.filter((s) => s.status === 'completed').length + 1} of ${totalSteps}...`}\n </p>\n\n <div className=\"space-y-0\">\n {merged.map((step, idx) => {\n const isLast = idx === merged.length - 1;\n return (\n <div key={step.activityId} className=\"flex items-stretch gap-3\">\n {/* Vertical track */}\n <div className=\"flex flex-col items-center w-5 shrink-0\">\n <span className={`w-3 h-3 rounded-full shrink-0 border-2 transition-colors ${\n step.status === 'completed' ? 'bg-status-success border-status-success'\n : step.status === 'running' ? `${step.colors.border} bg-transparent animate-pulse`\n : step.status === 'failed' ? 'bg-status-error border-status-error'\n : 'bg-surface-sunken border-surface-border'\n }`} />\n {!isLast && (\n <span className={`w-px flex-1 transition-colors ${\n step.status === 'completed' ? 'bg-status-success/30' : 'bg-surface-border'\n }`} />\n )}\n </div>\n\n {/* Step content */}\n <div className={`pb-4 ${isLast ? 'pb-0' : ''}`}>\n <p className={`text-xs font-medium ${\n step.status === 'running' ? 'text-text-primary'\n : step.status === 'completed' ? 'text-text-secondary'\n : step.status === 'failed' ? 'text-status-error'\n : 'text-text-tertiary'\n }`}>\n {step.title}\n </p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <span className={`text-[9px] font-mono px-1 py-0.5 rounded border ${step.colors.border} ${step.colors.text} bg-transparent`}>\n {step.colors.icon}\n </span>\n {step.toolName && (\n <span className=\"text-[10px] text-text-tertiary font-mono\">{step.toolName}</span>\n )}\n </div>\n {step.error && (\n <p className=\"text-[10px] text-status-error mt-1\">{step.error}</p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {isComplete && (\n <p className=\"text-[10px] text-text-tertiary mt-3 text-center\">Closing...</p>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { Play } from 'lucide-react';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { SecondaryAction } from '../../../components/common/display/SecondaryAction';\nimport { WizardNav } from '../../../components/common/layout/WizardNav';\nimport { useYamlWorkflow, useInvokeYamlWorkflow } from '../../../api/yaml-workflows';\nimport { useMcpRuns, useMcpRunExecution } from '../../../api/mcp-runs';\nimport { useWorkflowExecution } from '../../../api/workflows';\nimport { useTaskByWorkflowId } from '../../../api/tasks';\nimport { useYamlActivityEvents } from '../../../hooks/useYamlActivityEvents';\nimport { buildSkeleton } from './helpers';\nimport type { LTJob } from '../../../api/types';\nimport { extractJsonFromSummary } from './helpers';\nimport { SectionHeading } from './SectionHeading';\nimport { LiveActivityTimeline } from './LiveActivityTimeline';\n\nfunction jobLabel(job: LTJob): string {\n const date = new Date(job.created_at);\n const time = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n const day = date.toLocaleDateString([], { month: 'short', day: 'numeric' });\n const status = job.status === 'completed' || Number(job.status) === 0 ? 'completed' : job.is_live ? 'running' : 'failed';\n return `${day} ${time} — ${status}`;\n}\n\ninterface TestPanelProps {\n yamlId: string;\n originalWorkflowId: string | undefined;\n originalResult: Record<string, unknown> | undefined;\n originalPrompt: string | undefined;\n onBack: () => void;\n onAdvance: () => void;\n}\n\nexport function TestPanel({ yamlId, originalWorkflowId, originalResult, originalPrompt, onBack, onAdvance }: 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 } = 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 [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 }, 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({ id: wf.id, data, sync: false });\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\n const { data: originalExecution } = useWorkflowExecution(originalWorkflowId ?? '');\n const { data: originalTask } = useTaskByWorkflowId(originalWorkflowId ?? '');\n const originalExecResult = (originalExecution?.result as any)?.data as Record<string, unknown> | undefined;\n\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\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 = 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\n // Deterministic run data\n let deterministicOutput: unknown = null;\n let deterministicInput: unknown = null;\n if (selectedRunExecution?.result) {\n const execResult = selectedRunExecution.result as Record<string, unknown>;\n if (typeof execResult.response === 'string') {\n const jsonMatch = (execResult.response as string).match(/```json\\s*([\\s\\S]*?)```/);\n if (jsonMatch) {\n try { deterministicOutput = JSON.parse(jsonMatch[1].trim()); } catch { deterministicOutput = execResult; }\n } else {\n deterministicOutput = extractJsonFromSummary(execResult.response as string) ?? execResult;\n }\n } else {\n deterministicOutput = execResult;\n }\n }\n if (selectedRunExecution?.events?.length) {\n const triggerEvent = selectedRunExecution.events.find(\n (e) => e.event_type === 'activity_task_completed' && e.is_system &&\n (e.attributes as any)?.result && Object.keys((e.attributes as any).result).length > 0,\n );\n deterministicInput = triggerEvent ? (triggerEvent.attributes as any).result : null;\n }\n\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_400px] gap-8\">\n {/* Left: comparison */}\n <div>\n {/* Header */}\n <div className=\"flex items-start justify-between mb-6\">\n <div>\n <h2 className=\"text-lg font-light text-text-primary\">Compare Runs</h2>\n <div className=\"flex items-center gap-3 mt-1\">\n <span className=\"text-xs font-mono text-text-secondary\">{wf.name}</span>\n <span className=\"text-[10px] text-text-tertiary\">v{wf.content_version}</span>\n </div>\n </div>\n <SecondaryAction icon={Play} label=\"Run Test\" onClick={handleOpenSidebar} />\n </div>\n\n {/* Grid-aligned comparison: column headers */}\n <div className=\"grid grid-cols-2 gap-8 mb-4\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Original MCP Query</p>\n <p className=\"text-[10px] text-text-tertiary mt-0.5\">Dynamic LLM orchestration</p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Compiled Pipeline Run</p>\n {jobs.length > 0 && selectedRunId && (\n <select\n value={selectedRunId}\n onChange={(e) => selectRun(e.target.value)}\n className=\"mt-0.5 bg-transparent border-none text-[10px] text-accent hover:text-accent/80 cursor-pointer focus:outline-none p-0 text-right direction-rtl\"\n >\n {jobs.map((job) => <option key={job.workflow_id} value={job.workflow_id}>{jobLabel(job)}</option>)}\n </select>\n )}\n {!selectedRunId && <p className=\"text-[10px] text-text-tertiary mt-0.5\">No runs yet</p>}\n </div>\n </div>\n\n {/* Row 1: Inputs */}\n <SectionHeading>Input</SectionHeading>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6\">\n <div>\n {originalEnvelope ? (\n <JsonViewer data={originalEnvelope} defaultMode=\"tree\" />\n ) : resolvedPrompt ? (\n <p className=\"text-xs text-text-primary leading-relaxed px-3 py-2 bg-surface-sunken rounded-md\">{resolvedPrompt}</p>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">Loading...</p>\n )}\n </div>\n <div>\n {deterministicInput ? (\n <JsonViewer data={deterministicInput} defaultMode=\"tree\" />\n ) : selectedRunId && wf.input_schema ? (\n <div>\n <p className=\"text-[10px] text-text-tertiary italic mb-1\">Stored defaults</p>\n <JsonViewer data={wf.input_schema} defaultMode=\"tree\" />\n </div>\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No runs yet</p>\n )}\n </div>\n </div>\n\n {/* Row 2: Outputs */}\n <SectionHeading>Output</SectionHeading>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-6\">\n <div>\n {originalOutput ? (\n <JsonViewer data={originalOutput} defaultMode=\"tree\" />\n ) : (\n <p className=\"text-xs text-text-tertiary italic\">No output</p>\n )}\n {originalExecution?.duration_ms != null && (\n <p className=\"text-[10px] text-text-tertiary mt-2\">{(originalExecution.duration_ms / 1000).toFixed(1)}s</p>\n )}\n </div>\n <div>\n {deterministicOutput ? (\n <JsonViewer data={deterministicOutput} defaultMode=\"tree\" />\n ) : selectedRunId ? (\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 <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={onAdvance} className=\"btn-primary text-xs\">Next: Verify</button>\n </WizardNav>\n </div>\n\n {/* Right: test sidebar — sticky */}\n <div className=\"space-y-6\">\n <div className=\"sticky top-6\">\n {sidebarOpen || activeJobId ? (\n <div style={{ animation: 'fadeIn 300ms ease-out both' }}>\n {activeJobId ? (\n /* Live execution timeline */\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3\">Execution</p>\n <LiveActivityTimeline\n steps={activitySteps}\n manifest={wf.activity_manifest}\n isComplete={jobComplete}\n />\n </div>\n ) : (\n /* Input form */\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Test Inputs</p>\n <button onClick={() => {\n if (!invokeJsonMode) setInvokeJson(JSON.stringify(invokeFields, null, 2));\n else try { setInvokeFields(JSON.parse(invokeJson)); } catch { /* keep fields */ }\n setInvokeJsonMode(!invokeJsonMode);\n }} className=\"text-[10px] text-accent hover:underline\">\n {invokeJsonMode ? 'Form view' : 'JSON view'}\n </button>\n </div>\n\n {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\n {invokeMutation.isError && (\n <p className=\"mt-2 text-xs text-status-error\">{invokeMutation.error.message}</p>\n )}\n\n <div className=\"flex justify-end gap-3 mt-4\">\n <button onClick={() => setSidebarOpen(false)} className=\"px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary\">Cancel</button>\n <button onClick={handleInvoke} disabled={invokeMutation.isPending} className=\"btn-primary text-xs\">\n {invokeMutation.isPending ? 'Starting...' : 'Invoke'}\n </button>\n </div>\n </div>\n )}\n </div>\n ) : (\n /* Empty state — prompt to run */\n <div className=\"text-center py-8\">\n <p className=\"text-xs text-text-tertiary\">Click \"Run Test\" to invoke the compiled pipeline</p>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\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 }: 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 <div className=\"mb-6\">\n <h2 className=\"text-lg font-light text-text-primary\">End-to-End Verification</h2>\n <p className=\"text-xs text-text-tertiary mt-0.5\">\n Submit the original prompt (or a variant) to verify that\n <span className=\"font-mono text-text-primary mx-1\">{workflowName}</span>\n handles it deterministically.\n If results are unexpected, go <button onClick={onGoToDeploy} className=\"text-accent hover:underline\">back</button> to adjust.\n </p>\n </div>\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 { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { WizardSteps } from '../../../components/common/layout/WizardSteps';\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\nexport function McpQueryDetailPage() {\n const d = useQueryDetail();\n\n return (\n <div className=\"flex flex-col min-h-[calc(100vh-12rem)]\">\n <PageHeader\n title=\"Compilation Wizard\"\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.setManualStep(2)}\n />\n )}\n\n {d.step === 2 && (\n <TimelinePanel\n events={d.events}\n onBack={() => d.setManualStep(1)}\n onNext={() => d.setManualStep(3)}\n />\n )}\n\n {d.step === 3 && (\n <ProfilePanel\n compiledYaml={d.compiledYaml}\n originalPrompt={d.originalPrompt}\n compileAppId={d.compileAppId}\n setCompileAppId={d.setCompileAppId}\n compileName={d.compileName}\n setCompileName={d.setCompileName}\n compileDescription={d.compileDescription}\n setCompileDescription={d.setCompileDescription}\n compileTags={d.compileTags}\n setCompileTags={d.setCompileTags}\n describeData={d.describeData}\n describePrompt={d.describePrompt}\n allAppIds={d.allAppIds}\n onCompile={d.handleCompile}\n isCompiling={d.createYaml.isPending}\n compileError={d.createYaml.isError ? d.createYaml.error.message : undefined}\n isUncompilable={d.isUncompilable}\n onBack={() => d.setManualStep(2)}\n onNext={() => d.setManualStep(d.profileNextStep as Step)}\n />\n )}\n\n {d.step === 4 && d.compiledYaml && (\n <DeployPanel\n yamlId={d.compiledYaml.id}\n onAdvance={() => d.setManualStep(5)}\n onBack={() => d.setManualStep(3)}\n />\n )}\n\n {d.step === 5 && d.compiledYaml && (\n <TestPanel\n yamlId={d.compiledYaml.id}\n originalWorkflowId={d.workflowId}\n originalResult={d.result}\n originalPrompt={d.originalPrompt}\n onBack={() => d.setManualStep(4)}\n onAdvance={() => d.setManualStep(6)}\n />\n )}\n\n {d.step === 6 && d.compiledYaml && (\n <VerifyPanel\n originalWorkflowId={d.workflowId}\n originalPrompt={d.originalPrompt}\n workflowName={d.compiledYaml.name}\n onBack={() => d.setManualStep(5)}\n onGoToDeploy={() => d.setManualStep(4)}\n />\n )}\n\n </div>{/* end flex-1 panel content */}\n </div>\n );\n}\n"],"names":["WizardSteps","labels","current","maxReachable","onStepClick","jsxDEV","label","i","s","isReachable","useWizardStep","searchParams","setSearchParams","useSearchParams","initialUrlStep","useRef","raw","userChoseStep","manualStep","setStep","useCallback","step","prev","next","_a","syncToUrl","useQueryDetail","workflowId","useParams","queryClient","useQueryClient","promptFromUrl","useEffect","compileAppId","setCompileAppId","useState","compileName","setCompileName","compileDescription","setCompileDescription","compileTags","setCompileTags","compileInitialized","setCompileInitialized","compileFeedback","setCompileFeedback","execution","useMcpQueryExecution","resultData","useMcpQueryResult","yamlSearch","useYamlWorkflowForSource","useWorkflowDetailEvents","createYaml","useCreateYamlWorkflow","appIdData","useYamlWorkflowAppIds","originalExecution","useWorkflowExecution","originalTask","useTaskByWorkflowId","originalEnvelope","useMemo","originalExecResult","status","mapStatus","result","_b","discovery","events","escalationData","useEscalationsByWorkflowId","activeEscalation","_c","e","resolvedEscalation","_d","displayEscalation","claimMutation","useClaimEscalation","resolveMutation","useResolveEscalation","resolvedPayload","triageWorkflowId","_e","triageResultData","_f","triageResult","_g","rerunWorkflowId","milestones","_h","isRoundsExhausted","m","isUncompilable","originalPrompt","fromEnvelope","attrs","originalOutput","extractJsonFromSummary","describePrompt","describeData","useDescribeMcpQuery","compiledYaml","_i","w","autoStep","setManualStep","syncStepToUrl","prevStatusRef","stepLabels","STEP_LABELS_BASE","derivedSubscribes","allAppIds","handleCompile","handleRetryTriage","diagnosis","profileNextStep","StatusCard","_status","_discovery","CopyableId","TimeAgo","WizardNav","children","PanelTitle","title","subtitle","Icon","iconClass","actions","ResultSummary","text","parts","jsonBlockRe","lastIndex","match","p","JsonViewer","SimpleMarkdown","OriginalQueryPanel","originalDurationMs","resultSummary","onNext","MessageSquare","TimelinePanel","onBack","Lightbulb","SwimlaneTimeline","SecondaryAction","onClick","disabled","sanitizeTag","TagInput","tags","onChange","placeholder","compact","input","setInput","inputRef","addTag","tag","removeTag","t","handleKeyDown","X","SectionHeading","ExistingProfileView","updateMutation","useUpdateYamlWorkflow","editing","setEditing","descDraft","setDescDraft","tagsDraft","setTagsDraft","handleSave","handleCancel","Layers","Fragment","Check","Pencil","a","arr","CreateProfileForm","onCompile","isCompiling","compileError","dismissedError","setDismissedError","dismissing","setDismissing","errorRef","visibleError","handleDismiss","AlertCircle","id","ProfilePanel","props","CLASSIFICATION_STYLES","ClassificationBadge","classification","style","InputSchemaEditor","fields","expandedField","setExpandedField","updateField","index","updates","f","toggleClassification","field","nextClass","removeField","_","dynamicFields","fixedFields","isExpanded","FieldRow","expanded","onToggleExpand","onToggleClassification","onUpdate","onRemove","val","ICON","BTN","BTN_LG","ConfigurationSection","wf","resolvedInputSchema","resolvedOutputSchema","resolvedYaml","configEditing","_setConfigEditing","_canEditConfig","yamlDraft","setYamlDraft","inputSchemaDraft","setInputSchemaDraft","outputSchemaDraft","setOutputSchemaDraft","inputFieldMetaDraft","setInputFieldMetaDraft","onSave","onCancel","yamlTextareaRef","isCollapsed","onToggle","schemasGrid","unwrapped","hasFieldMeta","advancedMode","setAdvancedMode","yamlFullscreen","setYamlFullscreen","copied","setCopied","yamlSectionRef","yamlText","handleCopyYaml","content","BookOpen","Copy","Maximize2","FullscreenOverlay","Minimize2","hasArgs","hasMappings","k","v","isLong","CollapsibleSection","SOURCE_STYLES","styleFor","source","deriveEdges","entries","idSet","edgeMap","entry","mapping","refs","src","key","assignLayers","edges","inDeps","edge","layers","computeLayer","stack","deps","layer","ROW_H","BAR_TOP","BAR_H","LABEL_REM","DagCanvas","manifest","selectedId","onSelect","containerRef","graphW","setGraphW","el","measure","labelPx","obs","layerMap","numLayers","sortedEntries","rowIndex","indexed","b","la","lb","sorted","x","graphH","barWidthPct","activeSources","barLeftPct","isSelected","fromRow","toRow","fromLayer","toLayer","colW","barW","x1","y1","x2","y2","dx","YamlComposer","activityManifest","inputSchema","outputSchema","yamlContent","selectedNodeId","onNodeSelect","setConfigEditing","canEditConfig","viewMode","setViewMode","DagNodeDetail","onClose","hasOutputFields","Field","value","LIFECYCLE_STEPS","LIFECYCLE_LABELS","LIFECYCLE_COLORS","LifecycleSidebar","_sourceWorkflowId","contentVersion","deployedContentVersion","onDeploy","onArchive","onDelete","_onRegenerate","isPending","error","effectiveStatus","currentIdx","needsRedeploy","SectionLabel","idx","isCurrent","isDone","isFuture","isLast","colors","Trash2","VersionHistory","versionsData","currentVersion","viewingVersion","isViewing","DeployPanel","yamlId","onAdvance","feedbackText","setFeedbackText","showFeedback","setShowFeedback","dismissingFeedback","setDismissingFeedback","closeFeedback","refetch","useYamlWorkflow","useYamlWorkflowVersions","deployMutation","useDeployYamlWorkflow","activateMutation","useActivateYamlWorkflow","archiveMutation","useArchiveYamlWorkflow","deleteMutation","useDeleteYamlWorkflow","regenerateMutation","useRegenerateYamlWorkflow","versionParam","setVersionParam","isViewingHistory","versionSnapshot","useYamlWorkflowVersion","versionSearchParams","sp","setVersionSearchParams","setSelectedNodeId","resolvedManifest","selectedEntry","handleSaveConfig","handleCancelEdit","handleDeploy","handleRegenerate","MessageSquarePlus","TOOL_SOURCE_COLORS","LiveActivityTimeline","steps","isComplete","workerActivities","totalSteps","merged","live","jobLabel","job","date","time","day","TestPanel","originalWorkflowId","originalResult","runs","useMcpRuns","runParam","setRunParam","selectedRunId","setSelectedRunId","selectRun","selectedRunExecution","useMcpRunExecution","sidebarOpen","setSidebarOpen","invokeJsonMode","setInvokeJsonMode","invokeFields","setInvokeFields","invokeJson","setInvokeJson","activeJobId","setActiveJobId","invokeMutation","useInvokeYamlWorkflow","activitySteps","jobComplete","useYamlActivityEvents","skeleton","buildSkeleton","jobs","completedId","timer","handleInvoke","data","handleOpenSidebar","resolvedPrompt","deterministicOutput","deterministicInput","execResult","jsonMatch","triggerEvent","Play","STEPS","derivePhase","childStart","childId","isDeterministic","activityTypes","RouterProgressTracker","verifyRunId","phase","stepNum","isActive","Link","VerifyPanel","workflowName","onGoToDeploy","submitQuery","useSubmitMcpQueryRouted","testPrompt","setTestPrompt","promptInitialized","setPromptInitialized","setVerifyRunId","verifyExecution","verifyResult","verifyStatus","verifyData","verifyDiscovery","usedDeterministic","isRunning","handleSubmit","res","StatusBadge","EscalationBanner","escalation","onRetryTriage","isRetrying","navigate","useNavigate","isResolved","resolverPayload","wasTriaged","escalationPayload","originalDiagnosis","McpQueryDetailPage","d","PageHeader"],"mappings":"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"}