@agimon-ai/doompi-workflow 0.0.1-alpha.72 → 0.0.1-alpha.74

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 (352) hide show
  1. package/LICENSE +4 -2
  2. package/README.md +8 -5
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -1
  4. package/dist/api-contracts.cjs +7 -1
  5. package/dist/api-contracts.mjs +2 -1
  6. package/dist/extensions/pi.cjs +62 -1
  7. package/dist/extensions/pi.cjs.map +1 -1
  8. package/dist/extensions/pi.d.cts +3 -3
  9. package/dist/extensions/pi.d.cts.map +1 -1
  10. package/dist/extensions/pi.d.mts +3 -3
  11. package/dist/extensions/pi.d.mts.map +1 -1
  12. package/dist/extensions/pi.mjs +57 -1
  13. package/dist/extensions/pi.mjs.map +1 -1
  14. package/dist/extensions/server.cjs +95 -1
  15. package/dist/extensions/server.cjs.map +1 -1
  16. package/dist/extensions/server.d.cts +3 -3
  17. package/dist/extensions/server.d.cts.map +1 -1
  18. package/dist/extensions/server.d.mts +3 -3
  19. package/dist/extensions/server.d.mts.map +1 -1
  20. package/dist/extensions/server.mjs +90 -1
  21. package/dist/extensions/server.mjs.map +1 -1
  22. package/dist/extensions/web.mjs +3219 -0
  23. package/dist/extensions/web.mjs.map +1 -0
  24. package/dist/index.cjs +4 -1
  25. package/dist/index.mjs +2 -1
  26. package/dist/src/constants/workflow.cjs +31 -1
  27. package/dist/src/constants/workflow.cjs.map +1 -1
  28. package/dist/src/constants/workflow.mjs +20 -1
  29. package/dist/src/constants/workflow.mjs.map +1 -1
  30. package/dist/src/extensions/(backend)/_lib/index.server.cjs +12 -0
  31. package/dist/src/extensions/(backend)/_lib/index.server.cjs.map +1 -0
  32. package/dist/src/extensions/(backend)/_lib/index.server.mjs +12 -0
  33. package/dist/src/extensions/(backend)/_lib/index.server.mjs.map +1 -0
  34. package/dist/src/extensions/(backend)/api/workflow/route.server.cjs +7 -0
  35. package/dist/src/extensions/(backend)/api/workflow/route.server.cjs.map +1 -0
  36. package/dist/src/extensions/(backend)/api/workflow/route.server.mjs +8 -0
  37. package/dist/src/extensions/(backend)/api/workflow/route.server.mjs.map +1 -0
  38. package/dist/src/extensions/(backend)/channel/workflow-catalog.server.cjs +7 -0
  39. package/dist/src/extensions/(backend)/channel/workflow-catalog.server.cjs.map +1 -0
  40. package/dist/src/extensions/(backend)/channel/workflow-catalog.server.mjs +8 -0
  41. package/dist/src/extensions/(backend)/channel/workflow-catalog.server.mjs.map +1 -0
  42. package/dist/src/extensions/(backend)/channel/workflows.server.cjs +7 -0
  43. package/dist/src/extensions/(backend)/channel/workflows.server.cjs.map +1 -0
  44. package/dist/src/extensions/(backend)/channel/workflows.server.mjs +8 -0
  45. package/dist/src/extensions/(backend)/channel/workflows.server.mjs.map +1 -0
  46. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.cli.cjs +100 -0
  47. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.cli.cjs.map +1 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.cli.mjs +100 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.cli.mjs.map +1 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.server.cjs +11 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.server.cjs.map +1 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.server.mjs +11 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/index.server.mjs.map +1 -0
  54. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/workflowSkillsResource.cjs +12 -0
  55. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/workflowSkillsResource.cjs.map +1 -0
  56. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/workflowSkillsResource.mjs +12 -0
  57. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/workflowSkillsResource.mjs.map +1 -0
  58. package/dist/src/extensions/workspaces/sessions/(backend)/api/workflow/route.server.cjs +6 -0
  59. package/dist/src/extensions/workspaces/sessions/(backend)/api/workflow/route.server.cjs.map +1 -0
  60. package/dist/src/extensions/workspaces/sessions/(backend)/api/workflow/route.server.mjs +7 -0
  61. package/dist/src/extensions/workspaces/sessions/(backend)/api/workflow/route.server.mjs.map +1 -0
  62. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.cli.cjs +6 -0
  63. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.cli.cjs.map +1 -0
  64. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.cli.mjs +7 -0
  65. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.cli.mjs.map +1 -0
  66. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.server.cjs +6 -0
  67. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.server.cjs.map +1 -0
  68. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.server.mjs +7 -0
  69. package/dist/src/extensions/workspaces/sessions/(backend)/command/workflow-launch.server.mjs.map +1 -0
  70. package/dist/src/extensions/workspaces/sessions/(backend)/hook/resources-discover.cli.cjs +6 -0
  71. package/dist/src/extensions/workspaces/sessions/(backend)/hook/resources-discover.cli.cjs.map +1 -0
  72. package/dist/src/extensions/workspaces/sessions/(backend)/hook/resources-discover.cli.mjs +7 -0
  73. package/dist/src/extensions/workspaces/sessions/(backend)/hook/resources-discover.cli.mjs.map +1 -0
  74. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +6 -0
  75. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
  76. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +7 -0
  77. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
  78. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs +6 -0
  79. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs.map +1 -0
  80. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs +7 -0
  81. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs.map +1 -0
  82. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.cjs +6 -0
  83. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.cjs.map +1 -0
  84. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.mjs +7 -0
  85. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.mjs.map +1 -0
  86. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-author-workflow.server.cjs +6 -0
  87. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-author-workflow.server.cjs.map +1 -0
  88. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-author-workflow.server.mjs +7 -0
  89. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-author-workflow.server.mjs.map +1 -0
  90. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-workflow.server.cjs +6 -0
  91. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-workflow.server.cjs.map +1 -0
  92. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-workflow.server.mjs +7 -0
  93. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-workflow.server.mjs.map +1 -0
  94. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-recovery.server.cjs +6 -0
  95. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-recovery.server.cjs.map +1 -0
  96. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-recovery.server.mjs +7 -0
  97. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-recovery.server.mjs.map +1 -0
  98. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-skills.cli.cjs +7 -0
  99. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-skills.cli.cjs.map +1 -0
  100. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-skills.cli.mjs +8 -0
  101. package/dist/src/extensions/workspaces/sessions/(backend)/resource/workflow-skills.cli.mjs.map +1 -0
  102. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +15 -0
  103. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
  104. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +16 -0
  105. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
  106. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +17 -0
  107. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
  108. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +18 -0
  109. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
  110. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-panel.cli.cjs +6 -0
  111. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-panel.cli.cjs.map +1 -0
  112. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-panel.cli.mjs +7 -0
  113. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-panel.cli.mjs.map +1 -0
  114. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-view-close.cli.cjs +6 -0
  115. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-view-close.cli.cjs.map +1 -0
  116. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-view-close.cli.mjs +7 -0
  117. package/dist/src/extensions/workspaces/sessions/(backend)/shortcut/workflow-view-close.cli.mjs.map +1 -0
  118. package/dist/src/extensions/workspaces/sessions/(backend)/tool/launch-workflow.server.cjs +6 -0
  119. package/dist/src/extensions/workspaces/sessions/(backend)/tool/launch-workflow.server.cjs.map +1 -0
  120. package/dist/src/extensions/workspaces/sessions/(backend)/tool/launch-workflow.server.mjs +7 -0
  121. package/dist/src/extensions/workspaces/sessions/(backend)/tool/launch-workflow.server.mjs.map +1 -0
  122. package/dist/src/extensions/workspaces/sessions/(backend)/tool/list-workflows.server.cjs +6 -0
  123. package/dist/src/extensions/workspaces/sessions/(backend)/tool/list-workflows.server.cjs.map +1 -0
  124. package/dist/src/extensions/workspaces/sessions/(backend)/tool/list-workflows.server.mjs +7 -0
  125. package/dist/src/extensions/workspaces/sessions/(backend)/tool/list-workflows.server.mjs.map +1 -0
  126. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow-run.server.cjs +6 -0
  127. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow-run.server.cjs.map +1 -0
  128. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow-run.server.mjs +7 -0
  129. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow-run.server.mjs.map +1 -0
  130. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow.cli.cjs +6 -0
  131. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow.cli.cjs.map +1 -0
  132. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow.cli.mjs +7 -0
  133. package/dist/src/extensions/workspaces/sessions/(backend)/tool/workflow.cli.mjs.map +1 -0
  134. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.cli.cjs +6 -0
  135. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.cli.cjs.map +1 -0
  136. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.cli.mjs +7 -0
  137. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.cli.mjs.map +1 -0
  138. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.server.cjs +6 -0
  139. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.server.cjs.map +1 -0
  140. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.server.mjs +7 -0
  141. package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/workflow.server.mjs.map +1 -0
  142. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowFinishedRenderer.cjs +50 -0
  143. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowFinishedRenderer.cjs.map +1 -0
  144. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowFinishedRenderer.mjs +47 -0
  145. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowFinishedRenderer.mjs.map +1 -0
  146. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowStepRenderer.cjs +36 -0
  147. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowStepRenderer.cjs.map +1 -0
  148. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowStepRenderer.mjs +35 -0
  149. package/dist/src/extensions/workspaces/sessions/(frontend)/message/_lib/workflowStepRenderer.mjs.map +1 -0
  150. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-finished.cli.cjs +7 -0
  151. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-finished.cli.cjs.map +1 -0
  152. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-finished.cli.mjs +8 -0
  153. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-finished.cli.mjs.map +1 -0
  154. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-step.cli.cjs +7 -0
  155. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-step.cli.cjs.map +1 -0
  156. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-step.cli.mjs +8 -0
  157. package/dist/src/extensions/workspaces/sessions/(frontend)/message/workflow-step.cli.mjs.map +1 -0
  158. package/dist/src/schemas/apiContracts.cjs +329 -1
  159. package/dist/src/schemas/apiContracts.cjs.map +1 -1
  160. package/dist/src/schemas/apiContracts.mjs +326 -1
  161. package/dist/src/schemas/apiContracts.mjs.map +1 -1
  162. package/dist/src/schemas/workflowPi.cjs +76 -1
  163. package/dist/src/schemas/workflowPi.cjs.map +1 -1
  164. package/dist/src/schemas/workflowPi.mjs +73 -1
  165. package/dist/src/schemas/workflowPi.mjs.map +1 -1
  166. package/dist/src/services/backgroundWork/index.cjs +60 -1
  167. package/dist/src/services/backgroundWork/index.cjs.map +1 -1
  168. package/dist/src/services/backgroundWork/index.mjs +60 -1
  169. package/dist/src/services/backgroundWork/index.mjs.map +1 -1
  170. package/dist/src/services/piToolBridge/index.cjs +204 -10
  171. package/dist/src/services/piToolBridge/index.cjs.map +1 -1
  172. package/dist/src/services/piToolBridge/index.mjs +194 -10
  173. package/dist/src/services/piToolBridge/index.mjs.map +1 -1
  174. package/dist/src/services/serverRuntime/index.cjs +341 -0
  175. package/dist/src/services/serverRuntime/index.cjs.map +1 -0
  176. package/dist/src/services/serverRuntime/index.mjs +341 -0
  177. package/dist/src/services/serverRuntime/index.mjs.map +1 -0
  178. package/dist/src/services/webWorkflowCatalog/index.cjs +52 -1
  179. package/dist/src/services/webWorkflowCatalog/index.cjs.map +1 -1
  180. package/dist/src/services/webWorkflowCatalog/index.mjs +51 -1
  181. package/dist/src/services/webWorkflowCatalog/index.mjs.map +1 -1
  182. package/dist/src/services/workflowCatalogChannel/index.cjs +74 -0
  183. package/dist/src/services/workflowCatalogChannel/index.cjs.map +1 -0
  184. package/dist/src/services/workflowCatalogChannel/index.mjs +74 -0
  185. package/dist/src/services/workflowCatalogChannel/index.mjs.map +1 -0
  186. package/dist/src/services/workflowCatalogDeps/index.cjs +24 -1
  187. package/dist/src/services/workflowCatalogDeps/index.cjs.map +1 -1
  188. package/dist/src/services/workflowCatalogDeps/index.mjs +24 -1
  189. package/dist/src/services/workflowCatalogDeps/index.mjs.map +1 -1
  190. package/dist/src/services/workflowExecution/index.cjs +204 -1
  191. package/dist/src/services/workflowExecution/index.cjs.map +1 -1
  192. package/dist/src/services/workflowExecution/index.mjs +199 -1
  193. package/dist/src/services/workflowExecution/index.mjs.map +1 -1
  194. package/dist/src/services/workflowFence/index.cjs +169 -1
  195. package/dist/src/services/workflowFence/index.cjs.map +1 -1
  196. package/dist/src/services/workflowFence/index.mjs +165 -1
  197. package/dist/src/services/workflowFence/index.mjs.map +1 -1
  198. package/dist/src/services/workflowHubApi/index.cjs +415 -0
  199. package/dist/src/services/workflowHubApi/index.cjs.map +1 -0
  200. package/dist/src/services/workflowHubApi/index.mjs +411 -0
  201. package/dist/src/services/workflowHubApi/index.mjs.map +1 -0
  202. package/dist/src/services/workflowLaunchCommand/index.cjs +120 -1
  203. package/dist/src/services/workflowLaunchCommand/index.cjs.map +1 -1
  204. package/dist/src/services/workflowLaunchCommand/index.mjs +117 -1
  205. package/dist/src/services/workflowLaunchCommand/index.mjs.map +1 -1
  206. package/dist/src/services/workflowLauncher/index.cjs +180 -1
  207. package/dist/src/services/workflowLauncher/index.cjs.map +1 -1
  208. package/dist/src/services/workflowLauncher/index.mjs +176 -1
  209. package/dist/src/services/workflowLauncher/index.mjs.map +1 -1
  210. package/dist/src/services/workflowNarration/index.cjs +18 -1
  211. package/dist/src/services/workflowNarration/index.cjs.map +1 -1
  212. package/dist/src/services/workflowNarration/index.mjs +18 -1
  213. package/dist/src/services/workflowNarration/index.mjs.map +1 -1
  214. package/dist/src/services/workflowResource/index.cjs +26 -1
  215. package/dist/src/services/workflowResource/index.cjs.map +1 -1
  216. package/dist/src/services/workflowResource/index.mjs +23 -1
  217. package/dist/src/services/workflowResource/index.mjs.map +1 -1
  218. package/dist/src/services/workflowRuns/index.cjs +332 -2
  219. package/dist/src/services/workflowRuns/index.cjs.map +1 -1
  220. package/dist/src/services/workflowRuns/index.mjs +318 -2
  221. package/dist/src/services/workflowRuns/index.mjs.map +1 -1
  222. package/dist/src/services/workflowTerminal/index.cjs +68 -1
  223. package/dist/src/services/workflowTerminal/index.cjs.map +1 -1
  224. package/dist/src/services/workflowTerminal/index.mjs +68 -1
  225. package/dist/src/services/workflowTerminal/index.mjs.map +1 -1
  226. package/dist/src/services/workflowTools/index.cjs +221 -0
  227. package/dist/src/services/workflowTools/index.cjs.map +1 -0
  228. package/dist/src/services/workflowTools/index.mjs +221 -0
  229. package/dist/src/services/workflowTools/index.mjs.map +1 -0
  230. package/dist/src/services/workflowWatcher/index.cjs +77 -1
  231. package/dist/src/services/workflowWatcher/index.cjs.map +1 -1
  232. package/dist/src/services/workflowWatcher/index.mjs +73 -1
  233. package/dist/src/services/workflowWatcher/index.mjs.map +1 -1
  234. package/dist/src/services/workflowsHubChannel/index.cjs +58 -0
  235. package/dist/src/services/workflowsHubChannel/index.cjs.map +1 -0
  236. package/dist/src/services/workflowsHubChannel/index.mjs +58 -0
  237. package/dist/src/services/workflowsHubChannel/index.mjs.map +1 -0
  238. package/dist/src/tui/leader.cjs +83 -1
  239. package/dist/src/tui/leader.cjs.map +1 -1
  240. package/dist/src/tui/leader.mjs +82 -1
  241. package/dist/src/tui/leader.mjs.map +1 -1
  242. package/dist/src/tui/workflow/doomOverlay.cjs +158 -1
  243. package/dist/src/tui/workflow/doomOverlay.cjs.map +1 -1
  244. package/dist/src/tui/workflow/doomOverlay.mjs +156 -1
  245. package/dist/src/tui/workflow/doomOverlay.mjs.map +1 -1
  246. package/dist/src/tui/workflow/overlayText.cjs +82 -1
  247. package/dist/src/tui/workflow/overlayText.cjs.map +1 -1
  248. package/dist/src/tui/workflow/overlayText.mjs +77 -1
  249. package/dist/src/tui/workflow/overlayText.mjs.map +1 -1
  250. package/dist/src/tui/workflow/rendering.cjs +21 -1
  251. package/dist/src/tui/workflow/rendering.cjs.map +1 -1
  252. package/dist/src/tui/workflow/rendering.mjs +19 -1
  253. package/dist/src/tui/workflow/rendering.mjs.map +1 -1
  254. package/dist/src/tui/workflow/workflowCatalog.cjs +335 -1
  255. package/dist/src/tui/workflow/workflowCatalog.cjs.map +1 -1
  256. package/dist/src/tui/workflow/workflowCatalog.mjs +332 -1
  257. package/dist/src/tui/workflow/workflowCatalog.mjs.map +1 -1
  258. package/dist/src/tui/workflow/workflowFinishedMessage.cjs +49 -2
  259. package/dist/src/tui/workflow/workflowFinishedMessage.cjs.map +1 -1
  260. package/dist/src/tui/workflow/workflowFinishedMessage.mjs +46 -2
  261. package/dist/src/tui/workflow/workflowFinishedMessage.mjs.map +1 -1
  262. package/dist/src/tui/workflow/workflowInspector.cjs +275 -1
  263. package/dist/src/tui/workflow/workflowInspector.cjs.map +1 -1
  264. package/dist/src/tui/workflow/workflowInspector.mjs +275 -1
  265. package/dist/src/tui/workflow/workflowInspector.mjs.map +1 -1
  266. package/dist/src/tui/workflow/workflowOverlay.cjs +125 -1
  267. package/dist/src/tui/workflow/workflowOverlay.cjs.map +1 -1
  268. package/dist/src/tui/workflow/workflowOverlay.mjs +124 -1
  269. package/dist/src/tui/workflow/workflowOverlay.mjs.map +1 -1
  270. package/dist/src/tui/workflow/workflowPicker.cjs +137 -1
  271. package/dist/src/tui/workflow/workflowPicker.cjs.map +1 -1
  272. package/dist/src/tui/workflow/workflowPicker.mjs +135 -1
  273. package/dist/src/tui/workflow/workflowPicker.mjs.map +1 -1
  274. package/dist/src/tui/workflow/workflowProgressOverlay.cjs +196 -1
  275. package/dist/src/tui/workflow/workflowProgressOverlay.cjs.map +1 -1
  276. package/dist/src/tui/workflow/workflowProgressOverlay.mjs +191 -1
  277. package/dist/src/tui/workflow/workflowProgressOverlay.mjs.map +1 -1
  278. package/dist/src/tui/workflow/workflowPrompt.cjs +141 -1
  279. package/dist/src/tui/workflow/workflowPrompt.cjs.map +1 -1
  280. package/dist/src/tui/workflow/workflowPrompt.mjs +138 -1
  281. package/dist/src/tui/workflow/workflowPrompt.mjs.map +1 -1
  282. package/dist/src/tui/workflow/workflowRunPanel.cjs +94 -1
  283. package/dist/src/tui/workflow/workflowRunPanel.cjs.map +1 -1
  284. package/dist/src/tui/workflow/workflowRunPanel.mjs +93 -1
  285. package/dist/src/tui/workflow/workflowRunPanel.mjs.map +1 -1
  286. package/dist/src/tui/workflow/workflowStatusRow.cjs +19 -1
  287. package/dist/src/tui/workflow/workflowStatusRow.cjs.map +1 -1
  288. package/dist/src/tui/workflow/workflowStatusRow.mjs +19 -1
  289. package/dist/src/tui/workflow/workflowStatusRow.mjs.map +1 -1
  290. package/dist/src/tui/workflow/workflowStepMessage.cjs +31 -1
  291. package/dist/src/tui/workflow/workflowStepMessage.cjs.map +1 -1
  292. package/dist/src/tui/workflow/workflowStepMessage.mjs +30 -1
  293. package/dist/src/tui/workflow/workflowStepMessage.mjs.map +1 -1
  294. package/dist/src/tui/workflow/workflowToolRender.cjs +490 -6
  295. package/dist/src/tui/workflow/workflowToolRender.cjs.map +1 -1
  296. package/dist/src/tui/workflow/workflowToolRender.mjs +489 -6
  297. package/dist/src/tui/workflow/workflowToolRender.mjs.map +1 -1
  298. package/dist/src/tui/workflowRuntime.cjs +1932 -7
  299. package/dist/src/tui/workflowRuntime.cjs.map +1 -1
  300. package/dist/src/tui/workflowRuntime.mjs +1928 -7
  301. package/dist/src/tui/workflowRuntime.mjs.map +1 -1
  302. package/dist/src/types/apiRoutes.cjs +82 -0
  303. package/dist/src/types/apiRoutes.cjs.map +1 -0
  304. package/dist/src/types/apiRoutes.mjs +80 -0
  305. package/dist/src/types/apiRoutes.mjs.map +1 -0
  306. package/dist/src/types/webWorkflowTerminal.cjs +22 -1
  307. package/dist/src/types/webWorkflowTerminal.cjs.map +1 -1
  308. package/dist/src/types/webWorkflowTerminal.mjs +21 -1
  309. package/dist/src/types/webWorkflowTerminal.mjs.map +1 -1
  310. package/dist/src/types/webWorkflows.cjs +7 -1
  311. package/dist/src/types/webWorkflows.cjs.map +1 -1
  312. package/dist/src/types/webWorkflows.mjs +6 -1
  313. package/dist/src/types/webWorkflows.mjs.map +1 -1
  314. package/package.json +28 -27
  315. package/src/types/webWorkflowTerminal.ts +7 -10
  316. package/dist/src/controllers/serverRuntime.cjs +0 -2
  317. package/dist/src/controllers/serverRuntime.cjs.map +0 -1
  318. package/dist/src/controllers/serverRuntime.mjs +0 -2
  319. package/dist/src/controllers/serverRuntime.mjs.map +0 -1
  320. package/dist/src/controllers/workflowCatalogChannel.cjs +0 -2
  321. package/dist/src/controllers/workflowCatalogChannel.cjs.map +0 -1
  322. package/dist/src/controllers/workflowCatalogChannel.mjs +0 -2
  323. package/dist/src/controllers/workflowCatalogChannel.mjs.map +0 -1
  324. package/dist/src/controllers/workflowHubApi.cjs +0 -2
  325. package/dist/src/controllers/workflowHubApi.cjs.map +0 -1
  326. package/dist/src/controllers/workflowHubApi.mjs +0 -2
  327. package/dist/src/controllers/workflowHubApi.mjs.map +0 -1
  328. package/dist/src/controllers/workflowsHubChannel.cjs +0 -2
  329. package/dist/src/controllers/workflowsHubChannel.cjs.map +0 -1
  330. package/dist/src/controllers/workflowsHubChannel.mjs +0 -2
  331. package/dist/src/controllers/workflowsHubChannel.mjs.map +0 -1
  332. package/dist/src/tools/workflowTools.cjs +0 -5
  333. package/dist/src/tools/workflowTools.cjs.map +0 -1
  334. package/dist/src/tools/workflowTools.mjs +0 -5
  335. package/dist/src/tools/workflowTools.mjs.map +0 -1
  336. package/src/extensions/web.ts +0 -80
  337. package/src/web/api/terminalApi.ts +0 -207
  338. package/src/web/components/ArtifactsPane.tsx +0 -451
  339. package/src/web/components/LaunchWorkflowDialog.tsx +0 -259
  340. package/src/web/components/StepTerminalPanel.tsx +0 -243
  341. package/src/web/components/WorkflowCatalogDrawer.tsx +0 -229
  342. package/src/web/components/WorkflowToolMessage.tsx +0 -55
  343. package/src/web/components/WorkflowsActivitySection.tsx +0 -155
  344. package/src/web/components/WorkflowsPanel.tsx +0 -750
  345. package/src/web/lib/launchLine.ts +0 -66
  346. package/src/web/lib/runDuration.ts +0 -15
  347. package/src/web/lib/workflowActivity.ts +0 -102
  348. package/src/web/lib/workflowToolRender.ts +0 -585
  349. package/src/web/stores/catalogStore.ts +0 -123
  350. package/src/web/stores/workflowsStore.ts +0 -91
  351. package/src/web/tsconfig.json +0 -22
  352. /package/{src/web/LICENSE → LICENSE.web} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"workflowToolRender.cjs","names":["DoomToolResult","DoomToolCall","renderToolHeading"],"sources":["../../../../src/tui/workflow/workflowToolRender.ts"],"sourcesContent":["import { DoomToolCall, DoomToolResult, renderToolHeading } from '@agimon-ai/doompi-ui/toolChrome';\nimport type { Theme, ThemeColor } from '@earendil-works/pi-coding-agent';\nimport type { Component } from '@earendil-works/pi-tui';\n\nexport type WorkflowToolName = 'launch_workflow' | 'list_workflows' | 'workflow_run';\nexport type WorkflowPiToolName = WorkflowToolName;\n\ninterface WorkflowToolResultLike {\n content?: unknown;\n isError?: boolean;\n}\n\ninterface WorkflowToolRenderOptions {\n expanded: boolean;\n isError?: boolean;\n isPartial?: boolean;\n}\n\ntype JsonRecord = Record<string, unknown>;\n\ntype WorkflowState = {\n color: ThemeColor;\n glyph: string;\n label: string;\n};\n\ninterface WorkflowCatalogItem {\n description: string;\n name: string;\n path: string;\n tags: string[];\n}\n\ninterface WorkflowCatalog {\n directory?: string;\n page: number;\n pageSize: number;\n tags: Array<{ count: number; tag: string }>;\n total: number;\n totalPages: number;\n workflows: WorkflowCatalogItem[];\n}\n\ninterface EvidenceSection {\n body: string[];\n name: string;\n}\n\nconst COLLAPSED_CATALOG_ROWS = 6;\nconst COLLAPSED_DETAIL_LINES = 8;\nconst PARTIAL_DETAIL_LINES = 4;\n\nfunction asRecord(value: unknown): JsonRecord | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n return value as JsonRecord;\n}\n\nfunction inlineText(value: string): string {\n let normalized = '';\n for (const character of value) {\n const code = character.codePointAt(0) ?? 0;\n normalized += code <= 31 || code === 127 ? ' ' : character;\n }\n return normalized.replace(/\\s+/gu, ' ').trim();\n}\n\nfunction readString(record: JsonRecord | undefined, key: string): string | undefined {\n const value = record?.[key];\n if (typeof value !== 'string') return undefined;\n return inlineText(value) || undefined;\n}\n\nfunction readNumber(record: JsonRecord | undefined, key: string): number | undefined {\n const value = record?.[key];\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction readBoolean(record: JsonRecord | undefined, key: string): boolean | undefined {\n const value = record?.[key];\n return typeof value === 'boolean' ? value : undefined;\n}\n\nfunction readStringArray(record: JsonRecord | undefined, key: string): string[] {\n const value = record?.[key];\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === 'string');\n}\n\nfunction parseJsonRecord(text: string | undefined): JsonRecord | undefined {\n if (!text) return undefined;\n try {\n return asRecord(JSON.parse(text));\n } catch {\n return undefined;\n }\n}\n\nfunction textBlocks(result: WorkflowToolResultLike): string[] {\n if (!Array.isArray(result.content)) return [];\n return result.content.flatMap((item) => {\n const record = asRecord(item);\n return record?.type === 'text' && typeof record.text === 'string' ? [record.text] : [];\n });\n}\n\nfunction detailLines(result: WorkflowToolResultLike): string[] {\n return textBlocks(result)\n .flatMap((block) => block.split('\\n'))\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0);\n}\n\nfunction firstPayload(result: WorkflowToolResultLike): JsonRecord | undefined {\n return parseJsonRecord(textBlocks(result)[0]);\n}\n\nfunction plural(count: number, singular: string, pluralForm = `${singular}s`): string {\n return count === 1 ? singular : pluralForm;\n}\n\nfunction labelValue(label: string, value: string, theme: Theme): string {\n return `${theme.fg('dim', `${label} `)}${theme.fg('text', value)}`;\n}\n\nfunction targetScope(args: Record<string, unknown>): string | undefined {\n const runKey = readString(args, 'runKey');\n if (!runKey) return undefined;\n const workspace = readString(args, 'workspace');\n return workspace ? `${workspace}/${runKey}` : runKey;\n}\n\nfunction toolAction(toolName: WorkflowPiToolName, args: Record<string, unknown>): string {\n if (toolName === 'list_workflows') return 'list';\n if (toolName === 'launch_workflow') return 'launch';\n return readString(args, 'action') ?? 'run';\n}\n\nfunction toolTarget(toolName: WorkflowPiToolName, args: Record<string, unknown>): string | undefined {\n if (toolName === 'list_workflows') return readString(args, 'directory');\n if (toolName === 'launch_workflow') return readString(args, 'workflowPath');\n return targetScope(args);\n}\n\nfunction renderResult(lines: readonly string[], theme: Theme, expanded: boolean): Component {\n return new DoomToolResult(lines, theme, { wrap: expanded });\n}\n\nfunction hiddenDetailLine(hidden: number, theme: Theme): string {\n return theme.fg('dim', `… ${hidden} more · ctrl+o`);\n}\n\nfunction statusTimestamp(value: string): string {\n return value.replace('T', ' ').replace(/\\.\\d{3}Z$/, 'Z');\n}\n\nfunction workflowNameFromPath(path: string | undefined): string {\n if (!path) return 'workflow';\n const filename = path.split('/').at(-1) ?? path;\n return filename.replace(/\\.workflow\\.ya?ml$/u, '') || filename;\n}\n\nfunction callMetadata(toolName: WorkflowPiToolName, args: Record<string, unknown>, theme: Theme): string[] {\n const values: string[] = [];\n\n if (toolName === 'list_workflows') {\n const page = readNumber(args, 'page');\n const pageSize = readNumber(args, 'pageSize');\n if (page !== undefined) values.push(`page ${page}`);\n if (pageSize !== undefined) values.push(`${pageSize}/page`);\n if (readString(args, 'filter')) values.push('filtered');\n const tags = readStringArray(args, 'tags');\n if (tags.length > 0) values.push(`${tags.length} ${plural(tags.length, 'tag')}`);\n } else if (toolName === 'launch_workflow') {\n const job = readString(args, 'job');\n const runner = readString(args, 'runner');\n const workspace = readString(args, 'workspace');\n const inputCount = Object.keys(asRecord(args.inputs) ?? {}).length;\n const environmentCount = Object.keys(asRecord(args.env) ?? {}).length;\n if (workspace) values.push(`workspace ${workspace}`);\n if (job) values.push(`job ${job}`);\n if (runner) values.push(`runner ${runner}`);\n if (readBoolean(args, 'dryRun')) values.push('dry run');\n if (readString(args, 'prompt')) values.push('with prompt');\n if (inputCount > 0) values.push(`${inputCount} ${plural(inputCount, 'input')}`);\n if (environmentCount > 0) values.push(`${environmentCount} env`);\n } else {\n const expectedRunId = readString(args, 'expectedRunId');\n if (expectedRunId) values.push('generation checked');\n if (readString(args, 'reason')) values.push('with reason');\n if (readBoolean(args, 'dryRun')) values.push('dry run');\n if (readString(args, 'job')) values.push('job override');\n if (readString(args, 'runner')) values.push('runner override');\n }\n\n return values.map((value) => theme.fg('dim', value));\n}\n\nexport function renderWorkflowToolCall(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n theme: Theme,\n): Component {\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const metadata = callMetadata(toolName, args, theme);\n const purpose = [theme.bold(action), target ? theme.fg('muted', target) : undefined, ...metadata]\n .filter((part): part is string => !!part)\n .join(theme.fg('dim', ' · '));\n return new DoomToolCall(renderToolHeading('workflow', purpose, theme));\n}\n\nfunction parseCatalog(payload: JsonRecord | undefined): WorkflowCatalog | undefined {\n if (!Array.isArray(payload?.workflows)) return undefined;\n\n const workflows = payload.workflows.flatMap((value) => {\n const record = asRecord(value);\n const path = readString(record, 'path');\n if (!record || !path) return [];\n return [\n {\n description: readString(record, 'description') ?? '',\n name: readString(record, 'name') ?? '',\n path,\n tags: readStringArray(record, 'tags'),\n },\n ];\n });\n const tags = Array.isArray(payload.tags)\n ? payload.tags.flatMap((value) => {\n const record = asRecord(value);\n const tag = readString(record, 'tag');\n const count = readNumber(record, 'count');\n return tag && count !== undefined ? [{ count, tag }] : [];\n })\n : [];\n\n return {\n directory: readString(payload, 'directory'),\n page: readNumber(payload, 'page') ?? 1,\n pageSize: readNumber(payload, 'pageSize') ?? workflows.length,\n tags,\n total: readNumber(payload, 'total') ?? workflows.length,\n totalPages: readNumber(payload, 'totalPages') ?? (workflows.length > 0 ? 1 : 0),\n workflows,\n };\n}\n\nfunction catalogItemLines(item: WorkflowCatalogItem, expanded: boolean, theme: Theme): string[] {\n const name = item.name || workflowNameFromPath(item.path);\n const lines = [`${theme.fg('accent', '›')} ${theme.bold(name)} ${theme.fg('muted', `· ${item.path}`)}`];\n if (!expanded) return lines;\n if (item.description) lines.push(` ${theme.fg('text', item.description)}`);\n if (item.tags.length > 0) lines.push(` ${labelValue('tags', item.tags.join(', '), theme)}`);\n return lines;\n}\n\nfunction renderCatalogResult(\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component | undefined {\n const catalog = parseCatalog(firstPayload(result));\n if (!catalog) return undefined;\n\n const pageLabel = `page ${catalog.page}/${catalog.totalPages}`;\n const summary = `${theme.fg(catalog.total > 0 ? 'success' : 'muted', catalog.total > 0 ? '✓' : '○')} ${theme.bold(\n `${catalog.total} ${plural(catalog.total, 'workflow')}`,\n )} ${theme.fg('dim', `· ${pageLabel}`)}`;\n const shown = options.expanded ? catalog.workflows : catalog.workflows.slice(0, COLLAPSED_CATALOG_ROWS);\n const lines = [summary, ...shown.flatMap((item) => catalogItemLines(item, options.expanded, theme))];\n const hidden = catalog.workflows.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n\n if (options.expanded) {\n if (catalog.tags.length > 0) {\n const tags = catalog.tags.map(({ count, tag }) => `${tag} (${count})`).join(', ');\n lines.push(labelValue('available tags', tags, theme));\n }\n if (catalog.directory) lines.push(labelValue('directory', catalog.directory, theme));\n lines.push(labelValue('page size', String(catalog.pageSize), theme));\n }\n\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction readWorkflowState(record: JsonRecord): WorkflowState {\n const stage = readString(record, 'effectiveStage') ?? readString(record, 'stage') ?? 'unknown';\n const outcome = readString(record, 'effectiveOutcome') ?? readString(record, 'outcome');\n const executionState = readString(record, 'executionState');\n\n if (outcome === 'interrupted') return { color: 'warning', glyph: '!', label: 'interrupted' };\n if (stage === 'error' || outcome === 'failed') return { color: 'error', glyph: '✗', label: 'failed' };\n if (stage === 'completed' && outcome === 'skipped') return { color: 'muted', glyph: '○', label: 'skipped' };\n if (stage === 'completed') return { color: 'success', glyph: '✓', label: 'completed' };\n if (executionState === 'paused') return { color: 'warning', glyph: 'Ⅱ', label: 'paused' };\n if (executionState === 'pause_requested') return { color: 'warning', glyph: '◐', label: 'pause requested' };\n if (executionState === 'resume_requested') return { color: 'warning', glyph: '◐', label: 'resume requested' };\n if (stage === 'running') return { color: 'accent', glyph: '◐', label: 'running' };\n return { color: 'muted', glyph: '○', label: stage };\n}\n\nfunction recordScope(record: JsonRecord): string {\n const runKey = readString(record, 'runKey') ?? 'unknown run';\n const workspace = readString(record, 'workspace');\n return workspace ? `${workspace}/${runKey}` : runKey;\n}\n\nfunction currentActivity(record: JsonRecord, theme: Theme): string | undefined {\n const cursor = asRecord(record.executionCursor);\n const job = readString(cursor, 'job') ?? readString(record, 'job');\n const step = readString(cursor, 'stepName');\n const phase = readString(cursor, 'phase');\n if (!job && !step && !phase) return undefined;\n const context = job ?? phase ?? 'workflow';\n return ` ${theme.fg('muted', `[${context}]`)} ${theme.fg('text', step ?? phase ?? 'running')}`;\n}\n\nfunction launcherLabel(record: JsonRecord): string | undefined {\n const launcher = asRecord(record.launcher);\n const type = readString(launcher, 'type');\n if (!type) return undefined;\n const identity = readString(launcher, 'sessionName') ?? readString(launcher, 'workspaceId');\n return identity ? `${type} ${identity}` : type;\n}\n\nfunction workflowRecordLines(record: JsonRecord, expanded: boolean, theme: Theme): string[] | undefined {\n const runKey = readString(record, 'runKey');\n const stage = readString(record, 'stage');\n if (!runKey || !stage) return undefined;\n\n const state = readWorkflowState(record);\n const displayName = readString(record, 'displayName') ?? runKey;\n const heading = `${theme.fg(state.color, state.glyph)} ${theme.bold(displayName)} ${theme.fg(\n 'dim',\n `· ${recordScope(record)} ·`,\n )} ${theme.fg(state.color, state.label)}`;\n const lines = [heading];\n const activity = currentActivity(record, theme);\n if (activity) lines.push(activity);\n\n const failure = readString(record, 'errorMessage') ?? readString(record, 'failureReason');\n if (failure) lines.push(`${theme.fg('error', 'error')} ${theme.fg('text', failure)}`);\n const staleReason = readString(record, 'staleReason');\n if (staleReason) lines.push(`${theme.fg('warning', 'stale')} ${theme.fg('text', staleReason)}`);\n\n const conciseMetadata = [\n readString(record, 'runner') ? `runner ${readString(record, 'runner')}` : undefined,\n readBoolean(record, 'dryRun') ? 'dry run' : undefined,\n readNumber(record, 'exitCode') !== undefined ? `exit ${readNumber(record, 'exitCode')}` : undefined,\n readString(record, 'startedAt') ? `started ${statusTimestamp(readString(record, 'startedAt') ?? '')}` : undefined,\n ].filter((value): value is string => !!value);\n if (conciseMetadata.length > 0) lines.push(theme.fg('dim', conciseMetadata.join(' · ')));\n\n if (!expanded) return lines;\n\n const detailedValues: Array<[string, string | undefined]> = [\n ['workflow', readString(record, 'workflowPath')],\n ['workflow id', readString(record, 'workflowId')],\n ['run id', readString(record, 'runId')],\n ['launcher', launcherLabel(record)],\n ['job', readString(record, 'job')],\n ['outcome', readString(record, 'effectiveOutcome') ?? readString(record, 'outcome')],\n [\n 'finished',\n readString(record, 'finishedAt') ? statusTimestamp(readString(record, 'finishedAt') ?? '') : undefined,\n ],\n ['pid', readNumber(record, 'pid')?.toString()],\n ['repair', readString(record, 'activeRepairId') ? `#${readString(record, 'activeRepairId')}` : undefined],\n ['worktree', readString(record, 'worktreeBranch') ?? readString(record, 'worktreePath')],\n ];\n for (const [label, value] of detailedValues) {\n if (value) lines.push(labelValue(label, value, theme));\n }\n return lines;\n}\n\nfunction renderStatusResult(\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component | undefined {\n const payload = firstPayload(result);\n if (!payload) return undefined;\n const lines = workflowRecordLines(payload, options.expanded, theme);\n return lines ? renderResult(lines, theme, options.expanded) : undefined;\n}\n\nfunction nestedRequestedAt(payload: JsonRecord | undefined): string | undefined {\n return readString(asRecord(payload?.request), 'requestedAt') ?? readString(payload, 'requestedAt');\n}\n\nfunction renderControlResult(\n action: string,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const payload = firstPayload(result);\n const scope = targetScope(args) ?? readString(payload, 'runKey') ?? 'workflow';\n const payloadWorkspace = readString(payload, 'workspace');\n const resolvedScope = payloadWorkspace && !scope.includes('/') ? `${payloadWorkspace}/${scope}` : scope;\n const lines = [\n `${theme.fg('warning', '◐')} ${theme.bold(`${action} requested`)} ${theme.fg('dim', `· ${resolvedScope}`)}`,\n ];\n const requestedAt = nestedRequestedAt(payload);\n if (requestedAt) lines.push(labelValue('requested', statusTimestamp(requestedAt), theme));\n if (options.expanded) lines.push(theme.fg('dim', 'verify the transition with workflow_run status'));\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction matchLine(text: string, pattern: RegExp): string | undefined {\n return text.match(pattern)?.[1]?.trim();\n}\n\nfunction launchSummary(\n text: string,\n args: Record<string, unknown>,\n): { name: string; scope: string; state: WorkflowState } {\n const startedName = matchLine(text, /^Started (.+) in workspace .+\\.$/mu);\n const workspace = matchLine(text, /^Started .+ in workspace (.+)\\.$/mu) ?? readString(args, 'workspace');\n const runKey = matchLine(text, /^Run key:\\s*(.+)$/mu);\n const path = readString(args, 'workflowPath');\n const name = startedName ?? workflowNameFromPath(path);\n const scope = runKey ? (workspace ? `${workspace}/${runKey}` : runKey) : (workspace ?? path ?? 'workflow');\n\n if (/Workflow completed successfully/iu.test(text)) {\n return { name, scope, state: { color: 'success', glyph: '✓', label: 'completed' } };\n }\n if (/Workflow skipped/iu.test(text)) {\n return { name, scope, state: { color: 'muted', glyph: '○', label: 'skipped' } };\n }\n if (/no run was registered/iu.test(text)) {\n return { name, scope, state: { color: 'warning', glyph: '◐', label: 'starting · run key pending' } };\n }\n return { name, scope, state: { color: 'accent', glyph: '◐', label: runKey ? 'started' : 'launch accepted' } };\n}\n\nfunction renderLaunchResult(\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const blocks = textBlocks(result);\n const text = blocks.join('\\n');\n const summary = launchSummary(text, args);\n const lines = [\n `${theme.fg(summary.state.color, summary.state.glyph)} ${theme.bold(summary.name)} ${theme.fg(\n 'dim',\n `· ${summary.scope} ·`,\n )} ${theme.fg(summary.state.color, summary.state.label)}`,\n ];\n const metadata = [\n readString(args, 'job') ? `job ${readString(args, 'job')}` : undefined,\n readString(args, 'runner') ? `runner ${readString(args, 'runner')}` : undefined,\n readBoolean(args, 'dryRun') ? 'dry run' : undefined,\n ].filter((value): value is string => !!value);\n if (metadata.length > 0) lines.push(theme.fg('dim', metadata.join(' · ')));\n if (options.expanded) {\n const details = detailLines(result).filter((line) => !line.startsWith('Next steps for the agent:'));\n if (details.length > 0) lines.push(...details);\n }\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction splitEvidence(text: string): EvidenceSection[] {\n const sections: EvidenceSection[] = [];\n let current: EvidenceSection | undefined;\n for (const line of text.split('\\n')) {\n const match = line.match(/^--- (.+) ---$/u);\n if (match?.[1]) {\n current = { body: [], name: match[1] };\n sections.push(current);\n continue;\n }\n current?.body.push(line);\n }\n return sections;\n}\n\nfunction recoveryRecord(sections: EvidenceSection[]): JsonRecord | undefined {\n const runSection = sections.find((section) => section.name === 'run.json');\n return parseJsonRecord(runSection?.body.join('\\n'));\n}\n\nfunction renderRecoveryEvidenceResult(\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const text = textBlocks(result).join('\\n');\n const sections = splitEvidence(text);\n const record = recoveryRecord(sections);\n const recordLines = record ? workflowRecordLines(record, options.expanded, theme) : undefined;\n const evidenceSections = sections.filter((section) => section.name !== 'run.json');\n const scope = targetScope(args) ?? 'workflow';\n const lines = recordLines ?? [\n `${theme.fg('success', '✓')} ${theme.bold('recovery evidence')} ${theme.fg('dim', `· ${scope}`)}`,\n ];\n const names = evidenceSections.map((section) => section.name);\n lines.push(\n names.length > 0\n ? labelValue('evidence', names.join(', '), theme)\n : theme.fg('muted', 'no durable evidence files recorded'),\n );\n\n if (options.expanded) {\n for (const section of evidenceSections) {\n lines.push(theme.bold(section.name), ...section.body.filter((line) => line.length > 0));\n }\n }\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderSimpleActionResult(\n action: string,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const scope = targetScope(args) ?? 'workflow';\n const actionLabel: Record<string, string> = {\n follow: 'following output',\n open: 'launcher opened',\n recover: readBoolean(args, 'dryRun') ? 'recovery dry run finished' : 'recovery accepted',\n tail: 'launcher output checked',\n };\n const state: WorkflowState =\n action === 'recover'\n ? { color: 'accent', glyph: '◐', label: actionLabel[action] ?? action }\n : { color: 'success', glyph: '✓', label: actionLabel[action] ?? action };\n const lines = [`${theme.fg(state.color, state.glyph)} ${theme.bold(state.label)} ${theme.fg('dim', `· ${scope}`)}`];\n const details = detailLines(result);\n if (action === 'tail') {\n const stageLine = details.find((line) => line.startsWith('Stage:'));\n const workflowLine = details.find((line) => line.startsWith('Workflow:'));\n if (workflowLine) lines.push(workflowLine);\n if (stageLine) lines.push(stageLine);\n }\n if (options.expanded && details.length > 0) lines.push(...details);\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderFailure(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const summary = `${theme.fg('error', '✗')} ${theme.bold(`${action} failed`)}${\n target ? theme.fg('dim', ` · ${target}`) : ''\n }`;\n const details = detailLines(result);\n const shown = options.expanded ? details : details.slice(0, COLLAPSED_DETAIL_LINES);\n const lines = [summary, ...(shown.length > 0 ? shown : [theme.fg('error', 'Unknown workflow error')])];\n const hidden = details.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderPartial(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const details = detailLines(result);\n const shown = details.slice(-PARTIAL_DETAIL_LINES);\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const summary = `${theme.fg('accent', '◐')} ${theme.bold(action)}${target ? theme.fg('dim', ` · ${target}`) : ''}`;\n const hidden = details.length - shown.length;\n const lines = [summary];\n if (hidden > 0) lines.push(theme.fg('dim', `… ${hidden} earlier`));\n lines.push(...shown);\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderFallback(result: WorkflowToolResultLike, options: WorkflowToolRenderOptions, theme: Theme): Component {\n const details = detailLines(result);\n if (details.length === 0) return renderResult([theme.fg('muted', 'No workflow output.')], theme, options.expanded);\n const shown = options.expanded ? details : details.slice(0, COLLAPSED_DETAIL_LINES);\n const lines = [...shown];\n const hidden = details.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n return renderResult(lines, theme, options.expanded);\n}\n\nexport function renderWorkflowToolResult(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n if (options.isPartial) return renderPartial(toolName, args, result, options, theme);\n if (options.isError === true || result.isError === true) {\n return renderFailure(toolName, args, result, options, theme);\n }\n\n if (toolName === 'list_workflows') {\n return renderCatalogResult(result, options, theme) ?? renderFallback(result, options, theme);\n }\n if (toolName === 'launch_workflow') return renderLaunchResult(args, result, options, theme);\n\n const action = readString(args, 'action');\n if (action === 'status') {\n return renderStatusResult(result, options, theme) ?? renderFallback(result, options, theme);\n }\n if (action === 'pause' || action === 'resume' || action === 'stop') {\n return renderControlResult(action, args, result, options, theme);\n }\n if (action === 'recovery-evidence') {\n return renderRecoveryEvidenceResult(args, result, options, theme);\n }\n if (action === 'follow' || action === 'open' || action === 'recover' || action === 'tail') {\n return renderSimpleActionResult(action, args, result, options, theme);\n }\n return renderFallback(result, options, theme);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"workflowToolRender.cjs","names":["DoomToolResult","DoomToolCall","renderToolHeading"],"sources":["../../../../src/tui/workflow/workflowToolRender.ts"],"sourcesContent":["import { DoomToolCall, DoomToolResult, renderToolHeading } from '@agimon-ai/doompi-ui/toolChrome';\nimport type { Theme, ThemeColor } from '@earendil-works/pi-coding-agent';\nimport type { Component } from '@earendil-works/pi-tui';\n\nexport type WorkflowToolName = 'launch_workflow' | 'list_workflows' | 'workflow_run';\nexport type WorkflowPiToolName = WorkflowToolName;\n\ninterface WorkflowToolResultLike {\n content?: unknown;\n isError?: boolean;\n}\n\ninterface WorkflowToolRenderOptions {\n expanded: boolean;\n isError?: boolean;\n isPartial?: boolean;\n}\n\ntype JsonRecord = Record<string, unknown>;\n\ntype WorkflowState = {\n color: ThemeColor;\n glyph: string;\n label: string;\n};\n\ninterface WorkflowCatalogItem {\n description: string;\n name: string;\n path: string;\n tags: string[];\n}\n\ninterface WorkflowCatalog {\n directory?: string;\n page: number;\n pageSize: number;\n tags: Array<{ count: number; tag: string }>;\n total: number;\n totalPages: number;\n workflows: WorkflowCatalogItem[];\n}\n\ninterface EvidenceSection {\n body: string[];\n name: string;\n}\n\nconst COLLAPSED_CATALOG_ROWS = 6;\nconst COLLAPSED_DETAIL_LINES = 8;\nconst PARTIAL_DETAIL_LINES = 4;\n\nfunction asRecord(value: unknown): JsonRecord | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n return value as JsonRecord;\n}\n\nfunction inlineText(value: string): string {\n let normalized = '';\n for (const character of value) {\n const code = character.codePointAt(0) ?? 0;\n normalized += code <= 31 || code === 127 ? ' ' : character;\n }\n return normalized.replace(/\\s+/gu, ' ').trim();\n}\n\nfunction readString(record: JsonRecord | undefined, key: string): string | undefined {\n const value = record?.[key];\n if (typeof value !== 'string') return undefined;\n return inlineText(value) || undefined;\n}\n\nfunction readNumber(record: JsonRecord | undefined, key: string): number | undefined {\n const value = record?.[key];\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction readBoolean(record: JsonRecord | undefined, key: string): boolean | undefined {\n const value = record?.[key];\n return typeof value === 'boolean' ? value : undefined;\n}\n\nfunction readStringArray(record: JsonRecord | undefined, key: string): string[] {\n const value = record?.[key];\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === 'string');\n}\n\nfunction parseJsonRecord(text: string | undefined): JsonRecord | undefined {\n if (!text) return undefined;\n try {\n return asRecord(JSON.parse(text));\n } catch {\n return undefined;\n }\n}\n\nfunction textBlocks(result: WorkflowToolResultLike): string[] {\n if (!Array.isArray(result.content)) return [];\n return result.content.flatMap((item) => {\n const record = asRecord(item);\n return record?.type === 'text' && typeof record.text === 'string' ? [record.text] : [];\n });\n}\n\nfunction detailLines(result: WorkflowToolResultLike): string[] {\n return textBlocks(result)\n .flatMap((block) => block.split('\\n'))\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0);\n}\n\nfunction firstPayload(result: WorkflowToolResultLike): JsonRecord | undefined {\n return parseJsonRecord(textBlocks(result)[0]);\n}\n\nfunction plural(count: number, singular: string, pluralForm = `${singular}s`): string {\n return count === 1 ? singular : pluralForm;\n}\n\nfunction labelValue(label: string, value: string, theme: Theme): string {\n return `${theme.fg('dim', `${label} `)}${theme.fg('text', value)}`;\n}\n\nfunction targetScope(args: Record<string, unknown>): string | undefined {\n const runKey = readString(args, 'runKey');\n if (!runKey) return undefined;\n const workspace = readString(args, 'workspace');\n return workspace ? `${workspace}/${runKey}` : runKey;\n}\n\nfunction toolAction(toolName: WorkflowPiToolName, args: Record<string, unknown>): string {\n if (toolName === 'list_workflows') return 'list';\n if (toolName === 'launch_workflow') return 'launch';\n return readString(args, 'action') ?? 'run';\n}\n\nfunction toolTarget(toolName: WorkflowPiToolName, args: Record<string, unknown>): string | undefined {\n if (toolName === 'list_workflows') return readString(args, 'directory');\n if (toolName === 'launch_workflow') return readString(args, 'workflowPath');\n return targetScope(args);\n}\n\nfunction renderResult(lines: readonly string[], theme: Theme, expanded: boolean): Component {\n return new DoomToolResult(lines, theme, { wrap: expanded });\n}\n\nfunction hiddenDetailLine(hidden: number, theme: Theme): string {\n return theme.fg('dim', `… ${hidden} more · ctrl+o`);\n}\n\nfunction statusTimestamp(value: string): string {\n return value.replace('T', ' ').replace(/\\.\\d{3}Z$/, 'Z');\n}\n\nfunction workflowNameFromPath(path: string | undefined): string {\n if (!path) return 'workflow';\n const filename = path.split('/').at(-1) ?? path;\n return filename.replace(/\\.workflow\\.ya?ml$/u, '') || filename;\n}\n\nfunction callMetadata(toolName: WorkflowPiToolName, args: Record<string, unknown>, theme: Theme): string[] {\n const values: string[] = [];\n\n if (toolName === 'list_workflows') {\n const page = readNumber(args, 'page');\n const pageSize = readNumber(args, 'pageSize');\n if (page !== undefined) values.push(`page ${page}`);\n if (pageSize !== undefined) values.push(`${pageSize}/page`);\n if (readString(args, 'filter')) values.push('filtered');\n const tags = readStringArray(args, 'tags');\n if (tags.length > 0) values.push(`${tags.length} ${plural(tags.length, 'tag')}`);\n } else if (toolName === 'launch_workflow') {\n const job = readString(args, 'job');\n const runner = readString(args, 'runner');\n const workspace = readString(args, 'workspace');\n const inputCount = Object.keys(asRecord(args.inputs) ?? {}).length;\n const environmentCount = Object.keys(asRecord(args.env) ?? {}).length;\n if (workspace) values.push(`workspace ${workspace}`);\n if (job) values.push(`job ${job}`);\n if (runner) values.push(`runner ${runner}`);\n if (readBoolean(args, 'dryRun')) values.push('dry run');\n if (readString(args, 'prompt')) values.push('with prompt');\n if (inputCount > 0) values.push(`${inputCount} ${plural(inputCount, 'input')}`);\n if (environmentCount > 0) values.push(`${environmentCount} env`);\n } else {\n const expectedRunId = readString(args, 'expectedRunId');\n if (expectedRunId) values.push('generation checked');\n if (readString(args, 'reason')) values.push('with reason');\n if (readBoolean(args, 'dryRun')) values.push('dry run');\n if (readString(args, 'job')) values.push('job override');\n if (readString(args, 'runner')) values.push('runner override');\n }\n\n return values.map((value) => theme.fg('dim', value));\n}\n\nexport function renderWorkflowToolCall(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n theme: Theme,\n): Component {\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const metadata = callMetadata(toolName, args, theme);\n const purpose = [theme.bold(action), target ? theme.fg('muted', target) : undefined, ...metadata]\n .filter((part): part is string => !!part)\n .join(theme.fg('dim', ' · '));\n return new DoomToolCall(renderToolHeading('workflow', purpose, theme));\n}\n\nfunction parseCatalog(payload: JsonRecord | undefined): WorkflowCatalog | undefined {\n if (!Array.isArray(payload?.workflows)) return undefined;\n\n const workflows = payload.workflows.flatMap((value) => {\n const record = asRecord(value);\n const path = readString(record, 'path');\n if (!record || !path) return [];\n return [\n {\n description: readString(record, 'description') ?? '',\n name: readString(record, 'name') ?? '',\n path,\n tags: readStringArray(record, 'tags'),\n },\n ];\n });\n const tags = Array.isArray(payload.tags)\n ? payload.tags.flatMap((value) => {\n const record = asRecord(value);\n const tag = readString(record, 'tag');\n const count = readNumber(record, 'count');\n return tag && count !== undefined ? [{ count, tag }] : [];\n })\n : [];\n\n return {\n directory: readString(payload, 'directory'),\n page: readNumber(payload, 'page') ?? 1,\n pageSize: readNumber(payload, 'pageSize') ?? workflows.length,\n tags,\n total: readNumber(payload, 'total') ?? workflows.length,\n totalPages: readNumber(payload, 'totalPages') ?? (workflows.length > 0 ? 1 : 0),\n workflows,\n };\n}\n\nfunction catalogItemLines(item: WorkflowCatalogItem, expanded: boolean, theme: Theme): string[] {\n const name = item.name || workflowNameFromPath(item.path);\n const lines = [`${theme.fg('accent', '›')} ${theme.bold(name)} ${theme.fg('muted', `· ${item.path}`)}`];\n if (!expanded) return lines;\n if (item.description) lines.push(` ${theme.fg('text', item.description)}`);\n if (item.tags.length > 0) lines.push(` ${labelValue('tags', item.tags.join(', '), theme)}`);\n return lines;\n}\n\nfunction renderCatalogResult(\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component | undefined {\n const catalog = parseCatalog(firstPayload(result));\n if (!catalog) return undefined;\n\n const pageLabel = `page ${catalog.page}/${catalog.totalPages}`;\n const summary = `${theme.fg(catalog.total > 0 ? 'success' : 'muted', catalog.total > 0 ? '✓' : '○')} ${theme.bold(\n `${catalog.total} ${plural(catalog.total, 'workflow')}`,\n )} ${theme.fg('dim', `· ${pageLabel}`)}`;\n const shown = options.expanded ? catalog.workflows : catalog.workflows.slice(0, COLLAPSED_CATALOG_ROWS);\n const lines = [summary, ...shown.flatMap((item) => catalogItemLines(item, options.expanded, theme))];\n const hidden = catalog.workflows.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n\n if (options.expanded) {\n if (catalog.tags.length > 0) {\n const tags = catalog.tags.map(({ count, tag }) => `${tag} (${count})`).join(', ');\n lines.push(labelValue('available tags', tags, theme));\n }\n if (catalog.directory) lines.push(labelValue('directory', catalog.directory, theme));\n lines.push(labelValue('page size', String(catalog.pageSize), theme));\n }\n\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction readWorkflowState(record: JsonRecord): WorkflowState {\n const stage = readString(record, 'effectiveStage') ?? readString(record, 'stage') ?? 'unknown';\n const outcome = readString(record, 'effectiveOutcome') ?? readString(record, 'outcome');\n const executionState = readString(record, 'executionState');\n\n if (outcome === 'interrupted') return { color: 'warning', glyph: '!', label: 'interrupted' };\n if (stage === 'error' || outcome === 'failed') return { color: 'error', glyph: '✗', label: 'failed' };\n if (stage === 'completed' && outcome === 'skipped') return { color: 'muted', glyph: '○', label: 'skipped' };\n if (stage === 'completed') return { color: 'success', glyph: '✓', label: 'completed' };\n if (executionState === 'paused') return { color: 'warning', glyph: 'Ⅱ', label: 'paused' };\n if (executionState === 'pause_requested') return { color: 'warning', glyph: '◐', label: 'pause requested' };\n if (executionState === 'resume_requested') return { color: 'warning', glyph: '◐', label: 'resume requested' };\n if (stage === 'running') return { color: 'accent', glyph: '◐', label: 'running' };\n return { color: 'muted', glyph: '○', label: stage };\n}\n\nfunction recordScope(record: JsonRecord): string {\n const runKey = readString(record, 'runKey') ?? 'unknown run';\n const workspace = readString(record, 'workspace');\n return workspace ? `${workspace}/${runKey}` : runKey;\n}\n\nfunction currentActivity(record: JsonRecord, theme: Theme): string | undefined {\n const cursor = asRecord(record.executionCursor);\n const job = readString(cursor, 'job') ?? readString(record, 'job');\n const step = readString(cursor, 'stepName');\n const phase = readString(cursor, 'phase');\n if (!job && !step && !phase) return undefined;\n const context = job ?? phase ?? 'workflow';\n return ` ${theme.fg('muted', `[${context}]`)} ${theme.fg('text', step ?? phase ?? 'running')}`;\n}\n\nfunction launcherLabel(record: JsonRecord): string | undefined {\n const launcher = asRecord(record.launcher);\n const type = readString(launcher, 'type');\n if (!type) return undefined;\n const identity = readString(launcher, 'sessionName') ?? readString(launcher, 'workspaceId');\n return identity ? `${type} ${identity}` : type;\n}\n\nfunction workflowRecordLines(record: JsonRecord, expanded: boolean, theme: Theme): string[] | undefined {\n const runKey = readString(record, 'runKey');\n const stage = readString(record, 'stage');\n if (!runKey || !stage) return undefined;\n\n const state = readWorkflowState(record);\n const displayName = readString(record, 'displayName') ?? runKey;\n const heading = `${theme.fg(state.color, state.glyph)} ${theme.bold(displayName)} ${theme.fg(\n 'dim',\n `· ${recordScope(record)} ·`,\n )} ${theme.fg(state.color, state.label)}`;\n const lines = [heading];\n const activity = currentActivity(record, theme);\n if (activity) lines.push(activity);\n\n const failure = readString(record, 'errorMessage') ?? readString(record, 'failureReason');\n if (failure) lines.push(`${theme.fg('error', 'error')} ${theme.fg('text', failure)}`);\n const staleReason = readString(record, 'staleReason');\n if (staleReason) lines.push(`${theme.fg('warning', 'stale')} ${theme.fg('text', staleReason)}`);\n\n const conciseMetadata = [\n readString(record, 'runner') ? `runner ${readString(record, 'runner')}` : undefined,\n readBoolean(record, 'dryRun') ? 'dry run' : undefined,\n readNumber(record, 'exitCode') !== undefined ? `exit ${readNumber(record, 'exitCode')}` : undefined,\n readString(record, 'startedAt') ? `started ${statusTimestamp(readString(record, 'startedAt') ?? '')}` : undefined,\n ].filter((value): value is string => !!value);\n if (conciseMetadata.length > 0) lines.push(theme.fg('dim', conciseMetadata.join(' · ')));\n\n if (!expanded) return lines;\n\n const detailedValues: Array<[string, string | undefined]> = [\n ['workflow', readString(record, 'workflowPath')],\n ['workflow id', readString(record, 'workflowId')],\n ['run id', readString(record, 'runId')],\n ['launcher', launcherLabel(record)],\n ['job', readString(record, 'job')],\n ['outcome', readString(record, 'effectiveOutcome') ?? readString(record, 'outcome')],\n [\n 'finished',\n readString(record, 'finishedAt') ? statusTimestamp(readString(record, 'finishedAt') ?? '') : undefined,\n ],\n ['pid', readNumber(record, 'pid')?.toString()],\n ['repair', readString(record, 'activeRepairId') ? `#${readString(record, 'activeRepairId')}` : undefined],\n ['worktree', readString(record, 'worktreeBranch') ?? readString(record, 'worktreePath')],\n ];\n for (const [label, value] of detailedValues) {\n if (value) lines.push(labelValue(label, value, theme));\n }\n return lines;\n}\n\nfunction renderStatusResult(\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component | undefined {\n const payload = firstPayload(result);\n if (!payload) return undefined;\n const lines = workflowRecordLines(payload, options.expanded, theme);\n return lines ? renderResult(lines, theme, options.expanded) : undefined;\n}\n\nfunction nestedRequestedAt(payload: JsonRecord | undefined): string | undefined {\n return readString(asRecord(payload?.request), 'requestedAt') ?? readString(payload, 'requestedAt');\n}\n\nfunction renderControlResult(\n action: string,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const payload = firstPayload(result);\n const scope = targetScope(args) ?? readString(payload, 'runKey') ?? 'workflow';\n const payloadWorkspace = readString(payload, 'workspace');\n const resolvedScope = payloadWorkspace && !scope.includes('/') ? `${payloadWorkspace}/${scope}` : scope;\n const lines = [\n `${theme.fg('warning', '◐')} ${theme.bold(`${action} requested`)} ${theme.fg('dim', `· ${resolvedScope}`)}`,\n ];\n const requestedAt = nestedRequestedAt(payload);\n if (requestedAt) lines.push(labelValue('requested', statusTimestamp(requestedAt), theme));\n if (options.expanded) lines.push(theme.fg('dim', 'verify the transition with workflow_run status'));\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction matchLine(text: string, pattern: RegExp): string | undefined {\n return text.match(pattern)?.[1]?.trim();\n}\n\nfunction launchSummary(\n text: string,\n args: Record<string, unknown>,\n): { name: string; scope: string; state: WorkflowState } {\n const startedName = matchLine(text, /^Started (.+) in workspace .+\\.$/mu);\n const workspace = matchLine(text, /^Started .+ in workspace (.+)\\.$/mu) ?? readString(args, 'workspace');\n const runKey = matchLine(text, /^Run key:\\s*(.+)$/mu);\n const path = readString(args, 'workflowPath');\n const name = startedName ?? workflowNameFromPath(path);\n const scope = runKey ? (workspace ? `${workspace}/${runKey}` : runKey) : (workspace ?? path ?? 'workflow');\n\n if (/Workflow completed successfully/iu.test(text)) {\n return { name, scope, state: { color: 'success', glyph: '✓', label: 'completed' } };\n }\n if (/Workflow skipped/iu.test(text)) {\n return { name, scope, state: { color: 'muted', glyph: '○', label: 'skipped' } };\n }\n if (/no run was registered/iu.test(text)) {\n return { name, scope, state: { color: 'warning', glyph: '◐', label: 'starting · run key pending' } };\n }\n return { name, scope, state: { color: 'accent', glyph: '◐', label: runKey ? 'started' : 'launch accepted' } };\n}\n\nfunction renderLaunchResult(\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const blocks = textBlocks(result);\n const text = blocks.join('\\n');\n const summary = launchSummary(text, args);\n const lines = [\n `${theme.fg(summary.state.color, summary.state.glyph)} ${theme.bold(summary.name)} ${theme.fg(\n 'dim',\n `· ${summary.scope} ·`,\n )} ${theme.fg(summary.state.color, summary.state.label)}`,\n ];\n const metadata = [\n readString(args, 'job') ? `job ${readString(args, 'job')}` : undefined,\n readString(args, 'runner') ? `runner ${readString(args, 'runner')}` : undefined,\n readBoolean(args, 'dryRun') ? 'dry run' : undefined,\n ].filter((value): value is string => !!value);\n if (metadata.length > 0) lines.push(theme.fg('dim', metadata.join(' · ')));\n if (options.expanded) {\n const details = detailLines(result).filter((line) => !line.startsWith('Next steps for the agent:'));\n if (details.length > 0) lines.push(...details);\n }\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction splitEvidence(text: string): EvidenceSection[] {\n const sections: EvidenceSection[] = [];\n let current: EvidenceSection | undefined;\n for (const line of text.split('\\n')) {\n const match = line.match(/^--- (.+) ---$/u);\n if (match?.[1]) {\n current = { body: [], name: match[1] };\n sections.push(current);\n continue;\n }\n current?.body.push(line);\n }\n return sections;\n}\n\nfunction recoveryRecord(sections: EvidenceSection[]): JsonRecord | undefined {\n const runSection = sections.find((section) => section.name === 'run.json');\n return parseJsonRecord(runSection?.body.join('\\n'));\n}\n\nfunction renderRecoveryEvidenceResult(\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const text = textBlocks(result).join('\\n');\n const sections = splitEvidence(text);\n const record = recoveryRecord(sections);\n const recordLines = record ? workflowRecordLines(record, options.expanded, theme) : undefined;\n const evidenceSections = sections.filter((section) => section.name !== 'run.json');\n const scope = targetScope(args) ?? 'workflow';\n const lines = recordLines ?? [\n `${theme.fg('success', '✓')} ${theme.bold('recovery evidence')} ${theme.fg('dim', `· ${scope}`)}`,\n ];\n const names = evidenceSections.map((section) => section.name);\n lines.push(\n names.length > 0\n ? labelValue('evidence', names.join(', '), theme)\n : theme.fg('muted', 'no durable evidence files recorded'),\n );\n\n if (options.expanded) {\n for (const section of evidenceSections) {\n lines.push(theme.bold(section.name), ...section.body.filter((line) => line.length > 0));\n }\n }\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderSimpleActionResult(\n action: string,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const scope = targetScope(args) ?? 'workflow';\n const actionLabel: Record<string, string> = {\n follow: 'following output',\n open: 'launcher opened',\n recover: readBoolean(args, 'dryRun') ? 'recovery dry run finished' : 'recovery accepted',\n tail: 'launcher output checked',\n };\n const state: WorkflowState =\n action === 'recover'\n ? { color: 'accent', glyph: '◐', label: actionLabel[action] ?? action }\n : { color: 'success', glyph: '✓', label: actionLabel[action] ?? action };\n const lines = [`${theme.fg(state.color, state.glyph)} ${theme.bold(state.label)} ${theme.fg('dim', `· ${scope}`)}`];\n const details = detailLines(result);\n if (action === 'tail') {\n const stageLine = details.find((line) => line.startsWith('Stage:'));\n const workflowLine = details.find((line) => line.startsWith('Workflow:'));\n if (workflowLine) lines.push(workflowLine);\n if (stageLine) lines.push(stageLine);\n }\n if (options.expanded && details.length > 0) lines.push(...details);\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderFailure(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const summary = `${theme.fg('error', '✗')} ${theme.bold(`${action} failed`)}${\n target ? theme.fg('dim', ` · ${target}`) : ''\n }`;\n const details = detailLines(result);\n const shown = options.expanded ? details : details.slice(0, COLLAPSED_DETAIL_LINES);\n const lines = [summary, ...(shown.length > 0 ? shown : [theme.fg('error', 'Unknown workflow error')])];\n const hidden = details.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderPartial(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n const details = detailLines(result);\n const shown = details.slice(-PARTIAL_DETAIL_LINES);\n const action = toolAction(toolName, args);\n const target = toolTarget(toolName, args);\n const summary = `${theme.fg('accent', '◐')} ${theme.bold(action)}${target ? theme.fg('dim', ` · ${target}`) : ''}`;\n const hidden = details.length - shown.length;\n const lines = [summary];\n if (hidden > 0) lines.push(theme.fg('dim', `… ${hidden} earlier`));\n lines.push(...shown);\n return renderResult(lines, theme, options.expanded);\n}\n\nfunction renderFallback(result: WorkflowToolResultLike, options: WorkflowToolRenderOptions, theme: Theme): Component {\n const details = detailLines(result);\n if (details.length === 0) return renderResult([theme.fg('muted', 'No workflow output.')], theme, options.expanded);\n const shown = options.expanded ? details : details.slice(0, COLLAPSED_DETAIL_LINES);\n const lines = [...shown];\n const hidden = details.length - shown.length;\n if (hidden > 0) lines.push(hiddenDetailLine(hidden, theme));\n return renderResult(lines, theme, options.expanded);\n}\n\nexport function renderWorkflowToolResult(\n toolName: WorkflowPiToolName,\n args: Record<string, unknown>,\n result: WorkflowToolResultLike,\n options: WorkflowToolRenderOptions,\n theme: Theme,\n): Component {\n if (options.isPartial) return renderPartial(toolName, args, result, options, theme);\n if (options.isError === true || result.isError === true) {\n return renderFailure(toolName, args, result, options, theme);\n }\n\n if (toolName === 'list_workflows') {\n return renderCatalogResult(result, options, theme) ?? renderFallback(result, options, theme);\n }\n if (toolName === 'launch_workflow') return renderLaunchResult(args, result, options, theme);\n\n const action = readString(args, 'action');\n if (action === 'status') {\n return renderStatusResult(result, options, theme) ?? renderFallback(result, options, theme);\n }\n if (action === 'pause' || action === 'resume' || action === 'stop') {\n return renderControlResult(action, args, result, options, theme);\n }\n if (action === 'recovery-evidence') {\n return renderRecoveryEvidenceResult(args, result, options, theme);\n }\n if (action === 'follow' || action === 'open' || action === 'recover' || action === 'tail') {\n return renderSimpleActionResult(action, args, result, options, theme);\n }\n return renderFallback(result, options, theme);\n}\n"],"mappings":"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"}