@xopcai/xopc 0.0.87 → 0.0.88

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 (385) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/plugin.js +1 -1
  5. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  6. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/extensions/weixin/src/api/api.js +2 -2
  9. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  10. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  11. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  12. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  13. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  14. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  15. package/dist/extensions/weixin/src/plugin.js +1 -1
  16. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  17. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  18. package/dist/gateway/static/root/assets/agents-CRxETUZx.js +222 -0
  19. package/dist/gateway/static/root/assets/{apps-page-Dg8R-Szf.js → apps-page-wKWf3l57.js} +1 -1
  20. package/dist/gateway/static/root/assets/channels-settings-DDbqVNkx.js +1 -0
  21. package/dist/gateway/static/root/assets/{channels-status-swr-BSHqqCF1.js → channels-status-swr-DIsl75Y3.js} +1 -1
  22. package/dist/gateway/static/root/assets/copy-SxMW6Xpc.js +1 -0
  23. package/dist/gateway/static/root/assets/{cron-api-0h_QT8U3.js → cron-api-N9hvuRrn.js} +1 -1
  24. package/dist/gateway/static/root/assets/{cron-page-BkfKFfFk.js → cron-page-tlNGNxhP.js} +1 -1
  25. package/dist/gateway/static/root/assets/{dist-Cmjp2APP.js → dist-CJwfHYvT.js} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-debug-page-CFa9z_1N.js → extension-debug-page-BVJohZoZ.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-BI8eaTPq.js → extension-page-BT2tmElC.js} +1 -1
  28. package/dist/gateway/static/root/assets/extension-settings-page-BSS47c2j.js +1 -0
  29. package/dist/gateway/static/root/assets/{fetch-DRqwef_Q.js → fetch-BaFNUtkE.js} +1 -1
  30. package/dist/gateway/static/root/assets/{field-primitives-BiNHBo2Y.js → field-primitives-QwYEq6Hz.js} +1 -1
  31. package/dist/gateway/static/root/assets/{heartbeat-config-api-ZRb8qhuz.js → heartbeat-config-api-BVSidEDJ.js} +1 -1
  32. package/dist/gateway/static/root/assets/index-CqZzHNEg.css +1 -0
  33. package/dist/gateway/static/root/assets/{index-Cu7bKuUi.js → index-qNrVJp-y.js} +97 -97
  34. package/dist/gateway/static/root/assets/{logs-page-BFZ8GgCv.js → logs-page-DDonPVLn.js} +1 -1
  35. package/dist/gateway/static/root/assets/sessions-page-DKt-Wmib.js +1 -0
  36. package/dist/gateway/static/root/assets/{settings-form-section-DiqqVs6m.js → settings-form-section-B8N3A3Zo.js} +1 -1
  37. package/dist/gateway/static/root/assets/settings-page-DcJjvvw4.js +3 -0
  38. package/dist/gateway/static/root/assets/{share-preview-page-n1Gprylk.js → share-preview-page-Q7KqkO-u.js} +1 -1
  39. package/dist/gateway/static/root/assets/skills-page-DuJ4BTO3.js +2 -0
  40. package/dist/gateway/static/root/assets/{theme-store-CZOh1nT3.js → theme-store-BbRc5ugR.js} +1 -1
  41. package/dist/gateway/static/root/assets/url-D6jvVYIA.js +7 -0
  42. package/dist/gateway/static/root/assets/{utils-CkWBfxs4.js → utils-CxDGduqK.js} +1 -1
  43. package/dist/gateway/static/root/assets/voice-api-key-field-CTyHz7L_.js +1 -0
  44. package/dist/gateway/static/root/assets/workflows-page-GacJ41Fv.js +27 -0
  45. package/dist/gateway/static/root/index.html +6 -5
  46. package/dist/package.js +1 -1
  47. package/dist/src/agent/agent-manager.js +7 -7
  48. package/dist/src/agent/agent-scope.js +1 -1
  49. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  50. package/dist/src/agent/child-agent-factory.d.ts +15 -0
  51. package/dist/src/agent/child-agent-factory.js +35 -2
  52. package/dist/src/agent/child-agent-factory.js.map +1 -1
  53. package/dist/src/agent/client-error-format.d.ts +20 -0
  54. package/dist/src/agent/client-error-format.js +97 -0
  55. package/dist/src/agent/client-error-format.js.map +1 -0
  56. package/dist/src/agent/context/workspace-seed.js +2 -2
  57. package/dist/src/agent/embedded/run-turn.js +23 -4
  58. package/dist/src/agent/embedded/run-turn.js.map +1 -1
  59. package/dist/src/agent/goals/goal-locale.d.ts +1 -1
  60. package/dist/src/agent/goals/goal-run-store.js +4 -4
  61. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  62. package/dist/src/agent/goals/post-turn.js +2 -2
  63. package/dist/src/agent/image/load-image-media.js +2 -2
  64. package/dist/src/agent/inbound/turn-dispatcher.js +1 -1
  65. package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
  66. package/dist/src/agent/ipc/bus.js +1 -1
  67. package/dist/src/agent/ipc/inbox.js +2 -2
  68. package/dist/src/agent/ipc/socket.js +1 -1
  69. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  70. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  71. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  72. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  73. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  74. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  75. package/dist/src/agent/memory/dreaming/events.js +1 -1
  76. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  77. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  78. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  79. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  80. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  81. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  82. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  83. package/dist/src/agent/models/manager.js +1 -1
  84. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +2 -0
  85. package/dist/src/agent/orchestration/llm-turn-retry.js +9 -1
  86. package/dist/src/agent/orchestration/llm-turn-retry.js.map +1 -1
  87. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  88. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  89. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  90. package/dist/src/agent/sandbox/path-policy.js +2 -2
  91. package/dist/src/agent/service/build-direct-message-content.js +1 -1
  92. package/dist/src/agent/service/process-direct-streaming.js +19 -3
  93. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  94. package/dist/src/agent/service/webchat-tts.d.ts +1 -2
  95. package/dist/src/agent/service/webchat-tts.js +1 -1
  96. package/dist/src/agent/service/webchat-tts.js.map +1 -1
  97. package/dist/src/agent/service.js +4 -4
  98. package/dist/src/agent/session/session-inspector.js +1 -1
  99. package/dist/src/agent/skills/config.js +1 -1
  100. package/dist/src/agent/skills/hub-hash.js +2 -2
  101. package/dist/src/agent/skills/hub-lock.js +1 -1
  102. package/dist/src/agent/skills/hub-pull.js +2 -2
  103. package/dist/src/agent/skills/index.js +1 -1
  104. package/dist/src/agent/skills/managed-store.js +1 -1
  105. package/dist/src/agent/skills/scanner.js +1 -1
  106. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  107. package/dist/src/agent/skills/skill-manager.js +1 -1
  108. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  109. package/dist/src/agent/tools/factory.js +1 -1
  110. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  111. package/dist/src/agent/tools/send-media.js +1 -1
  112. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  113. package/dist/src/agent/tools/workflow-tool.js +64 -16
  114. package/dist/src/agent/tools/workflow-tool.js.map +1 -1
  115. package/dist/src/agent/tools/write.js +1 -1
  116. package/dist/src/agent/workflow/agent-progress.d.ts +5 -0
  117. package/dist/src/agent/workflow/agent-progress.js +65 -0
  118. package/dist/src/agent/workflow/agent-progress.js.map +1 -0
  119. package/dist/src/agent/workflow/builtins/audit-repo.d.ts +1 -1
  120. package/dist/src/agent/workflow/builtins/audit-repo.js +14 -0
  121. package/dist/src/agent/workflow/builtins/audit-repo.js.map +1 -1
  122. package/dist/src/agent/workflow/builtins/debug-incident.d.ts +1 -1
  123. package/dist/src/agent/workflow/builtins/debug-incident.js +14 -0
  124. package/dist/src/agent/workflow/builtins/debug-incident.js.map +1 -1
  125. package/dist/src/agent/workflow/builtins/implementation-plan.d.ts +12 -0
  126. package/dist/src/agent/workflow/builtins/implementation-plan.js +175 -0
  127. package/dist/src/agent/workflow/builtins/implementation-plan.js.map +1 -0
  128. package/dist/src/agent/workflow/builtins/index.d.ts +3 -1
  129. package/dist/src/agent/workflow/builtins/index.js +11 -1
  130. package/dist/src/agent/workflow/builtins/index.js.map +1 -1
  131. package/dist/src/agent/workflow/builtins/multi-perspective-review.d.ts +1 -1
  132. package/dist/src/agent/workflow/builtins/multi-perspective-review.js +14 -0
  133. package/dist/src/agent/workflow/builtins/multi-perspective-review.js.map +1 -1
  134. package/dist/src/agent/workflow/builtins/pr-review.d.ts +1 -1
  135. package/dist/src/agent/workflow/builtins/pr-review.js +14 -0
  136. package/dist/src/agent/workflow/builtins/pr-review.js.map +1 -1
  137. package/dist/src/agent/workflow/builtins/release-check.d.ts +11 -0
  138. package/dist/src/agent/workflow/builtins/release-check.js +165 -0
  139. package/dist/src/agent/workflow/builtins/release-check.js.map +1 -0
  140. package/dist/src/agent/workflow/builtins/research.d.ts +1 -1
  141. package/dist/src/agent/workflow/builtins/research.js +14 -0
  142. package/dist/src/agent/workflow/builtins/research.js.map +1 -1
  143. package/dist/src/agent/workflow/catalog.js +1 -1
  144. package/dist/src/agent/workflow/index.d.ts +2 -1
  145. package/dist/src/agent/workflow/index.js +3 -2
  146. package/dist/src/agent/workflow/meta-locale.d.ts +12 -0
  147. package/dist/src/agent/workflow/meta-locale.js +62 -0
  148. package/dist/src/agent/workflow/meta-locale.js.map +1 -0
  149. package/dist/src/agent/workflow/parser.js +3 -0
  150. package/dist/src/agent/workflow/parser.js.map +1 -1
  151. package/dist/src/agent/workflow/runtime.d.ts +2 -2
  152. package/dist/src/agent/workflow/runtime.js +21 -14
  153. package/dist/src/agent/workflow/runtime.js.map +1 -1
  154. package/dist/src/agent/workflow/snapshot.js +2 -12
  155. package/dist/src/agent/workflow/snapshot.js.map +1 -1
  156. package/dist/src/agent/workflow/step-labels.d.ts +8 -0
  157. package/dist/src/agent/workflow/step-labels.js +48 -0
  158. package/dist/src/agent/workflow/step-labels.js.map +1 -0
  159. package/dist/src/agent/workflow/subagent-runner.js +46 -1
  160. package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
  161. package/dist/src/agent/workflow/types.d.ts +74 -1
  162. package/dist/src/auth/credentials.d.ts +5 -0
  163. package/dist/src/auth/credentials.js +12 -3
  164. package/dist/src/auth/credentials.js.map +1 -1
  165. package/dist/src/auth/profiles/store.js +1 -1
  166. package/dist/src/auth/sync-provider-auth.js +1 -1
  167. package/dist/src/browser/cache-dir-policy.js +1 -1
  168. package/dist/src/browser/cdp-local-launcher.js +2 -2
  169. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  170. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  171. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  172. package/dist/src/browser/stealth.js +1 -1
  173. package/dist/src/channels/attachments/inbound-persist.js +1 -1
  174. package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
  175. package/dist/src/channels/outbound/persist-store.js +1 -1
  176. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  177. package/dist/src/channels/pairing/pairing-store.js +2 -2
  178. package/dist/src/chat-commands/builtins/config.js +2 -2
  179. package/dist/src/chat-commands/context.js +1 -1
  180. package/dist/src/cli/commands/config.js +1 -1
  181. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  182. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  183. package/dist/src/cli/commands/doctor/checks/session-integrity.js +1 -1
  184. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  185. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  186. package/dist/src/cli/commands/extension-dev.js +1 -1
  187. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  188. package/dist/src/cli/commands/extension-pack.js +1 -1
  189. package/dist/src/cli/commands/gateway/logs.js +1 -1
  190. package/dist/src/cli/commands/image.js +1 -1
  191. package/dist/src/cli/commands/init.js +4 -4
  192. package/dist/src/cli/commands/onboard.js +1 -1
  193. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  194. package/dist/src/config/agent-profile.js +1 -1
  195. package/dist/src/config/agent-typed-models.d.ts +18 -0
  196. package/dist/src/config/agent-typed-models.js +53 -0
  197. package/dist/src/config/agent-typed-models.js.map +1 -0
  198. package/dist/src/config/gateway-bind.js +1 -1
  199. package/dist/src/config/index.js +6 -6
  200. package/dist/src/config/loader.js +2 -2
  201. package/dist/src/config/models-json.js +2 -2
  202. package/dist/src/config/paths-state.js +1 -1
  203. package/dist/src/config/profile.js +2 -2
  204. package/dist/src/config/schema.d.ts +52 -0
  205. package/dist/src/config/schema.js +39 -3
  206. package/dist/src/config/schema.js.map +1 -1
  207. package/dist/src/config/voice.d.ts +3 -28
  208. package/dist/src/config/voice.js +27 -261
  209. package/dist/src/config/voice.js.map +1 -1
  210. package/dist/src/config/workspace-path.js +1 -1
  211. package/dist/src/cron/executor.js +2 -2
  212. package/dist/src/cron/persistence.js +1 -1
  213. package/dist/src/cron/run-log-store.js +1 -1
  214. package/dist/src/daemon/constants.js +1 -1
  215. package/dist/src/daemon/install-plan.js +2 -2
  216. package/dist/src/daemon/launchd.js +2 -2
  217. package/dist/src/daemon/schtasks.js +2 -2
  218. package/dist/src/daemon/systemd.js +2 -2
  219. package/dist/src/extensions/bundle-mcp.js +1 -1
  220. package/dist/src/extensions/discover-extensions.js +1 -1
  221. package/dist/src/extensions/health.js +1 -1
  222. package/dist/src/extensions/loader.js +1 -1
  223. package/dist/src/extensions/lockfile.js +2 -2
  224. package/dist/src/gateway/agents-admin.d.ts +9 -0
  225. package/dist/src/gateway/agents-admin.js +18 -2
  226. package/dist/src/gateway/agents-admin.js.map +1 -1
  227. package/dist/src/gateway/config-tools-web.js +3 -2
  228. package/dist/src/gateway/config-tools-web.js.map +1 -1
  229. package/dist/src/gateway/file-path-classifier.js +2 -2
  230. package/dist/src/gateway/hono/lib/agent-model.d.ts +7 -0
  231. package/dist/src/gateway/hono/lib/agent-model.js +36 -1
  232. package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
  233. package/dist/src/gateway/hono/lib/config-payload.js +28 -5
  234. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  235. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  236. package/dist/src/gateway/hono/lib/mask-secret-length.d.ts +6 -0
  237. package/dist/src/gateway/hono/lib/mask-secret-length.js +16 -0
  238. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +1 -0
  239. package/dist/src/gateway/hono/lib/safe-providers-config.d.ts +1 -1
  240. package/dist/src/gateway/hono/lib/safe-providers-config.js +2 -1
  241. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +1 -1
  242. package/dist/src/gateway/hono/lib/safe-voice-config.js +2 -1
  243. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +1 -1
  244. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  245. package/dist/src/gateway/hono/oauth.js +1 -1
  246. package/dist/src/gateway/hono/routes/agents.js +2 -2
  247. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  248. package/dist/src/gateway/hono/routes/config-patch/agents.js +8 -2
  249. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
  250. package/dist/src/gateway/hono/routes/config-patch/gateway.js +3 -2
  251. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +1 -1
  252. package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -3
  253. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
  254. package/dist/src/gateway/hono/routes/config.js +59 -0
  255. package/dist/src/gateway/hono/routes/config.js.map +1 -1
  256. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  257. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  258. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  259. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  260. package/dist/src/gateway/hono/routes/models.js +75 -12
  261. package/dist/src/gateway/hono/routes/models.js.map +1 -1
  262. package/dist/src/gateway/hono/routes/shares.js +1 -1
  263. package/dist/src/gateway/hono/routes/voice.js +75 -0
  264. package/dist/src/gateway/hono/routes/voice.js.map +1 -1
  265. package/dist/src/gateway/hono/routes/workflows.d.ts +3 -0
  266. package/dist/src/gateway/hono/routes/workflows.js +347 -0
  267. package/dist/src/gateway/hono/routes/workflows.js.map +1 -0
  268. package/dist/src/gateway/hono/routes/workspace.js +4 -4
  269. package/dist/src/gateway/lock.js +3 -3
  270. package/dist/src/gateway/ports.js +1 -1
  271. package/dist/src/gateway/service/agent-runner.js +2 -2
  272. package/dist/src/gateway/service/marketplace-service.js +2 -2
  273. package/dist/src/gateway/service/run-gateway-agent.js +2 -20
  274. package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
  275. package/dist/src/gateway/service.d.ts +3 -0
  276. package/dist/src/gateway/service.js +7 -1
  277. package/dist/src/gateway/service.js.map +1 -1
  278. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  279. package/dist/src/infra/restart.js +2 -2
  280. package/dist/src/infra/update-check.js +1 -1
  281. package/dist/src/infra/update-global.js +1 -1
  282. package/dist/src/infra/update-lock.js +3 -3
  283. package/dist/src/infra/update-runner.js +1 -1
  284. package/dist/src/infra/update-startup.js +2 -2
  285. package/dist/src/infra/write-file-atomic.js +2 -2
  286. package/dist/src/mcp/channel-bridge.js +1 -1
  287. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  288. package/dist/src/providers/index.js +2 -2
  289. package/dist/src/providers/model-registry.js +1 -1
  290. package/dist/src/session/config-store.js +2 -2
  291. package/dist/src/session/init-session-turn.js +2 -2
  292. package/dist/src/session/parity/jsonl-transcript-io.js +2 -2
  293. package/dist/src/session/parity/sessions-json-file.js +1 -1
  294. package/dist/src/session/parity/transcript-file-lock.js +2 -2
  295. package/dist/src/session/parity/transcript-paths.js +1 -1
  296. package/dist/src/session/resolve-session.js +4 -4
  297. package/dist/src/session/search-index-cache.js +1 -1
  298. package/dist/src/session/search-index.js +1 -1
  299. package/dist/src/session/session-title.js +2 -2
  300. package/dist/src/session/store.js +5 -5
  301. package/dist/src/share/share-auto.js +2 -2
  302. package/dist/src/share/share-store.js +3 -3
  303. package/dist/src/share/share-thumbnail.js +2 -2
  304. package/dist/src/share/share-zip.js +1 -1
  305. package/dist/src/share/site-share-store.js +3 -3
  306. package/dist/src/share/site-static-serve.js +1 -1
  307. package/dist/src/tui/clipboard-image.js +3 -3
  308. package/dist/src/tui/theme-manager.js +1 -1
  309. package/dist/src/tui/tui-agent-events.js +2 -1
  310. package/dist/src/tui/tui-agent-events.js.map +1 -1
  311. package/dist/src/tui/tui-keybindings-file.js +1 -1
  312. package/dist/src/tui/tui-scoped-models.js +2 -2
  313. package/dist/src/tui/tui-settings.js +1 -1
  314. package/dist/src/tui/tui.js +3 -3
  315. package/dist/src/tunnel/frpc-binary.js +3 -3
  316. package/dist/src/tunnel/frpc-config.js +1 -1
  317. package/dist/src/tunnel/frpc-extract.js +1 -1
  318. package/dist/src/tunnel/tunnel-state.js +1 -1
  319. package/dist/src/utils/logger/audit.js +1 -1
  320. package/dist/src/utils/logger/log-store.js +1 -1
  321. package/dist/src/utils/logger/rotation.js +1 -1
  322. package/dist/src/voice/metadata/builtin.d.ts +2 -0
  323. package/dist/src/voice/metadata/builtin.js +420 -0
  324. package/dist/src/voice/metadata/builtin.js.map +1 -0
  325. package/dist/src/voice/metadata/index.d.ts +4 -0
  326. package/dist/src/voice/metadata/index.js +3 -0
  327. package/dist/src/voice/metadata/registry.d.ts +5 -0
  328. package/dist/src/voice/metadata/registry.js +34 -0
  329. package/dist/src/voice/metadata/registry.js.map +1 -0
  330. package/dist/src/voice/metadata/types.d.ts +41 -0
  331. package/dist/src/voice/metadata/types.js +1 -0
  332. package/dist/src/voice/stt/list-providers.d.ts +3 -3
  333. package/dist/src/voice/stt/list-providers.js +41 -6
  334. package/dist/src/voice/stt/list-providers.js.map +1 -1
  335. package/dist/src/voice/tts/audio.js +1 -1
  336. package/dist/src/voice/tts/list-providers.d.ts +3 -3
  337. package/dist/src/voice/tts/list-providers.js +41 -6
  338. package/dist/src/voice/tts/list-providers.js.map +1 -1
  339. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  340. package/dist/src/workflows/domain/command.d.ts +18 -0
  341. package/dist/src/workflows/domain/command.js +1 -0
  342. package/dist/src/workflows/domain/definition.d.ts +62 -0
  343. package/dist/src/workflows/domain/definition.js +1 -0
  344. package/dist/src/workflows/domain/event.d.ts +67 -0
  345. package/dist/src/workflows/domain/event.js +1 -0
  346. package/dist/src/workflows/domain/index.d.ts +5 -0
  347. package/dist/src/workflows/domain/index.js +2 -0
  348. package/dist/src/workflows/domain/result.d.ts +65 -0
  349. package/dist/src/workflows/domain/result.js +1 -0
  350. package/dist/src/workflows/domain/run.d.ts +120 -0
  351. package/dist/src/workflows/domain/run.js +14 -0
  352. package/dist/src/workflows/domain/run.js.map +1 -0
  353. package/dist/src/workflows/engine/index.d.ts +2 -0
  354. package/dist/src/workflows/engine/index.js +3 -0
  355. package/dist/src/workflows/engine/projector.d.ts +3 -0
  356. package/dist/src/workflows/engine/projector.js +205 -0
  357. package/dist/src/workflows/engine/projector.js.map +1 -0
  358. package/dist/src/workflows/engine/workflow-engine.d.ts +31 -0
  359. package/dist/src/workflows/engine/workflow-engine.js +188 -0
  360. package/dist/src/workflows/engine/workflow-engine.js.map +1 -0
  361. package/dist/src/workflows/index.d.ts +6 -0
  362. package/dist/src/workflows/index.js +11 -0
  363. package/dist/src/workflows/runtime/index.d.ts +1 -0
  364. package/dist/src/workflows/runtime/index.js +4 -0
  365. package/dist/src/workflows/runtime/script-runtime.d.ts +3 -0
  366. package/dist/src/workflows/runtime/script-runtime.js +3 -0
  367. package/dist/src/workflows/store/event-store.d.ts +17 -0
  368. package/dist/src/workflows/store/event-store.js +83 -0
  369. package/dist/src/workflows/store/event-store.js.map +1 -0
  370. package/dist/src/workflows/store/paths.d.ts +7 -0
  371. package/dist/src/workflows/store/paths.js +26 -0
  372. package/dist/src/workflows/store/paths.js.map +1 -0
  373. package/dist/src/workflows/store/run-store.d.ts +13 -0
  374. package/dist/src/workflows/store/run-store.js +68 -0
  375. package/dist/src/workflows/store/run-store.js.map +1 -0
  376. package/package.json +5 -5
  377. package/dist/gateway/static/root/assets/agents-BEAbXpuP.js +0 -222
  378. package/dist/gateway/static/root/assets/channels-settings-yohw9YSu.js +0 -1
  379. package/dist/gateway/static/root/assets/extension-settings-page-x4BB7q1X.js +0 -1
  380. package/dist/gateway/static/root/assets/index-a5gWIdZQ.css +0 -1
  381. package/dist/gateway/static/root/assets/sessions-page-CD7AfB-2.js +0 -1
  382. package/dist/gateway/static/root/assets/settings-page-BBOjEQW3.js +0 -3
  383. package/dist/gateway/static/root/assets/skills-page-CcN_gj--.js +0 -2
  384. package/dist/gateway/static/root/assets/url-Dd8Q7kZZ.js +0 -3
  385. package/dist/gateway/static/root/assets/voice-api-key-field-O6awz9hi.js +0 -1
@@ -1 +1 @@
1
- import{$n as e,Zn as t,er as n,nr as r}from"./index-Cu7bKuUi.js";function i(){return r(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,n,`dark:border-edge`)}function a(){return r(e,t)}function o(e){return e.split(/[,\n]/).flatMap(e=>{let t=e.trim();return t?[/^-?\d+$/.test(t)?Number(t):t]:[]})}function s(e){return e.map(String).join(`, `)}function c(e){let t=e.accounts?.default?.botToken;return typeof t==`string`?t:``}function l(e){return Object.values(e.accounts??{}).some(e=>typeof e.botToken==`string`&&e.botToken.trim().length>0)}function u(e){return Object.keys(e.accounts??{}).length>0||e.allowFrom.length>0}function d(e){return!!(e.appId?.trim()&&e.appSecret?.trim())||Object.keys(e.accounts??{}).length>0}export{u as a,c,l as i,a as n,s as o,d as r,o as s,i as t};
1
+ import{dr as e,fr as t,lr as n,mr as r}from"./index-qNrVJp-y.js";function i(){return r(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,t,`dark:border-edge`)}function a(){return r(e,n)}function o(e){return e.split(/[,\n]/).flatMap(e=>{let t=e.trim();return t?[/^-?\d+$/.test(t)?Number(t):t]:[]})}function s(e){return e.map(String).join(`, `)}function c(e){let t=e.accounts?.default?.botToken;return typeof t==`string`?t:``}function l(e){return Object.values(e.accounts??{}).some(e=>typeof e.botToken==`string`&&e.botToken.trim().length>0)}function u(e){return Object.keys(e.accounts??{}).length>0||e.allowFrom.length>0}function d(e){return!!(e.appId?.trim()&&e.appSecret?.trim())||Object.keys(e.accounts??{}).length>0}export{u as a,c,l as i,a as n,s as o,d as r,o as s,i as t};
@@ -0,0 +1 @@
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"./url-D6jvVYIA.js";import{o as a}from"./vendor-swr-BIWyz7Rc.js";import{a as o,n as s}from"./fetch-BaFNUtkE.js";import{I as c,Jr as l,L as u,Li as d,O as f,Sn as p,er as m,fr as h,ga as g,hi as _,ia as v,mr as y,pr as b,xn as x}from"./index-qNrVJp-y.js";var S=`/api/image/providers`;async function ee(){return(await s(i(`/api/image/providers`)))?.payload?.providers??[]}var C=e(t(),1),te=n();function w(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function ne(e){return e?.apiKey?`••••••••••••`:``}function T(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:ne(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function E(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function D(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(f(n)&&f(r)))return n||(r?null:void 0)}function O(e,t,n){let r={};for(let i of e){let e=t[i]??w(),a=n[i]??w();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=D(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=E(e,a,`region`);c!==void 0&&(o.region=c);let l=E(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=E(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function k(e){let t=await s(i(`/api/image/providers/${encodeURIComponent(e)}/reveal-api-key`),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok||!t.payload)throw Error(t.error?.message??`Reveal failed`);return t.payload}async function A(e){Object.keys(e).length!==0&&(await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await x())}var j=r();function re(e){let t=(0,te.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>k(n).then(M),t[0]=n,t[1]=c);let l=c,f=`img-cred-key-${n}`,p;t[2]!==a.apiKeyLabel||t[3]!==f?(p=(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:f,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=f,t[4]=p):p=t[4];let h;t[5]!==s||t[6]!==o?(h=o.length>0?(0,j.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,j.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[u(e.kind,s),(0,j.jsx)(d,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=h):h=t[7];let g=`img-cred-key-${n}`,_;t[8]!==a||t[9]!==i||t[10]!==l||t[11]!==g||t[12]!==r?(_=(0,j.jsx)(m,{id:g,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:l,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=l,t[11]=g,t[12]=r,t[13]=_):_=t[13];let v;return t[14]!==p||t[15]!==h||t[16]!==_?(v=(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[p,h,_]}),t[14]=p,t[15]=h,t[16]=_,t[17]=v):v=t[17],v}function M(e){return e.apiKey??null}function N(){return y(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,h)}function ie(){return y(N(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var P=`__custom__`;function ae(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:P}function oe(e,t){let n=e.baseUrl.trim().replace(/\/+$/,``);if(!n)return``;let r=t.map(e=>e.value.replace(/\/+$/,``)).indexOf(n);return r>=0?t[r].value:P}function se(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function ce(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function le(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function ue(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function de(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function fe(e){let t=(0,te.c)(76),{summaries:n,credDraft:r,credBaseline:i,credDirty:a,credSaving:o,credError:s,credSavedFlash:u,credNoopFlash:f,updateCredRow:p,onDiscardCredentials:m,onSaveCredentials:h,extensionIds:x,showExtensionLinks:S,showImageModelsLink:ee,hideActions:ne,language:T,apiKeyLinkLabels:E,messages:D}=e,O=ne===void 0?!1:ne,k;t[0]===n?k=t[1]:(k=n.some(_e),t[0]=n,t[1]=k);let A=k,M;t[2]===n?M=t[3]:(M=n.some(ge),t[2]=n,t[3]=M);let fe=M,[F,ve]=(0,C.useState)(he),[I,L]=(0,C.useState)(me),R;if(t[4]!==i||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)ue(r[e.id]??w(),i[e.id]??w())&&R.add(e.id);t[4]=i,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==I||t[10]!==F?(B=e=>I.has(e)?!1:F.has(e)?!0:z.has(e),t[8]=z,t[9]=I,t[10]=F,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),ve(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),ve(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===D.credentialsIntro?W=t[15]:(W=(0,j.jsx)(`p`,{children:D.credentialsIntro}),t[14]=D.credentialsIntro,t[15]=W);let G;t[16]!==A||t[17]!==D.regionHint?(G=A?(0,j.jsx)(`p`,{className:`text-fg-subtle`,children:D.regionHint}):null,t[16]=A,t[17]=D.regionHint,t[18]=G):G=t[18];let K;t[19]!==fe||t[20]!==D.endpointPresetsHint?(K=fe?(0,j.jsx)(`p`,{className:`text-fg-subtle`,children:D.endpointPresetsHint}):null,t[19]=fe,t[20]=D.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==ee||t[23]!==D.imageModelsLinkTitle||t[24]!==D.openImageModelsPage?(q=ee?(0,j.jsx)(`p`,{children:(0,j.jsx)(g,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:D.imageModelsLinkTitle,children:D.openImageModelsPage})}):null,t[22]=ee,t[23]=D.imageModelsLinkTitle,t[24]=D.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,j.jsxs)(`div`,{className:`flex flex-col gap-1 text-xs leading-relaxed text-fg-muted`,children:[W,G,K,q]}),t[26]=W,t[27]=G,t[28]=K,t[29]=q,t[30]=J):J=t[30];let Y;t[31]===s?Y=t[32]:(Y=s?(0,j.jsx)(`div`,{className:`rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:s}):null,t[31]=s,t[32]=Y);let X;t[33]!==a||t[34]!==f||t[35]!==u||t[36]!==o||t[37]!==O||t[38]!==m||t[39]!==h||t[40]!==D.credentialsNothingToSave||t[41]!==D.credentialsSaved||t[42]!==D.discardCredentials||t[43]!==D.saveCredentials||t[44]!==D.savingCredentials?(X=O?null:(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[u?(0,j.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsSaved}):null,f?(0,j.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsNothingToSave}):null,(0,j.jsx)(b,{type:`button`,variant:`secondary`,onClick:m,disabled:!a||o,children:D.discardCredentials}),(0,j.jsx)(b,{type:`button`,variant:`primary`,onClick:h,disabled:!a||o,children:o?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(_,{className:`size-3.5 animate-spin`}),(0,j.jsx)(`span`,{className:`ml-1.5`,children:D.savingCredentials})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(l,{className:`size-3.5`}),(0,j.jsx)(`span`,{className:`ml-1.5`,children:D.saveCredentials})]})})]}),t[33]=a,t[34]=f,t[35]=u,t[36]=o,t[37]=O,t[38]=m,t[39]=h,t[40]=D.credentialsNothingToSave,t[41]=D.credentialsSaved,t[42]=D.discardCredentials,t[43]=D.saveCredentials,t[44]=D.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==E||t[47]!==i||t[48]!==r||t[49]!==x||t[50]!==V||t[51]!==T||t[52]!==S||t[53]!==n||t[54]!==D||t[55]!==U||t[56]!==p){let e;t[58]!==E||t[59]!==i||t[60]!==r||t[61]!==x||t[62]!==V||t[63]!==T||t[64]!==S||t[65]!==D||t[66]!==U||t[67]!==p?(e=e=>{let t=r[e.id]??w(),n=e.ui,a=S&&x.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,o=ue(t,i[e.id]??w()),s=V(e.id),l=e.label??e.id,u=de(D,e.models.length);return(0,j.jsxs)(`section`,{className:y(`overflow-hidden rounded-xl border bg-surface-panel shadow-sm transition-colors dark:shadow-none`,o?`border-accent/50`:`border-edge`),children:[(0,j.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-3 px-4 py-3 text-left hover:bg-surface-hover/70`,"aria-expanded":s,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,j.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:l}),(0,j.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),o?(0,j.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.unsavedChanges}):null,e.configured?(0,j.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.configured}):(0,j.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:D.missingKey})]}),(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,j.jsx)(`span`,{children:u}),e.defaultModel?(0,j.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,j.jsxs)(`span`,{className:`text-fg-muted`,children:[D.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,j.jsx)(v,{className:y(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,s?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,j.jsx)(`span`,{className:`sr-only`,children:s?D.collapseProvider:D.expandProvider})]}),s?(0,j.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`border-t border-edge px-4 py-4`,children:[a?(0,j.jsxs)(g,{to:a,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:D.extensionSettingsLinkTitle,children:[(0,j.jsx)(d,{className:`size-3`}),D.openExtensionSettings]}):null,e.models.length>0?(0,j.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,j.jsxs)(`span`,{className:`text-fg-muted`,children:[D.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,j.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,j.jsx)(re,{providerId:e.id,value:t.apiKey,onChange:t=>p(e.id,{apiKey:t}),apiKeyLinks:c(e.id,T),apiKeyLinkLabels:E,labels:{apiKeyLabel:D.apiKeyLabel,optionalPlaceholder:D.optionalPlaceholder,maskedHelp:D.apiKeyMaskedHelp,copy:D.apiKeyCopy,copied:D.apiKeyCopied,show:D.apiKeyShow,hide:D.apiKeyHide,notInConfigFile:D.apiKeyNotInConfigFile,loadFailed:D.apiKeyRevealFailed}}),n?.regions?.length?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:D.regionLabel}),(0,j.jsxs)(`select`,{id:`img-cred-region-preset-${e.id}`,className:ie(),value:ae(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){p(e.id,{region:``,imageBaseUrl:``});return}if(r===P){p(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&p(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,j.jsx)(`option`,{value:``,children:D.regionPresetDefault}),n.regions.map(e=>(0,j.jsx)(`option`,{value:e.value,children:se(D,e.value,e.label)},e.value)),(0,j.jsx)(`option`,{value:P,children:D.regionPresetCustom})]}),ae(t,n.regions)===P?(0,j.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,j.jsx)(`input`,{type:`text`,className:N(),value:t.region,placeholder:`region`,onChange:t=>p(e.id,{region:t.target.value})}),(0,j.jsx)(`input`,{type:`url`,className:N(),value:t.imageBaseUrl,placeholder:D.imageBaseUrlLabel,onChange:t=>p(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:ce(D,n.baseUrlPresetKind)}),le(D,n.baseUrlPresetKind)?(0,j.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:le(D,n.baseUrlPresetKind)}):null,(0,j.jsxs)(`select`,{id:`img-cred-base-preset-${e.id}`,className:ie(),value:oe(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){p(e.id,{baseUrl:``});return}if(n===P){p(e.id,{baseUrl:``});return}p(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,j.jsx)(`option`,{value:``,children:D.baseUrlPresetDefault}),n.baseUrlPresets.map(pe),(0,j.jsx)(`option`,{value:P,children:D.baseUrlPresetCustom})]}),oe(t,n.baseUrlPresets)===P?(0,j.jsx)(`input`,{type:`url`,className:y(N(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>p(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ae(t,n.regions)!==P?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:D.imageBaseUrlLabel}),(0,j.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:y(N(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:D.imageBaseUrlPresetHint}),(0,j.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:D.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=E,t[59]=i,t[60]=r,t[61]=x,t[62]=V,t[63]=T,t[64]=S,t[65]=D,t[66]=U,t[67]=p,t[68]=e):e=t[68],Z=n.map(e),t[46]=E,t[47]=i,t[48]=r,t[49]=x,t[50]=V,t[51]=T,t[52]=S,t[53]=n,t[54]=D,t[55]=U,t[56]=p,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,j.jsx)(`div`,{className:`flex flex-col gap-4`,children:Z}),t[69]=Z,t[70]=Q);let $;return t[71]!==J||t[72]!==Y||t[73]!==X||t[74]!==Q?($=(0,j.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[J,Y,X,Q]}),t[71]=J,t[72]=Y,t[73]=X,t[74]=Q,t[75]=$):$=t[75],$}function pe(e){return(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value)}function me(){return new Set}function he(){return new Set}function ge(e){return(e.ui?.baseUrlPresets?.length??0)>0}function _e(e){return(e.ui?.regions?.length??0)>0}function F(e){let t=p(o(e=>!!e.token)),n=t.data,r=(0,C.useMemo)(()=>e.map(e=>e.id),[e]),s=(0,C.useRef)(!1),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(!1),[f,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(!1),[_,v]=(0,C.useState)(!1),y=(0,C.useMemo)(()=>T(n?.payload?.config,r),[n?.payload?.config,r]),b=c??y,x=y;return{gwSwr:t,credDraft:b,credBaseline:x,credDirty:(0,C.useMemo)(()=>JSON.stringify(b)!==JSON.stringify(x),[b,x]),credSaving:u,credError:f,credSavedFlash:h,credNoopFlash:_,updateCredRow:(0,C.useCallback)((e,t)=>{s.current=!0,l(n=>{let r=n??y,i=r[e]??w();return{...r,[e]:{...i,...t}}})},[y]),onDiscardCredentials:(0,C.useCallback)(()=>{s.current=!1,l(null),m(null),g(!1),v(!1)},[]),saveCredentials:(0,C.useCallback)(async e=>{let n=O(r,b,x);if(Object.keys(n).length===0){v(!0),window.setTimeout(()=>v(!1),2200);return}d(!0),m(null),g(!1);try{await A(n),await t.mutate?.(),a(i(S)),s.current=!1,l(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){m(t instanceof Error?t.message:e)}finally{d(!1)}},[r,b,x,t])}}function ve(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function I(){return{enabled:!1,provider:`openai`,trigger:`always`,maxTextLength:512,timeoutMs:6e4,alibaba:{model:`qwen-tts`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`en-US-MichelleNeural`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`},"tts-local-cli":{command:``,outputFormat:`wav`}}}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return typeof e==`string`&&e.trim().length>0?e.trim():`alibaba`}function z(e,t,n){let r=L(e.providers)?e.providers:void 0,i=r&&L(r[t])?r[t]:void 0;return{...n,...i??{}}}function B(e){let t=ve();if(!L(e))return t;let n=R(e.provider),r=z(e,`alibaba`,t.alibaba??{}),i=z(e,`openai`,t.openai??{}),a=t.fallback??{enabled:!0,order:[`alibaba`,`openai`]};if(L(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):a.order;a={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:a.enabled,order:t.length?t:a.order}}let o=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,alibaba:r,openai:i,...o?{providers:o}:{},fallback:a}}function V(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function H(e){let t=I();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await s(i(`/api/config`))).payload?.config??{})}async function q(e){await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),x()}async function J(){let e=await s(i(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await s(i(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await s(i(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await s(i(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function Q(e){let t=(0,te.c)(15),{kind:n,providerId:r,fieldId:i,value:a,onChange:o,labels:s,placeholder:c,className:l}=e,u=c===void 0?`sk-...`:c,d;t[0]!==n||t[1]!==r?(d=()=>Z({kind:n,provider:r}).then($),t[0]=n,t[1]=r,t[2]=d):d=t[2];let f=d,p;t[3]===l?p=t[4]:(p=y(`flex min-w-0 flex-col gap-1.5`,l),t[3]=l,t[4]=p);let h;t[5]!==i||t[6]!==s||t[7]!==o||t[8]!==u||t[9]!==f||t[10]!==a?(h=(0,j.jsx)(m,{id:i,value:a,onChange:o,placeholder:u,labels:s,reveal:f,loadFailedLabel:s.loadFailed,maskedHelp:s.maskedHelp,notInConfigFile:s.notInConfigFile,inputClassName:`text-xs`}),t[5]=i,t[6]=s,t[7]=o,t[8]=u,t[9]=f,t[10]=a,t[11]=h):h=t[11];let g;return t[12]!==p||t[13]!==h?(g=(0,j.jsx)(`div`,{className:p,children:h}),t[12]=p,t[13]=h,t[14]=g):g=t[14],g}function $(e){return e.apiKey??null}export{X as a,F as c,S as d,K as i,fe as l,J as n,G as o,Y as r,q as s,Q as t,ee as u};
@@ -0,0 +1,27 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a,t as o}from"./url-D6jvVYIA.js";import{i as s}from"./vendor-swr-BIWyz7Rc.js";import{t as c}from"./copy-SxMW6Xpc.js";import{a as l,i as u,n as d,o as f,r as p,s as m}from"./dist-BTWC-BTN.js";import{a as h,n as g}from"./fetch-BaFNUtkE.js";import{Fi as _,Tr as v,Un as y,Wr as b,Xr as x,Zi as S,Zr as C,a as w,aa as T,ar as E,ei as D,fi as O,i as k,ia as A,ki as j,mr as M,n as N,ni as P,o as F,pr as I,r as L,rt as R,s as z,tr as B,xa as ee,ya as V,zi as H}from"./index-qNrVJp-y.js";var U=e(t(),1),W=n();function G(e){return e===`zh`?`zh`:`en`}function te(e,t){let n=G(t),r=n===`en`?void 0:e.metadata.i18n?.[n],i=r?.examplePrompts&&r.examplePrompts.length>0?r.examplePrompts:e.metadata.examplePrompts??[];return{description:q(r?.description,e.description),whenToUse:ne(r?.whenToUse,e.metadata.whenToUse),examplePrompts:i}}function K(e){return[e.name,e.title,e.description,e.metadata.whenToUse??``,...(e.metadata.examplePrompts??[]).map(e=>e.text),...Object.values(e.metadata.i18n??{}).flatMap(e=>[e.description??``,e.whenToUse??``,...(e.examplePrompts??[]).map(e=>e.text)]),...e.metadata.tags].join(` `).toLowerCase()}function q(e,t){return e?.trim()||t}function ne(e,t){return e?.trim()||t?.trim()||void 0}function J(e,t,n){if(e.field===`goal`){t(e.text);return}n(t=>({...t,[e.field]:e.text}))}var re=new Set([`catalog`,`active`,`history`]),ie=[`all`,`code-review`,`planning`,`research`];new Set(ie);var ae=[`all`,`builtin`,`user`];new Set(ae);var oe=`start`,se={"code-review":[`code-review`,`pr`,`release`],planning:[`planning`,`implementation`,`architecture`,`decision`,`review`],research:[`research`,`investigation`,`debug`,`incident`,`troubleshooting`]},ce={research:[{key:`question`,labelKey:`argQuestion`,placeholderKey:`argQuestionPlaceholder`,required:!0,multiline:!0}],multi_perspective_review:[{key:`target`,labelKey:`argTarget`,placeholderKey:`argTargetPlaceholder`,multiline:!0}],pr_review:[{key:`target`,labelKey:`argDiff`,placeholderKey:`argDiffPlaceholder`,multiline:!0}],debug_incident:[{key:`error`,labelKey:`argError`,placeholderKey:`argErrorPlaceholder`,required:!0,multiline:!0},{key:`context`,labelKey:`argContext`,placeholderKey:`argContextPlaceholder`,multiline:!0}],implementation_plan:[{key:`request`,labelKey:`argRequest`,placeholderKey:`argRequestPlaceholder`,required:!0,multiline:!0},{key:`scope`,labelKey:`argScope`,placeholderKey:`argScopePlaceholder`}],release_check:[{key:`target`,labelKey:`argTarget`,placeholderKey:`argReleaseTargetPlaceholder`,multiline:!0}]},le=new Set([`queued`,`running`]),Y=new Set([`succeeded`,`failed`,`cancelled`,`timeout`]);function ue(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function de(e,t){return e?new Intl.DateTimeFormat(t,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(new Date(e)):`—`}function fe(e){if(!e||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;if(n<60)return r?`${n}m ${r}s`:`${n}m`;let i=Math.floor(n/60),a=n%60;return a?`${i}h ${a}m`:`${i}h`}function pe(e){return e===`succeeded`?`bg-emerald-500/15 text-emerald-700 dark:text-emerald-300`:e===`failed`||e===`timeout`?`bg-red-500/15 text-red-700 dark:text-red-300`:e===`cancelled`?`bg-amber-500/15 text-amber-700 dark:text-amber-300`:`bg-accent-soft text-accent-fg`}function X(e,t){if(t===`all`)return!0;let n=e.metadata.tags.map(e=>e.toLowerCase());return se[t].some(e=>n.includes(e))}function me(e,t){return t===`all`?!0:t===`builtin`?e.metadata.builtIn:e.metadata.source===`user`}function Z(e,t,n,r){let i=t.trim().toLowerCase();return e.filter(e=>!X(e,n)||!me(e,r)?!1:i?K(e).includes(i):!0)}function he(e,t){return t===`active`?e.filter(e=>le.has(e.status)):e.filter(e=>Y.has(e.status))}function ge(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function _e(e){if(e==null)return e;if(typeof e==`object`&&e&&`raw`in e){let t=e.raw;return t===void 0?e:t}return e}function ve(e){let t={};for(let[n,r]of Object.entries(e)){let e=r.trim();e&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}var Q=r();function ye(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?ue(t.agentScaleExact,{count:n.min}):ue(t.agentScaleRange,{min:n.min,max:n.max}):null}function be(e){let t=(0,W.c)(57),{definition:n,language:r,onRun:i,onDetail:o,onDelete:s}=e,c,l,u;t[0]!==n||t[1]!==r?(c=a(r).workflows,l=te(n,r),u=ye(n,c),t[0]=n,t[1]=r,t[2]=c,t[3]=l,t[4]=u):(c=t[2],l=t[3],u=t[4]);let d=u,f=n.metadata.source===`user`,p;t[5]===n.title?p=t[6]:(p=(0,Q.jsx)(`h3`,{className:`truncate text-sm font-semibold text-fg`,children:n.title}),t[5]=n.title,t[6]=p);let m;t[7]===n.name?m=t[8]:(m=(0,Q.jsx)(`p`,{className:`mt-0.5 font-mono text-[11px] text-fg-subtle`,children:n.name}),t[7]=n.name,t[8]=m);let h;t[9]!==p||t[10]!==m?(h=(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[p,m]}),t[9]=p,t[10]=m,t[11]=h):h=t[11];let g=f?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`,y;t[12]===g?y=t[13]:(y=M(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium`,g),t[12]=g,t[13]=y);let b=f?c.badgeUser:c.badgeBuiltin,x;t[14]!==y||t[15]!==b?(x=(0,Q.jsx)(`span`,{className:y,children:b}),t[14]=y,t[15]=b,t[16]=x):x=t[16];let S;t[17]!==h||t[18]!==x?(S=(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[h,x]}),t[17]=h,t[18]=x,t[19]=S):S=t[19];let C;t[20]===l.description?C=t[21]:(C=(0,Q.jsx)(`p`,{className:`mt-3 line-clamp-2 text-xs leading-5 text-fg-muted`,children:l.description}),t[20]=l.description,t[21]=C);let w;t[22]===l.whenToUse?w=t[23]:(w=l.whenToUse?(0,Q.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-5 text-fg-subtle`,children:l.whenToUse}):null,t[22]=l.whenToUse,t[23]=w);let T;t[24]===n.phases?T=t[25]:(T=n.phases.length>0?(0,Q.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-1`,children:n.phases.slice(0,4).map(Se)}):null,t[24]=n.phases,t[25]=T);let E;t[26]===d?E=t[27]:(E=d?(0,Q.jsx)(`span`,{className:`rounded-md bg-surface-hover px-1.5 py-0.5 text-[10px] text-fg-muted`,children:d}):null,t[26]=d,t[27]=E);let D;t[28]===n.metadata.tags?D=t[29]:(D=n.metadata.tags.slice(0,3).map(xe),t[28]=n.metadata.tags,t[29]=D);let O;t[30]!==E||t[31]!==D?(O=(0,Q.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-1.5`,children:[E,D]}),t[30]=E,t[31]=D,t[32]=O):O=t[32];let k;t[33]!==C||t[34]!==w||t[35]!==T||t[36]!==O||t[37]!==S?(k=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[S,C,w,T,O]}),t[33]=C,t[34]=w,t[35]=T,t[36]=O,t[37]=S,t[38]=k):k=t[38];let A;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,Q.jsx)(P,{className:`size-4`,"aria-hidden":!0}),t[39]=A):A=t[39];let j;t[40]!==c.runWorkflow||t[41]!==i?(j=(0,Q.jsxs)(I,{variant:`primary`,className:`flex-1`,onClick:i,children:[A,c.runWorkflow]}),t[40]=c.runWorkflow,t[41]=i,t[42]=j):j=t[42];let N;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,Q.jsx)(_,{className:`size-4`,"aria-hidden":!0}),t[43]=N):N=t[43];let F;t[44]!==c.viewDetails||t[45]!==o?(F=(0,Q.jsxs)(I,{variant:`secondary`,onClick:o,children:[N,c.viewDetails]}),t[44]=c.viewDetails,t[45]=o,t[46]=F):F=t[46];let L;t[47]!==c.deleteWorkflow||t[48]!==s?(L=s?(0,Q.jsxs)(I,{variant:`secondary`,onClick:s,className:`text-red-600 dark:text-red-300`,children:[(0,Q.jsx)(v,{className:`size-4`,"aria-hidden":!0}),c.deleteWorkflow]}):null,t[47]=c.deleteWorkflow,t[48]=s,t[49]=L):L=t[49];let R;t[50]!==j||t[51]!==F||t[52]!==L?(R=(0,Q.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[j,F,L]}),t[50]=j,t[51]=F,t[52]=L,t[53]=R):R=t[53];let z;return t[54]!==k||t[55]!==R?(z=(0,Q.jsxs)(`article`,{className:`flex h-full flex-col rounded-2xl border border-edge bg-surface-panel p-4`,children:[k,R]}),t[54]=k,t[55]=R,t[56]=z):z=t[56],z}function xe(e){return(0,Q.jsx)(`span`,{className:`rounded-md bg-surface-hover px-1.5 py-0.5 text-[10px] text-fg-muted`,children:e},e)}function Se(e){return(0,Q.jsx)(`span`,{className:`rounded-md bg-surface-hover px-1.5 py-0.5 text-[10px] text-fg-muted`,children:e.title},e.id)}function $(e){let t=(0,W.c)(45),{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 h=c.workflows;if(!r)return null;let g;t[2]!==r||t[3]!==i?(g=te(r,i),t[2]=r,t[3]=i,t[4]=g):g=t[4];let _=g,v=r.runtime?.source??``,y;t[5]===o?y=t[6]:(y=e=>!e&&o(),t[5]=o,t[6]=y);let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,Q.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=b):b=t[7];let x;t[8]===r.title?x=t[9]:(x=(0,Q.jsx)(m,{className:`text-base font-semibold text-fg`,children:r.title}),t[8]=r.title,t[9]=x);let S;t[10]===_.description?S=t[11]:(S=(0,Q.jsx)(p,{className:`mt-1 text-sm text-fg-muted`,children:_.description}),t[10]=_.description,t[11]=S);let C;t[12]!==x||t[13]!==S?(C=(0,Q.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[x,S]}),t[12]=x,t[13]=S,t[14]=C):C=t[14];let w;t[15]!==h.whenToUseHeading||t[16]!==_.whenToUse?(w=_.whenToUse?(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:h.whenToUseHeading}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:_.whenToUse})]}):null,t[15]=h.whenToUseHeading,t[16]=_.whenToUse,t[17]=w):w=t[17];let T;t[18]!==r.phases||t[19]!==h.phasesHeading?(T=r.phases.length>0?(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:h.phasesHeading}),(0,Q.jsx)(`ol`,{className:`mt-2 space-y-2`,children:r.phases.map(Ce)})]}):null,t[18]=r.phases,t[19]=h.phasesHeading,t[20]=T):T=t[20];let E;t[21]!==h.scriptHeading||t[22]!==v?(E=v?(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:h.scriptHeading}),(0,Q.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:v})]}):null,t[21]=h.scriptHeading,t[22]=v,t[23]=E):E=t[23];let D;t[24]!==E||t[25]!==w||t[26]!==T?(D=(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[w,T,E]}),t[24]=E,t[25]=w,t[26]=T,t[27]=D):D=t[27];let O;t[28]!==h.closeResult||t[29]!==o?(O=(0,Q.jsx)(I,{variant:`secondary`,onClick:o,children:h.closeResult}),t[28]=h.closeResult,t[29]=o,t[30]=O):O=t[30];let k;t[31]!==h.runWorkflow||t[32]!==s?(k=(0,Q.jsx)(I,{variant:`primary`,onClick:s,children:h.runWorkflow}),t[31]=h.runWorkflow,t[32]=s,t[33]=k):k=t[33];let A;t[34]!==O||t[35]!==k?(A=(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[O,k]}),t[34]=O,t[35]=k,t[36]=A):A=t[36];let j;t[37]!==D||t[38]!==A||t[39]!==C?(j=(0,Q.jsxs)(l,{children:[b,(0,Q.jsxs)(d,{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:[C,D,A]})]}),t[37]=D,t[38]=A,t[39]=C,t[40]=j):j=t[40];let M;return t[41]!==n||t[42]!==j||t[43]!==y?(M=(0,Q.jsx)(f,{open:n,onOpenChange:y,children:j}),t[41]=n,t[42]=j,t[43]=y,t[44]=M):M=t[44],M}function Ce(e,t){return(0,Q.jsxs)(`li`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[(0,Q.jsxs)(`div`,{className:`text-sm font-medium text-fg`,children:[t+1,`. `,e.title]}),e.description?(0,Q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e.description}):null]},e.id)}function we(e){let t=(0,W.c)(62),{open:n,language:r,saving:i,onClose:o,onSave:s}=e,c;t[0]===r?c=t[1]:(c=a(r),t[0]=r,t[1]=c);let h=c.workflows,[g,_]=(0,U.useState)(``),[v,y]=(0,U.useState)(``),b,x;t[2]===n?(b=t[3],x=t[4]):(b=()=>{n&&(_(``),y(`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
+ i18n: {
9
+ zh: {
10
+ description: '描述此工作流做什么。',
11
+ whenToUse: '当用户需要 … 时使用',
12
+ examplePrompts: [
13
+ { field: 'goal', text: '此工作流的示例目标' },
14
+ ],
15
+ },
16
+ },
17
+ tags: ['custom'],
18
+ estimatedAgents: { min: 2, max: 4 },
19
+ phases: [{ title: 'Step 1' }, { title: 'Synthesize' }],
20
+ }
21
+
22
+ phase('Step 1')
23
+ const first = await agent('Do the first step.', { label: 'step 1' })
24
+
25
+ phase('Synthesize')
26
+ return await agent('Summarize:\\n\\n' + first, { label: 'synthesis' })
27
+ `))},x=[n],t[2]=n,t[3]=b,t[4]=x),(0,U.useEffect)(b,x);let S;t[5]===o?S=t[6]:(S=e=>!e&&o(),t[5]=o,t[6]=S);let C;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,Q.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=C):C=t[7];let w;t[8]===h.manageDialogTitle?w=t[9]:(w=(0,Q.jsx)(m,{className:`text-base font-semibold text-fg`,children:h.manageDialogTitle}),t[8]=h.manageDialogTitle,t[9]=w);let T;t[10]===h.manageDialogHint?T=t[11]:(T=(0,Q.jsx)(p,{className:`mt-1 text-sm text-fg-muted`,children:h.manageDialogHint}),t[10]=h.manageDialogHint,t[11]=T);let E;t[12]!==w||t[13]!==T?(E=(0,Q.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[w,T]}),t[12]=w,t[13]=T,t[14]=E):E=t[14];let D;t[15]===h.workflowNameLabel?D=t[16]:(D=(0,Q.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:h.workflowNameLabel}),t[15]=h.workflowNameLabel,t[16]=D);let O;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(O=e=>_(e.target.value),t[17]=O):O=t[17];let k;t[18]!==h.workflowNamePlaceholder||t[19]!==g?(k=(0,Q.jsx)(`input`,{value:g,onChange:O,placeholder:h.workflowNamePlaceholder,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm font-mono text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[18]=h.workflowNamePlaceholder,t[19]=g,t[20]=k):k=t[20];let A;t[21]!==k||t[22]!==D?(A=(0,Q.jsxs)(`label`,{className:`block`,children:[D,k]}),t[21]=k,t[22]=D,t[23]=A):A=t[23];let j;t[24]===h.workflowScriptLabel?j=t[25]:(j=(0,Q.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:h.workflowScriptLabel}),t[24]=h.workflowScriptLabel,t[25]=j);let M;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(M=e=>y(e.target.value),t[26]=M):M=t[26];let N;t[27]===v?N=t[28]:(N=(0,Q.jsx)(`textarea`,{value:v,onChange:M,spellCheck:!1,className:`mt-1.5 min-h-72 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`}),t[27]=v,t[28]=N);let P;t[29]!==j||t[30]!==N?(P=(0,Q.jsxs)(`label`,{className:`block`,children:[j,N]}),t[29]=j,t[30]=N,t[31]=P):P=t[31];let F;t[32]!==A||t[33]!==P?(F=(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-3 overflow-auto px-5 py-4`,children:[A,P]}),t[32]=A,t[33]=P,t[34]=F):F=t[34];let L;t[35]!==h.cancelDialog||t[36]!==o||t[37]!==i?(L=(0,Q.jsx)(I,{variant:`secondary`,onClick:o,disabled:i,children:h.cancelDialog}),t[35]=h.cancelDialog,t[36]=o,t[37]=i,t[38]=L):L=t[38];let R;t[39]!==g||t[40]!==i||t[41]!==v?(R=i||!g.trim()||!v.trim(),t[39]=g,t[40]=i,t[41]=v,t[42]=R):R=t[42];let z;t[43]!==g||t[44]!==s||t[45]!==v?(z=()=>s({name:g.trim(),script:v}),t[43]=g,t[44]=s,t[45]=v,t[46]=z):z=t[46];let B=i?h.savingWorkflow:h.saveWorkflow,ee;t[47]!==R||t[48]!==z||t[49]!==B?(ee=(0,Q.jsx)(I,{variant:`primary`,disabled:R,onClick:z,children:B}),t[47]=R,t[48]=z,t[49]=B,t[50]=ee):ee=t[50];let V;t[51]!==L||t[52]!==ee?(V=(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[L,ee]}),t[51]=L,t[52]=ee,t[53]=V):V=t[53];let H;t[54]!==F||t[55]!==V||t[56]!==E?(H=(0,Q.jsxs)(l,{children:[C,(0,Q.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(90vh,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:[E,F,V]})]}),t[54]=F,t[55]=V,t[56]=E,t[57]=H):H=t[57];let G;return t[58]!==n||t[59]!==H||t[60]!==S?(G=(0,Q.jsx)(f,{open:n,onOpenChange:S,children:H}),t[58]=n,t[59]=H,t[60]=S,t[61]=G):G=t[61],G}function Te(e,t){let n=Number.parseInt(e,10);return Number.isFinite(n)?n:t+1}function Ee(e){if(e!=null){if(typeof e==`object`&&e&&`raw`in e){let t=e.raw;return t===void 0?e:t}return e}}function De(e){let t=new Map(e.phases.map(e=>[e.id,e.title])),n=e.phases.find(e=>e.status===`running`),r=e.agents.map((e,n)=>({id:Te(e.id,n),label:e.label,phase:e.phaseId?t.get(e.phaseId):void 0,prompt:e.prompt??``,status:e.status,resultPreview:e.resultPreview,error:e.error,startedAtMs:e.startedAtMs,durationMs:e.startedAtMs!=null&&e.completedAtMs!=null?e.completedAtMs-e.startedAtMs:void 0,currentStep:e.currentStep,steps:e.steps?.map(e=>({id:e.id,kind:e.kind,toolName:e.kind===`tool`?e.label:void 0,label:e.label,detail:e.detail,status:e.status,startedAtMs:e.startedAtMs,durationMs:e.startedAtMs!=null&&e.completedAtMs!=null?e.completedAtMs-e.startedAtMs:void 0}))})),{metrics:i}=e.run;return{name:e.run.definitionId,description:e.run.goal||e.run.title,phases:e.phases.map(e=>e.title),currentPhase:n?.title,logs:e.logs.map(e=>e.message),agents:r,agentCount:i.agentCount,runningCount:Math.max(0,i.agentCount-i.doneAgentCount-i.errorAgentCount-i.skippedAgentCount),doneCount:i.doneAgentCount,errorCount:i.errorAgentCount,skippedCount:i.skippedAgentCount,durationMs:i.durationMs,result:Ee(e.run.result)}}function Oe(e,t){return t.status[e]??e}function ke(e,t){return t.phaseStatus[e]??e}function Ae(e){let t=(0,W.c)(179),{view:n,loading:r,language:i,localeTag:o,onCancel:s,onRetry:l}=e,u;t[0]===i?u=t[1]:(u=a(i),t[0]=i,t[1]=u);let d=u.workflows,f;t[2]===i?f=t[3]:(f=N(i),t[2]=i,t[3]=f);let p=f,m=V(),[h,g]=(0,U.useState)(!0),[_,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(null),[C,E]=(0,U.useState)(!1),[,D]=(0,U.useState)(0),A=n?.run.status,j;t[4]===A?j=t[5]:(j=A?le.has(A):!1,t[4]=A,t[5]=j);let P=j,ee;t[6]!==P||t[7]!==n?.run.id?(ee=()=>{n?.run.id&&(g(P),b(null))},t[6]=P,t[7]=n?.run.id,t[8]=ee):ee=t[8];let G=n?.run.id,te;t[9]!==P||t[10]!==G?(te=[G,P],t[9]=P,t[10]=G,t[11]=te):te=t[11],(0,U.useEffect)(ee,te);let K;t[12]!==P||t[13]!==D?(K=()=>{if(!P)return;let e=window.setInterval(()=>D(Fe),1e3);return()=>window.clearInterval(e)},t[12]=P,t[13]=D,t[14]=K):K=t[14];let q;t[15]===P?q=t[16]:(q=[P],t[15]=P,t[16]=q),(0,U.useEffect)(K,q);let ne;t[17]===n?ne=t[18]:(ne=n?De(n):null,t[17]=n,t[18]=ne);let J=ne,re;t[19]===J?re=t[20]:(re=J?z(J):{phases:[],unphased:null},t[19]=J,t[20]=re);let ie=re,ae;bb0:{if(y==null||!J){ae=null;break bb0}let e;t[21]!==y||t[22]!==J.agents?(e=J.agents.find(e=>e.id===y)??null,t[21]=y,t[22]=J.agents,t[23]=e):e=t[23],ae=e}let oe=ae,se;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(se=e=>{b(e.id)},t[24]=se):se=t[24];let ce=se,Y,X,me;t[25]===n?(Y=t[26],X=t[27],me=t[28]):(Y=n?_e(n.run.result):void 0,X=ge(Y),me=X.trim(),t[25]=n,t[26]=Y,t[27]=X,t[28]=me);let Z=me.length>0,he;t[29]!==Z||t[30]!==X?(he=async()=>{Z&&await B(X)&&(E(!0),window.setTimeout(()=>E(!1),1500))},t[29]=Z,t[30]=X,t[31]=he):he=t[31];let ve=he,ye;t[32]!==Z||t[33]!==X||t[34]!==n?(ye=()=>{if(!Z||!n)return;let e=new Blob([X],{type:`text/markdown;charset=utf-8`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`${n.run.definitionId}-${n.run.id.slice(0,8)}.md`,r.click(),URL.revokeObjectURL(t)},t[32]=Z,t[33]=X,t[34]=n,t[35]=ye):ye=t[35];let be=ye,xe;t[36]!==d.continueInChatPrompt||t[37]!==m||t[38]!==n?(xe=()=>{n&&(R(ue(d.continueInChatPrompt,{workflow:n.run.definitionId,goal:n.run.goal||n.run.title})),m(`/chat`))},t[36]=d.continueInChatPrompt,t[37]=m,t[38]=n,t[39]=xe):xe=t[39];let Se=xe;if(r){let e;return t[40]===d.loading?e=t[41]:(e=(0,Q.jsx)(`div`,{className:`rounded-2xl border border-edge bg-surface-panel p-6 text-sm text-fg-muted`,children:d.loading}),t[40]=d.loading,t[41]=e),e}if(!n||!J){let e;return t[42]===d.selectRunHint?e=t[43]:(e=(0,Q.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge p-6 text-sm text-fg-muted`,children:d.selectRunHint}),t[42]=d.selectRunHint,t[43]=e),e}let{run:$}=n,Ce=n.controls.canCancel&&P,we;t[44]!==P||t[45]!==$.metrics.durationMs||t[46]!==$.startedAtMs?(we=P&&$.startedAtMs!=null?fe(Date.now()-$.startedAtMs):fe($.metrics.durationMs??void 0),t[44]=P,t[45]=$.metrics.durationMs,t[46]=$.startedAtMs,t[47]=we):we=t[47];let Te=we,Ee;t[48]===$.title?Ee=t[49]:(Ee=(0,Q.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:$.title}),t[48]=$.title,t[49]=Ee);let Ae;t[50]===$.status?Ae=t[51]:(Ae=M(`rounded-full px-2 py-0.5 text-xs font-medium`,pe($.status)),t[50]=$.status,t[51]=Ae);let Le;t[52]!==d||t[53]!==$.status?(Le=Oe($.status,d),t[52]=d,t[53]=$.status,t[54]=Le):Le=t[54];let Re;t[55]!==Ae||t[56]!==Le?(Re=(0,Q.jsx)(`span`,{className:Ae,children:Le}),t[55]=Ae,t[56]=Le,t[57]=Re):Re=t[57];let ze;t[58]!==Ee||t[59]!==Re?(ze=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[Ee,Re]}),t[58]=Ee,t[59]=Re,t[60]=ze):ze=t[60];let Be;t[61]===$.definitionId?Be=t[62]:(Be=(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:$.definitionId}),t[61]=$.definitionId,t[62]=Be);let Ve;t[63]===$.goal?Ve=t[64]:(Ve=$.goal?(0,Q.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:$.goal}):null,t[63]=$.goal,t[64]=Ve);let He;t[65]===$.error?He=t[66]:(He=$.error?(0,Q.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-red-600 dark:text-red-300`,children:$.error.message}):null,t[65]=$.error,t[66]=He);let Ue;t[67]!==ze||t[68]!==Be||t[69]!==Ve||t[70]!==He?(Ue=(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[ze,Be,Ve,He]}),t[67]=ze,t[68]=Be,t[69]=Ve,t[70]=He,t[71]=Ue):Ue=t[71];let We;t[72]!==Ce||t[73]!==d.cancel||t[74]!==s?(We=Ce?(0,Q.jsxs)(I,{variant:`secondary`,onClick:s,className:`text-red-600 dark:text-red-300`,children:[(0,Q.jsx)(S,{className:`size-4`,"aria-hidden":!0}),d.cancel]}):null,t[72]=Ce,t[73]=d.cancel,t[74]=s,t[75]=We):We=t[75];let Ge;t[76]!==d.rerun||t[77]!==l||t[78]!==n.controls.canRetry?(Ge=n.controls.canRetry?(0,Q.jsxs)(I,{variant:`secondary`,onClick:l,children:[(0,Q.jsx)(x,{className:`size-4`,"aria-hidden":!0}),d.rerun]}):null,t[76]=d.rerun,t[77]=l,t[78]=n.controls.canRetry,t[79]=Ge):Ge=t[79];let Ke;t[80]!==We||t[81]!==Ge?(Ke=(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[We,Ge]}),t[80]=We,t[81]=Ge,t[82]=Ke):Ke=t[82];let qe;t[83]!==Ue||t[84]!==Ke?(qe=(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[Ue,Ke]}),t[83]=Ue,t[84]=Ke,t[85]=qe):qe=t[85];let Je=d.metrics.startedAt,Ye=$.startedAtMs??$.createdAtMs,Xe;t[86]!==o||t[87]!==Ye?(Xe=de(Ye,o),t[86]=o,t[87]=Ye,t[88]=Xe):Xe=t[88];let Ze;t[89]!==d.metrics.startedAt||t[90]!==Xe?(Ze=(0,Q.jsx)(Ie,{label:Je,value:Xe}),t[89]=d.metrics.startedAt,t[90]=Xe,t[91]=Ze):Ze=t[91];let Qe;t[92]!==Te||t[93]!==d.metrics.duration?(Qe=(0,Q.jsx)(Ie,{label:d.metrics.duration,value:Te}),t[92]=Te,t[93]=d.metrics.duration,t[94]=Qe):Qe=t[94];let $e=d.metrics.agents,et;t[95]!==d.agentProgress||t[96]!==$.metrics.agentCount||t[97]!==$.metrics.doneAgentCount?(et=ue(d.agentProgress,{done:$.metrics.doneAgentCount,total:$.metrics.agentCount}),t[95]=d.agentProgress,t[96]=$.metrics.agentCount,t[97]=$.metrics.doneAgentCount,t[98]=et):et=t[98];let tt;t[99]!==d.metrics.agents||t[100]!==et?(tt=(0,Q.jsx)(Ie,{label:$e,value:et}),t[99]=d.metrics.agents,t[100]=et,t[101]=tt):tt=t[101];let nt=d.metrics.artifacts,rt=String($.metrics.artifactCount),it;t[102]!==d.metrics.artifacts||t[103]!==rt?(it=(0,Q.jsx)(Ie,{label:nt,value:rt}),t[102]=d.metrics.artifacts,t[103]=rt,t[104]=it):it=t[104];let at;t[105]!==Ze||t[106]!==Qe||t[107]!==tt||t[108]!==it?(at=(0,Q.jsxs)(`dl`,{className:`mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[Ze,Qe,tt,it]}),t[105]=Ze,t[106]=Qe,t[107]=tt,t[108]=it,t[109]=at):at=t[109];let ot;t[110]===Symbol.for(`react.memo_cache_sentinel`)?(ot=()=>g(Pe),t[110]=ot):ot=t[110];let st;t[111]===d.process?st=t[112]:(st=(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:d.process}),t[111]=d.process,t[112]=st);let ct;t[113]!==d.agentProgress||t[114]!==$.metrics.agentCount||t[115]!==$.metrics.doneAgentCount?(ct=ue(d.agentProgress,{done:$.metrics.doneAgentCount,total:$.metrics.agentCount}),t[113]=d.agentProgress,t[114]=$.metrics.agentCount,t[115]=$.metrics.doneAgentCount,t[116]=ct):ct=t[116];let lt;t[117]!==Te||t[118]!==ct?(lt=(0,Q.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[ct,` · `,Te]}),t[117]=Te,t[118]=ct,t[119]=lt):lt=t[119];let ut;t[120]!==st||t[121]!==lt?(ut=(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[st,lt]}),t[120]=st,t[121]=lt,t[122]=ut):ut=t[122];let dt=h?d.collapse:d.expand,ft;t[123]===dt?ft=t[124]:(ft=(0,Q.jsx)(`span`,{className:`text-xs text-fg-muted`,children:dt}),t[123]=dt,t[124]=ft);let pt;t[125]!==h||t[126]!==ut||t[127]!==ft?(pt=(0,Q.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-4 px-4 py-3 text-left`,onClick:ot,"aria-expanded":h,children:[ut,ft]}),t[125]=h,t[126]=ut,t[127]=ft,t[128]=pt):pt=t[128];let mt;t[129]!==p||t[130]!==y||t[131]!==P||t[132]!==d||t[133]!==_||t[134]!==h||t[135]!==ie||t[136]!==J||t[137]!==n.phases?(mt=h?(0,Q.jsxs)(`div`,{className:`border-t border-edge px-4 pb-4 pt-4`,children:[P?(0,Q.jsx)(w,{snapshot:J,labels:p,logsExpanded:_,onToggleLogs:()=>v(Ne),selectedAgentId:y,onSelectAgent:ce}):(0,Q.jsx)(k,{rollup:ie,currentPhase:J.currentPhase,labels:p.phase,recentLogs:J.logs,recentLogsHeading:p.recentLogsHeading,showAllLogsLabel:p.showAllLogs,logsExpanded:_,onToggleLogs:()=>v(Me),selectedAgentId:y,onSelectAgent:ce}),n.phases.length>0?(0,Q.jsx)(`div`,{className:`mt-4 grid gap-2 sm:grid-cols-2`,children:n.phases.map(e=>(0,Q.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-3 py-2`,children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.title}),(0,Q.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:ke(e.status,d)})]})},e.id))}):null]}):null,t[129]=p,t[130]=y,t[131]=P,t[132]=d,t[133]=_,t[134]=h,t[135]=ie,t[136]=J,t[137]=n.phases,t[138]=mt):mt=t[138];let ht;t[139]!==pt||t[140]!==mt?(ht=(0,Q.jsxs)(`div`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[pt,mt]}),t[139]=pt,t[140]=mt,t[141]=ht):ht=t[141];let gt;t[142]===d.resultTitle?gt=t[143]:(gt=(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:d.resultTitle}),t[142]=d.resultTitle,t[143]=gt);let _t;t[144]!==Se||t[145]!==C||t[146]!==ve||t[147]!==be||t[148]!==Z||t[149]!==d.continueInChat||t[150]!==d.copied||t[151]!==d.copyResult||t[152]!==d.exportResult?(_t=Z?(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Q.jsxs)(I,{variant:`secondary`,onClick:ve,children:[C?(0,Q.jsx)(T,{className:`size-4`,"aria-hidden":!0}):(0,Q.jsx)(c,{className:`size-4`,"aria-hidden":!0}),C?d.copied:d.copyResult]}),(0,Q.jsxs)(I,{variant:`secondary`,onClick:be,children:[(0,Q.jsx)(H,{className:`size-4`,"aria-hidden":!0}),d.exportResult]}),(0,Q.jsxs)(I,{variant:`secondary`,onClick:Se,children:[(0,Q.jsx)(O,{className:`size-4`,"aria-hidden":!0}),d.continueInChat]})]}):null,t[144]=Se,t[145]=C,t[146]=ve,t[147]=be,t[148]=Z,t[149]=d.continueInChat,t[150]=d.copied,t[151]=d.copyResult,t[152]=d.exportResult,t[153]=_t):_t=t[153];let vt;t[154]!==gt||t[155]!==_t?(vt=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[gt,_t]}),t[154]=gt,t[155]=_t,t[156]=vt):vt=t[156];let yt;t[157]!==p.result||t[158]!==Z||t[159]!==d.noResult||t[160]!==Y?(yt=Z?(0,Q.jsx)(`div`,{className:`mt-3 rounded-xl border border-edge bg-surface-base/50 p-3`,children:(0,Q.jsx)(L,{result:Y,labels:p.result})}):(0,Q.jsx)(`div`,{className:`mt-3 rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:d.noResult}),t[157]=p.result,t[158]=Z,t[159]=d.noResult,t[160]=Y,t[161]=yt):yt=t[161];let bt;t[162]!==vt||t[163]!==yt?(bt=(0,Q.jsxs)(`div`,{className:`mt-6`,children:[vt,yt]}),t[162]=vt,t[163]=yt,t[164]=bt):bt=t[164];let xt;t[165]!==qe||t[166]!==at||t[167]!==ht||t[168]!==bt?(xt=(0,Q.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[qe,at,ht,bt]}),t[165]=qe,t[166]=at,t[167]=ht,t[168]=bt,t[169]=xt):xt=t[169];let St=y!=null&&oe!=null,Ct;t[170]===Symbol.for(`react.memo_cache_sentinel`)?(Ct=()=>b(null),t[170]=Ct):Ct=t[170];let wt;t[171]!==p.drawer||t[172]!==oe||t[173]!==J||t[174]!==St?(wt=(0,Q.jsx)(F,{open:St,agent:oe,snapshot:J,sessionKey:null,pinnedAgentId:null,onPinAgent:je,onClose:Ct,labels:p.drawer}),t[171]=p.drawer,t[172]=oe,t[173]=J,t[174]=St,t[175]=wt):wt=t[175];let Tt;return t[176]!==xt||t[177]!==wt?(Tt=(0,Q.jsxs)(Q.Fragment,{children:[xt,wt]}),t[176]=xt,t[177]=wt,t[178]=Tt):Tt=t[178],Tt}function je(){}function Me(e){return!e}function Ne(e){return!e}function Pe(e){return!e}function Fe(e){return e+1}function Ie(e){let t=(0,W.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,Q.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,Q.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,Q.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 Le(e,t){return t.status[e]??e}function Re(e){let t=(0,W.c)(49),{run:n,selected:r,language:i,localeTag:o,onSelect:s}=e,c,l,u,d,f,p,m;if(t[0]!==i||t[1]!==s||t[2]!==n.definitionId||t[3]!==n.metrics.agentCount||t[4]!==n.metrics.doneAgentCount||t[5]!==n.status||t[6]!==n.title||t[7]!==r){let e=a(i).workflows,o;t[15]!==n.metrics.agentCount||t[16]!==n.metrics.doneAgentCount?(o=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[15]=n.metrics.agentCount,t[16]=n.metrics.doneAgentCount,t[17]=o):o=t[17];let h=o;u=`button`,d=s;let g=r?`border-accent bg-accent-soft/35`:`border-edge bg-surface-panel hover:bg-surface-hover/60`;t[18]===g?f=t[19]:(f=M(`w-full rounded-xl border p-3 text-left transition-colors`,g),t[18]=g,t[19]=f);let _;t[20]===n.title?_=t[21]:(_=(0,Q.jsx)(`div`,{className:`truncate text-sm font-medium text-fg`,children:n.title}),t[20]=n.title,t[21]=_);let v;t[22]===n.definitionId?v=t[23]:(v=(0,Q.jsx)(`div`,{className:`mt-1 truncate text-xs text-fg-subtle`,children:n.definitionId}),t[22]=n.definitionId,t[23]=v);let y;t[24]!==_||t[25]!==v?(y=(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[_,v]}),t[24]=_,t[25]=v,t[26]=y):y=t[26];let b;t[27]===n.status?b=t[28]:(b=M(`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium`,pe(n.status)),t[27]=n.status,t[28]=b),p=(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[y,(0,Q.jsx)(`span`,{className:b,children:Le(n.status,e)})]});let x=`${h}%`;t[29]===x?m=t[30]:(m=(0,Q.jsx)(`div`,{className:`mt-3 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,Q.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:x}})}),t[29]=x,t[30]=m),l=`mt-2 flex items-center justify-between text-[11px] text-fg-subtle`,c=ue(e.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount}),t[0]=i,t[1]=s,t[2]=n.definitionId,t[3]=n.metrics.agentCount,t[4]=n.metrics.doneAgentCount,t[5]=n.status,t[6]=n.title,t[7]=r,t[8]=c,t[9]=l,t[10]=u,t[11]=d,t[12]=f,t[13]=p,t[14]=m}else c=t[8],l=t[9],u=t[10],d=t[11],f=t[12],p=t[13],m=t[14];let h;t[31]===c?h=t[32]:(h=(0,Q.jsx)(`span`,{children:c}),t[31]=c,t[32]=h);let g;t[33]!==o||t[34]!==n.createdAtMs?(g=de(n.createdAtMs,o),t[33]=o,t[34]=n.createdAtMs,t[35]=g):g=t[35];let _;t[36]===g?_=t[37]:(_=(0,Q.jsx)(`span`,{children:g}),t[36]=g,t[37]=_);let v;t[38]!==_||t[39]!==l||t[40]!==h?(v=(0,Q.jsxs)(`div`,{className:l,children:[h,_]}),t[38]=_,t[39]=l,t[40]=h,t[41]=v):v=t[41];let y;return t[42]!==v||t[43]!==u||t[44]!==d||t[45]!==f||t[46]!==p||t[47]!==m?(y=(0,Q.jsxs)(`button`,{type:u,onClick:d,className:f,children:[p,m,v]}),t[42]=v,t[43]=u,t[44]=d,t[45]=f,t[46]=p,t[47]=m,t[48]=y):y=t[48],y}function ze(e){let t=(0,W.c)(12),{examples:n,labels:r,onSelect:i}=e;if(n.length===0)return null;let a;t[0]===r.examplePrompts?a=t[1]:(a=(0,Q.jsx)(`div`,{className:`text-xs font-medium text-fg-muted`,children:r.examplePrompts}),t[0]=r.examplePrompts,t[1]=a);let o;if(t[2]!==n||t[3]!==i){let e;t[5]===i?e=t[6]:(e=e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:`rounded-lg border border-edge bg-surface-base/50 px-3 py-2 text-left text-xs text-fg-muted hover:bg-surface-hover`,children:e.text},`${e.field}:${e.text}`),t[5]=i,t[6]=e),o=n.map(e),t[2]=n,t[3]=i,t[4]=o}else o=t[4];let s;t[7]===o?s=t[8]:(s=(0,Q.jsx)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:o}),t[7]=o,t[8]=s);let c;return t[9]!==a||t[10]!==s?(c=(0,Q.jsxs)(`div`,{children:[a,s]}),t[9]=a,t[10]=s,t[11]=c):c=t[11],c}function Be(e){let t=(0,W.c)(44),{open:n,definition:r,language:i,starting:o,onClose:s,onStart:c}=e,h=a(i).workflows,[g,_]=(0,U.useState)(``),v;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[0]=v):v=t[0];let[y,b]=(0,U.useState)(v),[x,S]=(0,U.useState)(``),[C,w]=(0,U.useState)(``),[T,E]=(0,U.useState)(!1),D;t[1]!==r||t[2]!==i?(D=r?te(r,i):null,t[1]=r,t[2]=i,t[3]=D):D=t[3];let O=D,k;t[4]===r?k=t[5]:(k=r?ce[r.name]??[]:[],t[4]=r,t[5]=k);let j=k,N;t[6]===O?.examplePrompts?N=t[7]:(N=O?.examplePrompts??[],t[6]=O?.examplePrompts,t[7]=N);let P=N,F=j.length>0,L;t[8]!==r||t[9]!==n?(L=()=>{!n||!r||(_(``),b({}),S(``),w(``),E(!1))},t[8]=r,t[9]=n,t[10]=L):L=t[10];let R=r?.id,z;if(t[11]!==n||t[12]!==R?(z=[n,R],t[11]=n,t[12]=R,t[13]=z):z=t[13],(0,U.useEffect)(L,z),!r||!O)return null;let B;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(B=e=>{J(e,_,b)},t[14]=B):B=t[14];let ee=B,V;t[15]!==y||t[16]!==x||t[17]!==g||t[18]!==O.description||t[19]!==C||t[20]!==c?(V=()=>{let e=ve(y);c({goal:g.trim()||O.description,input:e,concurrency:x.trim()?Number(x):void 0,maxSubagents:C.trim()?Number(C):void 0})},t[15]=y,t[16]=x,t[17]=g,t[18]=O.description,t[19]=C,t[20]=c,t[21]=V):V=t[21];let H=V,G;t[22]===s?G=t[23]:(G=e=>!e&&s(),t[22]=s,t[23]=G);let K;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,Q.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[24]=K):K=t[24];let q;t[25]===O.description?q=t[26]:(q=(0,Q.jsx)(p,{className:`mt-1 text-sm text-fg-muted`,children:O.description}),t[25]=O.description,t[26]=q);let ne=j.map(e=>(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[He(h,e.labelKey),e.required?` *`:``]}),e.multiline?(0,Q.jsx)(`textarea`,{value:y[e.key]??``,onChange:t=>b(n=>({...n,[e.key]:t.target.value})),placeholder:He(h,e.placeholderKey),className:`mt-1.5 min-h-20 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}):(0,Q.jsx)(`input`,{value:y[e.key]??``,onChange:t=>b(n=>({...n,[e.key]:t.target.value})),placeholder:He(h,e.placeholderKey),className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]},e.key)),re;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(re=e=>_(e.target.value),t[27]=re):re=t[27];let ie;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(ie=()=>E(Ve),t[28]=ie):ie=t[28];let ae=h.advancedSettings,oe=T&&`rotate-180`,se;t[29]===oe?se=t[30]:(se=M(`size-4 transition-transform`,oe),t[29]=oe,t[30]=se);let le;t[31]===se?le=t[32]:(le=(0,Q.jsx)(A,{className:se}),t[31]=se,t[32]=le);let Y;t[33]!==h.cancelDialog||t[34]!==s||t[35]!==o?(Y=(0,Q.jsx)(I,{variant:`secondary`,onClick:s,disabled:o,children:h.cancelDialog}),t[33]=h.cancelDialog,t[34]=s,t[35]=o,t[36]=Y):Y=t[36];let de=o?h.starting:h.start,fe;t[37]!==o||t[38]!==H||t[39]!==de?(fe=(0,Q.jsx)(I,{variant:`primary`,onClick:H,disabled:o,children:de}),t[37]=o,t[38]=H,t[39]=de,t[40]=fe):fe=t[40];let pe;return t[41]!==Y||t[42]!==fe?(pe=(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[Y,fe]}),t[41]=Y,t[42]=fe,t[43]=pe):pe=t[43],(0,Q.jsx)(f,{open:n,onOpenChange:G,children:(0,Q.jsxs)(l,{children:[K,(0,Q.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,40rem)] w-[min(100%-2rem,32rem)] -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,Q.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[(0,Q.jsxs)(m,{className:`text-base font-semibold text-fg`,children:[h.startTitle,` · `,r.title]}),q]}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[ne,F?(0,Q.jsx)(ze,{examples:P,labels:h,onSelect:ee}):null,(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:h.goalLabel}),(0,Q.jsx)(`textarea`,{value:g,onChange:re,placeholder:h.goalPlaceholder,className:`mt-1.5 min-h-24 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),F?null:(0,Q.jsx)(ze,{examples:P,labels:h,onSelect:ee}),(0,Q.jsxs)(`div`,{className:`rounded-xl border border-edge`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between px-3 py-2.5 text-left text-sm text-fg`,onClick:ie,children:[ae,le]}),T?(0,Q.jsxs)(`div`,{className:`grid gap-3 border-t border-edge px-3 pb-3 pt-3 sm:grid-cols-2`,children:[(0,Q.jsx)(`input`,{value:x,onChange:e=>S(e.target.value),placeholder:ue(h.concurrencyPlaceholder,{default:r.defaults.concurrency}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),(0,Q.jsx)(`input`,{value:C,onChange:e=>w(e.target.value),placeholder:ue(h.maxSubagentsPlaceholder,{default:r.defaults.maxSubagents}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}):null]})]}),pe]})]})})}function Ve(e){return!e}function He(e,t){return e.args[t]??t}function Ue(e){let t=(0,W.c)(28),{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]?ue(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,Q.jsx)(We,{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,Q.jsx)(We,{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,Q.jsx)(We,{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?`—`:fe(n.averageDurationMs),t[17]=n.averageDurationMs,t[18]=_);let v=c??void 0,y;t[19]!==i.statsAvgDuration||t[20]!==_||t[21]!==v?(y=(0,Q.jsx)(We,{label:i.statsAvgDuration,value:_,hint:v}),t[19]=i.statsAvgDuration,t[20]=_,t[21]=v,t[22]=y):y=t[22];let b;return t[23]!==g||t[24]!==y||t[25]!==d||t[26]!==m?(b=(0,Q.jsxs)(`section`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[d,m,g,y]}),t[23]=g,t[24]=y,t[25]=d,t[26]=m,t[27]=b):b=t[27],b}function We(e){let t=(0,W.c)(10),{label:n,value:r,hint:i}=e,a;t[0]===n?a=t[1]:(a=(0,Q.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Q.jsx)(`div`,{className:`mt-1 text-lg font-semibold tabular-nums text-fg`,children:r}),t[2]=r,t[3]=o);let s;t[4]===i?s=t[5]:(s=i?(0,Q.jsx)(`div`,{className:`mt-1 truncate text-[11px] text-fg-muted`,children:i}):null,t[4]=i,t[5]=s);let c;return t[6]!==a||t[7]!==o||t[8]!==s?(c=(0,Q.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-4 py-3`,children:[a,o,s]}),t[6]=a,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function Ge(e){let t=(0,W.c)(27),{vm:n}=e,{labels:r,loading:i,searchQuery:a,setSearchQuery:o,refreshAll:s,setManageOpen:c}=n,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Q.jsx)(b,{className:`pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[0]=l):l=t[0];let u;t[1]===o?u=t[2]:(u=e=>o(e.target.value),t[1]=o,t[2]=u);let d=r.searchPlaceholder,f;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=M(`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`,E.focusRingPanel),t[3]=f):f=t[3];let p;t[4]!==r.searchPlaceholder||t[5]!==a||t[6]!==u?(p=(0,Q.jsxs)(`div`,{className:`relative min-w-[12rem] flex-1 sm:max-w-xs`,children:[l,(0,Q.jsx)(`input`,{value:a,onChange:u,placeholder:d,className:f})]}),t[4]=r.searchPlaceholder,t[5]=a,t[6]=u,t[7]=p):p=t[7];let m;t[8]===c?m=t[9]:(m=()=>c(!0),t[8]=c,t[9]=m);let h;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Q.jsx)(D,{className:`size-4`,"aria-hidden":!0}),t[10]=h):h=t[10];let g;t[11]!==r.addWorkflow||t[12]!==m?(g=(0,Q.jsxs)(I,{variant:`secondary`,onClick:m,children:[h,r.addWorkflow]}),t[11]=r.addWorkflow,t[12]=m,t[13]=g):g=t[13];let _=i&&`animate-spin`,v;t[14]===_?v=t[15]:(v=M(`size-4`,_),t[14]=_,t[15]=v);let y;t[16]===v?y=t[17]:(y=(0,Q.jsx)(C,{className:v,"aria-hidden":!0}),t[16]=v,t[17]=y);let x;t[18]!==r.refresh||t[19]!==i||t[20]!==s||t[21]!==y?(x=(0,Q.jsxs)(I,{variant:`secondary`,onClick:s,disabled:i,children:[y,r.refresh]}),t[18]=r.refresh,t[19]=i,t[20]=s,t[21]=y,t[22]=x):x=t[22];let S;return t[23]!==x||t[24]!==p||t[25]!==g?(S=(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[p,g,x]}),t[23]=x,t[24]=p,t[25]=g,t[26]=S):S=t[26],S}function Ke(e){let t=(0,W.c)(173),{vm:n}=e,{language:r,localeTag:i,labels:a,hasToken:o,mainTab:s,setMainTab:c,categoryFilter:l,setCategoryFilter:u,sourceFilter:d,setSourceFilter:f,filteredDefinitions:p,activeRuns:m,visibleRuns:h,selectedRunId:g,selectRun:_,startDefinition:v,setStartDefinition:b,detailDefinition:x,setDetailDefinition:S,manageOpen:C,setManageOpen:w,actionError:T,actionFeedback:E,starting:D,savingWorkflow:O,loading:k,error:A,searchQuery:M,stats:N,runView:P,runLoading:F,submitStart:L,cancelSelectedRun:R,retrySelectedRun:z,saveCustomWorkflow:B,removeCustomWorkflow:ee}=n,V=y(Je),H=y(qe),G;t[0]!==H||t[1]!==o||t[2]!==V||t[3]!==n?(G=()=>{if(!o){H();return}return V({startExtra:null,main:null,end:(0,Q.jsx)(Ge,{vm:n})}),()=>H()},t[0]=H,t[1]=o,t[2]=V,t[3]=n,t[4]=G):G=t[4];let te;if(t[5]!==H||t[6]!==o||t[7]!==k||t[8]!==M||t[9]!==V||t[10]!==n.refreshAll||t[11]!==n.setManageOpen||t[12]!==n.setSearchQuery?(te=[H,o,k,M,V,n.refreshAll,n.setManageOpen,n.setSearchQuery],t[5]=H,t[6]=o,t[7]=k,t[8]=M,t[9]=V,t[10]=n.refreshAll,t[11]=n.setManageOpen,t[12]=n.setSearchQuery,t[13]=te):te=t[13],(0,U.useLayoutEffect)(G,te),!o){let e;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsx)(j,{className:`size-10 text-accent-fg`,"aria-hidden":!0}),t[14]=e):e=t[14];let n;t[15]===a.title?n=t[16]:(n=(0,Q.jsx)(`h1`,{className:`mt-4 text-xl font-semibold text-fg`,children:a.title}),t[15]=a.title,t[16]=n);let r;t[17]===a.needToken?r=t[18]:(r=(0,Q.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.needToken}),t[17]=a.needToken,t[18]=r);let i;return t[19]!==n||t[20]!==r?(i=(0,Q.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:(0,Q.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col items-center px-4 py-16 text-center sm:px-8`,children:[e,n,r]})}),t[19]=n,t[20]=r,t[21]=i):i=t[21],i}let K;t[22]===a.title?K=t[23]:(K=(0,Q.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight text-fg`,children:a.title}),t[22]=a.title,t[23]=K);let q;t[24]===a.subtitle?q=t[25]:(q=(0,Q.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm leading-6 text-fg-muted`,children:a.subtitle}),t[24]=a.subtitle,t[25]=q);let ne;t[26]!==K||t[27]!==q?(ne=(0,Q.jsxs)(`header`,{children:[K,q]}),t[26]=K,t[27]=q,t[28]=ne):ne=t[28];let J;t[29]===E?J=t[30]:(J=E?(0,Q.jsx)(`div`,{className:`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:E}):null,t[29]=E,t[30]=J);let re;t[31]!==T||t[32]!==A?(re=T??A?(0,Q.jsx)(`div`,{className:`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:T??A}):null,t[31]=T,t[32]=A,t[33]=re):re=t[33];let oe;t[34]!==r||t[35]!==N?(oe=(0,Q.jsx)(Ue,{stats:N,language:r}),t[34]=r,t[35]=N,t[36]=oe):oe=t[36];let se=s===`catalog`,ce;t[37]===c?ce=t[38]:(ce=()=>c(`catalog`),t[37]=c,t[38]=ce);let le;t[39]!==a.tabCatalog||t[40]!==ce||t[41]!==se?(le=(0,Q.jsx)(Ye,{active:se,onClick:ce,children:a.tabCatalog}),t[39]=a.tabCatalog,t[40]=ce,t[41]=se,t[42]=le):le=t[42];let Y=s===`active`,ue;t[43]===c?ue=t[44]:(ue=()=>c(`active`),t[43]=c,t[44]=ue);let de;t[45]===m.length?de=t[46]:(de=m.length>0?(0,Q.jsxs)(`span`,{className:`ml-1 tabular-nums text-fg-muted`,children:[`(`,m.length,`)`]}):null,t[45]=m.length,t[46]=de);let fe;t[47]!==a.tabActive||t[48]!==Y||t[49]!==ue||t[50]!==de?(fe=(0,Q.jsxs)(Ye,{active:Y,onClick:ue,children:[a.tabActive,de]}),t[47]=a.tabActive,t[48]=Y,t[49]=ue,t[50]=de,t[51]=fe):fe=t[51];let pe=s===`history`,X;t[52]===c?X=t[53]:(X=()=>c(`history`),t[52]=c,t[53]=X);let me;t[54]!==a.tabHistory||t[55]!==pe||t[56]!==X?(me=(0,Q.jsx)(Ye,{active:pe,onClick:X,children:a.tabHistory}),t[54]=a.tabHistory,t[55]=pe,t[56]=X,t[57]=me):me=t[57];let Z;t[58]!==a.navAria||t[59]!==le||t[60]!==fe||t[61]!==me?(Z=(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-x-1`,role:`tablist`,"aria-label":a.navAria,children:[le,fe,me]}),t[58]=a.navAria,t[59]=le,t[60]=fe,t[61]=me,t[62]=Z):Z=t[62];let he;t[63]!==l||t[64]!==a.categories||t[65]!==a.categoryFilterAria||t[66]!==a.sourceFilterAria||t[67]!==a.sources||t[68]!==s||t[69]!==u||t[70]!==f||t[71]!==d?(he=s===`catalog`?(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Q.jsx)(Xe,{value:l,options:ie.map(e=>({value:e,label:a.categories[e]})),onChange:e=>u(e),ariaLabel:a.categoryFilterAria}),(0,Q.jsx)(Xe,{value:d,options:ae.map(e=>({value:e,label:a.sources[e]})),onChange:e=>f(e),ariaLabel:a.sourceFilterAria})]}):null,t[63]=l,t[64]=a.categories,t[65]=a.categoryFilterAria,t[66]=a.sourceFilterAria,t[67]=a.sources,t[68]=s,t[69]=u,t[70]=f,t[71]=d,t[72]=he):he=t[72];let ge;t[73]!==Z||t[74]!==he?(ge=(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 border-b border-edge-subtle pb-3 sm:flex-row sm:items-center sm:justify-between`,children:[Z,he]}),t[73]=Z,t[74]=he,t[75]=ge):ge=t[75];let _e=s!==`catalog`,ve;t[76]!==p||t[77]!==a.addWorkflow||t[78]!==a.noDefinitions||t[79]!==a.noDefinitionsHint||t[80]!==r||t[81]!==ee||t[82]!==S||t[83]!==w||t[84]!==b?(ve=p.length===0?(0,Q.jsx)(Qe,{title:a.noDefinitions,hint:a.noDefinitionsHint,children:(0,Q.jsx)(I,{variant:`primary`,onClick:()=>w(!0),children:a.addWorkflow})}):(0,Q.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 xl:grid-cols-3`,children:p.map(e=>(0,Q.jsx)(be,{definition:e,language:r,onRun:()=>b(e),onDetail:()=>S(e),onDelete:e.metadata.source===`user`?()=>void ee(e):void 0},e.id))}),t[76]=p,t[77]=a.addWorkflow,t[78]=a.noDefinitions,t[79]=a.noDefinitionsHint,t[80]=r,t[81]=ee,t[82]=S,t[83]=w,t[84]=b,t[85]=ve):ve=t[85];let ye;t[86]!==_e||t[87]!==ve?(ye=(0,Q.jsx)(`div`,{className:`space-y-6`,hidden:_e,children:ve}),t[86]=_e,t[87]=ve,t[88]=ye):ye=t[88];let xe=s===`catalog`,Se;t[89]!==a.historyRunsHeading||t[90]!==s?(Se=s===`history`?(0,Q.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:a.historyRunsHeading}):null,t[89]=a.historyRunsHeading,t[90]=s,t[91]=Se):Se=t[91];let Ce;t[92]!==a.browseCatalog||t[93]!==a.loading||t[94]!==a.noActiveRuns||t[95]!==a.noActiveRunsHint||t[96]!==a.noRuns||t[97]!==a.noRunsHint||t[98]!==r||t[99]!==k||t[100]!==i||t[101]!==s||t[102]!==_||t[103]!==g||t[104]!==c||t[105]!==h?(Ce=k&&h.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}):h.length===0?(0,Q.jsx)(Qe,{title:s===`active`?a.noActiveRuns:a.noRuns,hint:s===`active`?a.noActiveRunsHint:a.noRunsHint,children:(0,Q.jsx)(I,{variant:`primary`,onClick:()=>c(`catalog`),children:a.browseCatalog})}):h.map(e=>(0,Q.jsx)(Re,{run:e,selected:g===e.id,language:r,localeTag:i,onSelect:()=>_(e.id)},e.id)),t[92]=a.browseCatalog,t[93]=a.loading,t[94]=a.noActiveRuns,t[95]=a.noActiveRunsHint,t[96]=a.noRuns,t[97]=a.noRunsHint,t[98]=r,t[99]=k,t[100]=i,t[101]=s,t[102]=_,t[103]=g,t[104]=c,t[105]=h,t[106]=Ce):Ce=t[106];let Te;t[107]!==Se||t[108]!==Ce?(Te=(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[Se,Ce]}),t[107]=Se,t[108]=Ce,t[109]=Te):Te=t[109];let Ee;t[110]===R?Ee=t[111]:(Ee=()=>void R(),t[110]=R,t[111]=Ee);let De;t[112]===z?De=t[113]:(De=()=>void z(),t[112]=z,t[113]=De);let Oe;t[114]!==r||t[115]!==i||t[116]!==F||t[117]!==P||t[118]!==Ee||t[119]!==De?(Oe=(0,Q.jsx)(Ae,{view:P,loading:F,language:r,localeTag:i,onCancel:Ee,onRetry:De}),t[114]=r,t[115]=i,t[116]=F,t[117]=P,t[118]=Ee,t[119]=De,t[120]=Oe):Oe=t[120];let ke;t[121]!==xe||t[122]!==Te||t[123]!==Oe?(ke=(0,Q.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-[minmax(16rem,0.75fr)_minmax(0,1.25fr)]`,hidden:xe,children:[Te,Oe]}),t[121]=xe,t[122]=Te,t[123]=Oe,t[124]=ke):ke=t[124];let je;t[125]!==ge||t[126]!==ye||t[127]!==ke?(je=(0,Q.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[ge,ye,ke]}),t[125]=ge,t[126]=ye,t[127]=ke,t[128]=je):je=t[128];let Me;t[129]!==je||t[130]!==ne||t[131]!==J||t[132]!==re||t[133]!==oe?(Me=(0,Q.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6 lg:px-6`,children:[ne,J,re,oe,je]}),t[129]=je,t[130]=ne,t[131]=J,t[132]=re,t[133]=oe,t[134]=Me):Me=t[134];let Ne=v!=null,Pe;t[135]===b?Pe=t[136]:(Pe=()=>b(null),t[135]=b,t[136]=Pe);let Fe;t[137]===L?Fe=t[138]:(Fe=e=>void L(e),t[137]=L,t[138]=Fe);let Ie;t[139]!==r||t[140]!==v||t[141]!==D||t[142]!==Ne||t[143]!==Pe||t[144]!==Fe?(Ie=(0,Q.jsx)(Be,{open:Ne,definition:v,language:r,starting:D,onClose:Pe,onStart:Fe}),t[139]=r,t[140]=v,t[141]=D,t[142]=Ne,t[143]=Pe,t[144]=Fe,t[145]=Ie):Ie=t[145];let Le=x!=null,ze;t[146]===S?ze=t[147]:(ze=()=>S(null),t[146]=S,t[147]=ze);let Ve;t[148]!==x||t[149]!==S||t[150]!==b?(Ve=()=>{x&&(S(null),b(x))},t[148]=x,t[149]=S,t[150]=b,t[151]=Ve):Ve=t[151];let He;t[152]!==x||t[153]!==r||t[154]!==Le||t[155]!==ze||t[156]!==Ve?(He=(0,Q.jsx)($,{open:Le,definition:x,language:r,onClose:ze,onRun:Ve}),t[152]=x,t[153]=r,t[154]=Le,t[155]=ze,t[156]=Ve,t[157]=He):He=t[157];let We;t[158]===w?We=t[159]:(We=()=>w(!1),t[158]=w,t[159]=We);let Ke;t[160]===B?Ke=t[161]:(Ke=e=>void B(e),t[160]=B,t[161]=Ke);let Ze;t[162]!==r||t[163]!==C||t[164]!==O||t[165]!==We||t[166]!==Ke?(Ze=(0,Q.jsx)(we,{open:C,language:r,saving:O,onClose:We,onSave:Ke}),t[162]=r,t[163]=C,t[164]=O,t[165]=We,t[166]=Ke,t[167]=Ze):Ze=t[167];let $e;return t[168]!==Me||t[169]!==Ie||t[170]!==He||t[171]!==Ze?($e=(0,Q.jsxs)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:[Me,Ie,He,Ze]}),t[168]=Me,t[169]=Ie,t[170]=He,t[171]=Ze,t[172]=$e):$e=t[172],$e}function qe(e){return e.clearPageHeader}function Je(e){return e.setPageHeader}function Ye(e){let t=(0,W.c)(8),{active:n,onClick:r,children:i}=e,a=n?`text-fg`:`text-fg-muted hover:text-fg`,o=n&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`,s;t[0]!==a||t[1]!==o?(s=M(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,a,o),t[0]=a,t[1]=o,t[2]=s):s=t[2];let c;return t[3]!==n||t[4]!==i||t[5]!==r||t[6]!==s?(c=(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n,onClick:r,className:s,children:i}),t[3]=n,t[4]=i,t[5]=r,t[6]=s,t[7]=c):c=t[7],c}function Xe(e){let t=(0,W.c)(10),{value:n,options:r,onChange:i,ariaLabel:a}=e,o;t[0]===i?o=t[1]:(o=e=>i(e.target.value),t[0]=i,t[1]=o);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=M(`h-9 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,E.focusRingPanel),t[2]=s):s=t[2];let c;t[3]===r?c=t[4]:(c=r.map(Ze),t[3]=r,t[4]=c);let l;return t[5]!==a||t[6]!==o||t[7]!==c||t[8]!==n?(l=(0,Q.jsx)(`select`,{value:n,"aria-label":a,onChange:o,className:s,children:c}),t[5]=a,t[6]=o,t[7]=c,t[8]=n,t[9]=l):l=t[9],l}function Ze(e){return(0,Q.jsx)(`option`,{value:e.value,children:e.label},e.value)}function Qe(e){let t=(0,W.c)(10),{title:n,hint:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Q.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Q.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:r}),t[2]=r,t[3]=o);let s;t[4]===i?s=t[5]:(s=i?(0,Q.jsx)(`div`,{className:`mt-4 flex justify-center`,children:i}):null,t[4]=i,t[5]=s);let c;return t[6]!==a||t[7]!==o||t[8]!==s?(c=(0,Q.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-10 text-center`,children:[a,o,s]}),t[6]=a,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}async function $e(){return(await g(o(`/api/workflows/definitions`))).definitions??[]}async function et(e,t){return(await g(o(`/api/workflows/definitions`),{method:`POST`,body:JSON.stringify({name:e,script:t})})).definition}async function tt(e){await g(o(`/api/workflows/definitions/${encodeURIComponent(e)}`),{method:`DELETE`})}async function nt(){return(await g(o(`/api/workflows/stats`))).stats}async function rt(e=50){return(await g(o(`/api/workflows/runs?limit=${e}`))).runs??[]}async function it(e){return(await g(o(`/api/workflows/runs/${encodeURIComponent(e)}`))).view}async function at(e){return g(o(`/api/workflows/runs`),{method:`POST`,body:JSON.stringify(e)})}async function ot(e){await g(o(`/api/workflows/runs/${encodeURIComponent(e)}/cancel`),{method:`POST`})}async function st(e){return g(o(`/api/workflows/runs/${encodeURIComponent(e)}/retry`),{method:`POST`})}function ct(e){let t=e.get(`tab`);return re.has(t??``)?t:`catalog`}function lt(){let e=i(e=>e.language),t=a(e).workflows,n=e===`zh`?`zh-CN`:`en-US`,r=h(e=>e.token),o=!!r,[c,l]=ee(),u=ct(c),d=c.get(`q`)??``,f=c.get(`run`)?.trim()??``,p=u===`catalog`?``:f,[m,g]=(0,U.useState)(`all`),[_,v]=(0,U.useState)(`all`),[y,b]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),[C,w]=(0,U.useState)(!1),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),[j,M]=(0,U.useState)(!1),N=s(o?[`workflow-definitions`,r]:null,$e,{revalidateOnFocus:!1}),P=s(o?[`workflow-runs`,r]:null,()=>rt(100),{revalidateOnFocus:!1}),F=s(o?[`workflow-stats`,r]:null,nt,{revalidateOnFocus:!1}),I=s(o&&p?[`workflow-run`,p,r]:null,()=>it(p),{revalidateOnFocus:!1,keepPreviousData:!1,refreshInterval:e=>e&&(e.run.status===`queued`||e.run.status===`running`)?3e3:0});(0,U.useEffect)(()=>{if(!D)return;let e=window.setTimeout(()=>O(null),4e3);return()=>window.clearTimeout(e)},[D]);let L=N.data??[],R=P.data??[],z=(0,U.useMemo)(()=>Z(L,d,m,_),[L,d,m,_]),B=(0,U.useMemo)(()=>he(R,`active`),[R]),V=(0,U.useMemo)(()=>he(R,`history`),[R]),H=u===`active`?B:V,W=(0,U.useCallback)(e=>{l(t=>{let n=new URLSearchParams(t);return e(n,t),n},{replace:!0})},[l]),G=(0,U.useCallback)(e=>{W(t=>{if(t.set(`tab`,e),e===`catalog`){t.delete(`run`);return}let n=e===`active`?B:V,r=t.get(`run`)?.trim();r&&n.some(e=>e.id===r)||(n[0]?.id?t.set(`run`,n[0].id):P.isLoading||t.delete(`run`))})},[B,V,W,P.isLoading]),te=(0,U.useCallback)(e=>{W(t=>{let n=e.trim();n?t.set(`q`,n):t.delete(`q`)})},[W]),K=(0,U.useCallback)(e=>{W(t=>{t.set(`run`,e)})},[W]);(0,U.useEffect)(()=>{u!==`catalog`||!f||W(e=>{e.delete(`run`)})},[u,W,f]),(0,U.useEffect)(()=>{let e=c.get(`def`),t=c.get(oe)===`1`;if(!e||!L.length)return;let n=L.find(t=>t.id===e||t.name===e);n&&(t?b(n):S(n))},[L,c]),(0,U.useEffect)(()=>{if(c.get(`tab`)||!f||!R.length)return;let e=R.find(e=>e.id===f);if(!e)return;let t=le.has(e.status)?`active`:`history`;W(e=>{e.set(`tab`,t),e.set(`run`,f)})},[W,f,R,c]),(0,U.useEffect)(()=>{if(u===`catalog`||P.isLoading)return;let e=u===`active`?B:V;if(!e.length){f&&W(e=>{e.delete(`run`)});return}f&&e.some(e=>e.id===f)||W(t=>{t.set(`run`,e[0].id)})},[B,V,u,W,f,P.isLoading]),(0,U.useEffect)(()=>{let e=()=>void P.mutate(),t=e=>{let t=e.detail;P.mutate(),F.mutate(),t?.runId&&t.runId===p&&I.mutate(t.view,{revalidate:!1})};return window.addEventListener(`workflow-event-appended`,e),window.addEventListener(`workflow-run-updated`,t),window.addEventListener(`workflow-run-error`,e),()=>{window.removeEventListener(`workflow-event-appended`,e),window.removeEventListener(`workflow-run-updated`,t),window.removeEventListener(`workflow-run-error`,e)}},[I,P,p,F]);let q=(0,U.useCallback)(()=>{N.mutate(),P.mutate(),F.mutate(),I.mutate()},[N,I,P,F]),ne=(0,U.useCallback)(async e=>{if(y){A(!0),E(null);try{let n=await at({definitionId:y.id,goal:e.goal,input:e.input,concurrency:e.concurrency,maxSubagents:e.maxSubagents});b(null),W(e=>{e.set(`tab`,`active`),e.set(`run`,n.runId)}),await P.mutate(),await F.mutate(),O(t.startSuccess)}catch(e){E(e instanceof Error?e.message:t.startFailed)}finally{A(!1)}}},[t.startFailed,t.startSuccess,W,P,y,F]),J=(0,U.useCallback)(async()=>{if(p)try{await ot(p),await P.mutate(),await I.mutate()}catch(e){let n=e instanceof Error?e.message:t.cancelFailed;if(/not active|already finished/i.test(n)){await P.mutate(),await I.mutate();return}E(n)}},[I,t.cancelFailed,P,p]),re=(0,U.useCallback)(async()=>{if(p)try{let e=await st(p);W(t=>{t.set(`tab`,`active`),t.set(`run`,e.runId)}),await P.mutate(),await F.mutate()}catch(e){E(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,W,P,p,F]),ie=(0,U.useCallback)(async e=>{M(!0),E(null);try{await et(e.name,e.script),w(!1),await N.mutate(),O(t.saveWorkflowSuccess)}catch(e){E(e instanceof Error?e.message:t.saveWorkflowFailed)}finally{M(!1)}},[N,t.saveWorkflowFailed,t.saveWorkflowSuccess]),ae=(0,U.useCallback)(async e=>{if(e.metadata.source===`user`&&window.confirm(ue(t.deleteConfirm,{name:e.name}))){E(null);try{await tt(e.id),await N.mutate(),O(t.deleteWorkflowSuccess)}catch(e){E(e instanceof Error?e.message:t.deleteWorkflowFailed)}}},[N,t]),se=N.isLoading||P.isLoading,ce=N.error?.message??P.error?.message??null,Y=I.data?.run.id===p?I.data:void 0,de=!!p&&!Y&&I.isLoading;return{language:e,localeTag:n,labels:t,hasToken:o,mainTab:u,setMainTab:G,searchQuery:d,setSearchQuery:te,categoryFilter:m,setCategoryFilter:g,sourceFilter:_,setSourceFilter:v,filteredDefinitions:z,activeRuns:B,historyRuns:V,visibleRuns:H,selectedRunId:p,selectRun:K,startDefinition:y,setStartDefinition:b,detailDefinition:x,setDetailDefinition:S,manageOpen:C,setManageOpen:w,actionError:T,actionFeedback:D,starting:k,savingWorkflow:j,loading:se,error:ce,stats:F.data,runView:Y,runLoading:de,refreshAll:q,submitStart:ne,cancelSelectedRun:J,retrySelectedRun:re,saveCustomWorkflow:ie,removeCustomWorkflow:ae}}function ut(){let e=(0,W.c)(2),t=lt(),n;return e[0]===t?n=e[1]:(n=(0,Q.jsx)(Ke,{vm:t}),e[0]=t,e[1]=n),n}export{ut as WorkflowsPage};
@@ -9,17 +9,18 @@
9
9
  <link rel="icon" type="image/svg+xml" href="/logo.svg" />
10
10
  <link rel="apple-touch-icon" href="/logo.svg" />
11
11
  <title>xopc</title>
12
- <script type="module" crossorigin src="/assets/index-Cu7bKuUi.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-qNrVJp-y.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-D0yxdRpg.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/dist-BTWC-BTN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
18
- <link rel="modulepreload" crossorigin href="/assets/url-Dd8Q7kZZ.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/url-D6jvVYIA.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DPHK1VkS.js">
20
- <link rel="modulepreload" crossorigin href="/assets/theme-store-CZOh1nT3.js">
21
- <link rel="modulepreload" crossorigin href="/assets/fetch-DRqwef_Q.js">
22
- <link rel="stylesheet" crossorigin href="/assets/index-a5gWIdZQ.css">
20
+ <link rel="modulepreload" crossorigin href="/assets/copy-SxMW6Xpc.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-BbRc5ugR.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/fetch-BaFNUtkE.js">
23
+ <link rel="stylesheet" crossorigin href="/assets/index-CqZzHNEg.css">
23
24
  </head>
24
25
  <body>
25
26
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.0.87";
2
+ var version = "0.0.88";
3
3
  //#endregion
4
4
  export { version };
5
5
 
@@ -1,14 +1,14 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
2
- import { applyConfigOverrides } from "../config/runtime-overrides.js";
1
+ import { createLogger } from "../utils/logger/index.js";
2
+ import { init_logger } from "../utils/logger.js";
3
3
  import { resolveStateDir } from "../config/paths-state.js";
4
4
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
5
5
  import { init_agent_scope, resolveAgentProfileDir } from "./agent-scope.js";
6
- import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
7
- import { createLogger } from "../utils/logger/index.js";
8
- import { init_logger } from "../utils/logger.js";
9
6
  import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
10
- import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
11
7
  import { CredentialResolver, init_credentials } from "../auth/credentials.js";
8
+ import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
9
+ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
10
+ import { applyConfigOverrides } from "../config/runtime-overrides.js";
11
+ import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
12
12
  import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
13
13
  import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
14
14
  import { extractTextContent, loadProfileMarkdownFiles } from "./context/workspace.js";
@@ -27,8 +27,8 @@ import { isUnderManagedSkillsDir } from "./skills/managed-store.js";
27
27
  import { MemoryPrefetchCoordinator } from "./memory/prefetch-coordinator.js";
28
28
  import { WorkspaceRuntimeRegistry } from "./workspace-runtime/registry.js";
29
29
  import { BackgroundReviewCoordinator } from "./background-review/coordinator.js";
30
- import { Agent } from "@earendil-works/pi-agent-core";
31
30
  import { basename, resolve, sep } from "node:path";
31
+ import { Agent } from "@earendil-works/pi-agent-core";
32
32
  //#region src/agent/agent-manager.ts
33
33
  /**
34
34
  * Agent Manager - Manages Agent instances per session
@@ -2,8 +2,8 @@ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
3
3
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
4
4
  import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "../config/workspace-defaults.js";
5
- import { basename, isAbsolute, join, relative, resolve } from "node:path";
6
5
  import fs from "node:fs";
6
+ import { basename, isAbsolute, join, relative, resolve } from "node:path";
7
7
  //#region src/agent/agent-scope.ts
8
8
  /**
9
9
  * Agent path and list resolution (config is the single source of truth).
@@ -1,7 +1,7 @@
1
1
  import { WORKSPACE_FILES, init_paths } from "../../config/paths.js";
2
2
  import { DEFAULT_AGENTS_FILENAME, DEFAULT_HEARTBEAT_FILENAME, DEFAULT_IDENTITY_FILENAME, DEFAULT_MEMORY_FILENAME, DEFAULT_SOUL_FILENAME, DEFAULT_TOOLS_FILENAME, DEFAULT_USER_FILENAME, stripFrontMatter } from "../context/workspace.js";
3
- import { join, resolve } from "node:path";
4
3
  import { existsSync, readFileSync } from "node:fs";
4
+ import { join, resolve } from "node:path";
5
5
  //#region src/agent/bootstrap/load-bootstrap-files.ts
6
6
  init_paths();
7
7
  const BOOTSTRAP_LOAD_ORDER = [
@@ -11,6 +11,19 @@ export interface BuildChildToolsOptions {
11
11
  getConfig: () => Config | undefined;
12
12
  toolExecutorConfig?: Partial<ToolExecutorConfig>;
13
13
  }
14
+ export interface DelegateChildProgressHooks {
15
+ mode: 'steps' | 'full';
16
+ onProgress: (event: {
17
+ type: 'tool_start' | 'tool_end' | 'iteration' | 'text_delta' | 'thinking_delta';
18
+ toolCallId?: string;
19
+ toolName?: string;
20
+ args?: Record<string, unknown>;
21
+ isError?: boolean;
22
+ count?: number;
23
+ max?: number;
24
+ delta?: string;
25
+ }) => void;
26
+ }
14
27
  export interface DelegateChildHandleOptions {
15
28
  workspace: string;
16
29
  goal: string;
@@ -27,6 +40,8 @@ export interface DelegateChildHandleOptions {
27
40
  * factory ↔ delegate-tool ↔ child-agent-factory cycle).
28
41
  */
29
42
  buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];
43
+ /** Optional live progress for workflow subagents. */
44
+ progressHooks?: DelegateChildProgressHooks;
30
45
  }
31
46
  export interface DelegateChildRunResult {
32
47
  summary: string;
@@ -46,6 +46,7 @@ function createDelegateChildHandle(options) {
46
46
  };
47
47
  let toolIterations = 0;
48
48
  let aborted = false;
49
+ const progress = options.progressHooks;
49
50
  const agent = new Agent({
50
51
  initialState: {
51
52
  systemPrompt: buildChildSystemPrompt(options.goal, options.context, options.workspace),
@@ -56,7 +57,7 @@ function createDelegateChildHandle(options) {
56
57
  },
57
58
  streamFn: createExtensionAwareStreamFn(),
58
59
  getApiKey: (provider) => resolveProviderApiKeySync(provider) ?? getApiKeySync(provider) ?? "",
59
- beforeToolCall: async () => {
60
+ beforeToolCall: async ({ toolCall, args }) => {
60
61
  if (aborted) return {
61
62
  block: true,
62
63
  reason: "Sub-agent aborted."
@@ -65,9 +66,26 @@ function createDelegateChildHandle(options) {
65
66
  block: true,
66
67
  reason: `Sub-agent reached max tool iterations (${options.maxIterations}).`
67
68
  };
69
+ progress?.onProgress({
70
+ type: "tool_start",
71
+ toolCallId: toolCall.id,
72
+ toolName: toolCall.name,
73
+ args: args ?? {}
74
+ });
68
75
  },
69
- afterToolCall: async () => {
76
+ afterToolCall: async ({ toolCall, isError }) => {
70
77
  toolIterations += 1;
78
+ progress?.onProgress({
79
+ type: "iteration",
80
+ count: toolIterations,
81
+ max: options.maxIterations
82
+ });
83
+ progress?.onProgress({
84
+ type: "tool_end",
85
+ toolCallId: toolCall.id,
86
+ toolName: toolCall.name,
87
+ isError: Boolean(isError)
88
+ });
71
89
  }
72
90
  });
73
91
  const userText = options.context?.trim() ? `${options.goal}\n\nAdditional context:\n${options.context.trim()}` : options.goal;
@@ -75,6 +93,19 @@ function createDelegateChildHandle(options) {
75
93
  async run() {
76
94
  toolIterations = 0;
77
95
  aborted = false;
96
+ const unsub = progress?.mode === "full" ? agent.subscribe((ev) => {
97
+ if (ev.type === "message_update") {
98
+ const delta = ev.assistantMessageEvent;
99
+ if (delta?.type === "text_delta" && typeof delta.delta === "string" && delta.delta) progress.onProgress({
100
+ type: "text_delta",
101
+ delta: delta.delta
102
+ });
103
+ if (delta?.type === "thinking_delta" && typeof delta.delta === "string" && delta.delta) progress.onProgress({
104
+ type: "thinking_delta",
105
+ delta: delta.delta
106
+ });
107
+ }
108
+ }) : void 0;
78
109
  try {
79
110
  await runAgentTurnWithTimeout(agent, async () => {
80
111
  await agent.prompt(userText);
@@ -115,6 +146,8 @@ function createDelegateChildHandle(options) {
115
146
  summary: `Sub-agent error: ${msg}`,
116
147
  toolIterations
117
148
  };
149
+ } finally {
150
+ unsub?.();
118
151
  }
119
152
  },
120
153
  abort() {
@@ -1 +1 @@
1
- {"version":3,"file":"child-agent-factory.js","names":[],"sources":["../../../src/agent/child-agent-factory.ts"],"sourcesContent":["import { Agent, type ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../config/schema.js';\nimport type { MessageBus } from '../infra/bus/index.js';\nimport { resolveProviderApiKeySync } from '../auth/sync-provider-auth.js';\nimport { getApiKeySync } from '../providers/index.js';\nimport { createExtensionAwareStreamFn } from '../providers/extension-stream-bridge.js';\nimport { createLogger } from '../utils/logger.js';\n\nimport { extractTextContent } from './context/workspace.js';\nimport {\n resolveAgentTurnTimeoutMs,\n runAgentTurnWithTimeout,\n} from './orchestration/run-agent-turn-with-timeout.js';\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ToolExecutorConfig } from './tools/executor.js';\n// `AgentToolsFactory` is NOT imported here on purpose — `tools/factory.js`\n// constructs the delegate tool, which would create a factory ↔ delegate-tool\n// ↔ child-agent-factory cycle. Instead, the caller supplies a\n// `buildChildTools()` callback that produces the already-constructed child\n// tool set (see `DelegateChildHandleOptions.buildChildTools`).\n\nconst log = createLogger('delegate-child');\n\nexport function buildChildSystemPrompt(goal: string, context?: string, workspace?: string): string {\n const parts = [\n 'You are a focused sub-agent working on a specific delegated task.',\n '',\n `YOUR TASK:\\n${goal}`,\n ];\n\n if (context?.trim()) {\n parts.push(`\\nCONTEXT:\\n${context.trim()}`);\n }\n\n if (workspace?.trim()) {\n parts.push(`\\nWORKSPACE: ${workspace.trim()}`);\n }\n\n parts.push(\n '\\nComplete this task using only the tools available to you. ' +\n 'When finished, reply with a clear, concise summary covering:\\n' +\n '- What you did\\n' +\n '- What you found or accomplished\\n' +\n '- Files created or modified\\n' +\n '- Issues encountered\\n\\n' +\n 'Your final reply is returned to the parent agent — be thorough but compact.',\n );\n\n return parts.join('\\n');\n}\n\nexport interface BuildChildToolsOptions {\n workspace: string;\n bus: MessageBus;\n model: Model<Api>;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n}\n\nexport interface DelegateChildHandleOptions {\n workspace: string;\n goal: string;\n context?: string;\n allowedToolNames: string[];\n maxIterations: number;\n model: Model<Api>;\n bus: MessageBus;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n /**\n * Construct the child agent's tool set. Injected by the caller (delegate-tool)\n * so this module does not import `tools/factory.js` (which would form a\n * factory ↔ delegate-tool ↔ child-agent-factory cycle).\n */\n buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];\n}\n\nexport interface DelegateChildRunResult {\n summary: string;\n toolIterations: number;\n}\n\nexport interface DelegateChildHandle {\n run(): Promise<DelegateChildRunResult>;\n abort(): void;\n}\n\n/**\n * Build an isolated tool factory (no extensions, no session memory hooks) and a child {@link Agent}.\n */\nexport function createDelegateChildHandle(options: DelegateChildHandleOptions): DelegateChildHandle {\n const allTools = options.buildChildTools({\n workspace: options.workspace,\n bus: options.bus,\n model: options.model,\n getConfig: options.getConfig,\n toolExecutorConfig: options.toolExecutorConfig,\n });\n\n const allow = new Set(options.allowedToolNames);\n const filteredTools = allTools.filter((t) => allow.has(t.name));\n\n if (filteredTools.length === 0) {\n return {\n async run() {\n return {\n summary: 'No tools matched the allowlist after factory registration.',\n toolIterations: 0,\n };\n },\n abort() {},\n };\n }\n\n let toolIterations = 0;\n let aborted = false;\n\n const agent = new Agent({\n initialState: {\n systemPrompt: buildChildSystemPrompt(options.goal, options.context, options.workspace),\n model: options.model,\n thinkingLevel: 'low' as ThinkingLevel,\n tools: filteredTools,\n messages: [],\n },\n streamFn: createExtensionAwareStreamFn(),\n getApiKey: (provider: string) =>\n resolveProviderApiKeySync(provider) ?? getApiKeySync(provider) ?? '',\n beforeToolCall: async () => {\n if (aborted) {\n return { block: true, reason: 'Sub-agent aborted.' };\n }\n if (toolIterations >= options.maxIterations) {\n return {\n block: true,\n reason: `Sub-agent reached max tool iterations (${options.maxIterations}).`,\n };\n }\n return undefined;\n },\n afterToolCall: async () => {\n toolIterations += 1;\n return undefined;\n },\n });\n\n const userText = options.context?.trim()\n ? `${options.goal}\\n\\nAdditional context:\\n${options.context.trim()}`\n : options.goal;\n\n return {\n async run(): Promise<DelegateChildRunResult> {\n toolIterations = 0;\n aborted = false;\n try {\n await runAgentTurnWithTimeout(\n agent,\n async () => {\n await agent.prompt(userText);\n await agent.waitForIdle();\n },\n resolveAgentTurnTimeoutMs(options.getConfig()),\n );\n\n const messages = agent.state.messages;\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i];\n if (msg.role === 'assistant') {\n const content: unknown = msg.content;\n if (typeof content === 'string') {\n return { summary: content.trim() || '(empty assistant message)', toolIterations };\n }\n if (Array.isArray(content)) {\n const text = extractTextContent(content as Array<{ type: string; text?: string }>);\n return {\n summary: text.trim() || '(empty assistant message)',\n toolIterations,\n };\n }\n }\n }\n\n return {\n summary: aborted\n ? 'Sub-agent was aborted before producing a result.'\n : 'Sub-agent completed but produced no assistant text.',\n toolIterations,\n };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const m = options.model as { model?: string; id?: string };\n const modelId = m?.model ?? m?.id;\n log.warn(\n {\n err: e,\n errorMessage: msg,\n goalPreview: options.goal.slice(0, 120),\n maxIterations: options.maxIterations,\n allowedToolCount: options.allowedToolNames.length,\n modelId,\n },\n `Delegate child run failed: ${msg}`,\n );\n return {\n summary: `Sub-agent error: ${msg}`,\n toolIterations,\n };\n }\n },\n\n abort(): void {\n aborted = true;\n agent.abort();\n },\n };\n}\n"],"mappings":";;;;;;;;;yBAK0E;gBACpB;aAEJ;AAelD,MAAM,MAAM,aAAa,iBAAiB;AAE1C,SAAgB,uBAAuB,MAAc,SAAkB,WAA4B;CACjG,MAAM,QAAQ;EACZ;EACA;EACA,eAAe;EAChB;AAED,KAAI,SAAS,MAAM,CACjB,OAAM,KAAK,eAAe,QAAQ,MAAM,GAAG;AAG7C,KAAI,WAAW,MAAM,CACnB,OAAM,KAAK,gBAAgB,UAAU,MAAM,GAAG;AAGhD,OAAM,KACJ,+SAOD;AAED,QAAO,MAAM,KAAK,KAAK;;;;;AA0CzB,SAAgB,0BAA0B,SAA0D;CAClG,MAAM,WAAW,QAAQ,gBAAgB;EACvC,WAAW,QAAQ;EACnB,KAAK,QAAQ;EACb,OAAO,QAAQ;EACf,WAAW,QAAQ;EACnB,oBAAoB,QAAQ;EAC7B,CAAC;CAEF,MAAM,QAAQ,IAAI,IAAI,QAAQ,iBAAiB;CAC/C,MAAM,gBAAgB,SAAS,QAAQ,MAAM,MAAM,IAAI,EAAE,KAAK,CAAC;AAE/D,KAAI,cAAc,WAAW,EAC3B,QAAO;EACL,MAAM,MAAM;AACV,UAAO;IACL,SAAS;IACT,gBAAgB;IACjB;;EAEH,QAAQ;EACT;CAGH,IAAI,iBAAiB;CACrB,IAAI,UAAU;CAEd,MAAM,QAAQ,IAAI,MAAM;EACtB,cAAc;GACZ,cAAc,uBAAuB,QAAQ,MAAM,QAAQ,SAAS,QAAQ,UAAU;GACtF,OAAO,QAAQ;GACf,eAAe;GACf,OAAO;GACP,UAAU,EAAE;GACb;EACD,UAAU,8BAA8B;EACxC,YAAY,aACV,0BAA0B,SAAS,IAAI,cAAc,SAAS,IAAI;EACpE,gBAAgB,YAAY;AAC1B,OAAI,QACF,QAAO;IAAE,OAAO;IAAM,QAAQ;IAAsB;AAEtD,OAAI,kBAAkB,QAAQ,cAC5B,QAAO;IACL,OAAO;IACP,QAAQ,0CAA0C,QAAQ,cAAc;IACzE;;EAIL,eAAe,YAAY;AACzB,qBAAkB;;EAGrB,CAAC;CAEF,MAAM,WAAW,QAAQ,SAAS,MAAM,GACpC,GAAG,QAAQ,KAAK,2BAA2B,QAAQ,QAAQ,MAAM,KACjE,QAAQ;AAEZ,QAAO;EACL,MAAM,MAAuC;AAC3C,oBAAiB;AACjB,aAAU;AACV,OAAI;AACF,UAAM,wBACJ,OACA,YAAY;AACV,WAAM,MAAM,OAAO,SAAS;AAC5B,WAAM,MAAM,aAAa;OAE3B,0BAA0B,QAAQ,WAAW,CAAC,CAC/C;IAED,MAAM,WAAW,MAAM,MAAM;AAC7B,SAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;KAC7C,MAAM,MAAM,SAAS;AACrB,SAAI,IAAI,SAAS,aAAa;MAC5B,MAAM,UAAmB,IAAI;AAC7B,UAAI,OAAO,YAAY,SACrB,QAAO;OAAE,SAAS,QAAQ,MAAM,IAAI;OAA6B;OAAgB;AAEnF,UAAI,MAAM,QAAQ,QAAQ,CAExB,QAAO;OACL,SAFW,mBAAmB,QAEjB,CAAC,MAAM,IAAI;OACxB;OACD;;;AAKP,WAAO;KACL,SAAS,UACL,qDACA;KACJ;KACD;YACM,GAAG;IACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;IACtD,MAAM,IAAI,QAAQ;IAClB,MAAM,UAAU,GAAG,SAAS,GAAG;AAC/B,QAAI,KACF;KACE,KAAK;KACL,cAAc;KACd,aAAa,QAAQ,KAAK,MAAM,GAAG,IAAI;KACvC,eAAe,QAAQ;KACvB,kBAAkB,QAAQ,iBAAiB;KAC3C;KACD,EACD,8BAA8B,MAC/B;AACD,WAAO;KACL,SAAS,oBAAoB;KAC7B;KACD;;;EAIL,QAAc;AACZ,aAAU;AACV,SAAM,OAAO;;EAEhB"}
1
+ {"version":3,"file":"child-agent-factory.js","names":["u"],"sources":["../../../src/agent/child-agent-factory.ts"],"sourcesContent":["import { Agent, type AgentEvent, type ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../config/schema.js';\nimport type { MessageBus } from '../infra/bus/index.js';\nimport { resolveProviderApiKeySync } from '../auth/sync-provider-auth.js';\nimport { getApiKeySync } from '../providers/index.js';\nimport { createExtensionAwareStreamFn } from '../providers/extension-stream-bridge.js';\nimport { createLogger } from '../utils/logger.js';\n\nimport { extractTextContent } from './context/workspace.js';\nimport {\n resolveAgentTurnTimeoutMs,\n runAgentTurnWithTimeout,\n} from './orchestration/run-agent-turn-with-timeout.js';\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ToolExecutorConfig } from './tools/executor.js';\n// `AgentToolsFactory` is NOT imported here on purpose — `tools/factory.js`\n// constructs the delegate tool, which would create a factory ↔ delegate-tool\n// ↔ child-agent-factory cycle. Instead, the caller supplies a\n// `buildChildTools()` callback that produces the already-constructed child\n// tool set (see `DelegateChildHandleOptions.buildChildTools`).\n\nconst log = createLogger('delegate-child');\n\nexport function buildChildSystemPrompt(goal: string, context?: string, workspace?: string): string {\n const parts = [\n 'You are a focused sub-agent working on a specific delegated task.',\n '',\n `YOUR TASK:\\n${goal}`,\n ];\n\n if (context?.trim()) {\n parts.push(`\\nCONTEXT:\\n${context.trim()}`);\n }\n\n if (workspace?.trim()) {\n parts.push(`\\nWORKSPACE: ${workspace.trim()}`);\n }\n\n parts.push(\n '\\nComplete this task using only the tools available to you. ' +\n 'When finished, reply with a clear, concise summary covering:\\n' +\n '- What you did\\n' +\n '- What you found or accomplished\\n' +\n '- Files created or modified\\n' +\n '- Issues encountered\\n\\n' +\n 'Your final reply is returned to the parent agent — be thorough but compact.',\n );\n\n return parts.join('\\n');\n}\n\nexport interface BuildChildToolsOptions {\n workspace: string;\n bus: MessageBus;\n model: Model<Api>;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n}\n\nexport interface DelegateChildProgressHooks {\n mode: 'steps' | 'full';\n onProgress: (event: {\n type: 'tool_start' | 'tool_end' | 'iteration' | 'text_delta' | 'thinking_delta';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n isError?: boolean;\n count?: number;\n max?: number;\n delta?: string;\n }) => void;\n}\n\nexport interface DelegateChildHandleOptions {\n workspace: string;\n goal: string;\n context?: string;\n allowedToolNames: string[];\n maxIterations: number;\n model: Model<Api>;\n bus: MessageBus;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n /**\n * Construct the child agent's tool set. Injected by the caller (delegate-tool)\n * so this module does not import `tools/factory.js` (which would form a\n * factory ↔ delegate-tool ↔ child-agent-factory cycle).\n */\n buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];\n /** Optional live progress for workflow subagents. */\n progressHooks?: DelegateChildProgressHooks;\n}\n\nexport interface DelegateChildRunResult {\n summary: string;\n toolIterations: number;\n}\n\nexport interface DelegateChildHandle {\n run(): Promise<DelegateChildRunResult>;\n abort(): void;\n}\n\n/**\n * Build an isolated tool factory (no extensions, no session memory hooks) and a child {@link Agent}.\n */\nexport function createDelegateChildHandle(options: DelegateChildHandleOptions): DelegateChildHandle {\n const allTools = options.buildChildTools({\n workspace: options.workspace,\n bus: options.bus,\n model: options.model,\n getConfig: options.getConfig,\n toolExecutorConfig: options.toolExecutorConfig,\n });\n\n const allow = new Set(options.allowedToolNames);\n const filteredTools = allTools.filter((t) => allow.has(t.name));\n\n if (filteredTools.length === 0) {\n return {\n async run() {\n return {\n summary: 'No tools matched the allowlist after factory registration.',\n toolIterations: 0,\n };\n },\n abort() {},\n };\n }\n\n let toolIterations = 0;\n let aborted = false;\n const progress = options.progressHooks;\n\n const agent = new Agent({\n initialState: {\n systemPrompt: buildChildSystemPrompt(options.goal, options.context, options.workspace),\n model: options.model,\n thinkingLevel: 'low' as ThinkingLevel,\n tools: filteredTools,\n messages: [],\n },\n streamFn: createExtensionAwareStreamFn(),\n getApiKey: (provider: string) =>\n resolveProviderApiKeySync(provider) ?? getApiKeySync(provider) ?? '',\n beforeToolCall: async ({ toolCall, args }) => {\n if (aborted) {\n return { block: true, reason: 'Sub-agent aborted.' };\n }\n if (toolIterations >= options.maxIterations) {\n return {\n block: true,\n reason: `Sub-agent reached max tool iterations (${options.maxIterations}).`,\n };\n }\n progress?.onProgress({\n type: 'tool_start',\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n args: (args ?? {}) as Record<string, unknown>,\n });\n return undefined;\n },\n afterToolCall: async ({ toolCall, isError }) => {\n toolIterations += 1;\n progress?.onProgress({\n type: 'iteration',\n count: toolIterations,\n max: options.maxIterations,\n });\n progress?.onProgress({\n type: 'tool_end',\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n isError: Boolean(isError),\n });\n return undefined;\n },\n });\n\n const userText = options.context?.trim()\n ? `${options.goal}\\n\\nAdditional context:\\n${options.context.trim()}`\n : options.goal;\n\n return {\n async run(): Promise<DelegateChildRunResult> {\n toolIterations = 0;\n aborted = false;\n const unsub =\n progress?.mode === 'full'\n ? agent.subscribe((ev: AgentEvent) => {\n if (ev.type === 'message_update') {\n const u = ev as Extract<AgentEvent, { type: 'message_update' }>;\n const delta = u.assistantMessageEvent;\n if (delta?.type === 'text_delta' && typeof delta.delta === 'string' && delta.delta) {\n progress.onProgress({ type: 'text_delta', delta: delta.delta });\n }\n if (delta?.type === 'thinking_delta' && typeof delta.delta === 'string' && delta.delta) {\n progress.onProgress({ type: 'thinking_delta', delta: delta.delta });\n }\n }\n })\n : undefined;\n try {\n await runAgentTurnWithTimeout(\n agent,\n async () => {\n await agent.prompt(userText);\n await agent.waitForIdle();\n },\n resolveAgentTurnTimeoutMs(options.getConfig()),\n );\n\n const messages = agent.state.messages;\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i];\n if (msg.role === 'assistant') {\n const content: unknown = msg.content;\n if (typeof content === 'string') {\n return { summary: content.trim() || '(empty assistant message)', toolIterations };\n }\n if (Array.isArray(content)) {\n const text = extractTextContent(content as Array<{ type: string; text?: string }>);\n return {\n summary: text.trim() || '(empty assistant message)',\n toolIterations,\n };\n }\n }\n }\n\n return {\n summary: aborted\n ? 'Sub-agent was aborted before producing a result.'\n : 'Sub-agent completed but produced no assistant text.',\n toolIterations,\n };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const m = options.model as { model?: string; id?: string };\n const modelId = m?.model ?? m?.id;\n log.warn(\n {\n err: e,\n errorMessage: msg,\n goalPreview: options.goal.slice(0, 120),\n maxIterations: options.maxIterations,\n allowedToolCount: options.allowedToolNames.length,\n modelId,\n },\n `Delegate child run failed: ${msg}`,\n );\n return {\n summary: `Sub-agent error: ${msg}`,\n toolIterations,\n };\n } finally {\n unsub?.();\n }\n },\n\n abort(): void {\n aborted = true;\n agent.abort();\n },\n };\n}\n"],"mappings":";;;;;;;;;yBAK0E;gBACpB;aAEJ;AAelD,MAAM,MAAM,aAAa,iBAAiB;AAE1C,SAAgB,uBAAuB,MAAc,SAAkB,WAA4B;CACjG,MAAM,QAAQ;EACZ;EACA;EACA,eAAe;EAChB;AAED,KAAI,SAAS,MAAM,CACjB,OAAM,KAAK,eAAe,QAAQ,MAAM,GAAG;AAG7C,KAAI,WAAW,MAAM,CACnB,OAAM,KAAK,gBAAgB,UAAU,MAAM,GAAG;AAGhD,OAAM,KACJ,+SAOD;AAED,QAAO,MAAM,KAAK,KAAK;;;;;AA0DzB,SAAgB,0BAA0B,SAA0D;CAClG,MAAM,WAAW,QAAQ,gBAAgB;EACvC,WAAW,QAAQ;EACnB,KAAK,QAAQ;EACb,OAAO,QAAQ;EACf,WAAW,QAAQ;EACnB,oBAAoB,QAAQ;EAC7B,CAAC;CAEF,MAAM,QAAQ,IAAI,IAAI,QAAQ,iBAAiB;CAC/C,MAAM,gBAAgB,SAAS,QAAQ,MAAM,MAAM,IAAI,EAAE,KAAK,CAAC;AAE/D,KAAI,cAAc,WAAW,EAC3B,QAAO;EACL,MAAM,MAAM;AACV,UAAO;IACL,SAAS;IACT,gBAAgB;IACjB;;EAEH,QAAQ;EACT;CAGH,IAAI,iBAAiB;CACrB,IAAI,UAAU;CACd,MAAM,WAAW,QAAQ;CAEzB,MAAM,QAAQ,IAAI,MAAM;EACtB,cAAc;GACZ,cAAc,uBAAuB,QAAQ,MAAM,QAAQ,SAAS,QAAQ,UAAU;GACtF,OAAO,QAAQ;GACf,eAAe;GACf,OAAO;GACP,UAAU,EAAE;GACb;EACD,UAAU,8BAA8B;EACxC,YAAY,aACV,0BAA0B,SAAS,IAAI,cAAc,SAAS,IAAI;EACpE,gBAAgB,OAAO,EAAE,UAAU,WAAW;AAC5C,OAAI,QACF,QAAO;IAAE,OAAO;IAAM,QAAQ;IAAsB;AAEtD,OAAI,kBAAkB,QAAQ,cAC5B,QAAO;IACL,OAAO;IACP,QAAQ,0CAA0C,QAAQ,cAAc;IACzE;AAEH,aAAU,WAAW;IACnB,MAAM;IACN,YAAY,SAAS;IACrB,UAAU,SAAS;IACnB,MAAO,QAAQ,EAAE;IAClB,CAAC;;EAGJ,eAAe,OAAO,EAAE,UAAU,cAAc;AAC9C,qBAAkB;AAClB,aAAU,WAAW;IACnB,MAAM;IACN,OAAO;IACP,KAAK,QAAQ;IACd,CAAC;AACF,aAAU,WAAW;IACnB,MAAM;IACN,YAAY,SAAS;IACrB,UAAU,SAAS;IACnB,SAAS,QAAQ,QAAQ;IAC1B,CAAC;;EAGL,CAAC;CAEF,MAAM,WAAW,QAAQ,SAAS,MAAM,GACpC,GAAG,QAAQ,KAAK,2BAA2B,QAAQ,QAAQ,MAAM,KACjE,QAAQ;AAEZ,QAAO;EACL,MAAM,MAAuC;AAC3C,oBAAiB;AACjB,aAAU;GACV,MAAM,QACJ,UAAU,SAAS,SACf,MAAM,WAAW,OAAmB;AAClC,QAAI,GAAG,SAAS,kBAAkB;KAEhC,MAAM,QAAQA,GAAE;AAChB,SAAI,OAAO,SAAS,gBAAgB,OAAO,MAAM,UAAU,YAAY,MAAM,MAC3E,UAAS,WAAW;MAAE,MAAM;MAAc,OAAO,MAAM;MAAO,CAAC;AAEjE,SAAI,OAAO,SAAS,oBAAoB,OAAO,MAAM,UAAU,YAAY,MAAM,MAC/E,UAAS,WAAW;MAAE,MAAM;MAAkB,OAAO,MAAM;MAAO,CAAC;;KAGvE,GACF,KAAA;AACN,OAAI;AACF,UAAM,wBACJ,OACA,YAAY;AACV,WAAM,MAAM,OAAO,SAAS;AAC5B,WAAM,MAAM,aAAa;OAE3B,0BAA0B,QAAQ,WAAW,CAAC,CAC/C;IAED,MAAM,WAAW,MAAM,MAAM;AAC7B,SAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;KAC7C,MAAM,MAAM,SAAS;AACrB,SAAI,IAAI,SAAS,aAAa;MAC5B,MAAM,UAAmB,IAAI;AAC7B,UAAI,OAAO,YAAY,SACrB,QAAO;OAAE,SAAS,QAAQ,MAAM,IAAI;OAA6B;OAAgB;AAEnF,UAAI,MAAM,QAAQ,QAAQ,CAExB,QAAO;OACL,SAFW,mBAAmB,QAEjB,CAAC,MAAM,IAAI;OACxB;OACD;;;AAKP,WAAO;KACL,SAAS,UACL,qDACA;KACJ;KACD;YACM,GAAG;IACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;IACtD,MAAM,IAAI,QAAQ;IAClB,MAAM,UAAU,GAAG,SAAS,GAAG;AAC/B,QAAI,KACF;KACE,KAAK;KACL,cAAc;KACd,aAAa,QAAQ,KAAK,MAAM,GAAG,IAAI;KACvC,eAAe,QAAQ;KACvB,kBAAkB,QAAQ,iBAAiB;KAC3C;KACD,EACD,8BAA8B,MAC/B;AACD,WAAO;KACL,SAAS,oBAAoB;KAC7B;KACD;aACO;AACR,aAAS;;;EAIb,QAAc;AACZ,aAAU;AACV,SAAM,OAAO;;EAEhB"}
@@ -0,0 +1,20 @@
1
+ export type AgentRunErrorKind = 'provider_setup_required' | 'provider_auth_invalid' | 'rate_limit' | 'timeout' | 'billing' | 'unknown';
2
+ export type AgentRunErrorPayload = {
3
+ kind: AgentRunErrorKind;
4
+ code: string;
5
+ provider?: string;
6
+ modelRef?: string;
7
+ deepLink?: string;
8
+ message: string;
9
+ };
10
+ /**
11
+ * Map a raw agent/LLM error into a structured JSON payload the web UI can render
12
+ * as an actionable, i18n-friendly card. Falls back to plain `Error: <raw>` when
13
+ * the input is already a legacy gateway string.
14
+ */
15
+ export declare function formatAgentRunErrorForClient(rawError: string, context?: {
16
+ provider?: string;
17
+ modelRef?: string;
18
+ }): string;
19
+ /** Human-readable text for TUI/CLI when SSE carries structured JSON. */
20
+ export declare function formatAgentRunErrorForDisplay(content: string): string;
@@ -0,0 +1,97 @@
1
+ import { classifyFailoverReason, isAuthErrorMessage } from "./fallback/reason.js";
2
+ //#region src/agent/client-error-format.ts
3
+ const API_KEY_MISSING_RE = /^No API key found for (\S+)/i;
4
+ function reasonToKind(reason) {
5
+ switch (reason) {
6
+ case "auth": return "provider_auth_invalid";
7
+ case "rate_limit": return "rate_limit";
8
+ case "timeout": return "timeout";
9
+ case "billing": return "billing";
10
+ default: return "unknown";
11
+ }
12
+ }
13
+ function reasonToCode(reason) {
14
+ switch (reason) {
15
+ case "auth": return "provider_auth_invalid";
16
+ case "rate_limit": return "rate_limit";
17
+ case "timeout": return "timeout";
18
+ case "billing": return "billing";
19
+ case "format": return "format";
20
+ default: return "unknown";
21
+ }
22
+ }
23
+ function providerDeepLink(kind) {
24
+ if (kind === "provider_setup_required" || kind === "provider_auth_invalid") return "/settings/credentials";
25
+ }
26
+ function tryParseStructuredPayload(text) {
27
+ if (!text.startsWith("{")) return null;
28
+ try {
29
+ const parsed = JSON.parse(text);
30
+ if (typeof parsed.kind !== "string" || typeof parsed.message !== "string") return null;
31
+ return {
32
+ kind: parsed.kind,
33
+ code: typeof parsed.code === "string" ? parsed.code : parsed.kind,
34
+ provider: typeof parsed.provider === "string" ? parsed.provider : void 0,
35
+ modelRef: typeof parsed.modelRef === "string" ? parsed.modelRef : void 0,
36
+ deepLink: typeof parsed.deepLink === "string" ? parsed.deepLink : void 0,
37
+ message: parsed.message
38
+ };
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * Map a raw agent/LLM error into a structured JSON payload the web UI can render
45
+ * as an actionable, i18n-friendly card. Falls back to plain `Error: <raw>` when
46
+ * the input is already a legacy gateway string.
47
+ */
48
+ function formatAgentRunErrorForClient(rawError, context) {
49
+ const trimmed = rawError.trim();
50
+ if (!trimmed) return JSON.stringify({
51
+ kind: "unknown",
52
+ code: "unknown",
53
+ message: "Assistant turn failed"
54
+ });
55
+ const existing = tryParseStructuredPayload(trimmed);
56
+ if (existing) return JSON.stringify(existing);
57
+ const missingMatch = API_KEY_MISSING_RE.exec(trimmed);
58
+ if (missingMatch) {
59
+ const provider = missingMatch[1].replace(/\.$/, "");
60
+ return JSON.stringify({
61
+ kind: "provider_setup_required",
62
+ code: "provider_setup_required",
63
+ provider,
64
+ deepLink: "/settings/credentials",
65
+ message: trimmed
66
+ });
67
+ }
68
+ const reason = classifyFailoverReason(trimmed);
69
+ const kind = reasonToKind(reason);
70
+ const payload = {
71
+ kind,
72
+ code: reasonToCode(reason),
73
+ message: trimmed,
74
+ ...context?.provider ? { provider: context.provider } : {},
75
+ ...context?.modelRef ? { modelRef: context.modelRef } : {}
76
+ };
77
+ const deepLink = providerDeepLink(kind);
78
+ if (deepLink) payload.deepLink = deepLink;
79
+ if (kind === "unknown" && isAuthErrorMessage(trimmed)) {
80
+ payload.kind = "provider_auth_invalid";
81
+ payload.code = "provider_auth_invalid";
82
+ payload.deepLink = "/settings/credentials";
83
+ }
84
+ return JSON.stringify(payload);
85
+ }
86
+ /** Human-readable text for TUI/CLI when SSE carries structured JSON. */
87
+ function formatAgentRunErrorForDisplay(content) {
88
+ const trimmed = content.trim();
89
+ if (trimmed.startsWith("Error: ")) return trimmed.slice(7);
90
+ const parsed = tryParseStructuredPayload(trimmed);
91
+ if (parsed?.message) return parsed.message;
92
+ return trimmed;
93
+ }
94
+ //#endregion
95
+ export { formatAgentRunErrorForClient, formatAgentRunErrorForDisplay };
96
+
97
+ //# sourceMappingURL=client-error-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-error-format.js","names":[],"sources":["../../../src/agent/client-error-format.ts"],"sourcesContent":["import {\n classifyFailoverReason,\n isAuthErrorMessage,\n type FailoverReason,\n} from './fallback/reason.js';\n\nexport type AgentRunErrorKind =\n | 'provider_setup_required'\n | 'provider_auth_invalid'\n | 'rate_limit'\n | 'timeout'\n | 'billing'\n | 'unknown';\n\nexport type AgentRunErrorPayload = {\n kind: AgentRunErrorKind;\n code: string;\n provider?: string;\n modelRef?: string;\n deepLink?: string;\n message: string;\n};\n\nconst API_KEY_MISSING_RE = /^No API key found for (\\S+)/i;\n\nfunction reasonToKind(reason: FailoverReason): AgentRunErrorKind {\n switch (reason) {\n case 'auth':\n return 'provider_auth_invalid';\n case 'rate_limit':\n return 'rate_limit';\n case 'timeout':\n return 'timeout';\n case 'billing':\n return 'billing';\n default:\n return 'unknown';\n }\n}\n\nfunction reasonToCode(reason: FailoverReason): string {\n switch (reason) {\n case 'auth':\n return 'provider_auth_invalid';\n case 'rate_limit':\n return 'rate_limit';\n case 'timeout':\n return 'timeout';\n case 'billing':\n return 'billing';\n case 'format':\n return 'format';\n default:\n return 'unknown';\n }\n}\n\nfunction providerDeepLink(kind: AgentRunErrorKind): string | undefined {\n if (kind === 'provider_setup_required' || kind === 'provider_auth_invalid') {\n return '/settings/credentials';\n }\n return undefined;\n}\n\nfunction tryParseStructuredPayload(text: string): AgentRunErrorPayload | null {\n if (!text.startsWith('{')) return null;\n try {\n const parsed = JSON.parse(text) as Record<string, unknown>;\n if (typeof parsed.kind !== 'string' || typeof parsed.message !== 'string') return null;\n return {\n kind: parsed.kind as AgentRunErrorKind,\n code: typeof parsed.code === 'string' ? parsed.code : parsed.kind,\n provider: typeof parsed.provider === 'string' ? parsed.provider : undefined,\n modelRef: typeof parsed.modelRef === 'string' ? parsed.modelRef : undefined,\n deepLink: typeof parsed.deepLink === 'string' ? parsed.deepLink : undefined,\n message: parsed.message,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Map a raw agent/LLM error into a structured JSON payload the web UI can render\n * as an actionable, i18n-friendly card. Falls back to plain `Error: <raw>` when\n * the input is already a legacy gateway string.\n */\nexport function formatAgentRunErrorForClient(\n rawError: string,\n context?: { provider?: string; modelRef?: string },\n): string {\n const trimmed = rawError.trim();\n if (!trimmed) {\n return JSON.stringify({\n kind: 'unknown',\n code: 'unknown',\n message: 'Assistant turn failed',\n } satisfies AgentRunErrorPayload);\n }\n\n const existing = tryParseStructuredPayload(trimmed);\n if (existing) return JSON.stringify(existing);\n\n const missingMatch = API_KEY_MISSING_RE.exec(trimmed);\n if (missingMatch) {\n const provider = missingMatch[1].replace(/\\.$/, '');\n return JSON.stringify({\n kind: 'provider_setup_required',\n code: 'provider_setup_required',\n provider,\n deepLink: '/settings/credentials',\n message: trimmed,\n } satisfies AgentRunErrorPayload);\n }\n\n const reason = classifyFailoverReason(trimmed);\n const kind = reasonToKind(reason);\n const payload: AgentRunErrorPayload = {\n kind,\n code: reasonToCode(reason),\n message: trimmed,\n ...(context?.provider ? { provider: context.provider } : {}),\n ...(context?.modelRef ? { modelRef: context.modelRef } : {}),\n };\n\n const deepLink = providerDeepLink(kind);\n if (deepLink) payload.deepLink = deepLink;\n\n // Auth heuristics that classifyFailoverReason may miss (e.g. \"Authentication Fails\")\n if (kind === 'unknown' && isAuthErrorMessage(trimmed)) {\n payload.kind = 'provider_auth_invalid';\n payload.code = 'provider_auth_invalid';\n payload.deepLink = '/settings/credentials';\n }\n\n return JSON.stringify(payload);\n}\n\n/** Human-readable text for TUI/CLI when SSE carries structured JSON. */\nexport function formatAgentRunErrorForDisplay(content: string): string {\n const trimmed = content.trim();\n if (trimmed.startsWith('Error: ')) return trimmed.slice('Error: '.length);\n\n const parsed = tryParseStructuredPayload(trimmed);\n if (parsed?.message) return parsed.message;\n\n return trimmed;\n}\n"],"mappings":";;AAuBA,MAAM,qBAAqB;AAE3B,SAAS,aAAa,QAA2C;AAC/D,SAAQ,QAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,aACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,aAAa,QAAgC;AACpD,SAAQ,QAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,aACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,iBAAiB,MAA6C;AACrE,KAAI,SAAS,6BAA6B,SAAS,wBACjD,QAAO;;AAKX,SAAS,0BAA0B,MAA2C;AAC5E,KAAI,CAAC,KAAK,WAAW,IAAI,CAAE,QAAO;AAClC,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,MAAI,OAAO,OAAO,SAAS,YAAY,OAAO,OAAO,YAAY,SAAU,QAAO;AAClF,SAAO;GACL,MAAM,OAAO;GACb,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO,OAAO;GAC7D,UAAU,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAA;GAClE,UAAU,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAA;GAClE,UAAU,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAA;GAClE,SAAS,OAAO;GACjB;SACK;AACN,SAAO;;;;;;;;AASX,SAAgB,6BACd,UACA,SACQ;CACR,MAAM,UAAU,SAAS,MAAM;AAC/B,KAAI,CAAC,QACH,QAAO,KAAK,UAAU;EACpB,MAAM;EACN,MAAM;EACN,SAAS;EACV,CAAgC;CAGnC,MAAM,WAAW,0BAA0B,QAAQ;AACnD,KAAI,SAAU,QAAO,KAAK,UAAU,SAAS;CAE7C,MAAM,eAAe,mBAAmB,KAAK,QAAQ;AACrD,KAAI,cAAc;EAChB,MAAM,WAAW,aAAa,GAAG,QAAQ,OAAO,GAAG;AACnD,SAAO,KAAK,UAAU;GACpB,MAAM;GACN,MAAM;GACN;GACA,UAAU;GACV,SAAS;GACV,CAAgC;;CAGnC,MAAM,SAAS,uBAAuB,QAAQ;CAC9C,MAAM,OAAO,aAAa,OAAO;CACjC,MAAM,UAAgC;EACpC;EACA,MAAM,aAAa,OAAO;EAC1B,SAAS;EACT,GAAI,SAAS,WAAW,EAAE,UAAU,QAAQ,UAAU,GAAG,EAAE;EAC3D,GAAI,SAAS,WAAW,EAAE,UAAU,QAAQ,UAAU,GAAG,EAAE;EAC5D;CAED,MAAM,WAAW,iBAAiB,KAAK;AACvC,KAAI,SAAU,SAAQ,WAAW;AAGjC,KAAI,SAAS,aAAa,mBAAmB,QAAQ,EAAE;AACrD,UAAQ,OAAO;AACf,UAAQ,OAAO;AACf,UAAQ,WAAW;;AAGrB,QAAO,KAAK,UAAU,QAAQ;;;AAIhC,SAAgB,8BAA8B,SAAyB;CACrE,MAAM,UAAU,QAAQ,MAAM;AAC9B,KAAI,QAAQ,WAAW,UAAU,CAAE,QAAO,QAAQ,MAAM,EAAiB;CAEzE,MAAM,SAAS,0BAA0B,QAAQ;AACjD,KAAI,QAAQ,QAAS,QAAO,OAAO;AAEnC,QAAO"}
@@ -1,10 +1,10 @@
1
- import { DEFAULT_AGENT_ID, init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir } from "../agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { DEFAULT_AGENT_ID, init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir } from "../agent-scope.js";
4
4
  import { WORKSPACE_FILES, init_paths } from "../../config/paths.js";
5
5
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from "./workspace.js";
6
- import { dirname, join } from "node:path";
7
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
+ import { dirname, join } from "node:path";
8
8
  import { execFileSync } from "node:child_process";
9
9
  import { fileURLToPath } from "node:url";
10
10
  //#region src/agent/context/workspace-seed.ts