@xopcai/xopc 0.0.123 → 0.0.124

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 (264) hide show
  1. package/README.md +28 -11
  2. package/README.zh-CN.md +28 -11
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bicr3ZBg.js → agent-avatar-dicebear-B5uSVAyJ.js} +1 -1
  6. package/dist/gateway/static/root/assets/agents-BjIxt67Z.js +2 -0
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-CbEy9sR1.js → app-management-settings-panel-CYCONLIL.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-CTHja6n9.js → appearance-settings-Clw3ryKg.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-QICTeGjX.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-Bpy64GjU.js → archive-plugin-CXUGRp2i.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-DMkp4xSb.js → attachment-load-Cmiub3Wg.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automation-suggestion-card-KnYaP7NT.js → automation-suggestion-card-CU0-4nQ-.js} +1 -1
  13. package/dist/gateway/static/root/assets/automations-page-Car-jtiz.js +1 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-DA9C5mCw.js → binary-plugins-0Izz-N3p.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-CiSXk_YC.js → block-editor-C1Kv0IkJ.js} +6 -6
  16. package/dist/gateway/static/root/assets/browser-settings-page-CMeBJzlS.js +8 -0
  17. package/dist/gateway/static/root/assets/{capability-presets-api-CEJ44WCU.js → capability-presets-api-BmQTM9Il.js} +1 -1
  18. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DZEJEoCF.js +1 -0
  19. package/dist/gateway/static/root/assets/{channel-recipient-api-CDhrhfhN.js → channel-recipient-api-BeA2aVor.js} +1 -1
  20. package/dist/gateway/static/root/assets/channels-settings-kkW-xFau.js +1 -0
  21. package/dist/gateway/static/root/assets/connectors-page-BvaQvO5F.js +2 -0
  22. package/dist/gateway/static/root/assets/{directory-picker-path-field-7jKfbH0J.js → directory-picker-path-field-2rjzUu57.js} +1 -1
  23. package/dist/gateway/static/root/assets/{dreaming-settings-m1-wmz4o.js → dreaming-settings-DnHO686d.js} +1 -1
  24. package/dist/gateway/static/root/assets/{extension-debug-page-C9qQQrBS.js → extension-debug-page-BGLRuWVN.js} +1 -1
  25. package/dist/gateway/static/root/assets/{extension-page-DcBBMEGl.js → extension-page-D978ePp9.js} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-settings-page-BQ-jMMP9.js → extension-settings-page-B6Ih4Swx.js} +1 -1
  27. package/dist/gateway/static/root/assets/{fetch-Dtpbbe0s.js → fetch-BU5S0Sn7.js} +1 -1
  28. package/dist/gateway/static/root/assets/{gateway-config-api-BN6pyX2c.js → gateway-config-api-BIPGwrl1.js} +1 -1
  29. package/dist/gateway/static/root/assets/gateway-settings-CMEA3r5u.js +1 -0
  30. package/dist/gateway/static/root/assets/{gateway-startup-retry-BIET2x3y.js → gateway-startup-retry-Cd0Zz30N.js} +1 -1
  31. package/dist/gateway/static/root/assets/{goal-create-dialog-BuIMDx6C.js → goal-create-dialog-B-KHKeXN.js} +1 -1
  32. package/dist/gateway/static/root/assets/goal-detail-page-BxrSoWdj.js +1 -0
  33. package/dist/gateway/static/root/assets/{goals-config-api-CQm2r1Ty.js → goals-config-api-B95KdGMj.js} +1 -1
  34. package/dist/gateway/static/root/assets/goals-page-BTJzIl28.js +2 -0
  35. package/dist/gateway/static/root/assets/{goals-settings-DDrdRMxB.js → goals-settings-BJyEuLLm.js} +1 -1
  36. package/dist/gateway/static/root/assets/heartbeat-settings-wkOjYNQT.js +1 -0
  37. package/dist/gateway/static/root/assets/{index-CBDr5xjB.css → index-BLaXr6Ev.css} +1 -1
  38. package/dist/gateway/static/root/assets/index-c_9TVr_C.js +191 -0
  39. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-C2TuQppb.js → keyboard-shortcuts-settings-BT8T4DyC.js} +1 -1
  40. package/dist/gateway/static/root/assets/logs-page-CrxBJUgI.js +2 -0
  41. package/dist/gateway/static/root/assets/{markdown-split-DhONQ81k.js → markdown-split-Dv66bO2b.js} +1 -1
  42. package/dist/gateway/static/root/assets/{media-plugins-DS44pJzr.js → media-plugins-BhIQU5yS.js} +1 -1
  43. package/dist/gateway/static/root/assets/messages-O6TAtdFC.js +3 -0
  44. package/dist/gateway/static/root/assets/models-hub-panel-DOOpz6y1.js +2 -0
  45. package/dist/gateway/static/root/assets/notes-page-Br16pK9v.js +1 -0
  46. package/dist/gateway/static/root/assets/notes-workbench-PSJAi0ZC.js +2 -0
  47. package/dist/gateway/static/root/assets/{preview-open-alternatives-Dej6zHnr.js → preview-open-alternatives-DGzet1d7.js} +1 -1
  48. package/dist/gateway/static/root/assets/project-detail-page-CIGGgKuw.js +1 -0
  49. package/dist/gateway/static/root/assets/projects-page-B2grhsBt.js +1 -0
  50. package/dist/gateway/static/root/assets/remote-access-hub-CXMORxBD.js +1 -0
  51. package/dist/gateway/static/root/assets/{save-bar-controls-Zu1FzH6z.js → save-bar-controls-Cqgb-jqa.js} +1 -1
  52. package/dist/gateway/static/root/assets/{schedule-field-BW78mKc0.js → schedule-field-DVZcI8Yt.js} +1 -1
  53. package/dist/gateway/static/root/assets/{schema-form-Cc-IOydE.js → schema-form-Bj7sOxC8.js} +1 -1
  54. package/dist/gateway/static/root/assets/sessions-page-Bi2wkBzU.js +1 -0
  55. package/dist/gateway/static/root/assets/settings-advanced-gate-B1L3G4IA.js +1 -0
  56. package/dist/gateway/static/root/assets/{settings-collapsible-section-DIpIYht_.js → settings-collapsible-section-BmXn-8N6.js} +1 -1
  57. package/dist/gateway/static/root/assets/{settings-form-section-BFxBNxOG.js → settings-form-section-BnqYMWHR.js} +1 -1
  58. package/dist/gateway/static/root/assets/settings-page-BfRSHJmO.js +1 -0
  59. package/dist/gateway/static/root/assets/{settings-page-layout-CLx4o2PN.js → settings-page-layout-CdWZU1hd.js} +1 -1
  60. package/dist/gateway/static/root/assets/setup-status-panel-CWtPM7RK.js +1 -0
  61. package/dist/gateway/static/root/assets/{share-preview-page-ZswWCrDu.js → share-preview-page-IB1v8i86.js} +1 -1
  62. package/dist/gateway/static/root/assets/shares-settings-ngbsBgij.js +1 -0
  63. package/dist/gateway/static/root/assets/skill-reload-api-BIe442Gv.js +1 -0
  64. package/dist/gateway/static/root/assets/skills-page-BfchZRVa.js +2 -0
  65. package/dist/gateway/static/root/assets/{system-settings-panel-3ZNcGRhS.js → system-settings-panel-BxQ384RC.js} +1 -1
  66. package/dist/gateway/static/root/assets/{typed-models-lib-bpzZjiVF.js → typed-models-lib-BkcpvFYO.js} +1 -1
  67. package/dist/gateway/static/root/assets/{use-channel-catalog-BCjZLZ3O.js → use-channel-catalog-Cd0FaEQ4.js} +1 -1
  68. package/dist/gateway/static/root/assets/{user-profile-settings-panel-CIXafITi.js → user-profile-settings-panel-DQ7NnRSY.js} +1 -1
  69. package/dist/gateway/static/root/assets/{utils-DXMtz5j_.js → utils-YKhVf7Ka.js} +1 -1
  70. package/dist/gateway/static/root/assets/voice-api-key-field-C5Ov8Uk_.js +1 -0
  71. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYD9BtOq.js +3 -0
  72. package/dist/gateway/static/root/assets/{workflow-start-dialog-B4sZpTDQ.js → workflow-start-dialog-BNJVCWoS.js} +1 -1
  73. package/dist/gateway/static/root/assets/workflows-page-BYF29ANm.js +18 -0
  74. package/dist/gateway/static/root/index.html +5 -5
  75. package/dist/package.js +1 -1
  76. package/dist/src/agent/agent-manager.d.ts +6 -1
  77. package/dist/src/agent/agent-manager.js +28 -12
  78. package/dist/src/agent/agent-manager.js.map +1 -1
  79. package/dist/src/agent/context/workspace-templates/AGENTS.md +1 -1
  80. package/dist/src/agent/embedded/xopc-tools-bridge.js +11 -7
  81. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +1 -1
  82. package/dist/src/agent/lifecycle/progress.js +3 -1
  83. package/dist/src/agent/lifecycle/progress.js.map +1 -1
  84. package/dist/src/agent/lifecycle/timeout-wrapper.d.ts +2 -2
  85. package/dist/src/agent/lifecycle/timeout-wrapper.js +4 -4
  86. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +1 -1
  87. package/dist/src/agent/memory/summary-generator.d.ts +1 -1
  88. package/dist/src/agent/memory/summary-generator.js +1 -2
  89. package/dist/src/agent/memory/summary-generator.js.map +1 -1
  90. package/dist/src/agent/middleware/index.d.ts +1 -1
  91. package/dist/src/agent/middleware/self-verify.d.ts +44 -14
  92. package/dist/src/agent/middleware/self-verify.js +214 -44
  93. package/dist/src/agent/middleware/self-verify.js.map +1 -1
  94. package/dist/src/agent/orchestration/agent-event-handler.js +57 -15
  95. package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
  96. package/dist/src/agent/prompt/sections/tooling.js +18 -13
  97. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  98. package/dist/src/agent/prompt/system-reminder.js +2 -2
  99. package/dist/src/agent/prompt/system-reminder.js.map +1 -1
  100. package/dist/src/agent/sandbox/sanitize-env-vars.d.ts +2 -2
  101. package/dist/src/agent/sandbox/sanitize-env-vars.js +2 -2
  102. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +1 -1
  103. package/dist/src/agent/sandbox/types.d.ts +2 -2
  104. package/dist/src/agent/sandbox/types.js.map +1 -1
  105. package/dist/src/agent/service/btw-query.js +1 -1
  106. package/dist/src/agent/service/btw-query.js.map +1 -1
  107. package/dist/src/agent/service/process-direct-one-shot.js +6 -2
  108. package/dist/src/agent/service/process-direct-one-shot.js.map +1 -1
  109. package/dist/src/agent/service/process-direct-streaming.js +12 -7
  110. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  111. package/dist/src/agent/service.js +2 -1
  112. package/dist/src/agent/service.js.map +1 -1
  113. package/dist/src/agent/skills/skill-tool-gating.js +1 -1
  114. package/dist/src/agent/skills/skill-tool-gating.js.map +1 -1
  115. package/dist/src/agent/starter-agents.js +9 -9
  116. package/dist/src/agent/starter-agents.js.map +1 -1
  117. package/dist/src/agent/tools/apply-patch.d.ts +25 -0
  118. package/dist/src/agent/tools/apply-patch.js +256 -0
  119. package/dist/src/agent/tools/apply-patch.js.map +1 -0
  120. package/dist/src/agent/tools/delegate-tool.d.ts +1 -1
  121. package/dist/src/agent/tools/delegate-tool.js +3 -3
  122. package/dist/src/agent/tools/delegate-tool.js.map +1 -1
  123. package/dist/src/agent/tools/exec-command.d.ts +30 -0
  124. package/dist/src/agent/tools/exec-command.js +224 -0
  125. package/dist/src/agent/tools/exec-command.js.map +1 -0
  126. package/dist/src/agent/tools/execute-code-tool.js +7 -4
  127. package/dist/src/agent/tools/execute-code-tool.js.map +1 -1
  128. package/dist/src/agent/tools/factory.d.ts +3 -3
  129. package/dist/src/agent/tools/factory.js +7 -8
  130. package/dist/src/agent/tools/factory.js.map +1 -1
  131. package/dist/src/agent/tools/index.d.ts +3 -2
  132. package/dist/src/agent/tools/index.js +5 -4
  133. package/dist/src/agent/tools/skills-tools.d.ts +1 -1
  134. package/dist/src/agent/tools/skills-tools.js.map +1 -1
  135. package/dist/src/agent/tools/update-plan-tool.d.ts +11 -0
  136. package/dist/src/agent/tools/update-plan-tool.js +72 -0
  137. package/dist/src/agent/tools/update-plan-tool.js.map +1 -0
  138. package/dist/src/agent/workflow/builtins/debug-incident.d.ts +1 -1
  139. package/dist/src/agent/workflow/builtins/debug-incident.js +1 -1
  140. package/dist/src/agent/workflow/builtins/debug-incident.js.map +1 -1
  141. package/dist/src/agent/workflow/builtins/pr-review.d.ts +1 -1
  142. package/dist/src/agent/workflow/builtins/pr-review.js +1 -1
  143. package/dist/src/agent/workflow/builtins/pr-review.js.map +1 -1
  144. package/dist/src/agent/workflow/builtins/release-check.d.ts +1 -1
  145. package/dist/src/agent/workflow/builtins/release-check.js +1 -1
  146. package/dist/src/agent/workflow/builtins/release-check.js.map +1 -1
  147. package/dist/src/agent/workflow/step-labels.js +7 -3
  148. package/dist/src/agent/workflow/step-labels.js.map +1 -1
  149. package/dist/src/chat-commands/agent-edit.js +1 -1
  150. package/dist/src/chat-commands/agent-edit.js.map +1 -1
  151. package/dist/src/chat-commands/builtins/review.d.ts +1 -0
  152. package/dist/src/chat-commands/builtins/review.js +167 -0
  153. package/dist/src/chat-commands/builtins/review.js.map +1 -0
  154. package/dist/src/chat-commands/index.d.ts +1 -0
  155. package/dist/src/chat-commands/index.js +3 -1
  156. package/dist/src/chat-commands/index.js.map +1 -1
  157. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  158. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  159. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  160. package/dist/src/gateway/agent-builtin-tools.js +3 -2
  161. package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
  162. package/dist/src/gateway/chat-stream/mapper.d.ts +6 -0
  163. package/dist/src/gateway/chat-stream/mapper.js +149 -6
  164. package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
  165. package/dist/src/gateway/chat-stream/protocol.d.ts +51 -1
  166. package/dist/src/gateway/hono/routes/commands-skills.js +21 -0
  167. package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
  168. package/dist/src/gateway/hono/routes/index.js +2 -0
  169. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  170. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -0
  171. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  172. package/dist/src/gateway/hono/routes/projects.js +40 -2
  173. package/dist/src/gateway/hono/routes/projects.js.map +1 -1
  174. package/dist/src/gateway/hono/routes/search.d.ts +3 -0
  175. package/dist/src/gateway/hono/routes/search.js +47 -0
  176. package/dist/src/gateway/hono/routes/search.js.map +1 -0
  177. package/dist/src/gateway/security/dangerous-tools.js +1 -1
  178. package/dist/src/gateway/security/dangerous-tools.js.map +1 -1
  179. package/dist/src/infra/update-restart.js +1 -1
  180. package/dist/src/mcp/channel-bridge.js +1 -1
  181. package/dist/src/projects/index.d.ts +2 -0
  182. package/dist/src/projects/index.js +3 -1
  183. package/dist/src/projects/project-agent-suggestion.d.ts +14 -0
  184. package/dist/src/projects/project-agent-suggestion.js +19 -0
  185. package/dist/src/projects/project-agent-suggestion.js.map +1 -0
  186. package/dist/src/projects/project-kind.d.ts +13 -0
  187. package/dist/src/projects/project-kind.js +147 -0
  188. package/dist/src/projects/project-kind.js.map +1 -0
  189. package/dist/src/projects/project-service.d.ts +1 -0
  190. package/dist/src/projects/project-service.js +1 -1
  191. package/dist/src/projects/project-service.js.map +1 -1
  192. package/dist/src/projects/project-store.js +32 -8
  193. package/dist/src/projects/project-store.js.map +1 -1
  194. package/dist/src/projects/types.d.ts +1 -0
  195. package/dist/src/review/review-git.d.ts +48 -0
  196. package/dist/src/review/review-git.js +333 -0
  197. package/dist/src/review/review-git.js.map +1 -0
  198. package/dist/src/review/review-types.d.ts +22 -0
  199. package/dist/src/review/review-types.js +29 -0
  200. package/dist/src/review/review-types.js.map +1 -0
  201. package/dist/src/session/session-context-for-llm.js +151 -0
  202. package/dist/src/session/session-context-for-llm.js.map +1 -1
  203. package/dist/src/storage/sqlite/migrations/021_projects_fts.sql +21 -0
  204. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  205. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  206. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  207. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  208. package/dist/src/storage/sqlite/schema.js +1 -1
  209. package/dist/src/tui/backends/embedded-backend.d.ts +1 -0
  210. package/dist/src/tui/backends/embedded-backend.js +20 -0
  211. package/dist/src/tui/backends/embedded-backend.js.map +1 -1
  212. package/dist/src/tui/backends/gateway-sse-backend.d.ts +2 -0
  213. package/dist/src/tui/backends/gateway-sse-backend.js +7 -0
  214. package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
  215. package/dist/src/tui/components/assistant-message.js +35 -0
  216. package/dist/src/tui/components/assistant-message.js.map +1 -1
  217. package/dist/src/tui/tui-agent-events.js +25 -0
  218. package/dist/src/tui/tui-agent-events.js.map +1 -1
  219. package/dist/src/tui/tui-backend.d.ts +4 -0
  220. package/dist/src/tui/tui-commands.d.ts +1 -0
  221. package/dist/src/tui/tui-commands.js +110 -4
  222. package/dist/src/tui/tui-commands.js.map +1 -1
  223. package/dist/src/tui/tui-picker-overlay.d.ts +2 -0
  224. package/dist/src/tui/tui-picker-overlay.js +153 -1
  225. package/dist/src/tui/tui-picker-overlay.js.map +1 -1
  226. package/dist/src/tui/tui.js +16 -3
  227. package/dist/src/tui/tui.js.map +1 -1
  228. package/package.json +1 -1
  229. package/dist/gateway/static/root/assets/agents-CxDSFHGx.js +0 -2
  230. package/dist/gateway/static/root/assets/apps-page-CyZdgqvm.js +0 -1
  231. package/dist/gateway/static/root/assets/automations-page-8VLKM4au.js +0 -1
  232. package/dist/gateway/static/root/assets/browser-settings-page-5tPg0DcP.js +0 -8
  233. package/dist/gateway/static/root/assets/capability-presets-settings-panel-BJW3aVST.js +0 -1
  234. package/dist/gateway/static/root/assets/channels-settings-CorUCTrs.js +0 -1
  235. package/dist/gateway/static/root/assets/connectors-page-VKstC3sP.js +0 -2
  236. package/dist/gateway/static/root/assets/gateway-settings-hQtgVmSR.js +0 -1
  237. package/dist/gateway/static/root/assets/goal-detail-page-FEypCq74.js +0 -1
  238. package/dist/gateway/static/root/assets/goals-page-C4-2_MLG.js +0 -2
  239. package/dist/gateway/static/root/assets/heartbeat-settings-BJVok3Sl.js +0 -1
  240. package/dist/gateway/static/root/assets/index-T0SaNd5a.js +0 -191
  241. package/dist/gateway/static/root/assets/logs-page-DwkwPgid.js +0 -2
  242. package/dist/gateway/static/root/assets/messages-avfvyZuQ.js +0 -3
  243. package/dist/gateway/static/root/assets/models-hub-panel-huNY4A1G.js +0 -2
  244. package/dist/gateway/static/root/assets/notes-page-DdfGuEZ1.js +0 -1
  245. package/dist/gateway/static/root/assets/notes-workbench-B0bT9Hqa.js +0 -2
  246. package/dist/gateway/static/root/assets/project-detail-page-CjxhPorG.js +0 -1
  247. package/dist/gateway/static/root/assets/projects-page-C4Z5OJMF.js +0 -1
  248. package/dist/gateway/static/root/assets/remote-access-hub-CVCOPUVd.js +0 -1
  249. package/dist/gateway/static/root/assets/sessions-page-B4qExXHC.js +0 -1
  250. package/dist/gateway/static/root/assets/settings-advanced-gate-Ce8yLTBi.js +0 -1
  251. package/dist/gateway/static/root/assets/settings-page-C4fivemT.js +0 -1
  252. package/dist/gateway/static/root/assets/setup-status-panel-Kyc4eUf0.js +0 -1
  253. package/dist/gateway/static/root/assets/shares-settings-Bu76CMiC.js +0 -1
  254. package/dist/gateway/static/root/assets/skill-reload-api-D-CFg86j.js +0 -1
  255. package/dist/gateway/static/root/assets/skills-page-CUU4f6Ss.js +0 -2
  256. package/dist/gateway/static/root/assets/voice-api-key-field-C1MrQD8R.js +0 -1
  257. package/dist/gateway/static/root/assets/workflow-run-setup-panel-DqizIcY5.js +0 -3
  258. package/dist/gateway/static/root/assets/workflows-page-B3sVNPFk.js +0 -18
  259. package/dist/src/agent/tools/edit.d.ts +0 -14
  260. package/dist/src/agent/tools/edit.js +0 -132
  261. package/dist/src/agent/tools/edit.js.map +0 -1
  262. package/dist/src/agent/tools/shell.d.ts +0 -15
  263. package/dist/src/agent/tools/shell.js +0 -158
  264. package/dist/src/agent/tools/shell.js.map +0 -1
@@ -1,18 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-avfvyZuQ.js";import{n as o}from"./locale-store-Ba72bFmP.js";import{c as s}from"./fetch-Dtpbbe0s.js";import{i as c}from"./vendor-swr-BIWyz7Rc.js";import{$ as l,Aa as u,B as d,Ba as f,Bo as p,C as m,D as h,Do as g,H as _,Ha as v,I as y,Ic as b,Io as x,J as S,K as C,Ks as w,L as T,M as E,Mn as D,N as O,O as k,Os as A,P as j,Pa as ee,Po as M,Qa as N,R as P,Rc as F,S as I,So as L,T as R,Us as te,V as z,Vs as ne,Wr as B,X as re,Xs as V,Y as H,Z as ie,Zo as U,_ as W,aa as G,ac as K,at as ae,b as q,ea as oe,et as J,fo as se,fs as ce,g as le,ga as ue,go as de,h as fe,hc as pe,i as me,ia as he,j as Y,k as ge,l as _e,lc as ve,mc as ye,ms as be,na as xe,nt as Se,oa as Ce,os as we,ot as Te,p as Ee,q as De,qa as Oe,qs as X,r as ke,ra as Ae,rt as je,sa as Me,ta as Ne,tt as Pe,v as Fe,va as Ie,vc as Le,w as Re,x as ze,y as Be,z as Ve,zn as He,zs as Ue}from"./index-T0SaNd5a.js";import{t as We}from"./automation-suggestion-card-KnYaP7NT.js";import{t as Ge}from"./workflow-start-dialog-B4sZpTDQ.js";var Z=e(t(),1),Q=n(),Ke=[`queued`,`running`,`succeeded`,`attention`],qe=10080*60*1e3,Je=new Set([`failed`,`timeout`,`cancelled`]);function Ye(e){return e.metadata?.sessionKey?.trim()||null}function Xe(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function Ze(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function Qe(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||Ze(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||Ze(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?Xe(n,t):null}function $e(e,t=90){return Qe(e,t)??Xe(e.title?.trim()||e.definitionId,t)}function et(e,t=44){return Xe(e.title?.trim()||e.definitionId,t)}function tt(e,t){let n=t.trim().toLowerCase();return n?[Qe(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function nt(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!m(e,t.triggerFilter??`all`)?!1:tt(e,t.searchQuery))}function rt(e){return e.completedAtMs??e.createdAtMs}function it(e,t){return t-rt(e)<=qe}function at(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?it(e,t)?`succeeded`:null:Je.has(e.status)?`attention`:null}function ot(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>rt(t)-rt(e))}function st(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=at(r,t);e&&n[e].push(r)}let r=ot(`succeeded`,n.succeeded),i=r.length,a=r.slice(0,20),o=Math.max(0,i-20);return Ke.map(e=>e===`succeeded`?{id:e,runs:a,totalInWindow:i,hiddenByCap:o}:{id:e,runs:ot(e,n[e])})}var ct=new Map;function lt(e){let t=ct.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),ct.set(e,t)),t}function ut(e,t,n){let r=Math.round((t-e)/1e3),i=lt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function dt(e){return e.status===`queued`||e.status===`running`}function ft(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),pt=(0,Z.memo)(function(e){let t=(0,Q.c)(65),{run:n,language:r,localeTag:o,nowMs:s,selected:c,onOpen:l,onOpenChat:u,onCancel:d,onRetry:p}=e,m=a(r).workflows,[h,g]=(0,Z.useState)(!1),_;t[0]===n?_=t[1]:(_=Ye(n),t[0]=n,t[1]=_);let v=!_,y;t[2]===n?y=t[3]:(y=dt(n),t[2]=n,t[3]=y);let b=y,x=n.status===`running`||n.status===`queued`,S;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(S=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[4]=n.metrics.agentCount,t[5]=n.metrics.doneAgentCount,t[6]=S):S=t[6];let C=S,w=n.metrics.errorAgentCount>0,T=n.startedAtMs??n.createdAtMs,E=W(b?s-T:n.metrics.durationMs),D=q(m.taskArtifacts,{count:n.metrics.artifactCount}),O;t[7]===n?O=t[8]:(O=$e(n),t[7]=n,t[8]=O);let k=O,A;t[9]===n?A=t[10]:(A=et(n),t[9]=n,t[10]=A);let j=A,M;t[11]!==l||t[12]!==n?(M=()=>{l(n)},t[11]=l,t[12]=n,t[13]=M):M=t[13];let P=M,F;t[14]!==v||t[15]!==u||t[16]!==n?(F=()=>{v||u(n)},t[14]=v,t[15]=u,t[16]=n,t[17]=F):F=t[17];let I=F,L=c?`border-accent/70 ring-1 ring-accent/30`:`border-edge`,R;t[18]===L?R=t[19]:(R=i(`group relative overflow-hidden rounded-xl border bg-surface-panel p-3.5 transition-colors`,L,`hover:border-edge-strong hover:bg-surface-hover/50`),t[18]=L,t[19]=R);let te;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(te=i(`w-full text-left`,ee.focusRingPanel),t[20]=te):te=t[20];let z;t[21]===k?z=t[22]:(z=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:k}),t[21]=k,t[22]=z);let B;t[23]===j?B=t[24]:(B=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:j}),t[23]=j,t[24]=B);let re;t[25]!==z||t[26]!==B?(re=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[z,B]}),t[25]=z,t[26]=B,t[27]=re):re=t[27];let V;t[28]===n.status?V=t[29]:(V=i(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,Re(n.status)),t[28]=n.status,t[29]=V);let H;t[30]!==o||t[31]!==s||t[32]!==T?(H=ut(T,s,o),t[30]=o,t[31]=s,t[32]=T,t[33]=H):H=t[33];let ie;t[34]===H?ie=t[35]:(ie=(0,$.jsx)(`span`,{children:H}),t[34]=H,t[35]=ie);let U=E===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:q(m.taskElapsed,{duration:E})})]}),G;t[36]!==ie||t[37]!==U?(G=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[ie,U]}),t[36]=ie,t[37]=U,t[38]=G):G=t[38];let K=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:D}):null,ae=c?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:m.taskOpenDetails}):null,oe;t[39]!==K||t[40]!==ae?(oe=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[K,ae]}),t[39]=K,t[40]=ae,t[41]=oe):oe=t[41];let J;t[42]===g?J=t[43]:(J=()=>g(ht),t[42]=g,t[43]=J);let se;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(se=(0,$.jsx)(ne,{className:`size-4`,"aria-hidden":!0}),t[44]=se):se=t[44];let ce;t[45]!==m.taskActionsAria||t[46]!==h||t[47]!==J?(ce=(0,$.jsx)(f,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":m.taskActionsAria,"aria-expanded":h,onClick:J,children:se}),t[45]=m.taskActionsAria,t[46]=h,t[47]=J,t[48]=ce):ce=t[48];let le;t[49]!==b||t[50]!==v||t[51]!==I||t[52]!==m.cancel||t[53]!==m.continueInChat||t[54]!==m.rerun||t[55]!==m.taskCloseMenu||t[56]!==h||t[57]!==d||t[58]!==p||t[59]!==n||t[60]!==g?(le=h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":m.taskCloseMenu,onClick:()=>g(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[(0,$.jsx)(mt,{label:m.continueInChat,disabled:v,onClick:()=>{g(!1),I()}}),b?(0,$.jsx)(mt,{label:m.cancel,tone:`danger`,onClick:()=>{g(!1),d(n.id)}}):null,ft(n)?(0,$.jsx)(mt,{label:m.rerun,onClick:()=>{g(!1),p(n.id)}}):null]})]}):null,t[49]=b,t[50]=v,t[51]=I,t[52]=m.cancel,t[53]=m.continueInChat,t[54]=m.rerun,t[55]=m.taskCloseMenu,t[56]=h,t[57]=d,t[58]=p,t[59]=n,t[60]=g,t[61]=le):le=t[61];let ue;return t[62]!==ce||t[63]!==le?(ue=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[ce,le]}),t[62]=ce,t[63]=le,t[64]=ue):ue=t[64],(0,$.jsxs)(`div`,{className:R,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:P,"aria-label":`${m.taskOpenDetails}: ${k}`,"aria-current":c?`true`:void 0,className:te,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[re,(0,$.jsx)(`span`,{className:V,children:m.status[n.status]??n.status})]}),G]}),x?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:q(m.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[C,`%`]})]}),(0,$.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:`${C}%`}})})]}):null,oe,w?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(N,{className:`size-3 shrink-0`,"aria-hidden":!0}),q(m.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),ue]})});function mt(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:a,onClick:o}=e,s=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,c=a===`danger`&&!r&&`text-red-600 dark:text-red-300`,l;t[0]!==s||t[1]!==c?(l=i(`block w-full px-3 py-1.5 text-left text-xs`,s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u;return t[3]!==r||t[4]!==n||t[5]!==o||t[6]!==l?(u=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:o,className:l,children:n}),t[3]=r,t[4]=n,t[5]=o,t[6]=l,t[7]=u):u=t[7],u}function ht(e){return!e}function gt(e,t){return t.boardColumns[e]}var _t=(0,Z.memo)(function(e){let t=(0,Q.c)(14),{column:n,language:r,localeTag:o,nowMs:s,selectedRunId:c,onOpenRun:l,onOpenRunChat:u,onCancelRun:d,onRetryRun:p}=e,m=a(r).workflows,[h,g]=(0,Z.useState)(!1),_=n.id===`succeeded`,v=_?5:n.runs.length,y;t[0]!==v||t[1]!==n.runs||t[2]!==h||t[3]!==_?(y=_&&!h?n.runs.slice(0,v):n.runs,t[0]=v,t[1]=n.runs,t[2]=h,t[3]=_,t[4]=y):y=t[4];let b=y,x=_&&n.runs.length>5&&!h,S=_&&h,C;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(C=i(`flex h-full w-80 shrink-0 snap-center flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel/40`),t[5]=C):C=t[5];let w;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-accent`,"aria-hidden":!0}),t[6]=w):w=t[6];let T;t[7]===n.runs.length?T=t[8]:(T=(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:n.runs.length}),t[7]=n.runs.length,t[8]=T);let E=b.length===0?(0,$.jsx)(`div`,{className:`flex min-h-32 items-center justify-center rounded-xl border border-dashed border-edge bg-surface-panel/40 px-4 py-6 text-center text-xs text-fg-subtle`,children:m.boardColumnEmpty}):b.map(e=>(0,$.jsx)(pt,{run:e,language:r,localeTag:o,nowMs:s,selected:e.id===c,onOpen:l,onOpenChat:u,onCancel:d,onRetry:p},e.id)),D=x?(0,$.jsx)(f,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!0),children:q(m.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,O=S?(0,$.jsx)(f,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!1),children:m.boardCollapseSucceeded}):null,k=_&&(n.hiddenByCap??0)>0?(0,$.jsx)(`p`,{className:`px-1 text-center text-[11px] text-fg-subtle`,children:q(m.boardSucceededCapHint,{count:n.hiddenByCap??0})}):null,A;return t[9]!==E||t[10]!==D||t[11]!==O||t[12]!==k?(A=(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2.5`,children:[E,D,O,k]}),t[9]=E,t[10]=D,t[11]=O,t[12]=k,t[13]=A):A=t[13],(0,$.jsxs)(`section`,{className:C,"aria-label":gt(n.id,m),children:[(0,$.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between gap-2 rounded-t-2xl border-b border-edge-subtle bg-surface-panel/90 px-3.5 py-3 backdrop-blur`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[w,(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:gt(n.id,m)})]}),T]}),A]})}),vt=(0,Z.memo)(function(e){let t=(0,Q.c)(45),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:p,onCancelRun:m,onRetryRun:h,onStart:g}=e,_;t[0]===n?_=t[1]:(_=n.some(yt),t[0]=n,t[1]=_);let v=_,[y,b]=(0,Z.useState)(bt),x,S;t[2]===v?(x=t[3],S=t[4]):(x=()=>{if(!v)return;let e=window.setInterval(()=>b(Date.now()),1e3);return()=>window.clearInterval(e)},S=[v],t[2]=v,t[3]=x,t[4]=S),(0,Z.useEffect)(x,S);let C;t[5]!==y||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(C=st(nt(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),y),t[5]=y,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=C):C=t[10];let w=C,T=w.reduce(xt,0);if(u&&T===0){let e;return t[11]===a.loading?e=t[12]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}),t[11]=a.loading,t[12]=e),e}if(!u&&T===0){let e;t[13]===a.boardEmptyTitle?e=t[14]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[13]=a.boardEmptyTitle,t[14]=e);let n;t[15]===a.boardEmptyHint?n=t[16]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[15]=a.boardEmptyHint,t[16]=n);let r;t[17]!==a.boardStart||t[18]!==g?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(f,{variant:`primary`,onClick:g,children:a.boardStart})}),t[17]=a.boardStart,t[18]=g,t[19]=r):r=t[19];let i;return t[20]!==e||t[21]!==n||t[22]!==r?(i=(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col items-center justify-center rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[20]=e,t[21]=n,t[22]=r,t[23]=i):i=t[23],i}let E;if(t[24]!==w||t[25]!==r||t[26]!==i||t[27]!==y||t[28]!==m||t[29]!==d||t[30]!==p||t[31]!==h||t[32]!==l){let e;t[34]!==r||t[35]!==i||t[36]!==y||t[37]!==m||t[38]!==d||t[39]!==p||t[40]!==h||t[41]!==l?(e=e=>(0,$.jsx)(_t,{column:e,language:r,localeTag:i,nowMs:y,selectedRunId:l,onOpenRun:d,onOpenRunChat:p,onCancelRun:m,onRetryRun:h},e.id),t[34]=r,t[35]=i,t[36]=y,t[37]=m,t[38]=d,t[39]=p,t[40]=h,t[41]=l,t[42]=e):e=t[42],E=w.map(e),t[24]=w,t[25]=r,t[26]=i,t[27]=y,t[28]=m,t[29]=d,t[30]=p,t[31]=h,t[32]=l,t[33]=E}else E=t[33];let D;return t[43]===E?D=t[44]:(D=(0,$.jsx)(`div`,{className:`-mx-1 flex h-full min-w-0 snap-x snap-mandatory gap-3 overflow-x-auto px-1 pb-3`,children:E}),t[43]=E,t[44]=D),D});function yt(e){return e.status===`queued`||e.status===`running`}function bt(){return Date.now()}function xt(e,t){return e+t.runs.length}var St=`export const meta = {
2
- name: 'my_workflow',
3
- description: 'Describe what this workflow does.',
4
- whenToUse: 'When the user asks for ...',
5
- examplePrompts: [
6
- { field: 'goal', text: 'Example goal for this workflow' },
7
- ],
8
- tags: ['custom'],
9
- estimatedAgents: { min: 2, max: 4 },
10
- phases: [{ title: 'Step 1' }, { title: 'Synthesize' }],
11
- }
12
-
13
- phase('Step 1')
14
- const first = await agent('Do the first step.', { label: 'step 1' })
15
-
16
- phase('Synthesize')
17
- return await agent('Summarize:\\n\\n' + first, { label: 'synthesis' })
18
- `;function Ct(e){let t=(0,Q.c)(48),{open:n,language:r,ownerAgentId:i,saving:o,initialDraft:s,onClose:c,onSave:l,onSaveAndStart:u}=e,d;t[0]===r?d=t[1]:(d=a(r),t[0]=r,t[1]=d);let f=d.workflows,[p,m]=(0,Z.useState)(`ai`),[h,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(``),y=s?.mode===`edit`,b=y?f.editWorkflowTitle:f.createWorkflowTitle,x=y?f.editWorkflowHint:s?.mode===`copy`?f.createWorkflowHintFromCopy:f.createWorkflowHint,S,C;t[2]!==s||t[3]!==n?(S=()=>{n&&(m(s?`manual`:`ai`),g(s?.name??``),v(s?.script??``))},C=[s,n],t[2]=s,t[3]=n,t[4]=S,t[5]=C):(S=t[4],C=t[5]),(0,Z.useEffect)(S,C);let w;t[6]===c?w=t[7]:(w=e=>!e&&c(),t[6]=c,t[7]=w);let T;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(Ae,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[8]=T):T=t[8];let E;t[9]===b?E=t[10]:(E=(0,$.jsx)(Ce,{className:`text-base font-semibold text-fg`,children:b}),t[9]=b,t[10]=E);let D;t[11]===x?D=t[12]:(D=(0,$.jsx)(xe,{className:`mt-1 text-sm text-fg-muted`,children:x}),t[11]=x,t[12]=D);let O=p===`ai`,k,A;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>m(`ai`),k=(0,$.jsx)(se,{className:`size-4`,"aria-hidden":!0}),t[13]=k,t[14]=A):(k=t[13],A=t[14]);let j;t[15]!==f.createWorkflowAiTab||t[16]!==O?(j=(0,$.jsx)(wt,{active:O,onClick:A,icon:k,children:f.createWorkflowAiTab}),t[15]=f.createWorkflowAiTab,t[16]=O,t[17]=j):j=t[17];let ee=p===`manual`,M,N;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>m(`manual`),N=(0,$.jsx)(V,{className:`size-4`,"aria-hidden":!0}),t[18]=M,t[19]=N):(M=t[18],N=t[19]);let P;t[20]!==f.createWorkflowManualTab||t[21]!==ee?(P=(0,$.jsx)(wt,{active:ee,onClick:M,icon:N,children:f.createWorkflowManualTab}),t[20]=f.createWorkflowManualTab,t[21]=ee,t[22]=P):P=t[22];let F;t[23]!==j||t[24]!==P?(F=(0,$.jsxs)(`div`,{className:`mt-4 inline-flex rounded-xl border border-edge bg-surface-base p-1`,children:[j,P]}),t[23]=j,t[24]=P,t[25]=F):F=t[25];let I;t[26]!==F||t[27]!==E||t[28]!==D?(I=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[E,D,F]}),t[26]=F,t[27]=E,t[28]=D,t[29]=I):I=t[29];let L;t[30]!==s||t[31]!==r||t[32]!==p||t[33]!==c||t[34]!==l||t[35]!==u||t[36]!==i||t[37]!==o||t[38]!==h||t[39]!==_?(L=p===`ai`?(0,$.jsx)(Tt,{language:r,ownerAgentId:i,saving:o,initialDraft:s,name:h,setName:g,script:_,setScript:v,onClose:c,onSave:l,onSaveAndStart:u}):(0,$.jsx)(Et,{language:r,saving:o,initialDraft:s,name:h,setName:g,script:_,setScript:v,onClose:c,onSave:l}),t[30]=s,t[31]=r,t[32]=p,t[33]=c,t[34]=l,t[35]=u,t[36]=i,t[37]=o,t[38]=h,t[39]=_,t[40]=L):L=t[40];let R;t[41]!==I||t[42]!==L?(R=(0,$.jsxs)(he,{children:[T,(0,$.jsxs)(Ne,{className:`fixed left-1/2 top-1/2 z-66 flex h-[min(92vh,52rem)] w-[min(100%-2rem,72rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[I,L]})]}),t[41]=I,t[42]=L,t[43]=R):R=t[43];let te;return t[44]!==n||t[45]!==R||t[46]!==w?(te=(0,$.jsx)(G,{open:n,onOpenChange:w,children:R}),t[44]=n,t[45]=R,t[46]=w,t[47]=te):te=t[47],te}function wt(e){let t=(0,Q.c)(5),{active:n,onClick:r,icon:i,children:a}=e,o=n?`inline-flex h-8 items-center gap-2 rounded-lg bg-surface-panel px-3 text-sm font-medium text-fg shadow-surface`:`inline-flex h-8 items-center gap-2 rounded-lg px-3 text-sm font-medium text-fg-muted hover:text-fg`,s;return t[0]!==a||t[1]!==i||t[2]!==r||t[3]!==o?(s=(0,$.jsxs)(`button`,{type:`button`,onClick:r,className:o,children:[i,a]}),t[0]=a,t[1]=i,t[2]=r,t[3]=o,t[4]=s):s=t[4],s}function Tt({language:e,ownerAgentId:t,saving:n,initialDraft:r,name:i,setName:o,script:s,setScript:c,onClose:l,onSave:u,onSaveAndStart:d}){let p=a(e).workflows,[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)({allowNetwork:!1,fileSystem:`read`,maxPhases:4,maxSubagents:8,outputFormat:`report`}),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(null),w=(0,Z.useMemo)(()=>g?.validation.errors.map(e=>e.message)??[],[g]),T=(0,Z.useMemo)(()=>g?.lint.filter(e=>e.severity===`error`)??[],[g]),E=m.trim().length>0&&!b,D=!!(g&&i.trim()&&s.trim()&&g.validation.valid&&T.length===0&&!n),O=s.trim().length>0,k=O?p.nlBuilderEditPromptLabel:p.nlBuilderPromptLabel,A=O?p.nlBuilderEditPromptPlaceholder:p.nlBuilderPromptPlaceholder,j=O?`improve`:`create`,ee=async n=>{if(m.trim()){x(!0),C(null);try{let r=await De({prompt:m,agentId:t,language:e===`zh`?`zh`:`en`,mode:n,existingScript:n===`improve`?s:void 0,constraints:v});_(r),o(r.name),c(r.script)}catch(e){C(e instanceof Error?e.message:p.nlBuilderGenerateFailed)}finally{x(!1)}}},M=async()=>{D&&await u({name:i.trim(),script:s})&&l()},N=async()=>{D&&await d({name:i.trim(),script:s,goal:m.trim()})};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-4 overflow-auto px-5 py-4 lg:grid-cols-[minmax(18rem,0.9fr)_minmax(24rem,1.4fr)]`,children:[(0,$.jsxs)(`section`,{className:`space-y-3`,children:[(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:k}),(0,$.jsx)(`textarea`,{value:m,onChange:e=>h(e.target.value),placeholder:A,className:`mt-1.5 min-h-36 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm leading-6 text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,$.jsx)(Dt,{label:p.nlBuilderMaxPhases,value:v.maxPhases??4,min:1,max:8,onChange:e=>y(t=>({...t,maxPhases:e}))}),(0,$.jsx)(Dt,{label:p.nlBuilderMaxAgents,value:v.maxSubagents??8,min:1,max:20,onChange:e=>y(t=>({...t,maxSubagents:e}))})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,$.jsxs)(`label`,{className:`flex items-center gap-2 rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg-muted`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:!!v.allowNetwork,onChange:e=>y(t=>({...t,allowNetwork:e.target.checked}))}),p.nlBuilderAllowNetwork]}),(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:p.nlBuilderFilesystem}),(0,$.jsxs)(ue,{value:v.fileSystem??`read`,onChange:e=>y(t=>({...t,fileSystem:e.target.value})),className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,children:[(0,$.jsx)(Ie,{value:`none`,children:`none`}),(0,$.jsx)(Ie,{value:`read`,children:`read`}),(0,$.jsx)(Ie,{value:`write`,children:`write`})]})]})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,$.jsxs)(f,{variant:`primary`,disabled:!E,onClick:()=>void ee(j),children:[(0,$.jsx)(se,{className:`size-4`,"aria-hidden":!0}),b?p.nlBuilderGenerating:O?p.nlBuilderRewriteExisting:p.nlBuilderGenerate]})}),S?(0,$.jsx)(Bt,{text:S}):null,g?(0,$.jsx)(jt,{draft:g,labels:p}):null]}),(0,$.jsxs)(`section`,{className:`min-w-0 space-y-3`,children:[(0,$.jsx)(kt,{initialDraft:r,labels:p}),(0,$.jsx)(Ot,{labels:p,name:i,setName:o}),(0,$.jsx)(At,{labels:p,script:s,setScript:c,minHeightClass:`min-h-96`}),g?(0,$.jsx)(Mt,{draft:g,labels:p,validationIssues:w}):null]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(f,{variant:`secondary`,onClick:l,disabled:n||b,children:p.cancelDialog}),(0,$.jsx)(f,{variant:`secondary`,disabled:!D,onClick:()=>void M(),children:n?p.savingWorkflow:p.saveWorkflow}),(0,$.jsx)(f,{variant:`primary`,disabled:!D,onClick:()=>void N(),children:p.nlBuilderSaveAndStart})]})]})}function Et({language:e,saving:t,initialDraft:n,name:r,setName:i,script:o,setScript:s,onClose:c,onSave:l}){let u=a(e).workflows,[d,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),b=r.trim(),x=!!(b&&o.trim());(0,Z.useEffect)(()=>{if(!x){h(!1),_(null),y(null);return}let e=!1,t=window.setTimeout(()=>{h(!0),_(null),Te(b,o).then(t=>{e||y(t)}).catch(t=>{e||(y(null),_(t instanceof Error?t.message:u.validateWorkflowFailed))}).finally(()=>{e||h(!1)})},450);return()=>{e=!0,window.clearTimeout(t)}},[x,u.validateWorkflowFailed,o,b]);let S=(0,Z.useMemo)(()=>g?[g]:v?.errors.map(e=>e.message)??[],[g,v]),C=d||m||v!=null||g!=null,w=x&&!t&&!m&&v?.valid===!0;(0,Z.useEffect)(()=>{!n&&!o.trim()&&s(St),p(!1),h(!1),_(null),y(null)},[n,o,s]);let T=async()=>{if(p(!0),!(!x||t)){h(!0),_(null);try{let e=await Te(b,o);if(y(e),!e.valid)return;await l({name:b,script:o})&&c()}catch(e){y(null),_(e instanceof Error?e.message:u.validateWorkflowFailed)}finally{h(!1)}}};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-3 overflow-auto px-5 py-4`,children:[(0,$.jsx)(kt,{initialDraft:n,labels:u}),(0,$.jsx)(Ot,{labels:u,name:r,setName:e=>{i(e),y(null),_(null)}}),(0,$.jsx)(At,{labels:u,script:o,setScript:e=>{s(e),y(null),_(null)},minHeightClass:`min-h-72`}),C?(0,$.jsx)(It,{labels:u,validating:m,validationIssues:S,validationResult:v}):null]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(f,{variant:`secondary`,onClick:c,disabled:t,children:u.cancelDialog}),(0,$.jsx)(f,{variant:`primary`,disabled:!w,onClick:()=>void T(),children:t?u.savingWorkflow:u.saveWorkflow})]})]})}function Dt(e){let t=(0,Q.c)(12),{label:n,value:r,min:i,max:a,onChange:o}=e,s;t[0]===n?s=t[1]:(s=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n}),t[0]=n,t[1]=s);let c;t[2]===o?c=t[3]:(c=e=>o(Number(e.target.value)||void 0),t[2]=o,t[3]=c);let l;t[4]!==a||t[5]!==i||t[6]!==c||t[7]!==r?(l=(0,$.jsx)(`input`,{type:`number`,min:i,max:a,value:r,onChange:c,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[4]=a,t[5]=i,t[6]=c,t[7]=r,t[8]=l):l=t[8];let u;return t[9]!==s||t[10]!==l?(u=(0,$.jsxs)(`label`,{className:`block`,children:[s,l]}),t[9]=s,t[10]=l,t[11]=u):u=t[11],u}function Ot(e){let t=(0,Q.c)(11),{labels:n,name:r,setName:i}=e,a;t[0]===n.workflowNameLabel?a=t[1]:(a=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n.workflowNameLabel}),t[0]=n.workflowNameLabel,t[1]=a);let o;t[2]===i?o=t[3]:(o=e=>i(e.target.value),t[2]=i,t[3]=o);let s;t[4]!==n.workflowNamePlaceholder||t[5]!==r||t[6]!==o?(s=(0,$.jsx)(`input`,{value:r,onChange:o,placeholder:n.workflowNamePlaceholder,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 font-mono text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[4]=n.workflowNamePlaceholder,t[5]=r,t[6]=o,t[7]=s):s=t[7];let c;return t[8]!==a||t[9]!==s?(c=(0,$.jsxs)(`label`,{className:`block`,children:[a,s]}),t[8]=a,t[9]=s,t[10]=c):c=t[10],c}function kt(e){let t=(0,Q.c)(7),{initialDraft:n,labels:r}=e;if(!n)return null;let i;t[0]!==n.mode||t[1]!==n.sourceTitle||t[2]!==r.copyWorkflowNotice||t[3]!==r.editWorkflowNotice?(i=n.mode===`copy`?r.copyWorkflowNotice.replace(`{{title}}`,n.sourceTitle):r.editWorkflowNotice.replace(`{{title}}`,n.sourceTitle),t[0]=n.mode,t[1]=n.sourceTitle,t[2]=r.copyWorkflowNotice,t[3]=r.editWorkflowNotice,t[4]=i):i=t[4];let a=i,o;return t[5]===a?o=t[6]:(o=(0,$.jsx)(`div`,{className:`rounded-xl border border-accent/20 bg-accent-soft/60 px-3 py-2 text-sm leading-6 text-accent-fg`,children:a}),t[5]=a,t[6]=o),o}function At(e){let t=(0,Q.c)(11),{labels:n,script:r,setScript:i,minHeightClass:a}=e,o;t[0]===n.workflowScriptLabel?o=t[1]:(o=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n.workflowScriptLabel}),t[0]=n.workflowScriptLabel,t[1]=o);let s;t[2]===i?s=t[3]:(s=e=>i(e.target.value),t[2]=i,t[3]=s);let c=`mt-1.5 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 font-mono text-xs leading-5 text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20 ${a}`,l;t[4]!==r||t[5]!==s||t[6]!==c?(l=(0,$.jsx)(`textarea`,{value:r,onChange:s,spellCheck:!1,className:c}),t[4]=r,t[5]=s,t[6]=c,t[7]=l):l=t[7];let u;return t[8]!==o||t[9]!==l?(u=(0,$.jsxs)(`label`,{className:`block`,children:[o,l]}),t[8]=o,t[9]=l,t[10]=u):u=t[10],u}function jt(e){let t=(0,Q.c)(23),{draft:n,labels:r}=e,i=n.manifest.title??n.name,a;t[0]===i?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-sm font-semibold text-fg`,children:i}),t[0]=i,t[1]=a);let o;t[2]===n.explanation?o=t[3]:(o=(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-muted`,children:n.explanation}),t[2]=n.explanation,t[3]=o);let s;t[4]!==n.repairAttempts||t[5]!==r.nlBuilderAutoRepaired?(s=n.repairAttempts>0?(0,$.jsx)(`div`,{className:`text-xs font-medium text-accent-fg`,children:r.nlBuilderAutoRepaired.replace(`{count}`,String(n.repairAttempts))}):null,t[4]=n.repairAttempts,t[5]=r.nlBuilderAutoRepaired,t[6]=s):s=t[6];let c;t[7]!==n.permissionsSummary||t[8]!==r.nlBuilderPermissions?(c=(0,$.jsx)(Rt,{title:r.nlBuilderPermissions,items:n.permissionsSummary}),t[7]=n.permissionsSummary,t[8]=r.nlBuilderPermissions,t[9]=c):c=t[9];let l;t[10]!==n.assumptions||t[11]!==r.nlBuilderAssumptions?(l=(0,$.jsx)(Rt,{title:r.nlBuilderAssumptions,items:n.assumptions}),t[10]=n.assumptions,t[11]=r.nlBuilderAssumptions,t[12]=l):l=t[12];let u;t[13]!==n.risks||t[14]!==r.nlBuilderRisks?(u=(0,$.jsx)(Rt,{title:r.nlBuilderRisks,items:n.risks}),t[13]=n.risks,t[14]=r.nlBuilderRisks,t[15]=u):u=t[15];let d;return t[16]!==a||t[17]!==o||t[18]!==s||t[19]!==c||t[20]!==l||t[21]!==u?(d=(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl border border-edge bg-surface-base/50 p-3`,children:[a,o,s,c,l,u]}),t[16]=a,t[17]=o,t[18]=s,t[19]=c,t[20]=l,t[21]=u,t[22]=d):d=t[22],d}function Mt(e){let t=(0,Q.c)(17),{draft:n,labels:r,validationIssues:i}=e,a=n.lint,o;t[0]!==n.validation.valid||t[1]!==a?(o=n.validation.valid&&a.every(Ft),t[0]=n.validation.valid,t[1]=a,t[2]=o):o=t[2];let s=o,c=s?`rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-3 text-sm text-emerald-800 dark:text-emerald-200`:`rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-sm text-amber-800 dark:text-amber-200`,l;t[3]===s?l=t[4]:(l=s?(0,$.jsx)(ve,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(N,{className:`size-4`,"aria-hidden":!0}),t[3]=s,t[4]=l);let u=s?r.validationPassed:r.nlBuilderReviewIssues,d;t[5]!==l||t[6]!==u?(d=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[l,u]}),t[5]=l,t[6]=u,t[7]=d):d=t[7];let f;t[8]!==n.validation.definition?.phases||t[9]!==r.validationPreview||t[10]!==a||t[11]!==i?(f=i.length>0||a.length>0?(0,$.jsxs)(`ul`,{className:`mt-2 list-disc space-y-1 pl-5 text-xs leading-5`,children:[i.map(Pt),a.map(Nt)]}):(0,$.jsx)(`p`,{className:`mt-1 text-xs opacity-80`,children:r.validationPreview.replace(`{{phaseCount}}`,String(n.validation.definition?.phases.length??0))}),t[8]=n.validation.definition?.phases,t[9]=r.validationPreview,t[10]=a,t[11]=i,t[12]=f):f=t[12];let p;return t[13]!==c||t[14]!==d||t[15]!==f?(p=(0,$.jsxs)(`div`,{className:c,children:[d,f]}),t[13]=c,t[14]=d,t[15]=f,t[16]=p):p=t[16],p}function Nt(e){return(0,$.jsx)(`li`,{children:e.message},`${e.code}:${e.message}`)}function Pt(e){return(0,$.jsx)(`li`,{children:e},e)}function Ft(e){return e.severity!==`error`}function It(e){let t=(0,Q.c)(10),{labels:n,validating:r,validationIssues:i,validationResult:a}=e,o=i.length>0?`rounded-xl border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-200`:`rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-700 dark:text-emerald-200`,s=r?n.validatingWorkflow:i.length>0?n.validationFailed:n.validationPassed,c;t[0]===s?c=t[1]:(c=(0,$.jsx)(`div`,{className:`font-medium`,children:s}),t[0]=s,t[1]=c);let l;t[2]!==n.validationPreview||t[3]!==i||t[4]!==a?(l=i.length>0?(0,$.jsx)(`ul`,{className:`mt-1 list-disc space-y-1 pl-5`,children:i.map(Lt)}):a?.definition?(0,$.jsx)(`div`,{className:`mt-1 text-xs opacity-80`,children:n.validationPreview.replace(`{{phaseCount}}`,String(a.definition.phases.length))}):null,t[2]=n.validationPreview,t[3]=i,t[4]=a,t[5]=l):l=t[5];let u;return t[6]!==o||t[7]!==c||t[8]!==l?(u=(0,$.jsxs)(`div`,{className:o,role:`status`,children:[c,l]}),t[6]=o,t[7]=c,t[8]=l,t[9]=u):u=t[9],u}function Lt(e){return(0,$.jsx)(`li`,{children:e},e)}function Rt(e){let t=(0,Q.c)(10),{title:n,items:r}=e;if(!r.length)return null;let i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(Le,{className:`size-3`,"aria-hidden":!0}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=(0,$.jsxs)(`div`,{className:`mb-1 flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-fg-subtle`,children:[i,n]}),t[1]=n,t[2]=a);let o;t[3]===r?o=t[4]:(o=r.slice(0,5).map(zt),t[3]=r,t[4]=o);let s;t[5]===o?s=t[6]:(s=(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:o}),t[5]=o,t[6]=s);let c;return t[7]!==a||t[8]!==s?(c=(0,$.jsxs)(`div`,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c}function zt(e){return(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1 text-[11px] text-fg-muted`,children:e},e)}function Bt(e){let t=(0,Q.c)(2),{text:n}=e,r;return t[0]===n?r=t[1]:(r=(0,$.jsx)(`div`,{className:`rounded-xl border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-200`,children:n}),t[0]=n,t[1]=r),r}function Vt(e){let t=(0,Q.c)(57),{open:n,definition:r,language:i,onClose:o,onRun:s}=e,c;t[0]===i?c=t[1]:(c=a(i),t[0]=i,t[1]=c);let l=c.workflows;if(!r)return null;let u;t[2]!==r||t[3]!==i?(u=y(r,i),t[2]=r,t[3]=i,t[4]=u):u=t[4];let d=u,p=r.runtime?.source??``,m;t[5]===o?m=t[6]:(m=e=>!e&&o(),t[5]=o,t[6]=m);let h;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(Ae,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=h):h=t[7];let g;t[8]===r.title?g=t[9]:(g=(0,$.jsx)(Ce,{className:`text-base font-semibold text-fg`,children:r.title}),t[8]=r.title,t[9]=g);let _;t[10]===d.description?_=t[11]:(_=(0,$.jsx)(xe,{className:`mt-1 text-sm text-fg-muted`,children:d.description}),t[10]=d.description,t[11]=_);let v;t[12]!==g||t[13]!==_?(v=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[g,_]}),t[12]=g,t[13]=_,t[14]=v):v=t[14];let b;t[15]!==l.whenToUseHeading||t[16]!==d.whenToUse?(b=d.whenToUse?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.whenToUseHeading}),(0,$.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:d.whenToUse})]}):null,t[15]=l.whenToUseHeading,t[16]=d.whenToUse,t[17]=b):b=t[17];let x;t[18]!==r||t[19]!==l?(x=(0,$.jsx)(Ut,{definition:r,labels:l}),t[18]=r,t[19]=l,t[20]=x):x=t[20];let S;t[21]!==r.inputSchema||t[22]!==l.inputsHeading?(S=r.inputSchema?(0,$.jsx)(Gt,{title:l.inputsHeading,schema:r.inputSchema}):null,t[21]=r.inputSchema,t[22]=l.inputsHeading,t[23]=S):S=t[23];let C;t[24]!==r.outputSchema||t[25]!==l.outputsHeading?(C=r.outputSchema?(0,$.jsx)(Gt,{title:l.outputsHeading,schema:r.outputSchema}):null,t[24]=r.outputSchema,t[25]=l.outputsHeading,t[26]=C):C=t[26];let w;t[27]!==r.phases||t[28]!==l.phasesHeading?(w=r.phases.length>0?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.phasesHeading}),(0,$.jsx)(`ol`,{className:`mt-2 space-y-2`,children:r.phases.map(Ht)})]}):null,t[27]=r.phases,t[28]=l.phasesHeading,t[29]=w):w=t[29];let T;t[30]!==l.scriptHeading||t[31]!==p?(T=p?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.scriptHeading}),(0,$.jsx)(`pre`,{className:`mt-2 max-h-64 overflow-auto rounded-xl border border-edge bg-surface-base/50 p-3 font-mono text-xs leading-5 text-fg-muted`,children:p})]}):null,t[30]=l.scriptHeading,t[31]=p,t[32]=T):T=t[32];let E;t[33]!==S||t[34]!==C||t[35]!==w||t[36]!==T||t[37]!==b||t[38]!==x?(E=(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[b,x,S,C,w,T]}),t[33]=S,t[34]=C,t[35]=w,t[36]=T,t[37]=b,t[38]=x,t[39]=E):E=t[39];let D;t[40]!==l.closeResult||t[41]!==o?(D=(0,$.jsx)(f,{variant:`secondary`,onClick:o,children:l.closeResult}),t[40]=l.closeResult,t[41]=o,t[42]=D):D=t[42];let O;t[43]!==l.runWorkflow||t[44]!==s?(O=(0,$.jsx)(f,{variant:`primary`,onClick:s,children:l.runWorkflow}),t[43]=l.runWorkflow,t[44]=s,t[45]=O):O=t[45];let k;t[46]!==D||t[47]!==O?(k=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[D,O]}),t[46]=D,t[47]=O,t[48]=k):k=t[48];let A;t[49]!==E||t[50]!==k||t[51]!==v?(A=(0,$.jsxs)(he,{children:[h,(0,$.jsxs)(Ne,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[v,E,k]})]}),t[49]=E,t[50]=k,t[51]=v,t[52]=A):A=t[52];let j;return t[53]!==n||t[54]!==A||t[55]!==m?(j=(0,$.jsx)(G,{open:n,onOpenChange:m,children:A}),t[53]=n,t[54]=A,t[55]=m,t[56]=j):j=t[56],j}function Ht(e,t){return(0,$.jsxs)(`li`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`text-sm font-medium text-fg`,children:[t+1,`. `,e.title]}),e.description?(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e.description}):null]},e.id)}function Ut(e){let t=(0,Q.c)(39),{definition:n,labels:r}=e,i=n.permissions,a=n.resources,o;t[0]!==r.permissionsTools||t[1]!==i?(o=i?.tools?.length?[r.permissionsTools,i.tools.join(`, `)]:null,t[0]=r.permissionsTools,t[1]=i,t[2]=o):o=t[2];let s;t[3]!==r.networkDisabled||t[4]!==r.networkEnabled||t[5]!==r.permissionsNetwork||t[6]!==i?(s=i?.network==null?null:[r.permissionsNetwork,i.network?r.networkEnabled:r.networkDisabled],t[3]=r.networkDisabled,t[4]=r.networkEnabled,t[5]=r.permissionsNetwork,t[6]=i,t[7]=s):s=t[7];let c;t[8]!==r.permissionsFileSystem||t[9]!==i?(c=i?.fileSystem?[r.permissionsFileSystem,i.fileSystem]:null,t[8]=r.permissionsFileSystem,t[9]=i,t[10]=c):c=t[10];let l;t[11]!==r.permissionsApproval||t[12]!==i?.approvalRequired?(l=i?.approvalRequired?[r.permissionsApproval,r.permissionsApproval]:null,t[11]=r.permissionsApproval,t[12]=i?.approvalRequired,t[13]=l):l=t[13];let u;t[14]!==r.resourcesSkills||t[15]!==a?(u=a?.skills?.length?[r.resourcesSkills,a.skills.join(`, `)]:null,t[14]=r.resourcesSkills,t[15]=a,t[16]=u):u=t[16];let d;t[17]!==r.resourcesContextFiles||t[18]!==a?(d=a?.contextFiles?.length?[r.resourcesContextFiles,a.contextFiles.join(`, `)]:null,t[17]=r.resourcesContextFiles,t[18]=a,t[19]=d):d=t[19];let f;t[20]!==r.resourcesPromptTemplates||t[21]!==a?(f=a?.promptTemplates?.length?[r.resourcesPromptTemplates,a.promptTemplates.join(`, `)]:null,t[20]=r.resourcesPromptTemplates,t[21]=a,t[22]=f):f=t[22];let p;t[23]!==o||t[24]!==s||t[25]!==c||t[26]!==l||t[27]!==u||t[28]!==d||t[29]!==f?(p=[o,s,c,l,u,d,f].filter(Boolean),t[23]=o,t[24]=s,t[25]=c,t[26]=l,t[27]=u,t[28]=d,t[29]=f,t[30]=p):p=t[30];let m=p,h;t[31]===r.capabilitiesHeading?h=t[32]:(h=(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:r.capabilitiesHeading}),t[31]=r.capabilitiesHeading,t[32]=h);let g;t[33]!==r.capabilityNone||t[34]!==m?(g=m.length>0?(0,$.jsx)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:m.map(Wt)}):(0,$.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:r.capabilityNone}),t[33]=r.capabilityNone,t[34]=m,t[35]=g):g=t[35];let _;return t[36]!==g||t[37]!==h?(_=(0,$.jsxs)(`section`,{children:[h,g]}),t[36]=g,t[37]=h,t[38]=_):_=t[38],_}function Wt(e){let[t,n]=e;return(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-fg-muted`,children:[(0,$.jsx)(de,{className:`size-3.5 text-fg-subtle`,"aria-hidden":!0}),t]}),(0,$.jsx)(`div`,{className:`mt-1 break-words text-sm text-fg`,children:n})]},`${t}:${n}`)}function Gt(e){let t=(0,Q.c)(16),{title:n,schema:r}=e,i;t[0]===r.properties?i=t[1]:(i=Object.keys(r.properties??{}),t[0]=r.properties,t[1]=i);let a=i,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(Le,{className:`size-3.5`,"aria-hidden":!0}),t[2]=o):o=t[2];let s;t[3]===n?s=t[4]:(s=(0,$.jsxs)(`h3`,{className:`flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:[o,n]}),t[3]=n,t[4]=s);let c;t[5]===a?c=t[6]:(c=a.length>0?(0,$.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:a.map(Kt)}):null,t[5]=a,t[6]=c);let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(`summary`,{className:`cursor-pointer text-xs text-fg-subtle hover:text-fg-muted`,children:`JSON`}),t[7]=l):l=t[7];let u;t[8]===r?u=t[9]:(u=JSON.stringify(r,null,2),t[8]=r,t[9]=u);let d;t[10]===u?d=t[11]:(d=(0,$.jsxs)(`details`,{className:`mt-2`,children:[l,(0,$.jsx)(`pre`,{className:`mt-2 max-h-48 overflow-auto rounded-xl border border-edge bg-surface-base/50 p-3 font-mono text-xs leading-5 text-fg-muted`,children:u})]}),t[10]=u,t[11]=d);let f;return t[12]!==s||t[13]!==c||t[14]!==d?(f=(0,$.jsxs)(`section`,{children:[s,c,d]}),t[12]=s,t[13]=c,t[14]=d,t[15]=f):f=t[15],f}function Kt(e){return(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-base px-2 py-1 text-xs text-fg-muted`,children:e},e)}function qt(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?q(t.agentScaleExact,{count:n.min}):q(t.agentScaleRange,{min:n.min,max:n.max}):null}function Jt(e){let t=(0,Q.c)(81),{definition:n,language:r,labels:a,onPick:o,onDetail:s,onEdit:c}=e,l;t[0]!==n||t[1]!==r?(l=y(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]!==n||t[4]!==a?(d=qt(n,a),t[3]=n,t[4]=a,t[5]=d):d=t[5];let m=d,h=n.metadata.source===`user`,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=i(`group flex h-full flex-col rounded-xl border border-edge-subtle bg-surface-base p-4 text-left transition-colors`,`hover:border-accent/40 hover:bg-surface-hover`),t[6]=g):g=t[6];let _;t[7]!==n||t[8]!==s?(_=()=>s(n),t[7]=n,t[8]=s,t[9]=_):_=t[9];let v;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(v=i(`flex flex-1 flex-col text-left`,ee.focusRingPanel),t[10]=v):v=t[10];let b=h?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`,S;t[11]===b?S=t[12]:(S=i(`rounded-full px-2 py-0.5 text-[10px] font-medium`,b),t[11]=b,t[12]=S);let C=h?a.badgeUser:a.badgeBuiltin,w;t[13]!==S||t[14]!==C?(w=(0,$.jsx)(`span`,{className:S,children:C}),t[13]=S,t[14]=C,t[15]=w):w=t[15];let T;t[16]!==n.inputSchema||t[17]!==a.inputSchemaBadge?(T=n.inputSchema?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-subtle`,children:[(0,$.jsx)(Le,{className:`size-2.5`,"aria-hidden":!0}),a.inputSchemaBadge]}):null,t[16]=n.inputSchema,t[17]=a.inputSchemaBadge,t[18]=T):T=t[18];let E;t[19]===n.metadata.tags?E=t[20]:(E=n.metadata.tags.slice(0,2).map(Yt),t[19]=n.metadata.tags,t[20]=E);let D;t[21]!==T||t[22]!==E||t[23]!==w?(D=(0,$.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-1.5`,children:[w,T,E]}),t[21]=T,t[22]=E,t[23]=w,t[24]=D):D=t[24];let O;t[25]===n.title?O=t[26]:(O=(0,$.jsx)(`span`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:n.title}),t[25]=n.title,t[26]=O);let k;t[27]!==D||t[28]!==O?(k=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[D,O]}),t[27]=D,t[28]=O,t[29]=k):k=t[29];let A;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,$.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-lg bg-accent-soft text-accent-fg opacity-80 transition-opacity group-hover:opacity-100`,children:(0,$.jsx)(Ue,{className:`size-3.5`,"aria-hidden":!0})}),t[30]=A):A=t[30];let j;t[31]===k?j=t[32]:(j=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[k,A]}),t[31]=k,t[32]=j);let M;t[33]===u.description?M=t[34]:(M=u.description?(0,$.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-5 text-fg-muted`,children:u.description}):null,t[33]=u.description,t[34]=M);let N;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(be,{className:`size-3`,"aria-hidden":!0}),t[35]=N):N=t[35];let P;t[36]!==n.phases.length||t[37]!==a.phaseCount?(P=q(a.phaseCount,{count:n.phases.length}),t[36]=n.phases.length,t[37]=a.phaseCount,t[38]=P):P=t[38];let F;t[39]===P?F=t[40]:(F=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[N,P]}),t[39]=P,t[40]=F);let I;t[41]===m?I=t[42]:(I=m?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,$.jsx)(Oe,{className:`size-3`,"aria-hidden":!0}),m]}):null,t[41]=m,t[42]=I);let L;t[43]!==F||t[44]!==I?(L=(0,$.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-3 pt-3 text-[11px] text-fg-subtle`,children:[F,I]}),t[43]=F,t[44]=I,t[45]=L):L=t[45];let R;t[46]!==j||t[47]!==M||t[48]!==L||t[49]!==_?(R=(0,$.jsxs)(`button`,{type:`button`,onClick:_,className:v,children:[j,M,L]}),t[46]=j,t[47]=M,t[48]=L,t[49]=_,t[50]=R):R=t[50];let te;t[51]!==n||t[52]!==o?(te=()=>o(n),t[51]=n,t[52]=o,t[53]=te):te=t[53];let z;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,$.jsx)(x,{className:`size-3.5`,"aria-hidden":!0}),t[54]=z):z=t[54];let ne;t[55]!==a.runWorkflow||t[56]!==te?(ne=(0,$.jsxs)(f,{type:`button`,variant:`primary`,className:`h-8 flex-1 rounded-lg text-xs`,onClick:te,children:[z,a.runWorkflow]}),t[55]=a.runWorkflow,t[56]=te,t[57]=ne):ne=t[57];let B;t[58]!==n||t[59]!==s?(B=()=>s(n),t[58]=n,t[59]=s,t[60]=B):B=t[60];let re;t[61]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,$.jsx)(Ue,{className:`size-3.5`,"aria-hidden":!0}),t[61]=re):re=t[61];let V;t[62]!==a.viewDetails||t[63]!==B?(V=(0,$.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:B,children:[re,a.viewDetails]}),t[62]=a.viewDetails,t[63]=B,t[64]=V):V=t[64];let H;t[65]!==n||t[66]!==c?(H=()=>c(n),t[65]=n,t[66]=c,t[67]=H):H=t[67];let ie;t[68]===h?ie=t[69]:(ie=h?(0,$.jsx)(p,{className:`size-3.5`,"aria-hidden":!0}):(0,$.jsx)(X,{className:`size-3.5`,"aria-hidden":!0}),t[68]=h,t[69]=ie);let U=h?a.editWorkflow:a.copyAndEditWorkflow,W;t[70]!==H||t[71]!==ie||t[72]!==U?(W=(0,$.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:H,children:[ie,U]}),t[70]=H,t[71]=ie,t[72]=U,t[73]=W):W=t[73];let G;t[74]!==ne||t[75]!==V||t[76]!==W?(G=(0,$.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2 border-t border-edge-subtle pt-3`,children:[ne,V,W]}),t[74]=ne,t[75]=V,t[76]=W,t[77]=G):G=t[77];let K;return t[78]!==R||t[79]!==G?(K=(0,$.jsxs)(`article`,{className:g,children:[R,G]}),t[78]=R,t[79]=G,t[80]=K):K=t[80],K}function Yt(e){return(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-subtle`,children:e},e)}function Xt(e,t){return e===`uncategorized`?t.categories.uncategorized:t.categories[e]}function Zt(e){let t=(0,Q.c)(11),{definitions:n,language:r,onPick:o,onDetail:s,onEdit:c}=e,l=a(r).workflows,[u,d]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(`all`),h;t[0]!==p||t[1]!==n||t[2]!==u?(h=le(n,u,p,`all`),t[0]=p,t[1]=n,t[2]=u,t[3]=h):h=t[3];let g=h,_;t[4]===g?_=t[5]:(_=Be(g),t[4]=g,t[5]=_);let v=_,y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(L,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[6]=y):y=t[6];let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>d(e.target.value),t[7]=b):b=t[7];let x=l.searchPlaceholder,S;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(S=i(`h-10 w-full rounded-xl border border-edge bg-surface-base py-2 pl-10 pr-3 text-sm text-fg`,`placeholder:text-fg-subtle`,ee.focusRingPanel),t[8]=S):S=t[8];let C=g.length===0?(0,$.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center px-4 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:l.noDefinitions}),(0,$.jsx)(`p`,{className:`mt-1 max-w-sm text-xs leading-5 text-fg-subtle`,children:l.noDefinitionsHint})]}):p===`all`?(0,$.jsx)(`div`,{className:`flex flex-col gap-6 pb-1`,children:v.map(e=>(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:Xt(e.category,l)}),(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-3`,children:e.items.map(e=>(0,$.jsx)(Jt,{definition:e,language:r,labels:l,onPick:o,onDetail:s,onEdit:c},e.id))})]},e.category))}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 pb-1 sm:grid-cols-2 xl:grid-cols-3`,children:g.map(e=>(0,$.jsx)(Jt,{definition:e,language:r,labels:l,onPick:o,onDetail:s,onEdit:c},e.id))}),w;return t[9]===C?w=t[10]:(w=(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:C}),t[9]=C,t[10]=w),(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[y,(0,$.jsx)(`input`,{value:u,onChange:b,placeholder:x,className:S})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`group`,"aria-label":l.categoryFilterAria,children:Y.map(e=>(0,$.jsx)(f,{type:`button`,variant:p===e?`secondary`:`ghost`,className:`h-8 rounded-full px-3 py-1.5 text-xs`,onClick:()=>m(e),children:l.categories[e]},e))})]}),w]})}function Qt(e){let t=(0,Q.c)(32),{open:n,definitions:r,language:o,onClose:s,onPick:c,onDetail:l,onEdit:u}=e,d;t[0]===o?d=t[1]:(d=a(o),t[0]=o,t[1]=d);let p=d.workflows,m;t[2]===s?m=t[3]:(m=e=>!e&&s(),t[2]=s,t[3]=m);let h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(Ae,{className:`fixed inset-0 z-50 bg-scrim`}),t[4]=h):h=t[4];let g;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(g=i(`pointer-events-auto relative flex h-[min(90vh,840px)] w-full max-w-5xl flex-col`,`rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,ee.focusRingPanel),t[5]=g):g=t[5];let _;t[6]===p.pickStartTitle?_=t[7]:(_=(0,$.jsx)(Ce,{className:`text-lg font-semibold text-fg`,children:p.pickStartTitle}),t[6]=p.pickStartTitle,t[7]=_);let y;t[8]===p.pickStartHint?y=t[9]:(y=(0,$.jsx)(xe,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:p.pickStartHint}),t[8]=p.pickStartHint,t[9]=y);let b;t[10]!==_||t[11]!==y?(b=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[_,y]}),t[10]=_,t[11]=y,t[12]=b):b=t[12];let x;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,$.jsx)(v,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),t[13]=x):x=t[13];let S;t[14]===p.pickStartClose?S=t[15]:(S=(0,$.jsx)(oe,{asChild:!0,children:(0,$.jsx)(f,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":p.pickStartClose,children:x})}),t[14]=p.pickStartClose,t[15]=S);let C;t[16]!==b||t[17]!==S?(C=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge-subtle px-6 py-5`,children:[b,S]}),t[16]=b,t[17]=S,t[18]=C):C=t[18];let w;t[19]!==r||t[20]!==o||t[21]!==l||t[22]!==u||t[23]!==c?(w=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-6 py-5`,children:(0,$.jsx)(Zt,{definitions:r,language:o,onPick:c,onDetail:l,onEdit:u})}),t[19]=r,t[20]=o,t[21]=l,t[22]=u,t[23]=c,t[24]=w):w=t[24];let T;t[25]!==C||t[26]!==w?(T=(0,$.jsxs)(he,{children:[h,(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none`,children:(0,$.jsxs)(Ne,{className:g,onOpenAutoFocus:$t,children:[C,w]})})]}),t[25]=C,t[26]=w,t[27]=T):T=t[27];let E;return t[28]!==n||t[29]!==T||t[30]!==m?(E=(0,$.jsx)(G,{open:n,onOpenChange:m,children:T}),t[28]=n,t[29]=T,t[30]=m,t[31]=E):E=t[31],E}function $t(e){return e.preventDefault()}function en(e,t){return t.status[e]??e}function tn(e,t){return t.phaseStatus[e]??e}function nn(e,t){let{run:n}=e;return n.status===`succeeded`?q(t.runSummarySucceeded,{agents:n.metrics.doneAgentCount,artifacts:n.metrics.artifactCount}):n.status===`failed`||n.status===`timeout`?n.error?.message??t.runSummaryFailedFallback:n.status===`cancelled`?t.runSummaryCancelled:q(t.runSummaryActive,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}function rn(e,t){let{run:n}=e;return n.status===`failed`?t.diagnosticFailedHint:n.status===`timeout`?t.diagnosticTimeoutHint:n.status===`cancelled`?t.diagnosticCancelledHint:n.status===`succeeded`&&n.metrics.errorAgentCount>0?t.diagnosticPartialHint:null}function an(e){return I(e)}function on(e){return!e||typeof e!=`object`||!(`kind`in e)?`unknown`:e.kind===`chat`?`chat · ${e.sessionKey}`:e.kind===`webui`?e.sessionKey?`webui · ${e.sessionKey}`:`webui`:e.kind===`automation`?`automation · ${e.automationId}`:e.kind===`api`?e.requestId?`api · ${e.requestId}`:`api`:e.kind===`im`?`${e.channel} · ${e.chatId}`:String(e.kind)}function sn({view:e,comparison:t,currentDefinition:n,loading:r,language:o,localeTag:s,onCancel:c,onRetry:l,onReplay:p,onOpenRunId:m,ownerAgentId:_,onClose:y}){let x=a(o).workflows,S=a(o).automations.suggestions,C=Ee(o),E=b(),[D,O]=(0,Z.useState)(!0),[A,j]=(0,Z.useState)(`result`),[ee,M]=(0,Z.useState)(!1),[N,P]=(0,Z.useState)(null),[F,L]=(0,Z.useState)(!1),[ne,B]=(0,Z.useState)(null),[re,V]=(0,Z.useState)(null),[,ie]=(0,Z.useState)(0),ae=e?.run.status,oe=ae?k.has(ae):!1;(0,Z.useEffect)(()=>{e?.run.id&&(O(oe||ae===`failed`||ae===`timeout`),j(`result`),P(null),B(null))},[e?.run.id,oe,ae,e?.run.metrics.errorAgentCount]),(0,Z.useEffect)(()=>{if(!oe)return;let e=window.setInterval(()=>ie(e=>e+1),1e3);return()=>window.clearInterval(e)},[oe]);let J=(0,Z.useMemo)(()=>e?_e(e):null,[e]),se=(0,Z.useMemo)(()=>J?z(J):{phases:[],unphased:null},[J]),ce=(0,Z.useMemo)(()=>N==null||!J?null:J.agents.find(e=>e.id===N)??null,[N,J]),le=(0,Z.useCallback)(e=>{P(e.id)},[]),ue=(0,Z.useMemo)(()=>e?fe(e):[],[e]),de=e?ze(e.run.result):void 0,Y=de?bn(de):null,ge=de?R(de):``,ve=!!de,ye=(0,Z.useCallback)(async()=>{ve&&await u(ge)&&(L(!0),window.setTimeout(()=>L(!1),1500))},[ve,ge]),be=(0,Z.useCallback)(()=>{if(!ve||!e)return;let t=new Blob([ge],{type:`text/markdown;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e.run.definitionId}-${e.run.id.slice(0,8)}.md`,r.click(),URL.revokeObjectURL(n)},[ve,ge,e]),xe=(0,Z.useCallback)(()=>{if(!e)return;let t=an(e);t&&E(h(t))},[E,e]),Se=(0,Z.useCallback)(async t=>{if(e){B(null),V(t.id);try{vn(await H(e.run.id,t.id,{ownerAgentId:_}),t.name||t.id)}catch(e){B(e instanceof Error?e.message:String(e))}finally{V(null)}}},[_,e]),we=(0,Z.useCallback)(t=>{if(!e||!t.prompt)return;let n=an(e);if(!n){u(t.prompt);return}E(h(n,t.prompt))},[E,e]),Te=(0,Z.useCallback)(t=>{if(!e||t==null)return;let n=String(t),r=e.agents.findIndex(e=>String(e.id)===n);if(r<0)return;let i=Number.parseInt(n,10);P(Number.isFinite(i)?i:r+1)},[e]),De=e?an(e):null,Oe=ae===`failed`;if(r)return(0,$.jsx)(G,{open:!0,onOpenChange:e=>!e&&y(),children:(0,$.jsxs)(he,{children:[(0,$.jsx)(Ae,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(Ne,{className:`fixed left-1/2 top-1/2 z-66 flex h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(Ce,{className:`text-base font-semibold tracking-tight text-fg`,children:x.runSummaryTitle}),(0,$.jsx)(f,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":x.pickStartClose,onClick:y,children:(0,$.jsx)(v,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsx)(`div`,{className:`p-5 text-sm text-fg-muted`,children:x.loading})]})]})});if(!e||!J)return null;let{run:X}=e,ke=e.controls.canCancel&&oe,je=oe&&X.startedAtMs!=null?W(Date.now()-X.startedAtMs):W(X.metrics.durationMs??void 0),Me=nn(e,x),Pe=rn(e,x),Ie=X.metadata,Le=on(X.source),Be=e.controls.canRetry&&e.agents.some(e=>(e.status===`error`||e.status===`skipped`)&&e.prompt?.trim()),Ve=e.controls.canRetry&&(e.phases.some(t=>t.status===`failed`&&e.agents.some(e=>e.phaseId===t.id&&e.prompt?.trim()))||e.agents.some(e=>(e.status===`error`||e.status===`skipped`)&&e.phaseId&&e.prompt?.trim())),He=X.goal?.trim()||X.title,Ue=ue.length>0||!!Pe,Ge=!!De||ke,Q=e.controls.canRetry||Be||Ve,Ke=ve,qe=Ge||Q||Ke;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(G,{open:!0,onOpenChange:e=>!e&&y(),children:(0,$.jsxs)(he,{children:[(0,$.jsx)(Ae,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(Ne,{className:`fixed left-1/2 top-1/2 z-66 flex h-[min(90vh,52rem)] w-[min(100%-2rem,64rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(Ce,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:He}),(0,$.jsx)(f,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":x.pickStartClose,onClick:y,children:(0,$.jsx)(v,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsxs)(`section`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsxs)(`header`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/60 p-4`,children:[(0,$.jsx)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold leading-7 text-fg`,children:He}),(0,$.jsx)(`span`,{className:i(`rounded-full px-2 py-0.5 text-xs font-medium`,Re(X.status)),children:en(X.status,x)})]}),(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[X.title,` · `,X.definitionId]}),(0,$.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:Me}),Pe?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-subtle`,children:Pe}):null]})}),(0,$.jsxs)(`dl`,{className:`mt-4 grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(kn,{label:x.metrics.startedAt,value:Fe(X.startedAtMs??X.createdAtMs,s)}),(0,$.jsx)(kn,{label:x.metrics.duration,value:je}),(0,$.jsx)(kn,{label:x.metrics.agents,value:q(x.agentProgress,{done:X.metrics.doneAgentCount,total:X.metrics.agentCount})}),(0,$.jsx)(kn,{label:x.metrics.artifacts,value:String(X.metrics.artifactCount)})]})]}),(0,$.jsx)(me,{eventType:`workflow.run.completed`,source:`workflows`,payloadKey:`runId`,payloadValue:X.id,className:`mt-4`}),Oe?(0,$.jsx)(We,{title:S.workflowFailedTitle,description:S.workflowFailedDescription,prompt:q(S.workflowFailedPrompt,{runId:X.id,definitionId:X.definitionId}),coverage:{eventType:`workflow.run.completed`,source:`workflows`,eventPayload:{runId:X.id,status:`failed`}},className:`mt-4`}):null,(0,$.jsx)(ln,{activeTab:A,onChange:j,labels:x,hasDiagnostics:Ue,artifactCount:Y?.artifacts.length??e.artifacts.length}),A===`result`?(0,$.jsxs)(`section`,{className:`mt-5 space-y-4`,children:[ve?(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-base/50 p-3`,children:(0,$.jsx)(T,{result:de,labels:C.result})}):(0,$.jsx)(`div`,{className:`rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:x.noResult}),qe?(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:x.nextActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-3`,children:[Ge?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:x.primaryActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[De?(0,$.jsxs)(f,{variant:`primary`,onClick:xe,children:[(0,$.jsx)(U,{className:`size-4`,"aria-hidden":!0}),x.continueInChat]}):null,ke?(0,$.jsxs)(f,{variant:`secondary`,onClick:c,className:`text-red-600 dark:text-red-300`,children:[(0,$.jsx)(K,{className:`size-4`,"aria-hidden":!0}),x.cancel]}):null]})]}):null,Q?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:x.recoveryActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[Be?(0,$.jsxs)(f,{variant:`secondary`,onClick:()=>p(`failed_agents`),children:[(0,$.jsx)(g,{className:`size-4`,"aria-hidden":!0}),x.replayFailedAgents]}):null,Ve?(0,$.jsxs)(f,{variant:`secondary`,onClick:()=>p(`failed_phases`),children:[(0,$.jsx)(g,{className:`size-4`,"aria-hidden":!0}),x.replayFailedPhases]}):null,e.controls.canRetry?(0,$.jsxs)(f,{variant:`secondary`,onClick:l,children:[(0,$.jsx)(g,{className:`size-4`,"aria-hidden":!0}),x.rerun]}):null]})]}):null,Ke?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:x.resultActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,$.jsxs)(f,{variant:`secondary`,onClick:ye,children:[F?(0,$.jsx)(pe,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(w,{className:`size-4`,"aria-hidden":!0}),F?x.copied:x.copyResult]}),(0,$.jsxs)(f,{variant:`secondary`,onClick:be,children:[(0,$.jsx)(te,{className:`size-4`,"aria-hidden":!0}),x.exportResult]})]})]}):null]})]}):null,(0,$.jsx)(fn,{view:e,comparison:t,labels:x,onOpenRunId:m})]}):null,A===`process`?(0,$.jsx)(un,{snapshot:J,rollup:se,view:e,labels:x,cardLabels:C,isActive:oe,processExpanded:D,logsExpanded:ee,drawerAgentId:N,durationText:je,onToggleProcess:()=>O(e=>!e),onToggleLogs:()=>M(e=>!e),onSelectAgent:le}):null,A===`diagnostics`?(0,$.jsx)(cn,{diagnostics:ue,labels:x,hint:Pe,onOpenAgent:Te}):null,A===`artifacts`?(0,$.jsx)(_n,{outcome:Y,labels:x,downloadingArtifactId:re,downloadError:ne,onCopyText:e=>void u(e),onDownloadArtifact:e=>void Se(e),onStartFollowUp:we}):null,A===`debug`?(0,$.jsx)(xn,{agents:J.agents,labels:x,metadataItems:[{label:x.metadataSession,value:Ie?.sessionKey??I(e)??`—`},{label:x.metadataSource,value:Le},{label:x.metadataDefinition,value:`${Ie?.definition.version??X.definitionVersion} · ${Ie?.definition.source??`unknown`}`},{label:x.metadataDefinitionHash,value:pn(Ie?.definition,n,x)},{label:x.metadataPermissions,value:mn(Ie?.definition)},{label:x.metadataRetryOf,value:Ie?.retryOfRunId??`—`}],defaultExpanded:!0}):null]})]})]})}),(0,$.jsx)(d,{open:N!=null&&ce!=null,agent:ce,snapshot:J,sessionKey:null,ownerAgentId:_,onClose:()=>P(null),labels:C.drawer})]})}function cn(e){let t=(0,Q.c)(13),{diagnostics:n,labels:r,hint:i,onOpenAgent:a}=e;if(n.length===0&&!i)return null;let o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(`div`,{className:`rounded-xl bg-rose-500/10 p-2 text-rose-700 dark:text-rose-300`,children:(0,$.jsx)(N,{className:`size-4`,"aria-hidden":!0})}),t[0]=o):o=t[0];let s;t[1]===r.reliabilityTitle?s=t[2]:(s=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.reliabilityTitle}),t[1]=r.reliabilityTitle,t[2]=s);let c=i??r.reliabilityHint,l;t[3]===c?l=t[4]:(l=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==n||t[6]!==r||t[7]!==a?(u=n.length>0?(0,$.jsx)(`ul`,{className:`mt-3 space-y-2`,children:n.slice(0,5).map(e=>(0,$.jsx)(`li`,{className:`rounded-xl border border-edge-subtle bg-surface-panel px-3 py-2`,children:(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:dn(e,r)}),e.message?(0,$.jsx)(`div`,{className:`mt-0.5 text-xs leading-5 text-fg-muted`,children:e.message}):null,e.detail?(0,$.jsx)(`div`,{className:`mt-0.5 line-clamp-2 text-xs leading-5 text-fg-subtle`,children:e.detail}):null]}),e.agentId==null?null:(0,$.jsx)(f,{type:`button`,variant:`ghost`,className:`h-8 shrink-0 px-2 text-xs`,onClick:()=>a(e.agentId),children:r.openAgentDetails})]})},e.key))}):null,t[5]=n,t[6]=r,t[7]=a,t[8]=u):u=t[8];let d;return t[9]!==s||t[10]!==l||t[11]!==u?(d=(0,$.jsx)(`section`,{className:`mt-5 rounded-2xl border border-rose-500/20 bg-rose-500/5 p-4`,children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[o,(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s,l,u]})]})}),t[9]=s,t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function ln(e){let t=(0,Q.c)(23),{activeTab:n,onChange:r,labels:i,hasDiagnostics:a,artifactCount:o}=e,s;t[0]===i.resultTitle?s=t[1]:(s={id:`result`,label:i.resultTitle},t[0]=i.resultTitle,t[1]=s);let c;t[2]===i.process?c=t[3]:(c={id:`process`,label:i.process},t[2]=i.process,t[3]=c);let l=a?1:void 0,u;t[4]!==i.diagnosticsTitle||t[5]!==l?(u={id:`diagnostics`,label:i.diagnosticsTitle,count:l},t[4]=i.diagnosticsTitle,t[5]=l,t[6]=u):u=t[6];let d=o||void 0,f;t[7]!==i.outcomeArtifacts||t[8]!==d?(f={id:`artifacts`,label:i.outcomeArtifacts,count:d},t[7]=i.outcomeArtifacts,t[8]=d,t[9]=f):f=t[9];let p;t[10]===i.debugDetailsTitle?p=t[11]:(p={id:`debug`,label:i.debugDetailsTitle},t[10]=i.debugDetailsTitle,t[11]=p);let m;t[12]!==s||t[13]!==c||t[14]!==u||t[15]!==f||t[16]!==p?(m=[s,c,u,f,p],t[12]=s,t[13]=c,t[14]=u,t[15]=f,t[16]=p,t[17]=m):m=t[17];let h=m,g;return t[18]!==n||t[19]!==i.taskActionsAria||t[20]!==r||t[21]!==h?(g=(0,$.jsx)(`div`,{className:`mt-5 flex overflow-x-auto border-b border-edge pb-2`,children:(0,$.jsx)(_,{items:h,activeTab:n,onChange:r,ariaLabel:i.taskActionsAria})}),t[18]=n,t[19]=i.taskActionsAria,t[20]=r,t[21]=h,t[22]=g):g=t[22],g}function un(e){let t=(0,Q.c)(36),{snapshot:n,rollup:r,view:a,labels:o,cardLabels:s,isActive:c,processExpanded:l,logsExpanded:u,drawerAgentId:d,durationText:f,onToggleProcess:p,onToggleLogs:m,onSelectAgent:h}=e,g;t[0]===o.process?g=t[1]:(g=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:o.process}),t[0]=o.process,t[1]=g);let _;t[2]!==o.agentProgress||t[3]!==a.run.metrics.agentCount||t[4]!==a.run.metrics.doneAgentCount?(_=q(o.agentProgress,{done:a.run.metrics.doneAgentCount,total:a.run.metrics.agentCount}),t[2]=o.agentProgress,t[3]=a.run.metrics.agentCount,t[4]=a.run.metrics.doneAgentCount,t[5]=_):_=t[5];let v;t[6]!==f||t[7]!==_?(v=(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[_,` · `,f]}),t[6]=f,t[7]=_,t[8]=v):v=t[8];let y;t[9]!==g||t[10]!==v?(y=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[g,v]}),t[9]=g,t[10]=v,t[11]=y):y=t[11];let b=l?`rotate-180`:null,x;t[12]===b?x=t[13]:(x=i(`size-4 shrink-0 text-fg-subtle transition-transform`,b),t[12]=b,t[13]=x);let S;t[14]===x?S=t[15]:(S=(0,$.jsx)(ye,{className:x,"aria-hidden":!0}),t[14]=x,t[15]=S);let C;t[16]!==p||t[17]!==l||t[18]!==y||t[19]!==S?(C=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-4 px-4 py-3 text-left`,onClick:p,"aria-expanded":l,children:[y,S]}),t[16]=p,t[17]=l,t[18]=y,t[19]=S,t[20]=C):C=t[20];let w;t[21]!==s||t[22]!==d||t[23]!==c||t[24]!==o||t[25]!==u||t[26]!==h||t[27]!==m||t[28]!==l||t[29]!==r||t[30]!==n||t[31]!==a.phases?(w=l?(0,$.jsxs)(`div`,{className:`border-t border-edge px-4 pb-4 pt-4`,children:[c?(0,$.jsx)(Ve,{snapshot:n,labels:s,logsExpanded:u,onToggleLogs:m,selectedAgentId:d,onSelectAgent:h}):(0,$.jsx)(P,{rollup:r,currentPhase:n.currentPhase,labels:s.phase,recentLogs:n.logs,recentLogsHeading:s.recentLogsHeading,showAllLogsLabel:s.showAllLogs,logsExpanded:u,onToggleLogs:m,selectedAgentId:d,onSelectAgent:h}),a.phases.length>0?(0,$.jsx)(`div`,{className:`mt-4 grid gap-2 sm:grid-cols-2`,children:a.phases.map(e=>(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-3 py-2`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.title}),(0,$.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:tn(e.status,o)})]})},e.id))}):null]}):null,t[21]=s,t[22]=d,t[23]=c,t[24]=o,t[25]=u,t[26]=h,t[27]=m,t[28]=l,t[29]=r,t[30]=n,t[31]=a.phases,t[32]=w):w=t[32];let T;return t[33]!==C||t[34]!==w?(T=(0,$.jsxs)(`div`,{className:`mt-5 rounded-2xl border border-edge bg-surface-base/35`,children:[C,w]}),t[33]=C,t[34]=w,t[35]=T):T=t[35],T}function dn(e,t){return e.kind===`run_error`?e.code?q(t.diagnosticsRunErrorWithCode,{code:e.code}):t.diagnosticsRunError:e.kind===`agent_error`?q(t.diagnosticsAgentError,{agent:e.agentLabel??String(e.agentId??`—`)}):e.kind===`step_error`?q(t.diagnosticsStepError,{agent:e.agentLabel??String(e.agentId??`—`),step:e.stepLabel??e.stepId??`—`}):q(t.diagnosticsAgentSkipped,{agent:e.agentLabel??String(e.agentId??`—`)})}function fn(e){let t=(0,Q.c)(36),{view:n,comparison:r,labels:i,onOpenRunId:a}=e,o=n.run.metadata?.replay;if(!o)return null;let s;t[0]===i.replayLineageTitle?s=t[1]:(s=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:i.replayLineageTitle}),t[0]=i.replayLineageTitle,t[1]=s);let c;t[2]!==i||t[3]!==o.scope||t[4]!==o.targetCount?(c=q(i.replayLineageSummary,{scope:gn(o.scope,i),count:o.targetCount}),t[2]=i,t[3]=o.scope,t[4]=o.targetCount,t[5]=c):c=t[5];let l;t[6]===c?l=t[7]:(l=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:c}),t[6]=c,t[7]=l);let u;t[8]!==i.replaySourceRun||t[9]!==o.sourceRunId?(u=(0,$.jsx)(An,{label:i.replaySourceRun,value:o.sourceRunId}),t[8]=i.replaySourceRun,t[9]=o.sourceRunId,t[10]=u):u=t[10];let d=i.replayTargetAgents,p;t[11]===o.agentIds?p=t[12]:(p=o.agentIds.join(`, `),t[11]=o.agentIds,t[12]=p);let m;t[13]!==i.replayTargetAgents||t[14]!==p?(m=(0,$.jsx)(An,{label:d,value:p}),t[13]=i.replayTargetAgents,t[14]=p,t[15]=m):m=t[15];let h;t[16]!==u||t[17]!==m?(h=(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs sm:grid-cols-2`,children:[u,m]}),t[16]=u,t[17]=m,t[18]=h):h=t[18];let g;t[19]!==r||t[20]!==i.replayDurationDelta||t[21]!==i.replayFixedAgents||t[22]!==i.replayStillFailingAgents?(g=r?(0,$.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-3`,children:[(0,$.jsx)(kn,{label:i.replayFixedAgents,value:String(r.fixedAgentIds.length)}),(0,$.jsx)(kn,{label:i.replayStillFailingAgents,value:String(r.stillFailingAgentIds.length)}),(0,$.jsx)(kn,{label:i.replayDurationDelta,value:hn(r.durationDeltaMs)})]}):null,t[19]=r,t[20]=i.replayDurationDelta,t[21]=i.replayFixedAgents,t[22]=i.replayStillFailingAgents,t[23]=g):g=t[23];let _;t[24]!==s||t[25]!==l||t[26]!==h||t[27]!==g?(_=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[s,l,h,g]}),t[24]=s,t[25]=l,t[26]=h,t[27]=g,t[28]=_):_=t[28];let v;t[29]!==i.replayOpenSource||t[30]!==a||t[31]!==o.sourceRunId?(v=a?(0,$.jsx)(f,{type:`button`,variant:`secondary`,className:`shrink-0`,onClick:()=>a(o.sourceRunId),children:i.replayOpenSource}):null,t[29]=i.replayOpenSource,t[30]=a,t[31]=o.sourceRunId,t[32]=v):v=t[32];let y;return t[33]!==_||t[34]!==v?(y=(0,$.jsx)(`section`,{className:`mt-5 rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[_,v]})}),t[33]=_,t[34]=v,t[35]=y):y=t[35],y}function pn(e,t,n){if(!e?.contentHash)return n.definitionHashUnavailable;let r=e.contentHash.slice(0,8);return t?.contentHash?t.contentHash===e.contentHash?`${r} · ${n.definitionHashMatches}`:`${r} · ${n.definitionHashDrifted}`:`${r} · ${n.definitionHashCurrentUnknown}`}function mn(e){let t=e?.permissions;if(!t)return`—`;let n=[t.tools?.length?`tools:${t.tools.join(`,`)}`:null,t.network==null?null:`network:${t.network?`on`:`off`}`,t.fileSystem?`fs:${t.fileSystem}`:null,t.approvalRequired?`approval`:null].filter(Boolean);return n.length>0?n.join(` · `):`—`}function hn(e){return e==null?`—`:`${e>0?`+`:e<0?`-`:``}${W(Math.abs(e))}`}function gn(e,t){return e===`failed_phases`?t.replayScopeFailedPhases:t.replayScopeFailedAgents}function _n(e){let t=(0,Q.c)(20),{outcome:n,labels:r,downloadingArtifactId:i,downloadError:a,onCopyText:o,onDownloadArtifact:s,onStartFollowUp:c}=e;if(!n||!n.artifacts.length&&!n.followUps.length&&n.structuredOutput===void 0){let e;return t[0]===r.noArtifacts?e=t[1]:(e=(0,$.jsx)(`section`,{className:`mt-5 rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:r.noArtifacts}),t[0]=r.noArtifacts,t[1]=e),e}let l;t[2]!==a||t[3]!==i||t[4]!==r||t[5]!==s||t[6]!==n.artifacts?(l=n.artifacts.length>0?(0,$.jsxs)(yn,{title:r.outcomeArtifacts,children:[(0,$.jsx)(`ul`,{className:`space-y-2`,children:n.artifacts.map(e=>(0,$.jsxs)(`li`,{className:`min-w-0 rounded-lg bg-surface-base px-2.5 py-2`,children:[(0,$.jsx)(`div`,{className:`truncate text-sm font-medium text-fg`,title:e.title??e.name,children:e.title??e.name}),(0,$.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-subtle`,children:e.mimeType}),(0,$.jsxs)(`button`,{type:`button`,className:`mt-1 inline-flex items-center gap-1 text-xs font-medium text-accent-fg hover:underline disabled:cursor-wait disabled:opacity-60`,disabled:i===e.id,onClick:()=>s(e),children:[(0,$.jsx)(te,{className:`size-3`,"aria-hidden":!0}),i===e.id?r.downloadingArtifact:r.downloadArtifact]})]},e.id))}),a?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-rose-600 dark:text-rose-400`,children:a}):null]}):null,t[2]=a,t[3]=i,t[4]=r,t[5]=s,t[6]=n.artifacts,t[7]=l):l=t[7];let u;t[8]!==r||t[9]!==o||t[10]!==c||t[11]!==n.followUps?(u=n.followUps.length>0?(0,$.jsx)(yn,{title:r.outcomeFollowUps,children:(0,$.jsx)(`ul`,{className:`space-y-2`,children:n.followUps.map(e=>(0,$.jsxs)(`li`,{className:`rounded-lg bg-surface-base px-2.5 py-2`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:e.title}),e.prompt?(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-accent-fg hover:underline`,onClick:()=>c(e),children:r.startFollowUp}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-fg-subtle hover:text-fg`,onClick:()=>o(e.prompt??``),children:r.copyPrompt})]}):null]},e.id))})}):null,t[8]=r,t[9]=o,t[10]=c,t[11]=n.followUps,t[12]=u):u=t[12];let d;t[13]!==r||t[14]!==n.structuredOutput?(d=n.structuredOutput===void 0?null:(0,$.jsx)(yn,{title:r.outcomeStructuredOutput,children:(0,$.jsx)(`pre`,{className:`max-h-44 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-base p-2 font-mono text-xs leading-5 text-fg-muted`,children:R(n.structuredOutput)})}),t[13]=r,t[14]=n.structuredOutput,t[15]=d):d=t[15];let f;return t[16]!==l||t[17]!==u||t[18]!==d?(f=(0,$.jsxs)(`div`,{className:`mt-5 grid gap-3 lg:grid-cols-3`,children:[l,u,d]}),t[16]=l,t[17]=u,t[18]=d,t[19]=f):f=t[19],f}function vn(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}function yn(e){let t=(0,Q.c)(7),{title:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-2`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`section`,{className:`min-w-0 rounded-xl border border-edge-subtle bg-surface-base/35 p-3`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function bn(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=Array.isArray(t.artifacts)?t.artifacts:[],r=Array.isArray(t.followUps)?t.followUps:[];return n.length===0&&r.length===0&&t.structuredOutput===void 0?null:{artifacts:n,followUps:r,structuredOutput:t.structuredOutput}}function xn(e){let t=(0,Q.c)(27),{agents:n,labels:r,metadataItems:a,defaultExpanded:o}=e,[s,c]=(0,Z.useState)(o),l,u;t[0]===o?(l=t[1],u=t[2]):(l=()=>{c(o)},u=[o],t[0]=o,t[1]=l,t[2]=u),(0,Z.useEffect)(l,u);let d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>c(Cn),t[3]=d):d=t[3];let f;t[4]===r.debugDetailsTitle?f=t[5]:(f=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.debugDetailsTitle}),t[4]=r.debugDetailsTitle,t[5]=f);let p;t[6]===r.debugDetailsHint?p=t[7]:(p=(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-subtle`,children:r.debugDetailsHint}),t[6]=r.debugDetailsHint,t[7]=p);let m;t[8]!==f||t[9]!==p?(m=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[f,p]}),t[8]=f,t[9]=p,t[10]=m):m=t[10];let h=s?`rotate-180`:null,g;t[11]===h?g=t[12]:(g=i(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,h),t[11]=h,t[12]=g);let _;t[13]===g?_=t[14]:(_=(0,$.jsx)(ye,{className:g,"aria-hidden":!0}),t[13]=g,t[14]=_);let v;t[15]!==s||t[16]!==m||t[17]!==_?(v=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-4 px-4 py-3 text-left`,onClick:d,"aria-expanded":s,children:[m,_]}),t[15]=s,t[16]=m,t[17]=_,t[18]=v):v=t[18];let y;t[19]!==n||t[20]!==s||t[21]!==r||t[22]!==a?(y=s?(0,$.jsxs)(`div`,{className:`border-t border-edge px-4 py-4`,children:[(0,$.jsx)(wn,{agents:n,labels:r}),(0,$.jsx)(`div`,{className:`mt-4 grid gap-3 rounded-xl border border-edge-subtle bg-surface-panel/60 p-3 sm:grid-cols-2 lg:grid-cols-3`,children:a.map(Sn)})]}):null,t[19]=n,t[20]=s,t[21]=r,t[22]=a,t[23]=y):y=t[23];let b;return t[24]!==v||t[25]!==y?(b=(0,$.jsxs)(`section`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[v,y]}),t[24]=v,t[25]=y,t[26]=b):b=t[26],b}function Sn(e){return(0,$.jsx)(An,{label:e.label,value:e.value},e.label)}function Cn(e){return!e}function wn(e){let t=(0,Q.c)(15),{agents:n,labels:r}=e;if(n.length===0)return null;let a;t[0]===r.agentIoTitle?a=t[1]:(a=(0,$.jsx)(`h4`,{className:`text-sm font-semibold text-fg`,children:r.agentIoTitle}),t[0]=r.agentIoTitle,t[1]=a);let o;t[2]===r.agentIoHint?o=t[3]:(o=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:r.agentIoHint}),t[2]=r.agentIoHint,t[3]=o);let s;if(t[4]!==n||t[5]!==r){let e;t[7]===r?e=t[8]:(e=e=>{let t=e.error||e.resultPreview||r.agentNoOutput;return(0,$.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-3`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 text-sm font-medium text-fg`,children:e.label}),(0,$.jsx)(`span`,{className:i(`rounded-full px-2 py-0.5 text-xs font-medium`,On(e.status)),children:r.agentStatus[e.status]??e.status})]}),(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentInputHeading}),(0,$.jsx)(`pre`,{className:`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 font-mono text-xs leading-5 text-fg-muted`,children:e.prompt||`—`})]}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentOutputHeading}),(0,$.jsx)(`div`,{className:i(`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 text-xs leading-5`,e.error?`font-mono text-rose-600 dark:text-rose-400`:`text-fg-muted`),children:t})]})]}),(0,$.jsx)(Tn,{agent:e,labels:r})]},e.id)},t[7]=r,t[8]=e),s=n.map(e),t[4]=n,t[5]=r,t[6]=s}else s=t[6];let c;t[9]===s?c=t[10]:(c=(0,$.jsx)(`div`,{className:`mt-3 grid gap-3`,children:s}),t[9]=s,t[10]=c);let l;return t[11]!==a||t[12]!==o||t[13]!==c?(l=(0,$.jsxs)(`section`,{children:[a,o,c]}),t[11]=a,t[12]=o,t[13]=c,t[14]=l):l=t[14],l}function Tn(e){let t=(0,Q.c)(21),{agent:n,labels:r}=e,i=n.invocation;if(!i)return null;let a=i.resolvedModelRef??i.modelRef,o;t[0]!==r.agentInvocationModel||t[1]!==a?(o={label:r.agentInvocationModel,value:a},t[0]=r.agentInvocationModel,t[1]=a,t[2]=o):o=t[2];let s;t[3]===i.toolset?s=t[4]:(s=i.toolset?.join(`, `),t[3]=i.toolset,t[4]=s);let c;t[5]!==r.agentInvocationTools||t[6]!==s?(c={label:r.agentInvocationTools,value:s},t[5]=r.agentInvocationTools,t[6]=s,t[7]=c):c=t[7];let l=i.maxIterations==null?void 0:String(i.maxIterations),u;t[8]!==r.agentInvocationIterations||t[9]!==l?(u={label:r.agentInvocationIterations,value:l},t[8]=r.agentInvocationIterations,t[9]=l,t[10]=u):u=t[10];let d=i.schema?r.agentInvocationSchemaPresent:void 0,f;t[11]!==r.agentInvocationSchema||t[12]!==d?(f={label:r.agentInvocationSchema,value:d},t[11]=r.agentInvocationSchema,t[12]=d,t[13]=f):f=t[13];let p;t[14]!==o||t[15]!==c||t[16]!==u||t[17]!==f?(p=[o,c,u,f].filter(Dn),t[14]=o,t[15]=c,t[16]=u,t[17]=f,t[18]=p):p=t[18];let m=p;if(m.length===0)return null;let h;return t[19]===m?h=t[20]:(h=(0,$.jsx)(`dl`,{className:`mt-3 grid gap-2 border-t border-edge-subtle pt-3 text-xs sm:grid-cols-2 lg:grid-cols-4`,children:m.map(En)}),t[19]=m,t[20]=h),h}function En(e){return(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`dt`,{className:`text-fg-subtle`,children:e.label}),(0,$.jsx)(`dd`,{className:`mt-0.5 truncate font-medium text-fg-muted`,title:e.value,children:e.value})]},e.label)}function Dn(e){return!!e.value}function On(e){return e===`done`?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:e===`error`?`bg-rose-500/10 text-rose-700 dark:text-rose-300`:e===`running`?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-subtle`}function kn(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`dd`,{className:`mt-1 text-sm font-semibold text-fg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 p-3`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function An(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-1 truncate text-sm font-medium text-fg`,title:r,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function jn(e){let t=(0,Q.c)(30),{stats:n,language:r}=e,i,o,s;if(t[0]!==r||t[1]!==n){s=Symbol.for(`react.early_return_sentinel`);bb0:{if(i=a(r).workflows,!n||n.totalRuns===0){s=null;break bb0}o=n.topDefinitions[0]?q(i.statsTopWorkflow,{name:n.topDefinitions[0].definitionId,count:n.topDefinitions[0].count}):null}t[0]=r,t[1]=n,t[2]=i,t[3]=o,t[4]=s}else i=t[2],o=t[3],s=t[4];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c=o,l=i.statsTotalRuns,u=String(n.totalRuns),d;t[5]!==i.statsTotalRuns||t[6]!==u?(d=(0,$.jsx)(Mn,{label:l,value:u}),t[5]=i.statsTotalRuns,t[6]=u,t[7]=d):d=t[7];let f=i.statsActiveRuns,p=String(n.activeRuns),m;t[8]!==i.statsActiveRuns||t[9]!==p?(m=(0,$.jsx)(Mn,{label:f,value:p}),t[8]=i.statsActiveRuns,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n.succeededRuns||t[12]!==n.totalRuns?(h=n.totalRuns>0?`${Math.round(n.succeededRuns/n.totalRuns*100)}%`:`—`,t[11]=n.succeededRuns,t[12]=n.totalRuns,t[13]=h):h=t[13];let g;t[14]!==i.statsSuccessRate||t[15]!==h?(g=(0,$.jsx)(Mn,{label:i.statsSuccessRate,value:h}),t[14]=i.statsSuccessRate,t[15]=h,t[16]=g):g=t[16];let _;t[17]===n.averageDurationMs?_=t[18]:(_=n.averageDurationMs==null?`—`:W(n.averageDurationMs),t[17]=n.averageDurationMs,t[18]=_);let v;t[19]!==i.statsAvgDuration||t[20]!==_?(v=(0,$.jsx)(Mn,{label:i.statsAvgDuration,value:_}),t[19]=i.statsAvgDuration,t[20]=_,t[21]=v):v=t[21];let y;t[22]===c?y=t[23]:(y=c?(0,$.jsx)(`span`,{className:`min-w-0 truncate text-xs text-fg-muted`,children:c}):null,t[22]=c,t[23]=y);let b;return t[24]!==g||t[25]!==v||t[26]!==y||t[27]!==d||t[28]!==m?(b=(0,$.jsxs)(`section`,{className:`flex min-w-0 flex-wrap items-center gap-2 rounded-lg border border-edge bg-surface-panel/70 px-3 py-2`,children:[d,m,g,v,y]}),t[24]=g,t[25]=v,t[26]=y,t[27]=d,t[28]=m,t[29]=b):b=t[29],b}function Mn(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`span`,{children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`span`,{className:`font-semibold tabular-nums text-fg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-edge bg-surface-muted px-2.5 py-1 text-xs text-fg-muted`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function Nn(e){let t=(0,Q.c)(20),{vm:n}=e,{labels:r,loading:i,refreshAll:a,setManageOpen:o,setPickStartOpen:s}=n,c;t[0]===s?c=t[1]:(c=()=>s(!0),t[0]=s,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(x,{className:`size-4`,"aria-hidden":!0}),t[2]=l):l=t[2];let u;t[3]!==r.boardStart||t[4]!==c?(u=(0,$.jsxs)(f,{variant:`primary`,className:`h-9 rounded-lg`,onClick:c,children:[l,r.boardStart]}),t[3]=r.boardStart,t[4]=c,t[5]=u):u=t[5];let d;t[6]===o?d=t[7]:(d=()=>o(!0),t[6]=o,t[7]=d);let p;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(M,{className:`size-4`,"aria-hidden":!0}),t[8]=p):p=t[8];let m;t[9]!==r.addWorkflow||t[10]!==d?(m=(0,$.jsxs)(f,{variant:`secondary`,className:`h-9 rounded-lg`,onClick:d,children:[p,r.addWorkflow]}),t[9]=r.addWorkflow,t[10]=d,t[11]=m):m=t[11];let h;t[12]!==r.refresh||t[13]!==i||t[14]!==a?(h=(0,$.jsx)(B,{className:`size-9 shrink-0 p-0`,loading:i,label:r.refresh,onClick:a}),t[12]=r.refresh,t[13]=i,t[14]=a,t[15]=h):h=t[15];let g;return t[16]!==u||t[17]!==m||t[18]!==h?(g=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[u,m,h]}),t[16]=u,t[17]=m,t[18]=h,t[19]=g):g=t[19],g}var Pn=[`attention`,`running`,`queued`,`recent`];function Fn(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`?`attention`:e.status===`running`?`running`:e.status===`queued`?`queued`:e.status===`succeeded`?`recent`:null}function In(e){return e.completedAtMs??e.startedAtMs??e.createdAtMs}function Ln(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):n.sort((e,t)=>In(t)-In(e))}function Rn(e){let t=new Map(Pn.map(e=>[e,[]]));for(let n of e){let e=Fn(n);e&&t.get(e)?.push(n)}for(let e of Pn)t.set(e,Ln(e,t.get(e)??[]));return t}function zn(e){let t=(0,Q.c)(205),{vm:n}=e,{language:r,localeTag:o,labels:s,hasToken:c,definitions:l,runs:u,searchQuery:d,setSearchQuery:f,ownerAgentId:p,agentOptions:m,setOwnerAgentId:h,workflowFilterId:g,setWorkflowFilterId:_,triggerFilter:v,setTriggerFilter:y,selectedRunId:b,selectedRunView:x,selectedRunComparison:S,selectedRunLoading:C,selectedRunError:w,openRunDetails:T,closeRunDetails:E,openRunDetailsById:O,openRunInChat:k,pickStartOpen:j,setPickStartOpen:M,startDefinition:N,setStartDefinition:P,detailDefinition:F,setDetailDefinition:I,manageOpen:R,setManageOpen:te,workflowEditorDraft:z,openWorkflowEditor:ne,actionError:B,actionFeedback:re,starting:V,savingWorkflow:H,loading:ie,error:U,stats:W,submitStart:G,cancelRun:K,retryRun:ae,replayRun:q,saveCustomWorkflow:oe,saveDraftAndStart:J}=n,se=Me(Hn),le=Me(Vn),[de,fe]=(0,Z.useState)(`operations`),pe;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(pe=Date.now(),t[0]=pe):pe=t[0];let me=pe,he=Rn(nt(u,{searchQuery:d,workflowFilterId:g,triggerFilter:v})),Y;t[1]!==le||t[2]!==c||t[3]!==s.statsActiveRuns||t[4]!==s.statsTotalRuns||t[5]!==s.subtitleBoard||t[6]!==s.title||t[7]!==se||t[8]!==W||t[9]!==n?(Y=()=>{if(!c){le();return}return se({startExtra:null,main:(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:s.title}),(0,$.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:W?`${s.statsTotalRuns}: ${W.totalRuns} · ${s.statsActiveRuns}: ${W.activeRuns}`:s.subtitleBoard})]}),end:(0,$.jsx)(Nn,{vm:n})}),()=>le()},t[1]=le,t[2]=c,t[3]=s.statsActiveRuns,t[4]=s.statsTotalRuns,t[5]=s.subtitleBoard,t[6]=s.title,t[7]=se,t[8]=W,t[9]=n,t[10]=Y):Y=t[10];let ge;if(t[11]!==le||t[12]!==c||t[13]!==s.statsActiveRuns||t[14]!==s.statsTotalRuns||t[15]!==s.subtitleBoard||t[16]!==s.title||t[17]!==ie||t[18]!==W||t[19]!==n?(ge=[le,c,s.title,s.statsActiveRuns,s.statsTotalRuns,s.subtitleBoard,ie,W,n,n.refreshAll,n.setManageOpen,n.setSearchQuery],t[11]=le,t[12]=c,t[13]=s.statsActiveRuns,t[14]=s.statsTotalRuns,t[15]=s.subtitleBoard,t[16]=s.title,t[17]=ie,t[18]=W,t[19]=n,t[20]=ge):ge=t[20],(0,Z.useLayoutEffect)(Y,ge),!c){let e;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(A,{className:`size-10 text-accent-fg`,"aria-hidden":!0}),t[21]=e):e=t[21];let n;t[22]===s.title?n=t[23]:(n=(0,$.jsx)(`h1`,{className:`mt-4 text-xl font-semibold text-fg`,children:s.title}),t[22]=s.title,t[23]=n);let r;t[24]===s.needToken?r=t[25]:(r=(0,$.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:s.needToken}),t[24]=s.needToken,t[25]=r);let i;return t[26]!==n||t[27]!==r?(i=(0,$.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:(0,$.jsxs)(`div`,{className:`flex w-full flex-col items-center px-3 py-16 text-center sm:px-5 xl:px-6`,children:[e,n,r]})}),t[26]=n,t[27]=r,t[28]=i):i=t[28],i}let _e;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(_e=(0,$.jsx)(L,{className:`pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[29]=_e):_e=t[29];let ve;t[30]===f?ve=t[31]:(ve=e=>f(e.target.value),t[30]=f,t[31]=ve);let ye=s.searchPlaceholder,be;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(be=i(`h-9 w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg shadow-surface`,`placeholder:text-fg-subtle`,ee.focusRingPanel),t[32]=be):be=t[32];let xe;t[33]!==s.searchPlaceholder||t[34]!==d||t[35]!==ve?(xe=(0,$.jsxs)(`div`,{className:`relative min-w-48 flex-1 sm:max-w-xs`,children:[_e,(0,$.jsx)(`input`,{value:d,onChange:ve,placeholder:ye,className:be})]}),t[33]=s.searchPlaceholder,t[34]=d,t[35]=ve,t[36]=xe):xe=t[36];let Se;t[37]!==m||t[38]!==r||t[39]!==p||t[40]!==h?(Se=m.length>1?(0,$.jsx)(ue,{value:p??``,"aria-label":`Agent`,onChange:e=>h(e.target.value),className:i(`h-9 min-w-32 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,ee.focusRingPanel),children:m.map(e=>(0,$.jsx)(Ie,{value:e.id,children:D(e,a(r).agentsSettings)},e.id))}):null,t[37]=m,t[38]=r,t[39]=p,t[40]=h,t[41]=Se):Se=t[41];let Ce=s.boardTriggerFilterAria,Te;t[42]===y?Te=t[43]:(Te=e=>y(e.target.value),t[42]=y,t[43]=Te);let Ee;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=i(`h-9 min-w-[7.5rem] rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,ee.focusRingPanel),t[44]=Ee):Ee=t[44];let De;t[45]===s.boardTriggerFilterAll?De=t[46]:(De=(0,$.jsx)(Ie,{value:`all`,children:s.boardTriggerFilterAll}),t[45]=s.boardTriggerFilterAll,t[46]=De);let Oe;t[47]===s.boardTriggerFilterAutomation?Oe=t[48]:(Oe=(0,$.jsx)(Ie,{value:`automation`,children:s.boardTriggerFilterAutomation}),t[47]=s.boardTriggerFilterAutomation,t[48]=Oe);let X;t[49]===s.boardTriggerFilterWebui?X=t[50]:(X=(0,$.jsx)(Ie,{value:`webui`,children:s.boardTriggerFilterWebui}),t[49]=s.boardTriggerFilterWebui,t[50]=X);let ke;t[51]===s.boardTriggerFilterChat?ke=t[52]:(ke=(0,$.jsx)(Ie,{value:`chat`,children:s.boardTriggerFilterChat}),t[51]=s.boardTriggerFilterChat,t[52]=ke);let Ae;t[53]===s.boardTriggerFilterApi?Ae=t[54]:(Ae=(0,$.jsx)(Ie,{value:`api`,children:s.boardTriggerFilterApi}),t[53]=s.boardTriggerFilterApi,t[54]=Ae);let je;t[55]!==s.boardTriggerFilterAria||t[56]!==Te||t[57]!==De||t[58]!==Oe||t[59]!==X||t[60]!==ke||t[61]!==Ae||t[62]!==v?(je=(0,$.jsxs)(ue,{value:v,"aria-label":Ce,onChange:Te,className:Ee,children:[De,Oe,X,ke,Ae]}),t[55]=s.boardTriggerFilterAria,t[56]=Te,t[57]=De,t[58]=Oe,t[59]=X,t[60]=ke,t[61]=Ae,t[62]=v,t[63]=je):je=t[63];let Ne=s.boardWorkflowFilterAria,Pe;t[64]===_?Pe=t[65]:(Pe=e=>_(e.target.value),t[64]=_,t[65]=Pe);let Fe;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=i(`h-9 min-w-40 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,ee.focusRingPanel),t[66]=Fe):Fe=t[66];let Le;t[67]===s.boardWorkflowFilterAll?Le=t[68]:(Le=(0,$.jsx)(Ie,{value:``,children:s.boardWorkflowFilterAll}),t[67]=s.boardWorkflowFilterAll,t[68]=Le);let Re;t[69]===l?Re=t[70]:(Re=l.map(Bn),t[69]=l,t[70]=Re);let ze;t[71]!==s.boardWorkflowFilterAria||t[72]!==Pe||t[73]!==Le||t[74]!==Re||t[75]!==g?(ze=(0,$.jsxs)(ue,{value:g,"aria-label":Ne,onChange:Pe,className:Fe,children:[Le,Re]}),t[71]=s.boardWorkflowFilterAria,t[72]=Pe,t[73]=Le,t[74]=Re,t[75]=g,t[76]=ze):ze=t[76];let Be=de===`operations`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:text-fg`,Ve;t[77]===Be?Ve=t[78]:(Ve=i(`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium transition-colors`,Be),t[77]=Be,t[78]=Ve);let He,Ue;t[79]===Symbol.for(`react.memo_cache_sentinel`)?(He=()=>fe(`operations`),Ue=(0,$.jsx)(we,{className:`size-3.5`,"aria-hidden":!0}),t[79]=He,t[80]=Ue):(He=t[79],Ue=t[80]);let We;t[81]!==s.viewModes.operations||t[82]!==Ve?(We=(0,$.jsxs)(`button`,{type:`button`,className:Ve,onClick:He,children:[Ue,s.viewModes.operations]}),t[81]=s.viewModes.operations,t[82]=Ve,t[83]=We):We=t[83];let Ke=de===`board`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:text-fg`,qe;t[84]===Ke?qe=t[85]:(qe=i(`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium transition-colors`,Ke),t[84]=Ke,t[85]=qe);let Je,Ye;t[86]===Symbol.for(`react.memo_cache_sentinel`)?(Je=()=>fe(`board`),Ye=(0,$.jsx)(ce,{className:`size-3.5`,"aria-hidden":!0}),t[86]=Je,t[87]=Ye):(Je=t[86],Ye=t[87]);let Xe;t[88]!==s.viewModes.board||t[89]!==qe?(Xe=(0,$.jsxs)(`button`,{type:`button`,className:qe,onClick:Je,children:[Ye,s.viewModes.board]}),t[88]=s.viewModes.board,t[89]=qe,t[90]=Xe):Xe=t[90];let Ze;t[91]!==We||t[92]!==Xe?(Ze=(0,$.jsxs)(`div`,{className:`flex rounded-lg border border-edge bg-surface-muted p-0.5`,children:[We,Xe]}),t[91]=We,t[92]=Xe,t[93]=Ze):Ze=t[93];let Qe;t[94]!==xe||t[95]!==Se||t[96]!==je||t[97]!==ze||t[98]!==Ze?(Qe=(0,$.jsxs)(`section`,{className:`flex w-full flex-wrap items-center gap-2 rounded-lg border border-edge bg-surface-panel/70 px-3 py-2`,children:[xe,Se,je,ze,Ze]}),t[94]=xe,t[95]=Se,t[96]=je,t[97]=ze,t[98]=Ze,t[99]=Qe):Qe=t[99];let $e;t[100]===re?$e=t[101]:($e=re?(0,$.jsx)(`div`,{className:`w-full rounded-xl border border-emerald-500/25 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-800 dark:text-emerald-200`,children:re}):null,t[100]=re,t[101]=$e);let et;t[102]!==B||t[103]!==U?(et=B??U?(0,$.jsx)(`div`,{className:`w-full rounded-xl border border-red-500/25 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:B??U}):null,t[102]=B,t[103]=U,t[104]=et):et=t[104];let tt;t[105]!==r||t[106]!==W?(tt=(0,$.jsx)(`div`,{className:`w-full`,children:(0,$.jsx)(jn,{stats:W,language:r})}),t[105]=r,t[106]=W,t[107]=tt):tt=t[107];let rt;t[108]===w?rt=t[109]:(rt=w?(0,$.jsx)(`div`,{className:`w-full rounded-xl border border-amber-500/25 bg-amber-500/10 px-3 py-2 text-sm text-amber-800 dark:text-amber-200`,children:w}):null,t[108]=w,t[109]=rt);let it=de===`operations`?(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pb-3`,children:(0,$.jsx)(`div`,{className:`grid w-full gap-4`,children:Pn.map(e=>{let t=he.get(e)??[];return(0,$.jsxs)(`section`,{className:`rounded-lg border border-edge bg-surface-panel/60`,children:[(0,$.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3 border-b border-edge-subtle px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:s.operationSections[e].title}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:s.operationSections[e].description})]}),(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:t.length})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 p-2.5 md:grid-cols-2 xl:grid-cols-3`,children:[t.map(e=>(0,$.jsx)(pt,{run:e,language:r,localeTag:o,nowMs:me,selected:e.id===b,onOpen:T,onOpenChat:k,onCancel:e=>void K(e),onRetry:e=>void ae(e)},e.id)),!ie&&t.length===0?(0,$.jsx)(`div`,{className:`flex min-h-24 items-center justify-center rounded-md border border-dashed border-edge bg-surface-panel/40 px-4 py-5 text-center text-xs text-fg-subtle md:col-span-2 xl:col-span-3`,children:s.operationSections[e].empty}):null]})]},e)})})}):(0,$.jsx)(`div`,{className:`min-h-0 w-full flex-1`,children:(0,$.jsx)(vt,{runs:u,language:r,localeTag:o,labels:{boardEmptyTitle:s.boardEmptyTitle,boardEmptyHint:s.boardEmptyHint,boardStart:s.boardStart,loading:s.loading},searchQuery:d,workflowFilterId:g,triggerFilter:v,selectedRunId:b,loading:ie,onOpenRun:T,onOpenRunChat:k,onCancelRun:e=>void K(e),onRetryRun:e=>void ae(e),onStart:()=>M(!0)})}),at;t[110]!==Qe||t[111]!==$e||t[112]!==et||t[113]!==tt||t[114]!==rt||t[115]!==it?(at=(0,$.jsxs)(`div`,{className:`flex min-h-0 w-full flex-1 flex-col gap-4 px-3 py-5 sm:px-5 xl:px-6`,children:[Qe,$e,et,tt,rt,it]}),t[110]=Qe,t[111]=$e,t[112]=et,t[113]=tt,t[114]=rt,t[115]=it,t[116]=at):at=t[116];let ot;if(t[117]!==l||t[118]!==x?.run){let e;t[120]===x?.run?e=t[121]:(e=e=>e.id===x?.run.definitionId,t[120]=x?.run,t[121]=e),ot=l.find(e),t[117]=l,t[118]=x?.run,t[119]=ot}else ot=t[119];let st=!!b&&C,ct;t[122]!==K||t[123]!==b?(ct=()=>{b&&K(b)},t[122]=K,t[123]=b,t[124]=ct):ct=t[124];let lt;t[125]!==ae||t[126]!==b?(lt=()=>{b&&ae(b)},t[125]=ae,t[126]=b,t[127]=lt):lt=t[127];let ut;t[128]!==q||t[129]!==b?(ut=e=>{b&&q(b,e)},t[128]=q,t[129]=b,t[130]=ut):ut=t[130];let dt;t[131]!==E||t[132]!==r||t[133]!==o||t[134]!==O||t[135]!==p||t[136]!==S||t[137]!==x||t[138]!==ot||t[139]!==st||t[140]!==ct||t[141]!==lt||t[142]!==ut?(dt=(0,$.jsx)(sn,{view:x,comparison:S,currentDefinition:ot,loading:st,language:r,localeTag:o,onCancel:ct,onRetry:lt,onReplay:ut,onOpenRunId:O,ownerAgentId:p,onClose:E}),t[131]=E,t[132]=r,t[133]=o,t[134]=O,t[135]=p,t[136]=S,t[137]=x,t[138]=ot,t[139]=st,t[140]=ct,t[141]=lt,t[142]=ut,t[143]=dt):dt=t[143];let ft;t[144]===M?ft=t[145]:(ft=()=>M(!1),t[144]=M,t[145]=ft);let mt;t[146]!==M||t[147]!==P?(mt=e=>{M(!1),P(e)},t[146]=M,t[147]=P,t[148]=mt):mt=t[148];let ht;t[149]!==I||t[150]!==M?(ht=e=>{M(!1),I(e)},t[149]=I,t[150]=M,t[151]=ht):ht=t[151];let gt;t[152]!==l||t[153]!==r||t[154]!==ne||t[155]!==j||t[156]!==ft||t[157]!==mt||t[158]!==ht?(gt=(0,$.jsx)(Qt,{open:j,definitions:l,language:r,onClose:ft,onPick:mt,onDetail:ht,onEdit:ne}),t[152]=l,t[153]=r,t[154]=ne,t[155]=j,t[156]=ft,t[157]=mt,t[158]=ht,t[159]=gt):gt=t[159];let _t=N!=null,yt;t[160]===P?yt=t[161]:(yt=()=>P(null),t[160]=P,t[161]=yt);let bt;t[162]===G?bt=t[163]:(bt=e=>void G(e),t[162]=G,t[163]=bt);let xt;t[164]!==r||t[165]!==N||t[166]!==V||t[167]!==_t||t[168]!==yt||t[169]!==bt?(xt=(0,$.jsx)(Ge,{open:_t,definition:N,language:r,starting:V,onClose:yt,onStart:bt}),t[164]=r,t[165]=N,t[166]=V,t[167]=_t,t[168]=yt,t[169]=bt,t[170]=xt):xt=t[170];let St=F!=null,wt;t[171]===I?wt=t[172]:(wt=()=>I(null),t[171]=I,t[172]=wt);let Tt;t[173]!==F||t[174]!==I||t[175]!==P?(Tt=()=>{F&&(I(null),P(F))},t[173]=F,t[174]=I,t[175]=P,t[176]=Tt):Tt=t[176];let Et;t[177]!==F||t[178]!==r||t[179]!==St||t[180]!==wt||t[181]!==Tt?(Et=(0,$.jsx)(Vt,{open:St,definition:F,language:r,onClose:wt,onRun:Tt}),t[177]=F,t[178]=r,t[179]=St,t[180]=wt,t[181]=Tt,t[182]=Et):Et=t[182];let Dt;t[183]===z?Dt=t[184]:(Dt=z?{mode:z.mode,name:z.initialName,script:z.initialScript,sourceTitle:z.definition.title}:null,t[183]=z,t[184]=Dt);let Ot;t[185]===te?Ot=t[186]:(Ot=()=>te(!1),t[185]=te,t[186]=Ot);let kt;t[187]===oe?kt=t[188]:(kt=e=>oe(e),t[187]=oe,t[188]=kt);let At;t[189]!==r||t[190]!==R||t[191]!==p||t[192]!==J||t[193]!==H||t[194]!==Dt||t[195]!==Ot||t[196]!==kt?(At=(0,$.jsx)(Ct,{open:R,language:r,ownerAgentId:p,saving:H,initialDraft:Dt,onClose:Ot,onSave:kt,onSaveAndStart:J}),t[189]=r,t[190]=R,t[191]=p,t[192]=J,t[193]=H,t[194]=Dt,t[195]=Ot,t[196]=kt,t[197]=At):At=t[197];let jt;return t[198]!==at||t[199]!==dt||t[200]!==gt||t[201]!==xt||t[202]!==Et||t[203]!==At?(jt=(0,$.jsxs)(`main`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden bg-surface-base`,children:[at,dt,gt,xt,Et,At]}),t[198]=at,t[199]=dt,t[200]=gt,t[201]=xt,t[202]=Et,t[203]=At,t[204]=jt):jt=t[204],jt}function Bn(e){return(0,$.jsx)(Ie,{value:e.id,children:e.title},e.id)}function Vn(e){return e.clearPageHeader}function Hn(e){return e.setPageHeader}function Un(){let e=o(e=>e.language),t=a(e).workflows,n=e===`zh`?`zh-CN`:`en-US`,r=s(e=>e.token),i=!!r,u=b(),[d,f]=F(),p=d.get(`q`)??``,m=d.get(`wf`)?.trim()??``,g=d.get(`trigger`)?.trim()||`all`,_=d.get(`run`)?.trim()??``,v=d.get(`agent`)?.trim()??``,[y,x]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(!1),[D,k]=(0,Z.useState)(null),[A,ee]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(null),[P,I]=(0,Z.useState)(null),[L,R]=(0,Z.useState)(null),[te,z]=(0,Z.useState)(!1),[ne,B]=(0,Z.useState)(!1),V=c(i?[`workflow-agents`,r]:null,He,{revalidateOnFocus:!1}),H=(0,Z.useMemo)(()=>{let e=V.data?.agents??[];return v&&e.some(e=>e.id===v)||v&&e.length===0?v:V.data?.defaultId??(v||void 0)},[V.data,v]),U=c(i?[`workflow-definitions`,r]:null,l,{revalidateOnFocus:!1}),W=c(i&&H?[`workflow-runs`,r,H]:null,()=>J(100,{ownerAgentId:H}),{revalidateOnFocus:!1,refreshInterval:e=>e?.length&&e.some(e=>e.status===`queued`||e.status===`running`)?3e3:0}),G=c(i&&H?[`workflow-stats`,r,H,m]:null,()=>ie(m,{ownerAgentId:H}),{revalidateOnFocus:!1});(0,Z.useEffect)(()=>{if(!L)return;let e=window.setTimeout(()=>R(null),4e3);return()=>window.clearTimeout(e)},[L]);let K=U.data??[],oe=V.data?.agents??[],se=W.data??[],ce=_||null,ue=ke(ce,{ownerAgentId:H}),de=c(i&&H&&ce&&ue.view?.run.metadata?.replay?[`workflow-run-comparison`,r,H,ce]:null,()=>re(ce,{ownerAgentId:H}),{revalidateOnFocus:!1}),fe=(0,Z.useMemo)(()=>le(K,p,`all`,`all`),[K,p]),pe=(0,Z.useCallback)(e=>{e&&N(null),ee(e)},[]),me=(0,Z.useCallback)(e=>{let t=new Set(K.map(e=>e.name)),n=`${e.name}_copy`;if(!t.has(n))return n;for(let e=2;e<100;e+=1){let r=`${n}_${e}`;if(!t.has(r))return r}return`${n}_${Date.now()}`},[K]),he=(0,Z.useCallback)((e,n)=>{let r=e.runtime?.source??``;if(!r.trim()){I(t.editWorkflowSourceMissing);return}let i=n??(e.metadata.source===`user`?`edit`:`copy`),a=i===`edit`?e.name:me(e);I(null),T(!1),N({mode:i,definition:e,initialName:a,initialScript:i===`copy`?Wn(r,a):r}),ee(!0)},[me,t.editWorkflowSourceMissing]),Y=(0,Z.useCallback)(e=>{f(t=>{let n=new URLSearchParams(t);return e(n,t),n},{replace:!0})},[f]);(0,Z.useEffect)(()=>{let e=V.data?.agents??[];!v||e.length===0||e.some(e=>e.id===v)||Y(e=>{V.data?.defaultId?e.set(ge,V.data.defaultId):e.delete(ge),e.delete(`run`)})},[V.data,v,Y]);let _e=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(`q`,n):t.delete(`q`)})},[Y]),ve=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(ge,n):t.delete(ge),t.delete(`run`)})},[Y]),ye=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(`wf`,n):t.delete(`wf`)})},[Y]),be=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n&&n!==`all`?t.set(j,n):t.delete(j)})},[Y]),xe=(0,Z.useCallback)(e=>{Y(t=>{H&&t.set(ge,H),t.set(`run`,e.id)})},[H,Y]),Ce=(0,Z.useCallback)(()=>{Y(e=>{e.delete(`run`)})},[Y]),we=(0,Z.useCallback)(e=>{Y(t=>{H&&t.set(ge,H),t.set(`run`,e)})},[H,Y]),Te=(0,Z.useCallback)(e=>{let t=Ye(e);t&&u(h(t))},[u]);(0,Z.useEffect)(()=>{d.get(`tab`)&&Y(e=>{e.delete(`tab`)})},[Y,d]),(0,Z.useEffect)(()=>{let e=d.get(`def`),t=d.get(O)===`1`,n=d.get(E)===`1`;if(!e||!K.length)return;let r=K.find(t=>t.id===e||t.name===e);r&&(n?he(r,`copy`):t?x(r):k(r),Y(e=>{e.delete(`def`),e.delete(O),e.delete(E)}))},[K,he,Y,d]),(0,Z.useEffect)(()=>{let e=()=>{W.mutate(),G.mutate()};return window.addEventListener(`workflow-event-appended`,e),window.addEventListener(`workflow-run-updated`,e),window.addEventListener(`workflow-run-error`,e),()=>{window.removeEventListener(`workflow-event-appended`,e),window.removeEventListener(`workflow-run-updated`,e),window.removeEventListener(`workflow-run-error`,e)}},[W,G]);let Ee=(0,Z.useCallback)(()=>{V.mutate(),U.mutate(),W.mutate(),G.mutate()},[V,U,W,G]),De=(0,Z.useCallback)(async e=>{if(y){z(!0),I(null);try{let n=await ae({definitionId:y.id,goal:e.goal,input:e.input,agentId:H,concurrency:e.concurrency,maxSubagents:e.maxSubagents});x(null),await W.mutate(),await G.mutate(),R(t.startSuccess),Y(e=>{H&&e.set(ge,H),e.set(`run`,n.runId)})}catch(e){I(e instanceof Error?e.message:t.startFailed)}finally{z(!1)}}},[t.startFailed,t.startSuccess,H,Y,W,y,G]),Oe=(0,Z.useCallback)(async e=>{try{await C(e,{ownerAgentId:H}),await W.mutate(),await G.mutate()}catch(e){let n=e instanceof Error?e.message:t.cancelFailed;if(/not active|already finished/i.test(n)){await W.mutate(),await G.mutate();return}I(n)}},[t.cancelFailed,H,W,G]),X=(0,Z.useCallback)(async e=>{try{let t=await Se(e,{ownerAgentId:H});await W.mutate(),await G.mutate(),Y(e=>{H&&e.set(ge,H),e.set(`run`,t.runId)})}catch(e){I(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,H,Y,W,G]),Ae=(0,Z.useCallback)(async(e,n)=>{try{let t=await Pe(e,n,{ownerAgentId:H});await W.mutate(),await G.mutate(),Y(e=>{H&&e.set(ge,H),e.set(`run`,t.runId)})}catch(e){I(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,H,Y,W,G]),Me=(0,Z.useCallback)(async e=>{B(!0),I(null);try{let n=await je(e.name,e.script);return ee(!1),N(null),await U.mutate(),R(t.saveWorkflowSuccess),n}catch(e){I(e instanceof Error?e.message:t.saveWorkflowFailed)}finally{B(!1)}},[U,t.saveWorkflowFailed,t.saveWorkflowSuccess]),Ne=(0,Z.useCallback)(async e=>{B(!0),I(null);try{let n=await je(e.name,e.script);await U.mutate();let r=await ae({definitionId:n.id,goal:e.goal,input:{goal:e.goal},agentId:H});ee(!1),N(null),await W.mutate(),await G.mutate(),R(t.startSuccess),Y(e=>{H&&e.set(ge,H),e.set(`run`,r.runId)})}catch(e){I(e instanceof Error?e.message:t.startFailed)}finally{B(!1)}},[U,t.startFailed,t.startSuccess,H,Y,W,G]),Fe=(0,Z.useCallback)(async e=>{if(e.metadata.source===`user`&&window.confirm(q(t.deleteConfirm,{name:e.name}))){I(null);try{await S(e.id),await U.mutate(),R(t.deleteWorkflowSuccess)}catch(e){I(e instanceof Error?e.message:t.deleteWorkflowFailed)}}},[U,t]),Ie=V.isLoading||U.isLoading||W.isLoading,Le=V.error?.message??U.error?.message??W.error?.message??null;return{language:e,localeTag:n,labels:t,hasToken:i,searchQuery:p,setSearchQuery:_e,ownerAgentId:H,agentOptions:oe,setOwnerAgentId:ve,workflowFilterId:m,setWorkflowFilterId:ye,triggerFilter:g,setTriggerFilter:be,definitions:K,filteredDefinitions:fe,runs:se,selectedRunId:ce,selectedRunView:ue.view,selectedRunComparison:de.data,selectedRunLoading:ue.loading,selectedRunError:ue.error?.message??de.error?.message??null,openRunDetails:xe,closeRunDetails:Ce,openRunDetailsById:we,openRunInChat:Te,pickStartOpen:w,setPickStartOpen:T,startDefinition:y,setStartDefinition:x,detailDefinition:D,setDetailDefinition:k,manageOpen:A,setManageOpen:pe,workflowEditorDraft:M,openWorkflowEditor:he,actionError:P,actionFeedback:L,starting:te,savingWorkflow:ne,loading:Ie,error:Le,stats:G.data,refreshAll:Ee,submitStart:De,cancelRun:Oe,retryRun:X,replayRun:Ae,saveCustomWorkflow:Me,saveDraftAndStart:Ne,removeCustomWorkflow:Fe}}function Wn(e,t){return e.replace(/(name\s*:\s*['"`])([^'"`]+)(['"`])/,(e,n,r,i)=>`${n}${t}${i}`)}function Gn(){let e=(0,Q.c)(2),t=Un(),n;return e[0]===t?n=e[1]:(n=(0,$.jsx)(zn,{vm:t}),e[0]=t,e[1]=n),n}export{Gn as WorkflowsPage};
@@ -1,14 +0,0 @@
1
- import type { AgentTool } from '@earendil-works/pi-agent-core';
2
- import type { GoalEvidenceRecordInput } from './goal-evidence-recorder.js';
3
- export interface EditToolDetails {
4
- diff?: string;
5
- firstChangedLine?: number;
6
- fuzzyMatchUsed?: boolean;
7
- }
8
- export interface CreateEditFileToolOptions {
9
- /** When set and the path is a bare profile filename (e.g. SOUL.md), edit under this root. */
10
- profileMarkdownRoot?: string;
11
- recordGoalEvidence?: (input: GoalEvidenceRecordInput) => Promise<void> | void;
12
- }
13
- export declare function createEditFileTool(workspace: string, options?: CreateEditFileToolOptions): AgentTool;
14
- export declare const editFileTool: AgentTool;
@@ -1,132 +0,0 @@
1
- import { checkFileSafety } from "../prompt/safety.js";
2
- import { isBareProfileMarkdownFileName, resolvePathUnderWorkspace, resolveProfileMarkdownPathIfBareName } from "./tool-paths.js";
3
- import { evaluateFilePolicy } from "../sandbox/exec-policy.js";
4
- import { fuzzyFindText, generateDiffString, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings, stripBom } from "./edit-diff.js";
5
- import { readFile, stat, writeFile } from "fs/promises";
6
- import { Type } from "@sinclair/typebox";
7
- //#region src/agent/tools/edit.ts
8
- const MAX_FILE_SIZE = 10 * 1024 * 1024;
9
- const EditFileSchema = Type.Object({
10
- path: Type.String({ description: "File path to edit" }),
11
- oldText: Type.String({ description: "Text to replace" }),
12
- newText: Type.String({ description: "Replacement text" })
13
- });
14
- function createEditFileTool(workspace, options) {
15
- return {
16
- name: "edit_file",
17
- description: "Edit file by replacing text. Relative paths are under the current agent workspace; profile Markdown (SOUL.md, etc.) is edited automatically when given by filename.",
18
- parameters: EditFileSchema,
19
- label: "✏️ Edit",
20
- async execute(_toolCallId, params, _signal) {
21
- try {
22
- const p = params;
23
- const safety = checkFileSafety("write", p.path);
24
- if (!safety.allowed) return {
25
- content: [{
26
- type: "text",
27
- text: `🚫 ${safety.message}`
28
- }],
29
- details: {}
30
- };
31
- const editsProfileFile = Boolean(options?.profileMarkdownRoot && isBareProfileMarkdownFileName(p.path));
32
- const workspaceRoot = editsProfileFile ? options.profileMarkdownRoot : workspace;
33
- const pathPolicy = evaluateFilePolicy({
34
- operation: "edit",
35
- path: p.path,
36
- workspaceRoot
37
- });
38
- if (!pathPolicy.allowed) return {
39
- content: [{
40
- type: "text",
41
- text: `🚫 Sandbox: ${pathPolicy.reason}`
42
- }],
43
- details: {}
44
- };
45
- const normalized = editsProfileFile ? resolveProfileMarkdownPathIfBareName(p.path, options.profileMarkdownRoot) : resolvePathUnderWorkspace(p.path, workspace);
46
- if ((await stat(normalized)).size > MAX_FILE_SIZE) return {
47
- content: [{
48
- type: "text",
49
- text: `🚫 File too large`
50
- }],
51
- details: {}
52
- };
53
- const rawContent = await readFile(normalized, "utf-8");
54
- const content = stripBom(rawContent);
55
- const lineEnding = detectLineEnding(rawContent);
56
- const normalizedContent = normalizeToLF(content);
57
- const normalizedOldText = normalizeToLF(p.oldText);
58
- const normalizedNewText = normalizeToLF(p.newText);
59
- const matchResult = fuzzyFindText(normalizedContent, normalizedOldText);
60
- if (!matchResult.found) return {
61
- content: [{
62
- type: "text",
63
- text: `Error: oldText not found`
64
- }],
65
- details: {}
66
- };
67
- const fuzzyContent = normalizeForFuzzyMatch(normalizedContent);
68
- const fuzzyOldText = normalizeForFuzzyMatch(normalizedOldText);
69
- const occurrences = fuzzyContent.split(fuzzyOldText).length - 1;
70
- if (occurrences > 1) return {
71
- content: [{
72
- type: "text",
73
- text: `Error: ${occurrences} occurrences found, text must be unique`
74
- }],
75
- details: {}
76
- };
77
- const baseContent = matchResult.contentForReplacement;
78
- const finalContent = restoreLineEndings(baseContent.substring(0, matchResult.index) + normalizedNewText + baseContent.substring(matchResult.index + matchResult.matchLength), lineEnding);
79
- const originalWithReplacement = restoreLineEndings(baseContent, lineEnding);
80
- if (originalWithReplacement === finalContent) return {
81
- content: [{
82
- type: "text",
83
- text: `Error: No changes`
84
- }],
85
- details: {}
86
- };
87
- const diffResult = generateDiffString(originalWithReplacement, finalContent, normalized);
88
- await writeFile(normalized, finalContent, "utf-8");
89
- await options?.recordGoalEvidence?.({
90
- kind: "diff",
91
- title: `File edited: ${normalized}`,
92
- summary: diffResult.slice(0, 4e3),
93
- uri: normalized,
94
- data: {
95
- path: normalized,
96
- fuzzyMatchUsed: matchResult.usedFuzzyMatch
97
- }
98
- });
99
- return {
100
- content: [{
101
- type: "text",
102
- text: `File edited: ${normalized}`
103
- }],
104
- details: {
105
- diff: diffResult,
106
- fuzzyMatchUsed: matchResult.usedFuzzyMatch
107
- }
108
- };
109
- } catch (error) {
110
- return {
111
- content: [{
112
- type: "text",
113
- text: `Error: ${error instanceof Error ? error.message : String(error)}`
114
- }],
115
- details: {}
116
- };
117
- }
118
- }
119
- };
120
- }
121
- const editFileTool = createEditFileTool(process.cwd());
122
- function detectLineEnding(content) {
123
- const crlfIdx = content.indexOf("\r\n");
124
- const lfIdx = content.indexOf("\n");
125
- if (lfIdx === -1) return "\n";
126
- if (crlfIdx === -1) return "\n";
127
- return crlfIdx < lfIdx ? "\r\n" : "\n";
128
- }
129
- //#endregion
130
- export { createEditFileTool, editFileTool };
131
-
132
- //# sourceMappingURL=edit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.js","names":[],"sources":["../../../../src/agent/tools/edit.ts"],"sourcesContent":["// Edit file tool\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { readFile, writeFile, stat } from 'fs/promises';\nimport { checkFileSafety } from '../prompt/safety.js';\nimport {\n isBareProfileMarkdownFileName,\n resolveProfileMarkdownPathIfBareName,\n resolvePathUnderWorkspace,\n} from './tool-paths.js';\nimport { evaluateFilePolicy } from '../sandbox/exec-policy.js';\nimport { normalizeToLF, restoreLineEndings, normalizeForFuzzyMatch, fuzzyFindText, stripBom, generateDiffString } from './edit-diff.js';\nimport type { GoalEvidenceRecordInput } from './goal-evidence-recorder.js';\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024;\n\nconst EditFileSchema = Type.Object({\n path: Type.String({ description: 'File path to edit' }),\n oldText: Type.String({ description: 'Text to replace' }),\n newText: Type.String({ description: 'Replacement text' }),\n});\n\nexport interface EditToolDetails {\n diff?: string;\n firstChangedLine?: number;\n fuzzyMatchUsed?: boolean;\n}\n\ntype EditFileParams = { path: string; oldText: string; newText: string };\n\nexport interface CreateEditFileToolOptions {\n /** When set and the path is a bare profile filename (e.g. SOUL.md), edit under this root. */\n profileMarkdownRoot?: string;\n recordGoalEvidence?: (input: GoalEvidenceRecordInput) => Promise<void> | void;\n}\n\nexport function createEditFileTool(\n workspace: string,\n options?: CreateEditFileToolOptions,\n): AgentTool {\n return {\n name: 'edit_file',\n description:\n 'Edit file by replacing text. Relative paths are under the current agent workspace; profile Markdown (SOUL.md, etc.) is edited automatically when given by filename.',\n parameters: EditFileSchema,\n label: '✏️ Edit',\n\n async execute(\n _toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<EditToolDetails>> {\n try {\n const p = params as EditFileParams;\n const safety = checkFileSafety('write', p.path);\n if (!safety.allowed) return { content: [{ type: 'text', text: `🚫 ${safety.message}` }], details: {} };\n\n const editsProfileFile = Boolean(\n options?.profileMarkdownRoot && isBareProfileMarkdownFileName(p.path),\n );\n const workspaceRoot = editsProfileFile ? options!.profileMarkdownRoot! : workspace;\n\n // Sandbox path-policy check (blocked dirs, symlink escape, config protection)\n const pathPolicy = evaluateFilePolicy({\n operation: 'edit',\n path: p.path,\n workspaceRoot,\n });\n if (!pathPolicy.allowed) {\n return { content: [{ type: 'text', text: `🚫 Sandbox: ${pathPolicy.reason}` }], details: {} };\n }\n\n const normalized = editsProfileFile\n ? resolveProfileMarkdownPathIfBareName(p.path, options!.profileMarkdownRoot!)\n : resolvePathUnderWorkspace(p.path, workspace);\n const stats = await stat(normalized);\n if (stats.size > MAX_FILE_SIZE) return { content: [{ type: 'text', text: `🚫 File too large` }], details: {} };\n\n const rawContent = await readFile(normalized, 'utf-8');\n const content = stripBom(rawContent);\n const lineEnding = detectLineEnding(rawContent);\n\n const normalizedContent = normalizeToLF(content);\n const normalizedOldText = normalizeToLF(p.oldText);\n const normalizedNewText = normalizeToLF(p.newText);\n\n const matchResult = fuzzyFindText(normalizedContent, normalizedOldText);\n if (!matchResult.found) return { content: [{ type: 'text', text: `Error: oldText not found` }], details: {} };\n\n const fuzzyContent = normalizeForFuzzyMatch(normalizedContent);\n const fuzzyOldText = normalizeForFuzzyMatch(normalizedOldText);\n const occurrences = fuzzyContent.split(fuzzyOldText).length - 1;\n if (occurrences > 1)\n return { content: [{ type: 'text', text: `Error: ${occurrences} occurrences found, text must be unique` }], details: {} };\n\n const baseContent = matchResult.contentForReplacement;\n const newContent =\n baseContent.substring(0, matchResult.index) +\n normalizedNewText +\n baseContent.substring(matchResult.index + matchResult.matchLength);\n const finalContent = restoreLineEndings(newContent, lineEnding);\n const originalWithReplacement = restoreLineEndings(baseContent, lineEnding);\n\n if (originalWithReplacement === finalContent)\n return { content: [{ type: 'text', text: `Error: No changes` }], details: {} };\n\n const diffResult = generateDiffString(originalWithReplacement, finalContent, normalized);\n await writeFile(normalized, finalContent, 'utf-8');\n await options?.recordGoalEvidence?.({\n kind: 'diff',\n title: `File edited: ${normalized}`,\n summary: diffResult.slice(0, 4000),\n uri: normalized,\n data: {\n path: normalized,\n fuzzyMatchUsed: matchResult.usedFuzzyMatch,\n },\n });\n\n return {\n content: [{ type: 'text', text: `File edited: ${normalized}` }],\n details: { diff: diffResult, fuzzyMatchUsed: matchResult.usedFuzzyMatch },\n };\n } catch (error) {\n return {\n content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],\n details: {},\n };\n }\n },\n } as any;\n}\n\nexport const editFileTool: AgentTool = createEditFileTool(process.cwd());\n\nfunction detectLineEnding(content: string): '\\r\\n' | '\\n' {\n const crlfIdx = content.indexOf('\\r\\n');\n const lfIdx = content.indexOf('\\n');\n if (lfIdx === -1) return '\\n';\n if (crlfIdx === -1) return '\\n';\n return crlfIdx < lfIdx ? '\\r\\n' : '\\n';\n}\n"],"mappings":";;;;;;;AAcA,MAAM,gBAAgB,KAAK,OAAO;AAElC,MAAM,iBAAiB,KAAK,OAAO;CACjC,MAAM,KAAK,OAAO,EAAE,aAAa,qBAAqB,CAAC;CACvD,SAAS,KAAK,OAAO,EAAE,aAAa,mBAAmB,CAAC;CACxD,SAAS,KAAK,OAAO,EAAE,aAAa,oBAAoB,CAAC;CAC1D,CAAC;AAgBF,SAAgB,mBACd,WACA,SACW;AACX,QAAO;EACL,MAAM;EACN,aACE;EACF,YAAY;EACZ,OAAO;EAEP,MAAM,QACJ,aACA,QACA,SAC2C;AAC3C,OAAI;IACF,MAAM,IAAI;IACV,MAAM,SAAS,gBAAgB,SAAS,EAAE,KAAK;AAC/C,QAAI,CAAC,OAAO,QAAS,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,MAAM,OAAO;MAAW,CAAC;KAAE,SAAS,EAAE;KAAE;IAEtG,MAAM,mBAAmB,QACvB,SAAS,uBAAuB,8BAA8B,EAAE,KAAK,CACtE;IACD,MAAM,gBAAgB,mBAAmB,QAAS,sBAAuB;IAGzE,MAAM,aAAa,mBAAmB;KACpC,WAAW;KACX,MAAM,EAAE;KACR;KACD,CAAC;AACF,QAAI,CAAC,WAAW,QACd,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,eAAe,WAAW;MAAU,CAAC;KAAE,SAAS,EAAE;KAAE;IAG/F,MAAM,aAAa,mBACf,qCAAqC,EAAE,MAAM,QAAS,oBAAqB,GAC3E,0BAA0B,EAAE,MAAM,UAAU;AAEhD,SAAI,MADgB,KAAK,WAAW,EAC1B,OAAO,cAAe,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAqB,CAAC;KAAE,SAAS,EAAE;KAAE;IAE9G,MAAM,aAAa,MAAM,SAAS,YAAY,QAAQ;IACtD,MAAM,UAAU,SAAS,WAAW;IACpC,MAAM,aAAa,iBAAiB,WAAW;IAE/C,MAAM,oBAAoB,cAAc,QAAQ;IAChD,MAAM,oBAAoB,cAAc,EAAE,QAAQ;IAClD,MAAM,oBAAoB,cAAc,EAAE,QAAQ;IAElD,MAAM,cAAc,cAAc,mBAAmB,kBAAkB;AACvE,QAAI,CAAC,YAAY,MAAO,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAA4B,CAAC;KAAE,SAAS,EAAE;KAAE;IAE7G,MAAM,eAAe,uBAAuB,kBAAkB;IAC9D,MAAM,eAAe,uBAAuB,kBAAkB;IAC9D,MAAM,cAAc,aAAa,MAAM,aAAa,CAAC,SAAS;AAC9D,QAAI,cAAc,EAChB,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,UAAU,YAAY;MAA0C,CAAC;KAAE,SAAS,EAAE;KAAE;IAE3H,MAAM,cAAc,YAAY;IAKhC,MAAM,eAAe,mBAHnB,YAAY,UAAU,GAAG,YAAY,MAAM,GAC3C,oBACA,YAAY,UAAU,YAAY,QAAQ,YAAY,YAAY,EAChB,WAAW;IAC/D,MAAM,0BAA0B,mBAAmB,aAAa,WAAW;AAE3E,QAAI,4BAA4B,aAC9B,QAAO;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAqB,CAAC;KAAE,SAAS,EAAE;KAAE;IAEhF,MAAM,aAAa,mBAAmB,yBAAyB,cAAc,WAAW;AACxF,UAAM,UAAU,YAAY,cAAc,QAAQ;AAClD,UAAM,SAAS,qBAAqB;KAClC,MAAM;KACN,OAAO,gBAAgB;KACvB,SAAS,WAAW,MAAM,GAAG,IAAK;KAClC,KAAK;KACL,MAAM;MACJ,MAAM;MACN,gBAAgB,YAAY;MAC7B;KACF,CAAC;AAEF,WAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,gBAAgB;MAAc,CAAC;KAC/D,SAAS;MAAE,MAAM;MAAY,gBAAgB,YAAY;MAAgB;KAC1E;YACM,OAAO;AACd,WAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;MAAI,CAAC;KACrG,SAAS,EAAE;KACZ;;;EAGN;;AAGH,MAAa,eAA0B,mBAAmB,QAAQ,KAAK,CAAC;AAExE,SAAS,iBAAiB,SAAgC;CACxD,MAAM,UAAU,QAAQ,QAAQ,OAAO;CACvC,MAAM,QAAQ,QAAQ,QAAQ,KAAK;AACnC,KAAI,UAAU,GAAI,QAAO;AACzB,KAAI,YAAY,GAAI,QAAO;AAC3B,QAAO,UAAU,QAAQ,SAAS"}
@@ -1,15 +0,0 @@
1
- import type { AgentTool } from '@earendil-works/pi-agent-core';
2
- import type { GoalEvidenceRecordInput } from './goal-evidence-recorder.js';
3
- export interface ShellDetails {
4
- exitCode: number | null;
5
- timedOut: boolean;
6
- truncated: boolean;
7
- truncatedBy?: 'lines' | 'bytes';
8
- outputBytes?: number;
9
- }
10
- export interface CreateShellToolOptions {
11
- /** Env var names allowed through {@link prepareSafeToolEnv} even if they match secret heuristics (skill passthrough). */
12
- getSkillPassthroughEnvVarNames?: () => string[];
13
- recordGoalEvidence?: (input: GoalEvidenceRecordInput) => Promise<void> | void;
14
- }
15
- export declare function createShellTool(cwd: string, options?: CreateShellToolOptions): AgentTool;
@@ -1,158 +0,0 @@
1
- import { evaluateExecPolicy } from "../sandbox/exec-policy.js";
2
- import { spawn } from "child_process";
3
- import { Type } from "@sinclair/typebox";
4
- //#region src/agent/tools/shell.ts
5
- const MAX_SHELL_TIMEOUT = 300;
6
- const DEFAULT_MAX_BYTES = 50 * 1024;
7
- const DEFAULT_MAX_LINES = 2e3;
8
- const ShellSchema = Type.Object({ command: Type.String({ description: "Shell command to execute" }) });
9
- function formatSize(bytes) {
10
- if (bytes < 1024) return `${bytes}B`;
11
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
12
- return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
13
- }
14
- function isLikelyTestCommand(command) {
15
- return /\b(test|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test)\b/i.test(command);
16
- }
17
- function truncateTail(content, maxLines = DEFAULT_MAX_LINES, maxBytes = DEFAULT_MAX_BYTES) {
18
- const totalBytes = Buffer.byteLength(content, "utf-8");
19
- const lines = content.split("\n");
20
- const totalLines = lines.length;
21
- if (totalLines <= maxLines && totalBytes <= maxBytes) return {
22
- content,
23
- truncated: false,
24
- truncatedBy: null,
25
- totalLines,
26
- totalBytes,
27
- outputLines: totalLines,
28
- outputBytes: totalBytes
29
- };
30
- const outputLinesArr = [];
31
- let outputBytesCount = 0;
32
- let truncatedBy = "lines";
33
- for (let i = lines.length - 1; i >= 0 && outputLinesArr.length < maxLines; i--) {
34
- const line = lines[i];
35
- const lineBytes = Buffer.byteLength(line, "utf-8") + (outputLinesArr.length > 0 ? 1 : 0);
36
- if (outputBytesCount + lineBytes > maxBytes) {
37
- truncatedBy = "bytes";
38
- break;
39
- }
40
- outputLinesArr.unshift(line);
41
- outputBytesCount += lineBytes;
42
- }
43
- return {
44
- content: outputLinesArr.join("\n"),
45
- truncated: true,
46
- truncatedBy,
47
- totalLines,
48
- totalBytes,
49
- outputLines: outputLinesArr.length,
50
- outputBytes: outputBytesCount
51
- };
52
- }
53
- function createShellTool(cwd, options) {
54
- return {
55
- name: "shell",
56
- description: "Execute shell command.",
57
- parameters: ShellSchema,
58
- label: "💻 Shell",
59
- async execute(toolCallId, params, _signal) {
60
- const p = params;
61
- const passthroughNames = options?.getSkillPassthroughEnvVarNames?.() ?? [];
62
- const policy = evaluateExecPolicy({
63
- command: p.command,
64
- cwd,
65
- allowedEnvVars: passthroughNames
66
- });
67
- if (!policy.allowed) return {
68
- content: [{
69
- type: "text",
70
- text: `🚫 Sandbox: ${policy.reason}`
71
- }],
72
- details: {
73
- exitCode: null,
74
- timedOut: false,
75
- truncated: false
76
- }
77
- };
78
- return new Promise((resolve) => {
79
- let output = "";
80
- let errorOutput = "";
81
- let timedOut = false;
82
- let tempStream = null;
83
- const effectiveTimeoutSec = Math.min(MAX_SHELL_TIMEOUT, Math.ceil(policy.timeoutMs / 1e3));
84
- const timeout = setTimeout(() => {
85
- timedOut = true;
86
- proc.kill("SIGKILL");
87
- }, effectiveTimeoutSec * 1e3);
88
- const proc = spawn(p.command, [], {
89
- shell: true,
90
- cwd: policy.effectiveCwd,
91
- env: {
92
- ...policy.sanitizedEnv,
93
- COLUMNS: "200"
94
- }
95
- });
96
- proc.stdout?.on("data", (data) => {
97
- const text = data.toString();
98
- output += text;
99
- });
100
- proc.stderr?.on("data", (data) => {
101
- const text = data.toString();
102
- errorOutput += text;
103
- });
104
- proc.on("close", (code) => {
105
- clearTimeout(timeout);
106
- tempStream?.end();
107
- const truncation = truncateTail(errorOutput + output);
108
- let resultText = truncation.content;
109
- if (timedOut) resultText = `⏱️ Command timed out after ${MAX_SHELL_TIMEOUT}s\n` + resultText;
110
- if (truncation.truncated) resultText += `\n\n[Output truncated: ${formatSize(truncation.outputBytes)} of ${formatSize(truncation.totalBytes)}]`;
111
- const result = {
112
- content: [{
113
- type: "text",
114
- text: resultText
115
- }],
116
- details: {
117
- exitCode: code,
118
- timedOut,
119
- truncated: truncation.truncated,
120
- truncatedBy: truncation.truncatedBy,
121
- outputBytes: truncation.outputBytes
122
- }
123
- };
124
- Promise.resolve(options?.recordGoalEvidence?.({
125
- kind: timedOut || code !== 0 ? "command" : isLikelyTestCommand(p.command) ? "test" : "command",
126
- title: `Command: ${p.command.slice(0, 120)}`,
127
- summary: resultText.slice(0, 2e3),
128
- data: {
129
- command: p.command,
130
- exitCode: code,
131
- timedOut,
132
- truncated: truncation.truncated,
133
- outputBytes: truncation.outputBytes
134
- }
135
- })).finally(() => resolve(result));
136
- });
137
- proc.on("error", (err) => {
138
- clearTimeout(timeout);
139
- resolve({
140
- content: [{
141
- type: "text",
142
- text: `Error: ${err.message}`
143
- }],
144
- details: {
145
- exitCode: null,
146
- timedOut: false,
147
- truncated: false
148
- }
149
- });
150
- });
151
- });
152
- }
153
- };
154
- }
155
- //#endregion
156
- export { createShellTool };
157
-
158
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","names":[],"sources":["../../../../src/agent/tools/shell.ts"],"sourcesContent":["// Shell tool - executes commands with output truncation\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { spawn } from 'child_process';\nimport { evaluateExecPolicy } from '../sandbox/exec-policy.js';\nimport { createWriteStream } from 'fs';\nimport type { GoalEvidenceRecordInput } from './goal-evidence-recorder.js';\n\nconst MAX_SHELL_TIMEOUT = 300;\nconst DEFAULT_MAX_BYTES = 50 * 1024;\nconst DEFAULT_MAX_LINES = 2000;\n\nconst ShellSchema = Type.Object({\n command: Type.String({ description: 'Shell command to execute' }),\n});\n\nexport interface ShellDetails {\n exitCode: number | null;\n timedOut: boolean;\n truncated: boolean;\n truncatedBy?: 'lines' | 'bytes';\n outputBytes?: number;\n}\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;\n}\n\nfunction isLikelyTestCommand(command: string): boolean {\n return /\\b(test|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test)\\b/i.test(command);\n}\n\nfunction truncateTail(content: string, maxLines = DEFAULT_MAX_LINES, maxBytes = DEFAULT_MAX_BYTES) {\n const totalBytes = Buffer.byteLength(content, 'utf-8');\n const lines = content.split('\\n');\n const totalLines = lines.length;\n\n if (totalLines <= maxLines && totalBytes <= maxBytes) {\n return { content, truncated: false, truncatedBy: null, totalLines, totalBytes, outputLines: totalLines, outputBytes: totalBytes };\n }\n\n const outputLinesArr: string[] = [];\n let outputBytesCount = 0;\n let truncatedBy: 'lines' | 'bytes' = 'lines';\n\n for (let i = lines.length - 1; i >= 0 && outputLinesArr.length < maxLines; i--) {\n const line = lines[i];\n const lineBytes = Buffer.byteLength(line, 'utf-8') + (outputLinesArr.length > 0 ? 1 : 0);\n\n if (outputBytesCount + lineBytes > maxBytes) {\n truncatedBy = 'bytes';\n break;\n }\n\n outputLinesArr.unshift(line);\n outputBytesCount += lineBytes;\n }\n\n return { content: outputLinesArr.join('\\n'), truncated: true, truncatedBy, totalLines, totalBytes, outputLines: outputLinesArr.length, outputBytes: outputBytesCount };\n}\n\nexport interface CreateShellToolOptions {\n /** Env var names allowed through {@link prepareSafeToolEnv} even if they match secret heuristics (skill passthrough). */\n getSkillPassthroughEnvVarNames?: () => string[];\n recordGoalEvidence?: (input: GoalEvidenceRecordInput) => Promise<void> | void;\n}\n\nexport function createShellTool(\n cwd: string,\n options?: CreateShellToolOptions,\n): AgentTool {\n return {\n name: 'shell',\n description: 'Execute shell command.',\n parameters: ShellSchema,\n label: '💻 Shell',\n\n async execute(\n toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<ShellDetails>> {\n const p = params as { command: string };\n\n // Sandbox exec-policy check (path + command injection + env sanitization)\n const passthroughNames = options?.getSkillPassthroughEnvVarNames?.() ?? [];\n const policy = evaluateExecPolicy({\n command: p.command,\n cwd,\n allowedEnvVars: passthroughNames,\n });\n if (!policy.allowed) {\n return {\n content: [{ type: 'text', text: `🚫 Sandbox: ${policy.reason}` }],\n details: { exitCode: null, timedOut: false, truncated: false },\n };\n }\n\n return new Promise((resolve) => {\n const _startTime = Date.now();\n let output = '';\n let errorOutput = '';\n let timedOut = false;\n let _tempFile: string | null = null;\n let tempStream: ReturnType<typeof createWriteStream> | null = null;\n const useTempFile = false; // Disabled - stream directly\n\n const effectiveTimeoutSec = Math.min(\n MAX_SHELL_TIMEOUT,\n Math.ceil(policy.timeoutMs / 1000),\n );\n const timeout = setTimeout(() => {\n timedOut = true;\n proc.kill('SIGKILL');\n }, effectiveTimeoutSec * 1000);\n\n const proc = spawn(p.command, [], {\n shell: true,\n cwd: policy.effectiveCwd,\n env: {\n ...policy.sanitizedEnv,\n COLUMNS: '200',\n },\n });\n\n proc.stdout?.on('data', (data) => {\n const text = data.toString();\n if (!useTempFile) output += text;\n });\n\n proc.stderr?.on('data', (data) => {\n const text = data.toString();\n errorOutput += text;\n });\n\n proc.on('close', (code) => {\n clearTimeout(timeout);\n tempStream?.end();\n\n const fullOutput = errorOutput + output;\n const truncation = truncateTail(fullOutput);\n\n let resultText = truncation.content;\n if (timedOut) {\n resultText = `⏱️ Command timed out after ${MAX_SHELL_TIMEOUT}s\\n` + resultText;\n }\n if (truncation.truncated) {\n resultText += `\\n\\n[Output truncated: ${formatSize(truncation.outputBytes)} of ${formatSize(truncation.totalBytes)}]`;\n }\n\n const result: AgentToolResult<ShellDetails> = {\n content: [{ type: 'text', text: resultText }],\n details: {\n exitCode: code,\n timedOut,\n truncated: truncation.truncated,\n truncatedBy: truncation.truncatedBy,\n outputBytes: truncation.outputBytes,\n },\n };\n void Promise.resolve(options?.recordGoalEvidence?.({\n kind: timedOut || code !== 0 ? 'command' : isLikelyTestCommand(p.command) ? 'test' : 'command',\n title: `Command: ${p.command.slice(0, 120)}`,\n summary: resultText.slice(0, 2000),\n data: {\n command: p.command,\n exitCode: code,\n timedOut,\n truncated: truncation.truncated,\n outputBytes: truncation.outputBytes,\n },\n })).finally(() => resolve(result));\n });\n\n proc.on('error', (err) => {\n clearTimeout(timeout);\n resolve({\n content: [{ type: 'text', text: `Error: ${err.message}` }],\n details: { exitCode: null, timedOut: false, truncated: false },\n });\n });\n });\n },\n } as any;\n}\n"],"mappings":";;;;AAQA,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB,KAAK;AAC/B,MAAM,oBAAoB;AAE1B,MAAM,cAAc,KAAK,OAAO,EAC9B,SAAS,KAAK,OAAO,EAAE,aAAa,4BAA4B,CAAC,EAClE,CAAC;AAUF,SAAS,WAAW,OAAuB;AACzC,KAAI,QAAQ,KAAM,QAAO,GAAG,MAAM;AAClC,KAAI,QAAQ,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAC7D,QAAO,IAAI,SAAS,OAAO,OAAO,QAAQ,EAAE,CAAC;;AAG/C,SAAS,oBAAoB,SAA0B;AACrD,QAAO,iFAAiF,KAAK,QAAQ;;AAGvG,SAAS,aAAa,SAAiB,WAAW,mBAAmB,WAAW,mBAAmB;CACjG,MAAM,aAAa,OAAO,WAAW,SAAS,QAAQ;CACtD,MAAM,QAAQ,QAAQ,MAAM,KAAK;CACjC,MAAM,aAAa,MAAM;AAEzB,KAAI,cAAc,YAAY,cAAc,SAC1C,QAAO;EAAE;EAAS,WAAW;EAAO,aAAa;EAAM;EAAY;EAAY,aAAa;EAAY,aAAa;EAAY;CAGnI,MAAM,iBAA2B,EAAE;CACnC,IAAI,mBAAmB;CACvB,IAAI,cAAiC;AAErC,MAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,KAAK,eAAe,SAAS,UAAU,KAAK;EAC9E,MAAM,OAAO,MAAM;EACnB,MAAM,YAAY,OAAO,WAAW,MAAM,QAAQ,IAAI,eAAe,SAAS,IAAI,IAAI;AAEtF,MAAI,mBAAmB,YAAY,UAAU;AAC3C,iBAAc;AACd;;AAGF,iBAAe,QAAQ,KAAK;AAC5B,sBAAoB;;AAGtB,QAAO;EAAE,SAAS,eAAe,KAAK,KAAK;EAAE,WAAW;EAAM;EAAa;EAAY;EAAY,aAAa,eAAe;EAAQ,aAAa;EAAkB;;AASxK,SAAgB,gBACd,KACA,SACW;AACX,QAAO;EACL,MAAM;EACN,aAAa;EACb,YAAY;EACZ,OAAO;EAEP,MAAM,QACJ,YACA,QACA,SACwC;GACxC,MAAM,IAAI;GAGV,MAAM,mBAAmB,SAAS,kCAAkC,IAAI,EAAE;GAC1E,MAAM,SAAS,mBAAmB;IAChC,SAAS,EAAE;IACX;IACA,gBAAgB;IACjB,CAAC;AACF,OAAI,CAAC,OAAO,QACV,QAAO;IACL,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM,eAAe,OAAO;KAAU,CAAC;IACjE,SAAS;KAAE,UAAU;KAAM,UAAU;KAAO,WAAW;KAAO;IAC/D;AAGH,UAAO,IAAI,SAAS,YAAY;IAE9B,IAAI,SAAS;IACb,IAAI,cAAc;IAClB,IAAI,WAAW;IAEf,IAAI,aAA0D;IAG9D,MAAM,sBAAsB,KAAK,IAC/B,mBACA,KAAK,KAAK,OAAO,YAAY,IAAK,CACnC;IACD,MAAM,UAAU,iBAAiB;AAC/B,gBAAW;AACX,UAAK,KAAK,UAAU;OACnB,sBAAsB,IAAK;IAE9B,MAAM,OAAO,MAAM,EAAE,SAAS,EAAE,EAAE;KAChC,OAAO;KACP,KAAK,OAAO;KACZ,KAAK;MACH,GAAG,OAAO;MACV,SAAS;MACV;KACF,CAAC;AAEF,SAAK,QAAQ,GAAG,SAAS,SAAS;KAChC,MAAM,OAAO,KAAK,UAAU;AACV,eAAU;MAC5B;AAEF,SAAK,QAAQ,GAAG,SAAS,SAAS;KAChC,MAAM,OAAO,KAAK,UAAU;AAC5B,oBAAe;MACf;AAEF,SAAK,GAAG,UAAU,SAAS;AACzB,kBAAa,QAAQ;AACrB,iBAAY,KAAK;KAGjB,MAAM,aAAa,aADA,cAAc,OACU;KAE3C,IAAI,aAAa,WAAW;AAC5B,SAAI,SACF,cAAa,8BAA8B,kBAAkB,OAAO;AAEtE,SAAI,WAAW,UACb,eAAc,0BAA0B,WAAW,WAAW,YAAY,CAAC,MAAM,WAAW,WAAW,WAAW,CAAC;KAGrH,MAAM,SAAwC;MAC5C,SAAS,CAAC;OAAE,MAAM;OAAQ,MAAM;OAAY,CAAC;MAC7C,SAAS;OACP,UAAU;OACV;OACA,WAAW,WAAW;OACtB,aAAa,WAAW;OACxB,aAAa,WAAW;OACzB;MACF;AACI,aAAQ,QAAQ,SAAS,qBAAqB;MACjD,MAAM,YAAY,SAAS,IAAI,YAAY,oBAAoB,EAAE,QAAQ,GAAG,SAAS;MACrF,OAAO,YAAY,EAAE,QAAQ,MAAM,GAAG,IAAI;MAC1C,SAAS,WAAW,MAAM,GAAG,IAAK;MAClC,MAAM;OACJ,SAAS,EAAE;OACX,UAAU;OACV;OACA,WAAW,WAAW;OACtB,aAAa,WAAW;OACzB;MACF,CAAC,CAAC,CAAC,cAAc,QAAQ,OAAO,CAAC;MAClC;AAEF,SAAK,GAAG,UAAU,QAAQ;AACxB,kBAAa,QAAQ;AACrB,aAAQ;MACN,SAAS,CAAC;OAAE,MAAM;OAAQ,MAAM,UAAU,IAAI;OAAW,CAAC;MAC1D,SAAS;OAAE,UAAU;OAAM,UAAU;OAAO,WAAW;OAAO;MAC/D,CAAC;MACF;KACF;;EAEL"}