@xopcai/xopc 0.0.87 → 0.0.89

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 (282) hide show
  1. package/README.md +8 -1
  2. package/README.zh-CN.md +8 -1
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/agents-B6PJB07W.js +222 -0
  6. package/dist/gateway/static/root/assets/apps-page-BOr0B1wv.js +1 -0
  7. package/dist/gateway/static/root/assets/channels-settings-BelUKggl.js +1 -0
  8. package/dist/gateway/static/root/assets/{channels-status-swr-BSHqqCF1.js → channels-status-swr-DaHGkRF1.js} +1 -1
  9. package/dist/gateway/static/root/assets/cron-api-CjOg-BIj.js +1 -0
  10. package/dist/gateway/static/root/assets/cron-page-DhoZmZXb.js +1 -0
  11. package/dist/gateway/static/root/assets/{dist-Cmjp2APP.js → dist-6LecgDx5.js} +1 -1
  12. package/dist/gateway/static/root/assets/{extension-debug-page-CFa9z_1N.js → extension-debug-page-CtuKJ9tE.js} +1 -1
  13. package/dist/gateway/static/root/assets/{extension-page-BI8eaTPq.js → extension-page-ykzjOkR5.js} +1 -1
  14. package/dist/gateway/static/root/assets/extension-settings-page-Ce2qrdpO.js +1 -0
  15. package/dist/gateway/static/root/assets/{fetch-DRqwef_Q.js → fetch-C9FFJjuH.js} +1 -1
  16. package/dist/gateway/static/root/assets/{field-primitives-BiNHBo2Y.js → field-primitives-BFcrNeTU.js} +1 -1
  17. package/dist/gateway/static/root/assets/{heartbeat-config-api-ZRb8qhuz.js → heartbeat-config-api-CEg4Vr9R.js} +1 -1
  18. package/dist/gateway/static/root/assets/{index-Cu7bKuUi.js → index-CZfy9oxs.js} +85 -85
  19. package/dist/gateway/static/root/assets/index-CiN1cQiQ.css +1 -0
  20. package/dist/gateway/static/root/assets/logs-page-BwWLfqvd.js +1 -0
  21. package/dist/gateway/static/root/assets/sessions-page-DV5WN8uk.js +1 -0
  22. package/dist/gateway/static/root/assets/{settings-form-section-DiqqVs6m.js → settings-form-section-BqdzA28u.js} +1 -1
  23. package/dist/gateway/static/root/assets/settings-page-CfOBRbPX.js +3 -0
  24. package/dist/gateway/static/root/assets/{share-preview-page-n1Gprylk.js → share-preview-page-Di5Bzh4g.js} +1 -1
  25. package/dist/gateway/static/root/assets/skills-page-D0H5Kaxg.js +2 -0
  26. package/dist/gateway/static/root/assets/{theme-store-CZOh1nT3.js → theme-store-CNqbmTNV.js} +1 -1
  27. package/dist/gateway/static/root/assets/url-aYn-Rj1C.js +7 -0
  28. package/dist/gateway/static/root/assets/{utils-CkWBfxs4.js → utils-BWm2tG2w.js} +1 -1
  29. package/dist/gateway/static/root/assets/voice-api-key-field-X2UfnHeq.js +1 -0
  30. package/dist/gateway/static/root/assets/workflows-page-BOPpO3NG.js +27 -0
  31. package/dist/gateway/static/root/index.html +5 -5
  32. package/dist/package.js +1 -1
  33. package/dist/src/agent/agent-manager.d.ts +2 -0
  34. package/dist/src/agent/agent-manager.js +1 -0
  35. package/dist/src/agent/agent-manager.js.map +1 -1
  36. package/dist/src/agent/child-agent-factory.d.ts +15 -0
  37. package/dist/src/agent/child-agent-factory.js +35 -2
  38. package/dist/src/agent/child-agent-factory.js.map +1 -1
  39. package/dist/src/agent/client-error-format.d.ts +20 -0
  40. package/dist/src/agent/client-error-format.js +97 -0
  41. package/dist/src/agent/client-error-format.js.map +1 -0
  42. package/dist/src/agent/embedded/run-turn.js +23 -4
  43. package/dist/src/agent/embedded/run-turn.js.map +1 -1
  44. package/dist/src/agent/goals/goal-locale.d.ts +1 -1
  45. package/dist/src/agent/inbound/turn-dispatcher.js +1 -1
  46. package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
  47. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +2 -0
  48. package/dist/src/agent/orchestration/llm-turn-retry.js +9 -1
  49. package/dist/src/agent/orchestration/llm-turn-retry.js.map +1 -1
  50. package/dist/src/agent/service/process-direct-streaming.js +19 -3
  51. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  52. package/dist/src/agent/service/webchat-tts.d.ts +1 -2
  53. package/dist/src/agent/service/webchat-tts.js +1 -1
  54. package/dist/src/agent/service/webchat-tts.js.map +1 -1
  55. package/dist/src/agent/service.js +2 -1
  56. package/dist/src/agent/service.js.map +1 -1
  57. package/dist/src/agent/service.types.d.ts +3 -1
  58. package/dist/src/agent/tools/cronjob-tool.js +2 -1
  59. package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
  60. package/dist/src/agent/tools/factory.d.ts +3 -0
  61. package/dist/src/agent/tools/factory.js +2 -23
  62. package/dist/src/agent/tools/factory.js.map +1 -1
  63. package/dist/src/agent/tools/workflow-tool.d.ts +6 -28
  64. package/dist/src/agent/tools/workflow-tool.js +61 -213
  65. package/dist/src/agent/tools/workflow-tool.js.map +1 -1
  66. package/dist/src/agent/workflow/agent-progress.d.ts +5 -0
  67. package/dist/src/agent/workflow/agent-progress.js +65 -0
  68. package/dist/src/agent/workflow/agent-progress.js.map +1 -0
  69. package/dist/src/agent/workflow/builtins/audit-repo.d.ts +1 -1
  70. package/dist/src/agent/workflow/builtins/audit-repo.js +14 -0
  71. package/dist/src/agent/workflow/builtins/audit-repo.js.map +1 -1
  72. package/dist/src/agent/workflow/builtins/debug-incident.d.ts +1 -1
  73. package/dist/src/agent/workflow/builtins/debug-incident.js +14 -0
  74. package/dist/src/agent/workflow/builtins/debug-incident.js.map +1 -1
  75. package/dist/src/agent/workflow/builtins/implementation-plan.d.ts +12 -0
  76. package/dist/src/agent/workflow/builtins/implementation-plan.js +175 -0
  77. package/dist/src/agent/workflow/builtins/implementation-plan.js.map +1 -0
  78. package/dist/src/agent/workflow/builtins/index.d.ts +3 -1
  79. package/dist/src/agent/workflow/builtins/index.js +11 -1
  80. package/dist/src/agent/workflow/builtins/index.js.map +1 -1
  81. package/dist/src/agent/workflow/builtins/multi-perspective-review.d.ts +1 -1
  82. package/dist/src/agent/workflow/builtins/multi-perspective-review.js +14 -0
  83. package/dist/src/agent/workflow/builtins/multi-perspective-review.js.map +1 -1
  84. package/dist/src/agent/workflow/builtins/pr-review.d.ts +1 -1
  85. package/dist/src/agent/workflow/builtins/pr-review.js +14 -0
  86. package/dist/src/agent/workflow/builtins/pr-review.js.map +1 -1
  87. package/dist/src/agent/workflow/builtins/release-check.d.ts +11 -0
  88. package/dist/src/agent/workflow/builtins/release-check.js +165 -0
  89. package/dist/src/agent/workflow/builtins/release-check.js.map +1 -0
  90. package/dist/src/agent/workflow/builtins/research.d.ts +1 -1
  91. package/dist/src/agent/workflow/builtins/research.js +14 -0
  92. package/dist/src/agent/workflow/builtins/research.js.map +1 -1
  93. package/dist/src/agent/workflow/index.d.ts +2 -1
  94. package/dist/src/agent/workflow/index.js +3 -2
  95. package/dist/src/agent/workflow/meta-locale.d.ts +12 -0
  96. package/dist/src/agent/workflow/meta-locale.js +62 -0
  97. package/dist/src/agent/workflow/meta-locale.js.map +1 -0
  98. package/dist/src/agent/workflow/parser.js +3 -0
  99. package/dist/src/agent/workflow/parser.js.map +1 -1
  100. package/dist/src/agent/workflow/runtime.d.ts +2 -2
  101. package/dist/src/agent/workflow/runtime.js +21 -14
  102. package/dist/src/agent/workflow/runtime.js.map +1 -1
  103. package/dist/src/agent/workflow/snapshot.js +2 -12
  104. package/dist/src/agent/workflow/snapshot.js.map +1 -1
  105. package/dist/src/agent/workflow/step-labels.d.ts +8 -0
  106. package/dist/src/agent/workflow/step-labels.js +48 -0
  107. package/dist/src/agent/workflow/step-labels.js.map +1 -0
  108. package/dist/src/agent/workflow/subagent-runner.js +46 -1
  109. package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
  110. package/dist/src/agent/workflow/types.d.ts +74 -1
  111. package/dist/src/agent/workflow/workflow-child-tools.d.ts +4 -0
  112. package/dist/src/agent/workflow/workflow-child-tools.js +21 -0
  113. package/dist/src/agent/workflow/workflow-child-tools.js.map +1 -0
  114. package/dist/src/auth/credentials.d.ts +19 -2
  115. package/dist/src/auth/credentials.js +47 -13
  116. package/dist/src/auth/credentials.js.map +1 -1
  117. package/dist/src/auth/oauth/types.d.ts +16 -0
  118. package/dist/src/cli/commands/auth.js +6 -0
  119. package/dist/src/cli/commands/auth.js.map +1 -1
  120. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  121. package/dist/src/cli/commands/onboard/model.js +6 -0
  122. package/dist/src/cli/commands/onboard/model.js.map +1 -1
  123. package/dist/src/config/agent-typed-models.d.ts +18 -0
  124. package/dist/src/config/agent-typed-models.js +53 -0
  125. package/dist/src/config/agent-typed-models.js.map +1 -0
  126. package/dist/src/config/index.js +2 -2
  127. package/dist/src/config/schema.d.ts +52 -0
  128. package/dist/src/config/schema.js +39 -3
  129. package/dist/src/config/schema.js.map +1 -1
  130. package/dist/src/config/voice.d.ts +3 -28
  131. package/dist/src/config/voice.js +27 -261
  132. package/dist/src/config/voice.js.map +1 -1
  133. package/dist/src/cron/executor.d.ts +2 -0
  134. package/dist/src/cron/executor.js +59 -5
  135. package/dist/src/cron/executor.js.map +1 -1
  136. package/dist/src/cron/job-content.js +2 -1
  137. package/dist/src/cron/job-content.js.map +1 -1
  138. package/dist/src/cron/types.d.ts +21 -1
  139. package/dist/src/cron/validation.d.ts +76 -0
  140. package/dist/src/cron/validation.js +26 -1
  141. package/dist/src/cron/validation.js.map +1 -1
  142. package/dist/src/gateway/agents-admin.d.ts +9 -0
  143. package/dist/src/gateway/agents-admin.js +16 -0
  144. package/dist/src/gateway/agents-admin.js.map +1 -1
  145. package/dist/src/gateway/config-tools-web.js +3 -2
  146. package/dist/src/gateway/config-tools-web.js.map +1 -1
  147. package/dist/src/gateway/gateway-workflow-host.types.d.ts +17 -0
  148. package/dist/src/gateway/gateway-workflow-host.types.js +1 -0
  149. package/dist/src/gateway/hono/lib/agent-model.d.ts +7 -0
  150. package/dist/src/gateway/hono/lib/agent-model.js +36 -1
  151. package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
  152. package/dist/src/gateway/hono/lib/config-payload.js +28 -5
  153. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  154. package/dist/src/gateway/hono/lib/mask-secret-length.d.ts +6 -0
  155. package/dist/src/gateway/hono/lib/mask-secret-length.js +16 -0
  156. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +1 -0
  157. package/dist/src/gateway/hono/lib/safe-providers-config.d.ts +1 -1
  158. package/dist/src/gateway/hono/lib/safe-providers-config.js +2 -1
  159. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +1 -1
  160. package/dist/src/gateway/hono/lib/safe-voice-config.js +2 -1
  161. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +1 -1
  162. package/dist/src/gateway/hono/oauth-async.js +40 -15
  163. package/dist/src/gateway/hono/oauth-async.js.map +1 -1
  164. package/dist/src/gateway/hono/oauth.js +31 -6
  165. package/dist/src/gateway/hono/oauth.js.map +1 -1
  166. package/dist/src/gateway/hono/routes/agents.js +1 -1
  167. package/dist/src/gateway/hono/routes/config-patch/agents.js +8 -2
  168. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
  169. package/dist/src/gateway/hono/routes/config-patch/gateway.js +3 -2
  170. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +1 -1
  171. package/dist/src/gateway/hono/routes/config-patch/misc.js +7 -2
  172. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
  173. package/dist/src/gateway/hono/routes/config.js +59 -0
  174. package/dist/src/gateway/hono/routes/config.js.map +1 -1
  175. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  176. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  177. package/dist/src/gateway/hono/routes/models.js +84 -15
  178. package/dist/src/gateway/hono/routes/models.js.map +1 -1
  179. package/dist/src/gateway/hono/routes/voice.js +75 -0
  180. package/dist/src/gateway/hono/routes/voice.js.map +1 -1
  181. package/dist/src/gateway/hono/routes/workflows.d.ts +3 -0
  182. package/dist/src/gateway/hono/routes/workflows.js +226 -0
  183. package/dist/src/gateway/hono/routes/workflows.js.map +1 -0
  184. package/dist/src/gateway/service/run-gateway-agent.js +2 -20
  185. package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
  186. package/dist/src/gateway/service.d.ts +8 -0
  187. package/dist/src/gateway/service.js +28 -2
  188. package/dist/src/gateway/service.js.map +1 -1
  189. package/dist/src/mcp/channel-bridge.js +1 -1
  190. package/dist/src/providers/index.d.ts +8 -0
  191. package/dist/src/providers/index.js +51 -12
  192. package/dist/src/providers/index.js.map +1 -1
  193. package/dist/src/share/site-share-config.d.ts +3 -2
  194. package/dist/src/share/site-share-config.js.map +1 -1
  195. package/dist/src/tui/tui-agent-events.js +2 -1
  196. package/dist/src/tui/tui-agent-events.js.map +1 -1
  197. package/dist/src/voice/metadata/builtin.d.ts +2 -0
  198. package/dist/src/voice/metadata/builtin.js +420 -0
  199. package/dist/src/voice/metadata/builtin.js.map +1 -0
  200. package/dist/src/voice/metadata/index.d.ts +4 -0
  201. package/dist/src/voice/metadata/index.js +3 -0
  202. package/dist/src/voice/metadata/registry.d.ts +5 -0
  203. package/dist/src/voice/metadata/registry.js +34 -0
  204. package/dist/src/voice/metadata/registry.js.map +1 -0
  205. package/dist/src/voice/metadata/types.d.ts +41 -0
  206. package/dist/src/voice/metadata/types.js +1 -0
  207. package/dist/src/voice/stt/list-providers.d.ts +3 -3
  208. package/dist/src/voice/stt/list-providers.js +41 -6
  209. package/dist/src/voice/stt/list-providers.js.map +1 -1
  210. package/dist/src/voice/tts/list-providers.d.ts +3 -3
  211. package/dist/src/voice/tts/list-providers.js +41 -6
  212. package/dist/src/voice/tts/list-providers.js.map +1 -1
  213. package/dist/src/workflows/domain/command.d.ts +19 -0
  214. package/dist/src/workflows/domain/command.js +1 -0
  215. package/dist/src/workflows/domain/definition-utils.d.ts +14 -0
  216. package/dist/src/workflows/domain/definition-utils.js +50 -0
  217. package/dist/src/workflows/domain/definition-utils.js.map +1 -0
  218. package/dist/src/workflows/domain/definition.d.ts +62 -0
  219. package/dist/src/workflows/domain/definition.js +1 -0
  220. package/dist/src/workflows/domain/event.d.ts +67 -0
  221. package/dist/src/workflows/domain/event.js +1 -0
  222. package/dist/src/workflows/domain/index.d.ts +7 -0
  223. package/dist/src/workflows/domain/index.js +4 -0
  224. package/dist/src/workflows/domain/result.d.ts +65 -0
  225. package/dist/src/workflows/domain/result.js +1 -0
  226. package/dist/src/workflows/domain/run.d.ts +177 -0
  227. package/dist/src/workflows/domain/run.js +14 -0
  228. package/dist/src/workflows/domain/run.js.map +1 -0
  229. package/dist/src/workflows/domain/validation.d.ts +19 -0
  230. package/dist/src/workflows/domain/validation.js +66 -0
  231. package/dist/src/workflows/domain/validation.js.map +1 -0
  232. package/dist/src/workflows/engine/index.d.ts +2 -0
  233. package/dist/src/workflows/engine/index.js +3 -0
  234. package/dist/src/workflows/engine/projector.d.ts +3 -0
  235. package/dist/src/workflows/engine/projector.js +205 -0
  236. package/dist/src/workflows/engine/projector.js.map +1 -0
  237. package/dist/src/workflows/engine/workflow-engine.d.ts +32 -0
  238. package/dist/src/workflows/engine/workflow-engine.js +189 -0
  239. package/dist/src/workflows/engine/workflow-engine.js.map +1 -0
  240. package/dist/src/workflows/index.d.ts +10 -0
  241. package/dist/src/workflows/index.js +18 -0
  242. package/dist/src/workflows/runtime/index.d.ts +1 -0
  243. package/dist/src/workflows/runtime/index.js +4 -0
  244. package/dist/src/workflows/runtime/script-runtime.d.ts +3 -0
  245. package/dist/src/workflows/runtime/script-runtime.js +3 -0
  246. package/dist/src/workflows/service/run-view-to-snapshot.d.ts +4 -0
  247. package/dist/src/workflows/service/run-view-to-snapshot.js +61 -0
  248. package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -0
  249. package/dist/src/workflows/service/workflow-run-service.d.ts +36 -0
  250. package/dist/src/workflows/service/workflow-run-service.js +279 -0
  251. package/dist/src/workflows/service/workflow-run-service.js.map +1 -0
  252. package/dist/src/workflows/service/workflow-run-service.types.d.ts +47 -0
  253. package/dist/src/workflows/service/workflow-run-service.types.js +1 -0
  254. package/dist/src/workflows/service/workflow-session-bridge.d.ts +29 -0
  255. package/dist/src/workflows/service/workflow-session-bridge.js +177 -0
  256. package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -0
  257. package/dist/src/workflows/service/workflow-session-key.d.ts +3 -0
  258. package/dist/src/workflows/service/workflow-session-key.js +21 -0
  259. package/dist/src/workflows/service/workflow-session-key.js.map +1 -0
  260. package/dist/src/workflows/store/event-store.d.ts +17 -0
  261. package/dist/src/workflows/store/event-store.js +83 -0
  262. package/dist/src/workflows/store/event-store.js.map +1 -0
  263. package/dist/src/workflows/store/paths.d.ts +7 -0
  264. package/dist/src/workflows/store/paths.js +26 -0
  265. package/dist/src/workflows/store/paths.js.map +1 -0
  266. package/dist/src/workflows/store/run-store.d.ts +13 -0
  267. package/dist/src/workflows/store/run-store.js +69 -0
  268. package/dist/src/workflows/store/run-store.js.map +1 -0
  269. package/package.json +5 -5
  270. package/dist/gateway/static/root/assets/agents-BEAbXpuP.js +0 -222
  271. package/dist/gateway/static/root/assets/apps-page-Dg8R-Szf.js +0 -1
  272. package/dist/gateway/static/root/assets/channels-settings-yohw9YSu.js +0 -1
  273. package/dist/gateway/static/root/assets/cron-api-0h_QT8U3.js +0 -1
  274. package/dist/gateway/static/root/assets/cron-page-BkfKFfFk.js +0 -1
  275. package/dist/gateway/static/root/assets/extension-settings-page-x4BB7q1X.js +0 -1
  276. package/dist/gateway/static/root/assets/index-a5gWIdZQ.css +0 -1
  277. package/dist/gateway/static/root/assets/logs-page-BFZ8GgCv.js +0 -1
  278. package/dist/gateway/static/root/assets/sessions-page-CD7AfB-2.js +0 -1
  279. package/dist/gateway/static/root/assets/settings-page-BBOjEQW3.js +0 -3
  280. package/dist/gateway/static/root/assets/skills-page-CcN_gj--.js +0 -2
  281. package/dist/gateway/static/root/assets/url-Dd8Q7kZZ.js +0 -3
  282. package/dist/gateway/static/root/assets/voice-api-key-field-O6awz9hi.js +0 -1
@@ -1,19 +1,54 @@
1
1
  import { listMediaUnderstandingProviders } from "../../media-understanding/registry.js";
2
2
  import { resolveSTTProviderConfig } from "./factory.js";
3
3
  import { mergeSttConfigFromAppConfig } from "../../channels/attachments/voice-stt-webchat.js";
4
+ import { getVoiceProviderMetadata } from "../metadata/registry.js";
5
+ import "../metadata/index.js";
4
6
  //#region src/voice/stt/list-providers.ts
7
+ function fallbackMetadata(providerId, aliases) {
8
+ return {
9
+ id: providerId,
10
+ capability: "stt",
11
+ displayName: providerId,
12
+ aliases: [...aliases],
13
+ fields: [
14
+ {
15
+ key: "apiKey",
16
+ label: "API Key",
17
+ type: "password",
18
+ secret: true
19
+ },
20
+ {
21
+ key: "model",
22
+ label: "Model",
23
+ type: "string"
24
+ },
25
+ {
26
+ key: "baseUrl",
27
+ label: "Base URL",
28
+ type: "string"
29
+ }
30
+ ],
31
+ diagnostics: {
32
+ requiresApiKey: true,
33
+ configPath: `tools.media.audio.providers.${providerId}`
34
+ }
35
+ };
36
+ }
5
37
  function isSttProviderConfigured(providerId, config) {
6
38
  return resolveSTTProviderConfig(providerId, config) !== null;
7
39
  }
8
- /** List registered audio STT providers with configured state for the current app config. */
40
+ /** List registered audio STT providers with configured state and UI metadata. */
9
41
  function listSttProvidersForApi(config) {
10
42
  const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);
11
43
  return {
12
- providers: listMediaUnderstandingProviders().filter((plugin) => plugin.capabilities?.includes("audio") && typeof plugin.transcribeAudio === "function").map((plugin) => ({
13
- id: plugin.id,
14
- aliases: [...plugin.aliases ?? []],
15
- configured: isSttProviderConfigured(plugin.id, sttConfig)
16
- })),
44
+ providers: listMediaUnderstandingProviders().filter((plugin) => plugin.capabilities?.includes("audio") && typeof plugin.transcribeAudio === "function").map((plugin) => {
45
+ const metadata = getVoiceProviderMetadata("stt", plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);
46
+ return {
47
+ ...metadata,
48
+ aliases: [...metadata.aliases ?? plugin.aliases ?? []],
49
+ configured: isSttProviderConfigured(plugin.id, sttConfig)
50
+ };
51
+ }),
17
52
  active: sttConfig.provider
18
53
  };
19
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/stt/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven STT provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { mergeSttConfigFromAppConfig } from '../../channels/attachments/voice-stt-webchat.js';\n\nimport { resolveSTTProviderConfig } from './factory.js';\nimport type { STTConfig } from './types.js';\nimport { listMediaUnderstandingProviders } from '../../media-understanding/registry.js';\n\nexport interface SttProviderListEntry {\n id: string;\n aliases: string[];\n configured: boolean;\n}\n\nexport interface SttProvidersPayload {\n providers: SttProviderListEntry[];\n active: string;\n}\n\nexport function isSttProviderConfigured(providerId: string, config: STTConfig): boolean {\n return resolveSTTProviderConfig(providerId, config) !== null;\n}\n\n/** List registered audio STT providers with configured state for the current app config. */\nexport function listSttProvidersForApi(config: Config | undefined): SttProvidersPayload {\n const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);\n const providers: SttProviderListEntry[] = listMediaUnderstandingProviders()\n .filter(\n (plugin) =>\n plugin.capabilities?.includes('audio') && typeof plugin.transcribeAudio === 'function',\n )\n .map((plugin) => ({\n id: plugin.id,\n aliases: [...(plugin.aliases ?? [])],\n configured: isSttProviderConfigured(plugin.id, sttConfig),\n }));\n\n return {\n providers,\n active: sttConfig.provider,\n };\n}\n"],"mappings":";;;;AAsBA,SAAgB,wBAAwB,YAAoB,QAA4B;AACtF,QAAO,yBAAyB,YAAY,OAAO,KAAK;;;AAI1D,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,MAAM;AAYhG,QAAO;EACL,WAZwC,iCAAiC,CACxE,QACE,WACC,OAAO,cAAc,SAAS,QAAQ,IAAI,OAAO,OAAO,oBAAoB,WAC/E,CACA,KAAK,YAAY;GAChB,IAAI,OAAO;GACX,SAAS,CAAC,GAAI,OAAO,WAAW,EAAE,CAAE;GACpC,YAAY,wBAAwB,OAAO,IAAI,UAAU;GAC1D,EAGQ;EACT,QAAQ,UAAU;EACnB"}
1
+ {"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/stt/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven STT provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { mergeSttConfigFromAppConfig } from '../../channels/attachments/voice-stt-webchat.js';\nimport { listMediaUnderstandingProviders } from '../../media-understanding/registry.js';\nimport { getVoiceProviderMetadata, type VoiceProviderMetadata } from '../metadata/index.js';\n\nimport { resolveSTTProviderConfig } from './factory.js';\nimport type { STTConfig } from './types.js';\n\nexport interface SttProviderListEntry extends VoiceProviderMetadata {\n aliases: string[];\n configured: boolean;\n}\n\nexport interface SttProvidersPayload {\n providers: SttProviderListEntry[];\n active: string;\n}\n\nfunction fallbackMetadata(providerId: string, aliases: readonly string[]): VoiceProviderMetadata {\n return {\n id: providerId,\n capability: 'stt',\n displayName: providerId,\n aliases: [...aliases],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true },\n { key: 'model', label: 'Model', type: 'string' },\n { key: 'baseUrl', label: 'Base URL', type: 'string' },\n ],\n diagnostics: {\n requiresApiKey: true,\n configPath: `tools.media.audio.providers.${providerId}`,\n },\n };\n}\n\nexport function isSttProviderConfigured(providerId: string, config: STTConfig): boolean {\n return resolveSTTProviderConfig(providerId, config) !== null;\n}\n\n/** List registered audio STT providers with configured state and UI metadata. */\nexport function listSttProvidersForApi(config: Config | undefined): SttProvidersPayload {\n const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);\n const providers: SttProviderListEntry[] = listMediaUnderstandingProviders()\n .filter(\n (plugin) =>\n plugin.capabilities?.includes('audio') && typeof plugin.transcribeAudio === 'function',\n )\n .map((plugin) => {\n const metadata = getVoiceProviderMetadata('stt', plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);\n return {\n ...metadata,\n aliases: [...(metadata.aliases ?? plugin.aliases ?? [])],\n configured: isSttProviderConfigured(plugin.id, sttConfig),\n };\n });\n\n return {\n providers,\n active: sttConfig.provider,\n };\n}\n"],"mappings":";;;;;;AAsBA,SAAS,iBAAiB,YAAoB,SAAmD;AAC/F,QAAO;EACL,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,SAAS,CAAC,GAAG,QAAQ;EACrB,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM;GACnE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GAChD;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU;GACtD;EACD,aAAa;GACX,gBAAgB;GAChB,YAAY,+BAA+B;GAC5C;EACF;;AAGH,SAAgB,wBAAwB,YAAoB,QAA4B;AACtF,QAAO,yBAAyB,YAAY,OAAO,KAAK;;;AAI1D,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,MAAM;AAehG,QAAO;EACL,WAfwC,iCAAiC,CACxE,QACE,WACC,OAAO,cAAc,SAAS,QAAQ,IAAI,OAAO,OAAO,oBAAoB,WAC/E,CACA,KAAK,WAAW;GACf,MAAM,WAAW,yBAAyB,OAAO,OAAO,GAAG,IAAI,iBAAiB,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;AAChH,UAAO;IACL,GAAG;IACH,SAAS,CAAC,GAAI,SAAS,WAAW,OAAO,WAAW,EAAE,CAAE;IACxD,YAAY,wBAAwB,OAAO,IAAI,UAAU;IAC1D;IAIM;EACT,QAAQ,UAAU;EACnB"}
@@ -2,8 +2,8 @@
2
2
  * Registry-driven TTS provider listing for gateway / Web UI discovery.
3
3
  */
4
4
  import type { Config } from '../../config/schema.js';
5
- export interface TtsProviderListEntry {
6
- id: string;
5
+ import { type VoiceProviderMetadata } from '../metadata/index.js';
6
+ export interface TtsProviderListEntry extends VoiceProviderMetadata {
7
7
  aliases: string[];
8
8
  configured: boolean;
9
9
  }
@@ -11,5 +11,5 @@ export interface TtsProvidersPayload {
11
11
  providers: TtsProviderListEntry[];
12
12
  active: string;
13
13
  }
14
- /** List registered speech providers with configured state for the current app config. */
14
+ /** List registered speech providers with configured state and UI metadata. */
15
15
  export declare function listTtsProvidersForApi(config: Config | undefined): TtsProvidersPayload;
@@ -1,16 +1,51 @@
1
1
  import { listSpeechProviders } from "./speech-registry.js";
2
2
  import { resolveSpeechProvider } from "./factory.js";
3
3
  import { mergeTtsConfigFromAppConfig } from "./merge-config.js";
4
+ import { getVoiceProviderMetadata } from "../metadata/registry.js";
5
+ import "../metadata/index.js";
4
6
  //#region src/voice/tts/list-providers.ts
5
- /** List registered speech providers with configured state for the current app config. */
7
+ function fallbackMetadata(providerId, aliases) {
8
+ return {
9
+ id: providerId,
10
+ capability: "tts",
11
+ displayName: providerId,
12
+ aliases: [...aliases],
13
+ fields: [
14
+ {
15
+ key: "apiKey",
16
+ label: "API Key",
17
+ type: "password",
18
+ secret: true
19
+ },
20
+ {
21
+ key: "model",
22
+ label: "Model",
23
+ type: "string"
24
+ },
25
+ {
26
+ key: "voice",
27
+ label: "Voice",
28
+ type: "string"
29
+ }
30
+ ],
31
+ diagnostics: {
32
+ requiresApiKey: true,
33
+ configPath: `messages.tts.providers.${providerId}`
34
+ }
35
+ };
36
+ }
37
+ /** List registered speech providers with configured state and UI metadata. */
6
38
  function listTtsProvidersForApi(config) {
7
39
  const ttsConfig = mergeTtsConfigFromAppConfig(config?.messages?.tts);
8
40
  return {
9
- providers: listSpeechProviders().map((plugin) => ({
10
- id: plugin.id,
11
- aliases: [...plugin.aliases ?? []],
12
- configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null
13
- })),
41
+ providers: listSpeechProviders().map((plugin) => {
42
+ const metadata = getVoiceProviderMetadata("tts", plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);
43
+ return {
44
+ ...metadata,
45
+ aliases: [...metadata.aliases ?? plugin.aliases ?? []],
46
+ configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null
47
+ };
48
+ }),
14
49
  active: ttsConfig.provider
15
50
  };
16
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/tts/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven TTS provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\n\nimport { resolveSpeechProvider } from './factory.js';\nimport { mergeTtsConfigFromAppConfig } from './merge-config.js';\nimport { listSpeechProviders } from './speech-registry.js';\n\nexport interface TtsProviderListEntry {\n id: string;\n aliases: string[];\n configured: boolean;\n}\n\nexport interface TtsProvidersPayload {\n providers: TtsProviderListEntry[];\n active: string;\n}\n\n/** List registered speech providers with configured state for the current app config. */\nexport function listTtsProvidersForApi(config: Config | undefined): TtsProvidersPayload {\n const ttsConfig = mergeTtsConfigFromAppConfig(config?.messages?.tts);\n const providers: TtsProviderListEntry[] = listSpeechProviders().map((plugin) => ({\n id: plugin.id,\n aliases: [...(plugin.aliases ?? [])],\n configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null,\n }));\n\n return {\n providers,\n active: ttsConfig.provider,\n };\n}\n"],"mappings":";;;;;AAsBA,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,UAAU,IAAI;AAOpE,QAAO;EACL,WAPwC,qBAAqB,CAAC,KAAK,YAAY;GAC/E,IAAI,OAAO;GACX,SAAS,CAAC,GAAI,OAAO,WAAW,EAAE,CAAE;GACpC,YAAY,sBAAsB,OAAO,IAAI,UAAU,KAAK;GAC7D,EAGU;EACT,QAAQ,UAAU;EACnB"}
1
+ {"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/tts/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven TTS provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { getVoiceProviderMetadata, type VoiceProviderMetadata } from '../metadata/index.js';\n\nimport { resolveSpeechProvider } from './factory.js';\nimport { mergeTtsConfigFromAppConfig } from './merge-config.js';\nimport { listSpeechProviders } from './speech-registry.js';\n\nexport interface TtsProviderListEntry extends VoiceProviderMetadata {\n aliases: string[];\n configured: boolean;\n}\n\nexport interface TtsProvidersPayload {\n providers: TtsProviderListEntry[];\n active: string;\n}\n\nfunction fallbackMetadata(providerId: string, aliases: readonly string[]): VoiceProviderMetadata {\n return {\n id: providerId,\n capability: 'tts',\n displayName: providerId,\n aliases: [...aliases],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true },\n { key: 'model', label: 'Model', type: 'string' },\n { key: 'voice', label: 'Voice', type: 'string' },\n ],\n diagnostics: {\n requiresApiKey: true,\n configPath: `messages.tts.providers.${providerId}`,\n },\n };\n}\n\n/** List registered speech providers with configured state and UI metadata. */\nexport function listTtsProvidersForApi(config: Config | undefined): TtsProvidersPayload {\n const ttsConfig = mergeTtsConfigFromAppConfig(config?.messages?.tts);\n const providers: TtsProviderListEntry[] = listSpeechProviders().map((plugin) => {\n const metadata = getVoiceProviderMetadata('tts', plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);\n return {\n ...metadata,\n aliases: [...(metadata.aliases ?? plugin.aliases ?? [])],\n configured: resolveSpeechProvider(plugin.id, ttsConfig) !== null,\n };\n });\n\n return {\n providers,\n active: ttsConfig.provider,\n };\n}\n"],"mappings":";;;;;;AAqBA,SAAS,iBAAiB,YAAoB,SAAmD;AAC/F,QAAO;EACL,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,SAAS,CAAC,GAAG,QAAQ;EACrB,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM;GACnE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GAChD;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GACjD;EACD,aAAa;GACX,gBAAgB;GAChB,YAAY,0BAA0B;GACvC;EACF;;;AAIH,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,UAAU,IAAI;AAUpE,QAAO;EACL,WAVwC,qBAAqB,CAAC,KAAK,WAAW;GAC9E,MAAM,WAAW,yBAAyB,OAAO,OAAO,GAAG,IAAI,iBAAiB,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;AAChH,UAAO;IACL,GAAG;IACH,SAAS,CAAC,GAAI,SAAS,WAAW,OAAO,WAAW,EAAE,CAAE;IACxD,YAAY,sBAAsB,OAAO,IAAI,UAAU,KAAK;IAC7D;IAIQ;EACT,QAAQ,UAAU;EACnB"}
@@ -0,0 +1,19 @@
1
+ import type { WorkflowRunInputEnvelope, WorkflowRunSource } from './run.js';
2
+ export type WorkflowCommand = StartWorkflowRunCommand | CancelWorkflowRunCommand | ArchiveWorkflowRunCommand;
3
+ export interface StartWorkflowRunCommand {
4
+ type: 'start_run';
5
+ definitionId: string;
6
+ input?: unknown;
7
+ inputEnvelope?: WorkflowRunInputEnvelope;
8
+ source: WorkflowRunSource;
9
+ goal?: string;
10
+ }
11
+ export interface CancelWorkflowRunCommand {
12
+ type: 'cancel_run';
13
+ runId: string;
14
+ reason?: string;
15
+ }
16
+ export interface ArchiveWorkflowRunCommand {
17
+ type: 'archive_run';
18
+ runId: string;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { WorkflowMeta } from '../../agent/workflow/types.js';
2
+ import type { WorkflowDefinition } from './definition.js';
3
+ export declare const DEFAULT_WORKFLOW_CONCURRENCY = 4;
4
+ export declare const DEFAULT_WORKFLOW_TIMEOUT_SEC: number;
5
+ export declare const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;
6
+ export interface WorkflowDefinitionBuildInput {
7
+ name: string;
8
+ source: 'builtin' | 'user';
9
+ script: string;
10
+ meta: WorkflowMeta;
11
+ }
12
+ export declare function buildWorkflowDefinition(input: WorkflowDefinitionBuildInput): WorkflowDefinition;
13
+ export declare function normalizeWorkflowDefinitionId(value: string): string;
14
+ export declare function toWorkflowDefinitionTitle(value: string): string;
@@ -0,0 +1,50 @@
1
+ //#region src/workflows/domain/definition-utils.ts
2
+ const DEFAULT_WORKFLOW_CONCURRENCY = 4;
3
+ const DEFAULT_WORKFLOW_TIMEOUT_SEC = 1800;
4
+ const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;
5
+ function buildWorkflowDefinition(input) {
6
+ const nowMs = Date.now();
7
+ const phases = input.meta.phases?.map((phase, index) => ({
8
+ id: normalizeWorkflowDefinitionId(phase.title) || `phase-${index + 1}`,
9
+ title: phase.title,
10
+ description: phase.detail
11
+ })) ?? [];
12
+ return {
13
+ id: input.name,
14
+ name: input.name,
15
+ title: toWorkflowDefinitionTitle(input.name),
16
+ description: input.meta.description,
17
+ version: "1.0.0",
18
+ phases,
19
+ runtime: {
20
+ kind: "script",
21
+ source: input.script
22
+ },
23
+ defaults: {
24
+ concurrency: 4,
25
+ timeoutSec: DEFAULT_WORKFLOW_TIMEOUT_SEC,
26
+ maxSubagents: input.meta.estimatedAgents?.max ?? 100
27
+ },
28
+ metadata: {
29
+ tags: input.meta.tags ?? [],
30
+ builtIn: input.source === "builtin",
31
+ source: input.source,
32
+ whenToUse: input.meta.whenToUse,
33
+ estimatedAgents: input.meta.estimatedAgents,
34
+ examplePrompts: input.meta.examplePrompts,
35
+ i18n: input.meta.i18n,
36
+ createdAtMs: nowMs,
37
+ updatedAtMs: nowMs
38
+ }
39
+ };
40
+ }
41
+ function normalizeWorkflowDefinitionId(value) {
42
+ return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
43
+ }
44
+ function toWorkflowDefinitionTitle(value) {
45
+ return value.split(/[_-]+/g).filter(Boolean).map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join(" ");
46
+ }
47
+ //#endregion
48
+ export { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle };
49
+
50
+ //# sourceMappingURL=definition-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-utils.js","names":[],"sources":["../../../../src/workflows/domain/definition-utils.ts"],"sourcesContent":["import type { WorkflowMeta } from '../../agent/workflow/types.js';\n\nimport type { WorkflowDefinition } from './definition.js';\n\nexport const DEFAULT_WORKFLOW_CONCURRENCY = 4;\nexport const DEFAULT_WORKFLOW_TIMEOUT_SEC = 30 * 60;\nexport const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;\n\nexport interface WorkflowDefinitionBuildInput {\n name: string;\n source: 'builtin' | 'user';\n script: string;\n meta: WorkflowMeta;\n}\n\nexport function buildWorkflowDefinition(input: WorkflowDefinitionBuildInput): WorkflowDefinition {\n const nowMs = Date.now();\n const phases = input.meta.phases?.map((phase, index) => ({\n id: normalizeWorkflowDefinitionId(phase.title) || `phase-${index + 1}`,\n title: phase.title,\n description: phase.detail,\n })) ?? [];\n\n return {\n id: input.name,\n name: input.name,\n title: toWorkflowDefinitionTitle(input.name),\n description: input.meta.description,\n version: '1.0.0',\n phases,\n runtime: {\n kind: 'script',\n source: input.script,\n },\n defaults: {\n concurrency: DEFAULT_WORKFLOW_CONCURRENCY,\n timeoutSec: DEFAULT_WORKFLOW_TIMEOUT_SEC,\n maxSubagents: input.meta.estimatedAgents?.max ?? DEFAULT_WORKFLOW_MAX_SUBAGENTS,\n },\n metadata: {\n tags: input.meta.tags ?? [],\n builtIn: input.source === 'builtin',\n source: input.source,\n whenToUse: input.meta.whenToUse,\n estimatedAgents: input.meta.estimatedAgents,\n examplePrompts: input.meta.examplePrompts,\n i18n: input.meta.i18n,\n createdAtMs: nowMs,\n updatedAtMs: nowMs,\n },\n };\n}\n\nexport function normalizeWorkflowDefinitionId(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport function toWorkflowDefinitionTitle(value: string): string {\n return value\n .split(/[_-]+/g)\n .filter(Boolean)\n .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n .join(' ');\n}\n"],"mappings":";AAIA,MAAa,+BAA+B;AAC5C,MAAa,+BAA+B;AAC5C,MAAa,iCAAiC;AAS9C,SAAgB,wBAAwB,OAAyD;CAC/F,MAAM,QAAQ,KAAK,KAAK;CACxB,MAAM,SAAS,MAAM,KAAK,QAAQ,KAAK,OAAO,WAAW;EACvD,IAAI,8BAA8B,MAAM,MAAM,IAAI,SAAS,QAAQ;EACnE,OAAO,MAAM;EACb,aAAa,MAAM;EACpB,EAAE,IAAI,EAAE;AAET,QAAO;EACL,IAAI,MAAM;EACV,MAAM,MAAM;EACZ,OAAO,0BAA0B,MAAM,KAAK;EAC5C,aAAa,MAAM,KAAK;EACxB,SAAS;EACT;EACA,SAAS;GACP,MAAM;GACN,QAAQ,MAAM;GACf;EACD,UAAU;GACR,aAAA;GACA,YAAY;GACZ,cAAc,MAAM,KAAK,iBAAiB,OAAA;GAC3C;EACD,UAAU;GACR,MAAM,MAAM,KAAK,QAAQ,EAAE;GAC3B,SAAS,MAAM,WAAW;GAC1B,QAAQ,MAAM;GACd,WAAW,MAAM,KAAK;GACtB,iBAAiB,MAAM,KAAK;GAC5B,gBAAgB,MAAM,KAAK;GAC3B,MAAM,MAAM,KAAK;GACjB,aAAa;GACb,aAAa;GACd;EACF;;AAGH,SAAgB,8BAA8B,OAAuB;AACnE,QAAO,MACJ,MAAM,CACN,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,YAAY,GAAG;;AAG5B,SAAgB,0BAA0B,OAAuB;AAC/D,QAAO,MACJ,MAAM,SAAS,CACf,OAAO,QAAQ,CACf,KAAK,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,GAAG,CAClE,KAAK,IAAI"}
@@ -0,0 +1,62 @@
1
+ export interface JsonSchema {
2
+ type?: string | string[];
3
+ properties?: Record<string, JsonSchema>;
4
+ items?: JsonSchema | JsonSchema[];
5
+ required?: string[];
6
+ additionalProperties?: boolean | JsonSchema;
7
+ enum?: unknown[];
8
+ const?: unknown;
9
+ description?: string;
10
+ [key: string]: unknown;
11
+ }
12
+ export interface WorkflowDefinition {
13
+ id: string;
14
+ name: string;
15
+ title: string;
16
+ description: string;
17
+ version: string;
18
+ inputSchema?: JsonSchema;
19
+ outputSchema?: JsonSchema;
20
+ phases: WorkflowPhaseDefinition[];
21
+ runtime: WorkflowRuntimeDefinition;
22
+ defaults: WorkflowDefinitionDefaults;
23
+ metadata: WorkflowDefinitionMetadata;
24
+ }
25
+ export interface WorkflowPhaseDefinition {
26
+ id: string;
27
+ title: string;
28
+ description?: string;
29
+ }
30
+ export interface WorkflowRuntimeDefinition {
31
+ kind: 'script';
32
+ source: string;
33
+ }
34
+ export interface WorkflowDefinitionDefaults {
35
+ concurrency: number;
36
+ timeoutSec: number;
37
+ maxSubagents: number;
38
+ }
39
+ export interface WorkflowDefinitionEstimatedAgents {
40
+ min: number;
41
+ max: number;
42
+ }
43
+ export interface WorkflowDefinitionExamplePrompt {
44
+ field: string;
45
+ text: string;
46
+ }
47
+ export interface WorkflowDefinitionLocale {
48
+ description?: string;
49
+ whenToUse?: string;
50
+ examplePrompts?: WorkflowDefinitionExamplePrompt[];
51
+ }
52
+ export interface WorkflowDefinitionMetadata {
53
+ tags: string[];
54
+ builtIn: boolean;
55
+ source: 'builtin' | 'user';
56
+ whenToUse?: string;
57
+ estimatedAgents?: WorkflowDefinitionEstimatedAgents;
58
+ examplePrompts?: WorkflowDefinitionExamplePrompt[];
59
+ i18n?: Record<string, WorkflowDefinitionLocale>;
60
+ createdAtMs: number;
61
+ updatedAtMs: number;
62
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ import type { WorkflowArtifactRef, WorkflowResultEnvelope } from './result.js';
2
+ import type { WorkflowRun, WorkflowRunError } from './run.js';
3
+ export type WorkflowEventType = 'run_queued' | 'run_started' | 'phase_started' | 'phase_completed' | 'agent_queued' | 'agent_started' | 'agent_step_started' | 'agent_step_completed' | 'agent_completed' | 'log_appended' | 'artifact_created' | 'run_completed' | 'run_failed' | 'run_cancelled';
4
+ export interface WorkflowEventEnvelope<T = WorkflowEventPayload> {
5
+ id: string;
6
+ runId: string;
7
+ sequence: number;
8
+ type: WorkflowEventType;
9
+ payload: T;
10
+ createdAtMs: number;
11
+ }
12
+ export type WorkflowEventPayload = RunQueuedPayload | RunStartedPayload | PhaseStartedPayload | PhaseCompletedPayload | AgentQueuedPayload | AgentStartedPayload | AgentStepStartedPayload | AgentStepCompletedPayload | AgentCompletedPayload | LogAppendedPayload | ArtifactCreatedPayload | RunCompletedPayload | RunFailedPayload | RunCancelledPayload;
13
+ export interface RunQueuedPayload {
14
+ run: WorkflowRun;
15
+ }
16
+ export interface RunStartedPayload {
17
+ startedAtMs: number;
18
+ }
19
+ export interface PhaseStartedPayload {
20
+ phaseId: string;
21
+ title: string;
22
+ }
23
+ export interface PhaseCompletedPayload {
24
+ phaseId: string;
25
+ }
26
+ export interface AgentQueuedPayload {
27
+ agentId: string;
28
+ label: string;
29
+ phaseId?: string;
30
+ prompt?: string;
31
+ }
32
+ export interface AgentStartedPayload {
33
+ agentId: string;
34
+ }
35
+ export interface AgentStepStartedPayload {
36
+ agentId: string;
37
+ stepId: string;
38
+ label: string;
39
+ kind: 'tool' | 'llm' | 'thinking';
40
+ detail?: string;
41
+ }
42
+ export interface AgentStepCompletedPayload {
43
+ agentId: string;
44
+ stepId: string;
45
+ status: 'done' | 'error';
46
+ }
47
+ export interface AgentCompletedPayload {
48
+ agentId: string;
49
+ status: 'done' | 'error' | 'skipped';
50
+ resultPreview?: string;
51
+ error?: string;
52
+ }
53
+ export interface LogAppendedPayload {
54
+ message: string;
55
+ }
56
+ export interface ArtifactCreatedPayload {
57
+ artifact: WorkflowArtifactRef;
58
+ }
59
+ export interface RunCompletedPayload {
60
+ result: WorkflowResultEnvelope;
61
+ }
62
+ export interface RunFailedPayload {
63
+ error: WorkflowRunError;
64
+ }
65
+ export interface RunCancelledPayload {
66
+ reason?: string;
67
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export * from './definition.js';
2
+ export * from './definition-utils.js';
3
+ export * from './event.js';
4
+ export * from './result.js';
5
+ export * from './run.js';
6
+ export * from './command.js';
7
+ export * from './validation.js';
@@ -0,0 +1,4 @@
1
+ import { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle } from "./definition-utils.js";
2
+ import { isTerminalWorkflowRunStatus } from "./run.js";
3
+ import { validateWorkflowDefinitionInput } from "./validation.js";
4
+ export { DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, buildWorkflowDefinition, isTerminalWorkflowRunStatus, normalizeWorkflowDefinitionId, toWorkflowDefinitionTitle, validateWorkflowDefinitionInput };
@@ -0,0 +1,65 @@
1
+ export interface WorkflowResultEnvelope {
2
+ title?: string;
3
+ summary: string;
4
+ sections: WorkflowResultSection[];
5
+ actions?: WorkflowNextAction[];
6
+ artifacts?: WorkflowArtifactRef[];
7
+ raw?: unknown;
8
+ }
9
+ export type WorkflowResultSection = WorkflowTextSection | WorkflowFindingsSection | WorkflowRisksSection | WorkflowQuestionsSection | WorkflowJsonSection;
10
+ export interface WorkflowTextSection {
11
+ kind: 'text';
12
+ title: string;
13
+ content: string;
14
+ }
15
+ export interface WorkflowFindingsSection {
16
+ kind: 'findings';
17
+ title: string;
18
+ items: WorkflowFinding[];
19
+ }
20
+ export interface WorkflowRisksSection {
21
+ kind: 'risks';
22
+ title: string;
23
+ items: WorkflowRisk[];
24
+ }
25
+ export interface WorkflowQuestionsSection {
26
+ kind: 'questions';
27
+ title: string;
28
+ items: string[];
29
+ }
30
+ export interface WorkflowJsonSection {
31
+ kind: 'json';
32
+ title: string;
33
+ value: unknown;
34
+ }
35
+ export interface WorkflowFinding {
36
+ title: string;
37
+ severity?: WorkflowSeverity;
38
+ file?: string;
39
+ line?: number;
40
+ detail?: string;
41
+ recommendation?: string;
42
+ }
43
+ export interface WorkflowRisk {
44
+ title: string;
45
+ severity?: WorkflowSeverity;
46
+ likelihood?: 'low' | 'medium' | 'high';
47
+ impact?: string;
48
+ mitigation?: string;
49
+ }
50
+ export interface WorkflowNextAction {
51
+ id: string;
52
+ label: string;
53
+ kind: 'open_artifact' | 'copy_result' | 'start_followup' | 'custom';
54
+ payload?: unknown;
55
+ }
56
+ export interface WorkflowArtifactRef {
57
+ id: string;
58
+ runId: string;
59
+ name: string;
60
+ title?: string;
61
+ mimeType: string;
62
+ sizeBytes: number;
63
+ createdAtMs: number;
64
+ }
65
+ export type WorkflowSeverity = 'low' | 'medium' | 'high' | 'critical';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,177 @@
1
+ import type { WorkflowDefinitionEstimatedAgents } from './definition.js';
2
+ import type { WorkflowArtifactRef, WorkflowResultEnvelope } from './result.js';
3
+ export type WorkflowRunStatus = 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timeout';
4
+ export declare function isTerminalWorkflowRunStatus(status: WorkflowRunStatus): boolean;
5
+ export interface WorkflowRun {
6
+ id: string;
7
+ definitionId: string;
8
+ definitionVersion: string;
9
+ title: string;
10
+ goal: string;
11
+ input: unknown;
12
+ status: WorkflowRunStatus;
13
+ source: WorkflowRunSource;
14
+ metadata?: WorkflowRunMetadata;
15
+ result?: WorkflowResultEnvelope;
16
+ error?: WorkflowRunError;
17
+ metrics: WorkflowRunMetrics;
18
+ createdAtMs: number;
19
+ startedAtMs?: number;
20
+ completedAtMs?: number;
21
+ }
22
+ export interface WorkflowRunMetadata {
23
+ sessionKey: string;
24
+ triggerSource: WorkflowRunSource['kind'];
25
+ agentId?: string;
26
+ retryOfRunId?: string;
27
+ definition: WorkflowRunDefinitionSnapshot;
28
+ input?: WorkflowRunInputEnvelope;
29
+ correlation?: WorkflowRunCorrelation;
30
+ origin?: WorkflowRunOrigin;
31
+ schedule?: WorkflowRunScheduleMetadata;
32
+ }
33
+ export interface WorkflowRunInputEnvelope {
34
+ payload: unknown;
35
+ goal?: string;
36
+ variables?: Record<string, unknown>;
37
+ context?: Record<string, unknown>;
38
+ }
39
+ export interface WorkflowRunCorrelation {
40
+ idempotencyKey?: string;
41
+ requestId?: string;
42
+ traceId?: string;
43
+ parentRunId?: string;
44
+ }
45
+ export interface WorkflowRunOrigin {
46
+ channel: string;
47
+ sessionKey?: string;
48
+ chatId?: string;
49
+ messageId?: string;
50
+ scheduleId?: string;
51
+ fireId?: string;
52
+ requestId?: string;
53
+ }
54
+ export interface WorkflowRunScheduleMetadata {
55
+ scheduleId: string;
56
+ fireId?: string;
57
+ scheduledAtMs?: number;
58
+ }
59
+ export interface WorkflowRunDefinitionSnapshot {
60
+ id: string;
61
+ name: string;
62
+ title: string;
63
+ version: string;
64
+ source: 'builtin' | 'user';
65
+ tags: string[];
66
+ phaseCount: number;
67
+ estimatedAgents?: WorkflowDefinitionEstimatedAgents;
68
+ }
69
+ export type WorkflowRunSource = {
70
+ kind: 'chat';
71
+ sessionKey: string;
72
+ messageId?: string;
73
+ } | {
74
+ kind: 'webui';
75
+ sessionKey?: string;
76
+ requestId?: string;
77
+ } | {
78
+ kind: 'cron';
79
+ scheduleId: string;
80
+ fireId?: string;
81
+ scheduledAtMs?: number;
82
+ } | {
83
+ kind: 'api';
84
+ requestId?: string;
85
+ idempotencyKey?: string;
86
+ } | {
87
+ kind: 'im';
88
+ channel: string;
89
+ chatId: string;
90
+ messageId?: string;
91
+ userId?: string;
92
+ };
93
+ export interface WorkflowRunMetrics {
94
+ agentCount: number;
95
+ doneAgentCount: number;
96
+ errorAgentCount: number;
97
+ skippedAgentCount: number;
98
+ artifactCount: number;
99
+ durationMs?: number;
100
+ }
101
+ export interface WorkflowRunError {
102
+ code: WorkflowRunErrorCode;
103
+ message: string;
104
+ detail?: string;
105
+ recoverable: boolean;
106
+ }
107
+ export type WorkflowRunErrorCode = 'definition_not_found' | 'invalid_input' | 'runtime_error' | 'timeout' | 'cancelled' | 'result_validation_failed' | 'agent_quota_exceeded';
108
+ export interface WorkflowRunControls {
109
+ canCancel: boolean;
110
+ canRetry: boolean;
111
+ canArchive: boolean;
112
+ }
113
+ export interface WorkflowRunSummary {
114
+ id: string;
115
+ definitionId: string;
116
+ title: string;
117
+ status: WorkflowRunStatus;
118
+ source: WorkflowRunSource;
119
+ metadata?: WorkflowRunMetadata;
120
+ createdAtMs: number;
121
+ startedAtMs?: number;
122
+ completedAtMs?: number;
123
+ metrics: WorkflowRunMetrics;
124
+ }
125
+ export interface WorkflowRunView {
126
+ run: WorkflowRun;
127
+ phases: WorkflowPhaseView[];
128
+ agents: WorkflowAgentView[];
129
+ logs: WorkflowLogEntry[];
130
+ artifacts: WorkflowArtifactRef[];
131
+ timeline: WorkflowTimelineItem[];
132
+ controls: WorkflowRunControls;
133
+ }
134
+ export type WorkflowPhaseStatus = 'pending' | 'running' | 'completed' | 'failed';
135
+ export interface WorkflowPhaseView {
136
+ id: string;
137
+ title: string;
138
+ status: WorkflowPhaseStatus;
139
+ startedAtMs?: number;
140
+ completedAtMs?: number;
141
+ agentIds: string[];
142
+ }
143
+ export type WorkflowAgentStatus = 'queued' | 'running' | 'done' | 'error' | 'skipped';
144
+ export interface WorkflowAgentView {
145
+ id: string;
146
+ label: string;
147
+ phaseId?: string;
148
+ status: WorkflowAgentStatus;
149
+ prompt?: string;
150
+ currentStep?: string;
151
+ resultPreview?: string;
152
+ error?: string;
153
+ startedAtMs?: number;
154
+ completedAtMs?: number;
155
+ steps: WorkflowAgentStepView[];
156
+ }
157
+ export type WorkflowAgentStepStatus = 'running' | 'done' | 'error';
158
+ export interface WorkflowAgentStepView {
159
+ id: string;
160
+ label: string;
161
+ kind: 'tool' | 'llm' | 'thinking';
162
+ detail?: string;
163
+ status: WorkflowAgentStepStatus;
164
+ startedAtMs?: number;
165
+ completedAtMs?: number;
166
+ }
167
+ export interface WorkflowLogEntry {
168
+ sequence: number;
169
+ message: string;
170
+ createdAtMs: number;
171
+ }
172
+ export interface WorkflowTimelineItem {
173
+ sequence: number;
174
+ type: string;
175
+ title: string;
176
+ createdAtMs: number;
177
+ }