@xopcai/xopc 0.0.141 → 0.0.143

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 (605) hide show
  1. package/README.md +1 -1
  2. package/dist/browser-ext/manifest.json +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/activity-center-store-jITiX2vJ.js +1 -0
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BRTCpm3t.js → agent-avatar-dicebear-DiME9u_P.js} +1 -1
  6. package/dist/gateway/static/root/assets/agents-DzBXhZXO.js +2 -0
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-DaMMZBAT.js → app-management-settings-panel-Cuo7SbUP.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BXHThPyM.js → appearance-settings-DUfdNQqk.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-CKuKK5AU.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-izB-4N4L.js → archive-plugin-B-Qk6cGr.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-CJihXa5y.js → attachment-load-Di6EEbQX.js} +1 -1
  12. package/dist/gateway/static/root/assets/automation-suggestion-card-DGxvRxtO.js +1 -0
  13. package/dist/gateway/static/root/assets/automations-page-D-FF_WKV.js +4 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-D3VUeG8s.js → binary-plugins-ZaOZDH2I.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-KnA0sLI3.js → block-editor-BTFhjWfg.js} +36 -36
  16. package/dist/gateway/static/root/assets/browser-settings-page-BvKLdEQt.js +8 -0
  17. package/dist/gateway/static/root/assets/{capability-presets-api-D8rRNhc6.js → capability-presets-api-BU-pVZiZ.js} +1 -1
  18. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DgyeEwzh.js +2 -0
  19. package/dist/gateway/static/root/assets/{channel-recipient-api-BWgqwC5h.js → channel-recipient-api-DuulnhIj.js} +1 -1
  20. package/dist/gateway/static/root/assets/channels-settings-BbVsdD_I.js +1 -0
  21. package/dist/gateway/static/root/assets/channels-status-swr-B5lVrUsN.js +1 -0
  22. package/dist/gateway/static/root/assets/check-BODqo66o.js +1 -0
  23. package/dist/gateway/static/root/assets/chunk-QUQL4437-DXsxWP7r.js +4 -0
  24. package/dist/gateway/static/root/assets/circle-alert-RzVebuX2.js +1 -0
  25. package/dist/gateway/static/root/assets/connectors-page-B8QqVy3I.js +2 -0
  26. package/dist/gateway/static/root/assets/{desktop-pet-CzdqX001.js → desktop-pet---yzVxVR.js} +1 -1
  27. package/dist/gateway/static/root/assets/desktop-pet-settings-Dc3gqBJE.js +1 -0
  28. package/dist/gateway/static/root/assets/{directory-picker-path-field-PzlO5tSM.js → directory-picker-path-field-DCmOGLtK.js} +1 -1
  29. package/dist/gateway/static/root/assets/dreaming-settings-BgT5KZVe.js +3 -0
  30. package/dist/gateway/static/root/assets/{extension-debug-page-DcW8Ie3r.js → extension-debug-page-ByaKTTq4.js} +1 -1
  31. package/dist/gateway/static/root/assets/extension-page-BmRzHAZr.js +1 -0
  32. package/dist/gateway/static/root/assets/extension-settings-page-JUtwIhbF.js +1 -0
  33. package/dist/gateway/static/root/assets/{fetch-06q5eCMA.js → fetch-8QNN25Sh.js} +1 -1
  34. package/dist/gateway/static/root/assets/{gateway-config-api-4VXUJtLz.js → gateway-config-api-CxicF50_.js} +1 -1
  35. package/dist/gateway/static/root/assets/gateway-settings-Bz2I_EO5.js +1 -0
  36. package/dist/gateway/static/root/assets/{gateway-startup-retry-2f7_vsv7.js → gateway-startup-retry-5YBnS9Fj.js} +1 -1
  37. package/dist/gateway/static/root/assets/goal-create-dialog-VcoyuZGN.js +1 -0
  38. package/dist/gateway/static/root/assets/goal-detail-page-Cilkap2G.js +4 -0
  39. package/dist/gateway/static/root/assets/{goals-config-api-BpuQTufF.js → goals-config-api-CwcHRdC0.js} +1 -1
  40. package/dist/gateway/static/root/assets/goals-page-C6eoni4z.js +2 -0
  41. package/dist/gateway/static/root/assets/goals-settings-o4i-qAOS.js +1 -0
  42. package/dist/gateway/static/root/assets/heartbeat-settings-DQQkETX8.js +1 -0
  43. package/dist/gateway/static/root/assets/index-BKRqeRHm.js +257 -0
  44. package/dist/gateway/static/root/assets/index-CphxClbs.css +1 -0
  45. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-LT6qB-ua.js +1 -0
  46. package/dist/gateway/static/root/assets/logs-page-Dli2e3fS.js +7 -0
  47. package/dist/gateway/static/root/assets/{markdown-split-zS4KLNAf.js → markdown-split-Dw-yE2-y.js} +1 -1
  48. package/dist/gateway/static/root/assets/{media-plugins-_BgNJ9_7.js → media-plugins-D9NNNUgE.js} +1 -1
  49. package/dist/gateway/static/root/assets/messages-CzKxM6I4.js +5 -0
  50. package/dist/gateway/static/root/assets/models-hub-panel-DVn2Q1Ik.js +2 -0
  51. package/dist/gateway/static/root/assets/notes-page-CRgbJGgk.js +1 -0
  52. package/dist/gateway/static/root/assets/notes-workbench-BxZRHLWx.js +2 -0
  53. package/dist/gateway/static/root/assets/{page-tabs-B7sGQkgU.js → page-tabs-D4hkWVt_.js} +1 -1
  54. package/dist/gateway/static/root/assets/{preview-open-alternatives-D1ri4s_O.js → preview-open-alternatives-CIckv0uy.js} +1 -1
  55. package/dist/gateway/static/root/assets/project-detail-page-Doz53xLn.js +1 -0
  56. package/dist/gateway/static/root/assets/projects-page-DoMtcRLg.js +1 -0
  57. package/dist/gateway/static/root/assets/remote-access-hub-BeHVEgrm.js +1 -0
  58. package/dist/gateway/static/root/assets/{save-bar-controls-BClrOinh.js → save-bar-controls-B0b42kB2.js} +1 -1
  59. package/dist/gateway/static/root/assets/{schedule-field-CL7YTwLV.js → schedule-field-BtjEkczK.js} +1 -1
  60. package/dist/gateway/static/root/assets/{schema-form-ww4PiIje.js → schema-form-Bf0bk3i6.js} +1 -1
  61. package/dist/gateway/static/root/assets/sessions-page-Bk4bQsBe.js +1 -0
  62. package/dist/gateway/static/root/assets/settings-advanced-gate-DdFyaRMm.js +1 -0
  63. package/dist/gateway/static/root/assets/{settings-collapsible-section-D9gEEVm2.js → settings-collapsible-section-BTKTdTNX.js} +1 -1
  64. package/dist/gateway/static/root/assets/{settings-form-section-DGeEoBkb.js → settings-form-section-DL4P0sAj.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-loading-skeleton-BXUeMR37.js → settings-loading-skeleton-BV6KFNj4.js} +1 -1
  66. package/dist/gateway/static/root/assets/settings-page-B_4DsX5W.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-page-layout-CEepfbCa.js → settings-page-layout-CyGlrInB.js} +1 -1
  68. package/dist/gateway/static/root/assets/setup-status-panel-DJ1_MLgX.js +1 -0
  69. package/dist/gateway/static/root/assets/share-preview-page-BQBV7YrV.js +2 -0
  70. package/dist/gateway/static/root/assets/shares-settings-0VuFLBeU.js +1 -0
  71. package/dist/gateway/static/root/assets/skill-reload-api-DO87Ckeo.js +1 -0
  72. package/dist/gateway/static/root/assets/skills-page-D3VdtxAn.js +2 -0
  73. package/dist/gateway/static/root/assets/{system-settings-panel-W6MBJXrr.js → system-settings-panel-D85fBBuI.js} +1 -1
  74. package/dist/gateway/static/root/assets/{typed-models-lib-BkODXN7T.js → typed-models-lib-CwEuYrHX.js} +1 -1
  75. package/dist/gateway/static/root/assets/{use-channel-catalog-CTbwLZXc.js → use-channel-catalog-COXIfXcl.js} +1 -1
  76. package/dist/gateway/static/root/assets/user-context-page-m9JVQ73F.js +1 -0
  77. package/dist/gateway/static/root/assets/user-profile-fields-editor-DtQiuY7E.js +1 -0
  78. package/dist/gateway/static/root/assets/user-profile-settings-panel-CWM0fEpb.js +1 -0
  79. package/dist/gateway/static/root/assets/{utils-ZxrKHxyb.js → utils--BO6xT3u.js} +1 -1
  80. package/dist/gateway/static/root/assets/voice-api-key-field-LoT3wgZ9.js +1 -0
  81. package/dist/gateway/static/root/assets/with-selector-aYPsXwdl.js +1 -0
  82. package/dist/gateway/static/root/assets/work-item-detail-page-DSTMz_mO.js +1 -0
  83. package/dist/gateway/static/root/assets/workflow-run-setup-panel-B35lJzvm.js +3 -0
  84. package/dist/gateway/static/root/assets/workflows-page-BfSm9oR8.js +11 -0
  85. package/dist/gateway/static/root/assets/workflows-page-DLioOiRN.css +1 -0
  86. package/dist/gateway/static/root/connector-icons/README.md +11 -0
  87. package/dist/gateway/static/root/connector-icons/airtable.svg +13 -0
  88. package/dist/gateway/static/root/connector-icons/asana.svg +15 -0
  89. package/dist/gateway/static/root/connector-icons/brave-search.svg +1 -0
  90. package/dist/gateway/static/root/connector-icons/clickup.svg +19 -0
  91. package/dist/gateway/static/root/connector-icons/composio.svg +266 -0
  92. package/dist/gateway/static/root/connector-icons/discord.svg +15 -0
  93. package/dist/gateway/static/root/connector-icons/dropbox.svg +152 -0
  94. package/dist/gateway/static/root/connector-icons/excel.svg +56 -0
  95. package/dist/gateway/static/root/connector-icons/fetch.svg +6 -0
  96. package/dist/gateway/static/root/connector-icons/figma.svg +178 -0
  97. package/dist/gateway/static/root/connector-icons/filesystem.svg +6 -0
  98. package/dist/gateway/static/root/connector-icons/github.svg +10 -0
  99. package/dist/gateway/static/root/connector-icons/gmail.svg +3 -0
  100. package/dist/gateway/static/root/connector-icons/google-calendar.svg +3 -0
  101. package/dist/gateway/static/root/connector-icons/google-docs.svg +25 -0
  102. package/dist/gateway/static/root/connector-icons/google-drive.svg +25 -0
  103. package/dist/gateway/static/root/connector-icons/google-sheets.svg +1 -0
  104. package/dist/gateway/static/root/connector-icons/hubspot.svg +142 -0
  105. package/dist/gateway/static/root/connector-icons/jira.svg +15 -0
  106. package/dist/gateway/static/root/connector-icons/linear.svg +5 -0
  107. package/dist/gateway/static/root/connector-icons/memory.svg +5 -0
  108. package/dist/gateway/static/root/connector-icons/microsoft-teams.svg +33 -0
  109. package/dist/gateway/static/root/connector-icons/notion.svg +5 -0
  110. package/dist/gateway/static/root/connector-icons/one-drive.svg +13 -0
  111. package/dist/gateway/static/root/connector-icons/outlook.svg +76 -0
  112. package/dist/gateway/static/root/connector-icons/playwright.svg +9 -0
  113. package/dist/gateway/static/root/connector-icons/salesforce.svg +17 -0
  114. package/dist/gateway/static/root/connector-icons/sequential-thinking.svg +8 -0
  115. package/dist/gateway/static/root/connector-icons/shopify.svg +5 -0
  116. package/dist/gateway/static/root/connector-icons/slack.svg +9 -0
  117. package/dist/gateway/static/root/connector-icons/spotify.svg +43 -0
  118. package/dist/gateway/static/root/connector-icons/stripe.svg +11 -0
  119. package/dist/gateway/static/root/connector-icons/telegram.svg +130 -0
  120. package/dist/gateway/static/root/connector-icons/time.svg +6 -0
  121. package/dist/gateway/static/root/connector-icons/todoist.svg +277 -0
  122. package/dist/gateway/static/root/connector-icons/trello.svg +19 -0
  123. package/dist/gateway/static/root/connector-icons/twitter.svg +128 -0
  124. package/dist/gateway/static/root/connector-icons/whatsapp.svg +61 -0
  125. package/dist/gateway/static/root/connector-icons/youtube.svg +11 -0
  126. package/dist/gateway/static/root/index.html +9 -6
  127. package/dist/package.js +1 -1
  128. package/dist/src/agent/agent-manager.d.ts +2 -0
  129. package/dist/src/agent/agent-manager.js +8 -0
  130. package/dist/src/agent/agent-manager.js.map +1 -1
  131. package/dist/src/agent/background-review/prompts.d.ts +1 -1
  132. package/dist/src/agent/background-review/prompts.js +3 -2
  133. package/dist/src/agent/background-review/prompts.js.map +1 -1
  134. package/dist/src/agent/embedded/session-runner.js +5 -5
  135. package/dist/src/agent/embedded/session-runner.js.map +1 -1
  136. package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
  137. package/dist/src/agent/embedded/xopc-auth-storage.d.ts +4 -3
  138. package/dist/src/agent/embedded/xopc-auth-storage.js +6 -6
  139. package/dist/src/agent/embedded/xopc-auth-storage.js.map +1 -1
  140. package/dist/src/agent/embedded/xopc-stream-bridge.js +1 -0
  141. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +1 -1
  142. package/dist/src/agent/embedded/xopc-tools-bridge.d.ts +9 -0
  143. package/dist/src/agent/embedded/xopc-tools-bridge.js +71 -3
  144. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +1 -1
  145. package/dist/src/agent/goals/checklist-judge.js +3 -3
  146. package/dist/src/agent/goals/checklist-judge.js.map +1 -1
  147. package/dist/src/agent/goals/judge.js +2 -2
  148. package/dist/src/agent/goals/judge.js.map +1 -1
  149. package/dist/src/agent/goals/post-turn.js +5 -4
  150. package/dist/src/agent/goals/post-turn.js.map +1 -1
  151. package/dist/src/agent/image/understanding/pi-ai-provider.js +2 -2
  152. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +1 -1
  153. package/dist/src/agent/mcp/mcp-transport.js +4 -1
  154. package/dist/src/agent/mcp/mcp-transport.js.map +1 -1
  155. package/dist/src/agent/memory/compaction.js +2 -2
  156. package/dist/src/agent/memory/compaction.js.map +1 -1
  157. package/dist/src/agent/memory/context/planner.d.ts +1 -0
  158. package/dist/src/agent/memory/context/planner.js +60 -14
  159. package/dist/src/agent/memory/context/planner.js.map +1 -1
  160. package/dist/src/agent/memory/context/types.d.ts +3 -1
  161. package/dist/src/agent/memory/lifecycle.d.ts +11 -0
  162. package/dist/src/agent/memory/lifecycle.js +50 -0
  163. package/dist/src/agent/memory/lifecycle.js.map +1 -0
  164. package/dist/src/agent/memory/source-origin.d.ts +3 -0
  165. package/dist/src/agent/memory/source-origin.js +19 -0
  166. package/dist/src/agent/memory/source-origin.js.map +1 -0
  167. package/dist/src/agent/memory/understanding/service.js +5 -0
  168. package/dist/src/agent/memory/understanding/service.js.map +1 -1
  169. package/dist/src/agent/memory/user-context-coordinator.js +7 -2
  170. package/dist/src/agent/memory/user-context-coordinator.js.map +1 -1
  171. package/dist/src/agent/prompt/sections/behavior.d.ts +2 -0
  172. package/dist/src/agent/prompt/sections/behavior.js +30 -1
  173. package/dist/src/agent/prompt/sections/behavior.js.map +1 -1
  174. package/dist/src/agent/prompt/sections/tooling.js +1 -1
  175. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  176. package/dist/src/agent/prompt/service-prompt-builder.js +8 -1
  177. package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
  178. package/dist/src/agent/prompt/system-prompt.d.ts +2 -0
  179. package/dist/src/agent/prompt/system-prompt.js +6 -3
  180. package/dist/src/agent/prompt/system-prompt.js.map +1 -1
  181. package/dist/src/agent/service/btw-query.d.ts +4 -0
  182. package/dist/src/agent/service/btw-query.js +94 -13
  183. package/dist/src/agent/service/btw-query.js.map +1 -1
  184. package/dist/src/agent/service/process-direct-streaming.js +22 -0
  185. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  186. package/dist/src/agent/service.d.ts +2 -0
  187. package/dist/src/agent/service.js +9 -3
  188. package/dist/src/agent/service.js.map +1 -1
  189. package/dist/src/agent/session/session-inspector.js +9 -1
  190. package/dist/src/agent/session/session-inspector.js.map +1 -1
  191. package/dist/src/agent/starter-agents.js +1 -1
  192. package/dist/src/agent/starter-agents.js.map +1 -1
  193. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  194. package/dist/src/agent/tool-manuals/xopc-use.js +1 -1
  195. package/dist/src/agent/tool-manuals/xopc-use.js.map +1 -1
  196. package/dist/src/agent/tools/composio-tool.d.ts +18 -5
  197. package/dist/src/agent/tools/composio-tool.js +252 -35
  198. package/dist/src/agent/tools/composio-tool.js.map +1 -1
  199. package/dist/src/agent/tools/factory.js +7 -3
  200. package/dist/src/agent/tools/factory.js.map +1 -1
  201. package/dist/src/agent/tools/index.d.ts +1 -1
  202. package/dist/src/agent/tools/index.js +2 -2
  203. package/dist/src/agent/tools/session-search-tool.js +2 -2
  204. package/dist/src/agent/tools/session-search-tool.js.map +1 -1
  205. package/dist/src/agent/tools/web-extract.js +2 -2
  206. package/dist/src/agent/tools/web-extract.js.map +1 -1
  207. package/dist/src/agent/tools/workflow-tool.d.ts +0 -1
  208. package/dist/src/agent/tools/workflow-tool.js +3 -16
  209. package/dist/src/agent/tools/workflow-tool.js.map +1 -1
  210. package/dist/src/agent/workflow/builtins/index.d.ts +2 -28
  211. package/dist/src/agent/workflow/builtins/index.js +226 -41
  212. package/dist/src/agent/workflow/builtins/index.js.map +1 -1
  213. package/dist/src/agent/workflow/catalog.d.ts +32 -34
  214. package/dist/src/agent/workflow/catalog.js +158 -154
  215. package/dist/src/agent/workflow/catalog.js.map +1 -1
  216. package/dist/src/agent/workflow/index.d.ts +4 -6
  217. package/dist/src/agent/workflow/index.js +2 -5
  218. package/dist/src/agent/workflow/snapshot.d.ts +2 -2
  219. package/dist/src/agent/workflow/snapshot.js +2 -2
  220. package/dist/src/agent/workflow/snapshot.js.map +1 -1
  221. package/dist/src/agent/workflow/structured-output-tool.d.ts +2 -2
  222. package/dist/src/agent/workflow/structured-output-tool.js +2 -2
  223. package/dist/src/agent/workflow/structured-output-tool.js.map +1 -1
  224. package/dist/src/agent/workflow/subagent-runner.js +1 -1
  225. package/dist/src/agent/workflow/types.d.ts +31 -26
  226. package/dist/src/agent-manifest/index.d.ts +1 -0
  227. package/dist/src/agent-manifest/index.js +3 -1
  228. package/dist/src/agent-manifest/index.js.map +1 -1
  229. package/dist/src/agent-manifest/preset-chain.d.ts +10 -0
  230. package/dist/src/agent-manifest/preset-chain.js +32 -0
  231. package/dist/src/agent-manifest/preset-chain.js.map +1 -0
  232. package/dist/src/agent-manifest/resolver.js +3 -10
  233. package/dist/src/agent-manifest/resolver.js.map +1 -1
  234. package/dist/src/agent-manifest/schema.d.ts +4 -4
  235. package/dist/src/ai-assist/text-assist.d.ts +2 -1
  236. package/dist/src/ai-assist/text-assist.js +10 -23
  237. package/dist/src/ai-assist/text-assist.js.map +1 -1
  238. package/dist/src/auth/credentials.js +5 -2
  239. package/dist/src/auth/credentials.js.map +1 -1
  240. package/dist/src/auth/oauth/github-copilot.d.ts +3 -4
  241. package/dist/src/auth/oauth/github-copilot.js +66 -2
  242. package/dist/src/auth/oauth/github-copilot.js.map +1 -0
  243. package/dist/src/auth/oauth/index.js +2 -2
  244. package/dist/src/automations/api/routes.js +13 -1
  245. package/dist/src/automations/api/routes.js.map +1 -1
  246. package/dist/src/automations/domain/validation.d.ts +14 -14
  247. package/dist/src/automations/draft/automation-draft-service.js +3 -3
  248. package/dist/src/automations/draft/automation-draft-service.js.map +1 -1
  249. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  250. package/dist/src/browser/providers/browser-ext-install.d.ts +11 -1
  251. package/dist/src/browser/providers/browser-ext-install.js +39 -14
  252. package/dist/src/browser/providers/browser-ext-install.js.map +1 -1
  253. package/dist/src/capabilities/store-connector.d.ts +0 -1
  254. package/dist/src/capabilities/store-connector.js +3 -5
  255. package/dist/src/capabilities/store-connector.js.map +1 -1
  256. package/dist/src/chat-commands/builtins/review.js +84 -68
  257. package/dist/src/chat-commands/builtins/review.js.map +1 -1
  258. package/dist/src/chat-commands/builtins/workflow.js +9 -54
  259. package/dist/src/chat-commands/builtins/workflow.js.map +1 -1
  260. package/dist/src/chat-commands/types.d.ts +4 -0
  261. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  262. package/dist/src/cli/commands/extension-create.js +2 -2
  263. package/dist/src/cli/commands/extension-create.js.map +1 -1
  264. package/dist/src/cli/commands/extension-marketplace.js +42 -36
  265. package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
  266. package/dist/src/cli/commands/extension-pack.d.ts +6 -0
  267. package/dist/src/cli/commands/extension-pack.js +3 -2
  268. package/dist/src/cli/commands/extension-pack.js.map +1 -1
  269. package/dist/src/commands/agents.config.d.ts +1 -0
  270. package/dist/src/commands/agents.config.js +1 -0
  271. package/dist/src/commands/agents.config.js.map +1 -1
  272. package/dist/src/config/schema.d.ts +6 -6
  273. package/dist/src/config/schema.js +6 -22
  274. package/dist/src/config/schema.js.map +1 -1
  275. package/dist/src/config/web-patch.d.ts +1 -1
  276. package/dist/src/connectors/approval.d.ts +2 -0
  277. package/dist/src/connectors/approval.js +33 -0
  278. package/dist/src/connectors/approval.js.map +1 -0
  279. package/dist/src/connectors/auth-provider-registry.d.ts +9 -0
  280. package/dist/src/connectors/auth-provider-registry.js +17 -0
  281. package/dist/src/connectors/auth-provider-registry.js.map +1 -0
  282. package/dist/src/connectors/builtin-catalog.js +55 -116
  283. package/dist/src/connectors/builtin-catalog.js.map +1 -1
  284. package/dist/src/connectors/catalog.js +7 -2
  285. package/dist/src/connectors/catalog.js.map +1 -1
  286. package/dist/src/connectors/composio-catalog.d.ts +19 -0
  287. package/dist/src/connectors/composio-catalog.js +237 -0
  288. package/dist/src/connectors/composio-catalog.js.map +1 -0
  289. package/dist/src/connectors/composio-logo.d.ts +1 -0
  290. package/dist/src/connectors/composio-logo.js +51 -0
  291. package/dist/src/connectors/composio-logo.js.map +1 -0
  292. package/dist/src/connectors/composio-sessions.d.ts +116 -0
  293. package/dist/src/connectors/composio-sessions.js +296 -0
  294. package/dist/src/connectors/composio-sessions.js.map +1 -0
  295. package/dist/src/connectors/composio-triggers.d.ts +17 -0
  296. package/dist/src/connectors/composio-triggers.js +48 -5
  297. package/dist/src/connectors/composio-triggers.js.map +1 -1
  298. package/dist/src/connectors/composio.d.ts +31 -2
  299. package/dist/src/connectors/composio.js +374 -151
  300. package/dist/src/connectors/composio.js.map +1 -1
  301. package/dist/src/connectors/connector-memory-sync.d.ts +15 -0
  302. package/dist/src/connectors/connector-memory-sync.js +90 -0
  303. package/dist/src/connectors/connector-memory-sync.js.map +1 -0
  304. package/dist/src/connectors/install.js +35 -92
  305. package/dist/src/connectors/install.js.map +1 -1
  306. package/dist/src/connectors/instances.js +6 -2
  307. package/dist/src/connectors/instances.js.map +1 -1
  308. package/dist/src/connectors/integration-strategy.d.ts +3 -0
  309. package/dist/src/connectors/integration-strategy.js +29 -0
  310. package/dist/src/connectors/integration-strategy.js.map +1 -0
  311. package/dist/src/connectors/policy.d.ts +13 -0
  312. package/dist/src/connectors/policy.js +48 -0
  313. package/dist/src/connectors/policy.js.map +1 -0
  314. package/dist/src/connectors/providers.js +1 -1
  315. package/dist/src/connectors/runtime-adapter-registry.d.ts +25 -0
  316. package/dist/src/connectors/runtime-adapter-registry.js +154 -0
  317. package/dist/src/connectors/runtime-adapter-registry.js.map +1 -0
  318. package/dist/src/connectors/types.d.ts +113 -4
  319. package/dist/src/connectors/workflow-preflight.d.ts +20 -0
  320. package/dist/src/connectors/workflow-preflight.js +70 -0
  321. package/dist/src/connectors/workflow-preflight.js.map +1 -0
  322. package/dist/src/extensions/install-transaction.d.ts +16 -0
  323. package/dist/src/extensions/install-transaction.js +76 -0
  324. package/dist/src/extensions/install-transaction.js.map +1 -0
  325. package/dist/src/extensions/install.d.ts +2 -0
  326. package/dist/src/extensions/install.js +23 -1
  327. package/dist/src/extensions/install.js.map +1 -1
  328. package/dist/src/gateway/agents-admin.d.ts +2 -0
  329. package/dist/src/gateway/agents-admin.js +7 -0
  330. package/dist/src/gateway/agents-admin.js.map +1 -1
  331. package/dist/src/gateway/capability-presets-admin.d.ts +11 -0
  332. package/dist/src/gateway/capability-presets-admin.js +11 -4
  333. package/dist/src/gateway/capability-presets-admin.js.map +1 -1
  334. package/dist/src/gateway/chat-stream/mapper.js +17 -0
  335. package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
  336. package/dist/src/gateway/chat-stream/protocol.d.ts +18 -1
  337. package/dist/src/gateway/hono/lib/config-payload.d.ts +3 -3
  338. package/dist/src/gateway/hono/routes/agents.js +3 -0
  339. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  340. package/dist/src/gateway/hono/routes/capability-presets.js +19 -1
  341. package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -1
  342. package/dist/src/gateway/hono/routes/connectors.js +188 -25
  343. package/dist/src/gateway/hono/routes/connectors.js.map +1 -1
  344. package/dist/src/gateway/hono/routes/goals.js +22 -3
  345. package/dist/src/gateway/hono/routes/goals.js.map +1 -1
  346. package/dist/src/gateway/hono/routes/home.d.ts +60 -1
  347. package/dist/src/gateway/hono/routes/home.js +244 -18
  348. package/dist/src/gateway/hono/routes/home.js.map +1 -1
  349. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  350. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  351. package/dist/src/gateway/hono/routes/memory.js +14 -1
  352. package/dist/src/gateway/hono/routes/memory.js.map +1 -1
  353. package/dist/src/gateway/hono/routes/models.js +1 -0
  354. package/dist/src/gateway/hono/routes/models.js.map +1 -1
  355. package/dist/src/gateway/hono/routes/projects.js +103 -2
  356. package/dist/src/gateway/hono/routes/projects.js.map +1 -1
  357. package/dist/src/gateway/hono/routes/public-gateway.js +93 -0
  358. package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
  359. package/dist/src/gateway/hono/routes/voice.js +2 -2
  360. package/dist/src/gateway/hono/routes/voice.js.map +1 -1
  361. package/dist/src/gateway/hono/routes/workflows.js +137 -22
  362. package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
  363. package/dist/src/gateway/hono/routes/you.d.ts +23 -0
  364. package/dist/src/gateway/hono/routes/you.js +538 -0
  365. package/dist/src/gateway/hono/routes/you.js.map +1 -0
  366. package/dist/src/gateway/hono/sse.d.ts +2 -1
  367. package/dist/src/gateway/hono/sse.js +2 -1
  368. package/dist/src/gateway/hono/sse.js.map +1 -1
  369. package/dist/src/gateway/service/marketplace-service.d.ts +13 -1
  370. package/dist/src/gateway/service/marketplace-service.js +96 -40
  371. package/dist/src/gateway/service/marketplace-service.js.map +1 -1
  372. package/dist/src/gateway/service.d.ts +2 -0
  373. package/dist/src/gateway/service.js +7 -1
  374. package/dist/src/gateway/service.js.map +1 -1
  375. package/dist/src/goals/goal-contract-draft.js +2 -2
  376. package/dist/src/goals/goal-contract-draft.js.map +1 -1
  377. package/dist/src/goals/goal-evidence-review.js +2 -2
  378. package/dist/src/goals/goal-evidence-review.js.map +1 -1
  379. package/dist/src/goals/goal-service.d.ts +7 -5
  380. package/dist/src/goals/goal-service.js +25 -13
  381. package/dist/src/goals/goal-service.js.map +1 -1
  382. package/dist/src/goals/goal-store.js +46 -7
  383. package/dist/src/goals/goal-store.js.map +1 -1
  384. package/dist/src/goals/types.d.ts +24 -0
  385. package/dist/src/notes/service.js +2 -2
  386. package/dist/src/notes/service.js.map +1 -1
  387. package/dist/src/providers/constants.d.ts +2 -0
  388. package/dist/src/providers/constants.js +11 -0
  389. package/dist/src/providers/constants.js.map +1 -0
  390. package/dist/src/providers/extension-stream-bridge.js +1 -0
  391. package/dist/src/providers/extension-stream-bridge.js.map +1 -1
  392. package/dist/src/providers/index.d.ts +3 -3
  393. package/dist/src/providers/index.js +5 -4
  394. package/dist/src/providers/index.js.map +1 -1
  395. package/dist/src/providers/model-call.d.ts +17 -0
  396. package/dist/src/providers/model-call.js +60 -0
  397. package/dist/src/providers/model-call.js.map +1 -0
  398. package/dist/src/session/session-title.js +2 -2
  399. package/dist/src/session/session-title.js.map +1 -1
  400. package/dist/src/storage/sqlite/connector-repository.d.ts +49 -0
  401. package/dist/src/storage/sqlite/connector-repository.js +385 -0
  402. package/dist/src/storage/sqlite/connector-repository.js.map +1 -0
  403. package/dist/src/storage/sqlite/index.d.ts +3 -0
  404. package/dist/src/storage/sqlite/index.js +4 -1
  405. package/dist/src/storage/sqlite/migrations/030_connectors.sql +94 -0
  406. package/dist/src/storage/sqlite/migrations/031_connector_approvals.sql +24 -0
  407. package/dist/src/storage/sqlite/migrations/032_connector_webhook_deliveries.sql +15 -0
  408. package/dist/src/storage/sqlite/migrations/033_user_trust_policies.sql +6 -0
  409. package/dist/src/storage/sqlite/migrations/034_allow_global_auto_trust.sql +14 -0
  410. package/dist/src/storage/sqlite/migrations/035_user_profile_prompt_state.sql +7 -0
  411. package/dist/src/storage/sqlite/migrations/036_goal_outcome_metric.sql +12 -0
  412. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  413. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  414. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  415. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  416. package/dist/src/storage/sqlite/schema.js +1 -1
  417. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +3 -0
  418. package/dist/src/storage/sqlite/user-profile-setup-repository.js +34 -0
  419. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +1 -0
  420. package/dist/src/storage/sqlite/user-trust-repository.d.ts +3 -0
  421. package/dist/src/storage/sqlite/user-trust-repository.js +34 -0
  422. package/dist/src/storage/sqlite/user-trust-repository.js.map +1 -0
  423. package/dist/src/tui/components/assistant-message.js +15 -0
  424. package/dist/src/tui/components/assistant-message.js.map +1 -1
  425. package/dist/src/tui/tui-agent-events.js +85 -1
  426. package/dist/src/tui/tui-agent-events.js.map +1 -1
  427. package/dist/src/tui/tui-command-formatters.js +7 -7
  428. package/dist/src/tui/tui-command-formatters.js.map +1 -1
  429. package/dist/src/tui/tui-commands.js +1 -1
  430. package/dist/src/tui/tui-startup-resources.js +1 -1
  431. package/dist/src/user-context/import.d.ts +12 -0
  432. package/dist/src/user-context/import.js +48 -0
  433. package/dist/src/user-context/import.js.map +1 -0
  434. package/dist/src/user-context/profile.d.ts +37 -0
  435. package/dist/src/user-context/profile.js +165 -0
  436. package/dist/src/user-context/profile.js.map +1 -0
  437. package/dist/src/user-context/projection.d.ts +54 -0
  438. package/dist/src/user-context/projection.js +121 -0
  439. package/dist/src/user-context/projection.js.map +1 -0
  440. package/dist/src/user-context/source-recommendations.d.ts +13 -0
  441. package/dist/src/user-context/source-recommendations.js +86 -0
  442. package/dist/src/user-context/source-recommendations.js.map +1 -0
  443. package/dist/src/user-context/trust-policy.d.ts +11 -0
  444. package/dist/src/user-context/trust-policy.js +31 -0
  445. package/dist/src/user-context/trust-policy.js.map +1 -0
  446. package/dist/src/voice/tts/summarize.js +2 -2
  447. package/dist/src/voice/tts/summarize.js.map +1 -1
  448. package/dist/src/workflows/authoring/index.d.ts +1 -0
  449. package/dist/src/workflows/authoring/index.js +2 -0
  450. package/dist/src/workflows/authoring/workflow-draft-store.d.ts +33 -0
  451. package/dist/src/workflows/authoring/workflow-draft-store.js +74 -0
  452. package/dist/src/workflows/authoring/workflow-draft-store.js.map +1 -0
  453. package/dist/src/workflows/domain/definition-utils.d.ts +6 -4
  454. package/dist/src/workflows/domain/definition-utils.js +28 -26
  455. package/dist/src/workflows/domain/definition-utils.js.map +1 -1
  456. package/dist/src/workflows/domain/definition.d.ts +79 -6
  457. package/dist/src/workflows/domain/event.d.ts +18 -2
  458. package/dist/src/workflows/domain/index.js +3 -3
  459. package/dist/src/workflows/domain/run.d.ts +16 -2
  460. package/dist/src/workflows/domain/run.js.map +1 -1
  461. package/dist/src/workflows/domain/validation.d.ts +9 -5
  462. package/dist/src/workflows/domain/validation.js +183 -40
  463. package/dist/src/workflows/domain/validation.js.map +1 -1
  464. package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +2 -3
  465. package/dist/src/workflows/draft/workflow-draft-prompt.js +31 -73
  466. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +1 -1
  467. package/dist/src/workflows/draft/workflow-draft-service.js +6 -10
  468. package/dist/src/workflows/draft/workflow-draft-service.js.map +1 -1
  469. package/dist/src/workflows/draft/workflow-draft-validator.js +29 -37
  470. package/dist/src/workflows/draft/workflow-draft-validator.js.map +1 -1
  471. package/dist/src/workflows/draft/workflow-draft.types.d.ts +4 -4
  472. package/dist/src/workflows/engine/projector.js +43 -1
  473. package/dist/src/workflows/engine/projector.js.map +1 -1
  474. package/dist/src/workflows/engine/workflow-engine.d.ts +2 -3
  475. package/dist/src/workflows/engine/workflow-engine.js +24 -4
  476. package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
  477. package/dist/src/workflows/index.js +4 -7
  478. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +1 -9
  479. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +1 -1
  480. package/dist/src/workflows/runtime/graph-workflow-runtime.d.ts +10 -0
  481. package/dist/src/workflows/runtime/graph-workflow-runtime.js +295 -0
  482. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +1 -0
  483. package/dist/src/workflows/runtime/index.d.ts +1 -2
  484. package/dist/src/workflows/runtime/index.js +2 -5
  485. package/dist/src/workflows/runtime/workflow-runtime-port.d.ts +5 -8
  486. package/dist/src/workflows/service/workflow-run-service.js +15 -1
  487. package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
  488. package/dist/src/workflows/service/workflow-run-service.types.d.ts +2 -1
  489. package/package.json +8 -7
  490. package/dist/gateway/static/root/assets/agents-Bd863Akz.js +0 -2
  491. package/dist/gateway/static/root/assets/apps-page-B4omjLxa.js +0 -1
  492. package/dist/gateway/static/root/assets/automation-suggestion-card-fgtj5Gek.js +0 -1
  493. package/dist/gateway/static/root/assets/automations-page-Dz2mgjIR.js +0 -4
  494. package/dist/gateway/static/root/assets/browser-settings-page-DZZz5v_i.js +0 -8
  495. package/dist/gateway/static/root/assets/capability-presets-settings-panel-sCHojZr4.js +0 -1
  496. package/dist/gateway/static/root/assets/channels-settings-UyVSnf9s.js +0 -1
  497. package/dist/gateway/static/root/assets/channels-status-swr-CB5FzcLf.js +0 -1
  498. package/dist/gateway/static/root/assets/connectors-page-BzhHiUO4.js +0 -2
  499. package/dist/gateway/static/root/assets/desktop-pet-settings-DqqUPC7G.js +0 -1
  500. package/dist/gateway/static/root/assets/dreaming-settings-BmL54kQq.js +0 -3
  501. package/dist/gateway/static/root/assets/extension-page-DT5cpace.js +0 -1
  502. package/dist/gateway/static/root/assets/extension-settings-page-CbMk4GhQ.js +0 -1
  503. package/dist/gateway/static/root/assets/gateway-settings-CdghmKHJ.js +0 -1
  504. package/dist/gateway/static/root/assets/goal-create-dialog-CAlsM9MP.js +0 -1
  505. package/dist/gateway/static/root/assets/goal-detail-page-CLPa4F2y.js +0 -4
  506. package/dist/gateway/static/root/assets/goals-page-B2VpdzfH.js +0 -2
  507. package/dist/gateway/static/root/assets/goals-settings-CW1NwxvV.js +0 -1
  508. package/dist/gateway/static/root/assets/heartbeat-settings-C86k5tff.js +0 -1
  509. package/dist/gateway/static/root/assets/index-B8s8Pq5U.css +0 -1
  510. package/dist/gateway/static/root/assets/index-ehajXmqL.js +0 -262
  511. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-8xwKEhui.js +0 -1
  512. package/dist/gateway/static/root/assets/logs-page-C_BMONOO.js +0 -7
  513. package/dist/gateway/static/root/assets/messages-B-8CqAeX.js +0 -3
  514. package/dist/gateway/static/root/assets/models-hub-panel-Do_cwNjF.js +0 -2
  515. package/dist/gateway/static/root/assets/notes-page-5IdlPHaX.js +0 -1
  516. package/dist/gateway/static/root/assets/notes-workbench-0KsRZJIZ.js +0 -2
  517. package/dist/gateway/static/root/assets/project-detail-page-Dk2zB1gy.js +0 -1
  518. package/dist/gateway/static/root/assets/projects-page-CJQntm2G.js +0 -1
  519. package/dist/gateway/static/root/assets/remote-access-hub-CHeZZg7O.js +0 -1
  520. package/dist/gateway/static/root/assets/sessions-page-9Hb_r0AG.js +0 -1
  521. package/dist/gateway/static/root/assets/settings-advanced-gate-PmzVFvAv.js +0 -1
  522. package/dist/gateway/static/root/assets/settings-page-C5G2klUB.js +0 -1
  523. package/dist/gateway/static/root/assets/setup-status-panel-oQ8OLnw3.js +0 -1
  524. package/dist/gateway/static/root/assets/share-preview-page-CXtDHMSi.js +0 -2
  525. package/dist/gateway/static/root/assets/shares-settings-BlNoairj.js +0 -1
  526. package/dist/gateway/static/root/assets/skill-reload-api-BYV5x1KO.js +0 -1
  527. package/dist/gateway/static/root/assets/skills-page-ClBcKQZP.js +0 -2
  528. package/dist/gateway/static/root/assets/toast-z0toXu32.js +0 -1
  529. package/dist/gateway/static/root/assets/user-profile-settings-panel-CeC308-E.js +0 -1
  530. package/dist/gateway/static/root/assets/voice-api-key-field-BE57S-nS.js +0 -1
  531. package/dist/gateway/static/root/assets/work-item-detail-page-Di1ww5Aa.js +0 -1
  532. package/dist/gateway/static/root/assets/workflow-run-setup-panel-CzK84i-B.js +0 -3
  533. package/dist/gateway/static/root/assets/workflow-start-dialog-CtLTtNUB.js +0 -1
  534. package/dist/gateway/static/root/assets/workflows-page-CZFZdua9.js +0 -18
  535. package/dist/src/agent/workflow/builtins/audit-repo.d.ts +0 -13
  536. package/dist/src/agent/workflow/builtins/audit-repo.js +0 -183
  537. package/dist/src/agent/workflow/builtins/audit-repo.js.map +0 -1
  538. package/dist/src/agent/workflow/builtins/client-proposal.d.ts +0 -12
  539. package/dist/src/agent/workflow/builtins/client-proposal.js +0 -164
  540. package/dist/src/agent/workflow/builtins/client-proposal.js.map +0 -1
  541. package/dist/src/agent/workflow/builtins/competitor-scan.d.ts +0 -12
  542. package/dist/src/agent/workflow/builtins/competitor-scan.js +0 -164
  543. package/dist/src/agent/workflow/builtins/competitor-scan.js.map +0 -1
  544. package/dist/src/agent/workflow/builtins/content-draft.d.ts +0 -13
  545. package/dist/src/agent/workflow/builtins/content-draft.js +0 -159
  546. package/dist/src/agent/workflow/builtins/content-draft.js.map +0 -1
  547. package/dist/src/agent/workflow/builtins/content-repurpose.d.ts +0 -11
  548. package/dist/src/agent/workflow/builtins/content-repurpose.js +0 -146
  549. package/dist/src/agent/workflow/builtins/content-repurpose.js.map +0 -1
  550. package/dist/src/agent/workflow/builtins/debug-incident.d.ts +0 -13
  551. package/dist/src/agent/workflow/builtins/debug-incident.js +0 -177
  552. package/dist/src/agent/workflow/builtins/debug-incident.js.map +0 -1
  553. package/dist/src/agent/workflow/builtins/decision-compare.d.ts +0 -13
  554. package/dist/src/agent/workflow/builtins/decision-compare.js +0 -187
  555. package/dist/src/agent/workflow/builtins/decision-compare.js.map +0 -1
  556. package/dist/src/agent/workflow/builtins/implementation-plan.d.ts +0 -12
  557. package/dist/src/agent/workflow/builtins/implementation-plan.js +0 -185
  558. package/dist/src/agent/workflow/builtins/implementation-plan.js.map +0 -1
  559. package/dist/src/agent/workflow/builtins/inbox-triage.d.ts +0 -11
  560. package/dist/src/agent/workflow/builtins/inbox-triage.js +0 -158
  561. package/dist/src/agent/workflow/builtins/inbox-triage.js.map +0 -1
  562. package/dist/src/agent/workflow/builtins/meeting-prep.d.ts +0 -12
  563. package/dist/src/agent/workflow/builtins/meeting-prep.js +0 -152
  564. package/dist/src/agent/workflow/builtins/meeting-prep.js.map +0 -1
  565. package/dist/src/agent/workflow/builtins/multi-perspective-review.d.ts +0 -14
  566. package/dist/src/agent/workflow/builtins/multi-perspective-review.js +0 -171
  567. package/dist/src/agent/workflow/builtins/multi-perspective-review.js.map +0 -1
  568. package/dist/src/agent/workflow/builtins/offer-design.d.ts +0 -12
  569. package/dist/src/agent/workflow/builtins/offer-design.js +0 -170
  570. package/dist/src/agent/workflow/builtins/offer-design.js.map +0 -1
  571. package/dist/src/agent/workflow/builtins/pr-review.d.ts +0 -12
  572. package/dist/src/agent/workflow/builtins/pr-review.js +0 -178
  573. package/dist/src/agent/workflow/builtins/pr-review.js.map +0 -1
  574. package/dist/src/agent/workflow/builtins/release-check.d.ts +0 -11
  575. package/dist/src/agent/workflow/builtins/release-check.js +0 -174
  576. package/dist/src/agent/workflow/builtins/release-check.js.map +0 -1
  577. package/dist/src/agent/workflow/builtins/research.d.ts +0 -13
  578. package/dist/src/agent/workflow/builtins/research.js +0 -188
  579. package/dist/src/agent/workflow/builtins/research.js.map +0 -1
  580. package/dist/src/agent/workflow/builtins/weekly-review.d.ts +0 -12
  581. package/dist/src/agent/workflow/builtins/weekly-review.js +0 -139
  582. package/dist/src/agent/workflow/builtins/weekly-review.js.map +0 -1
  583. package/dist/src/agent/workflow/last-run-memory.d.ts +0 -42
  584. package/dist/src/agent/workflow/last-run-memory.js +0 -60
  585. package/dist/src/agent/workflow/last-run-memory.js.map +0 -1
  586. package/dist/src/agent/workflow/lint.d.ts +0 -38
  587. package/dist/src/agent/workflow/lint.js +0 -74
  588. package/dist/src/agent/workflow/lint.js.map +0 -1
  589. package/dist/src/agent/workflow/meta-locale.d.ts +0 -12
  590. package/dist/src/agent/workflow/meta-locale.js +0 -62
  591. package/dist/src/agent/workflow/meta-locale.js.map +0 -1
  592. package/dist/src/agent/workflow/parser.d.ts +0 -20
  593. package/dist/src/agent/workflow/parser.js +0 -152
  594. package/dist/src/agent/workflow/parser.js.map +0 -1
  595. package/dist/src/agent/workflow/runtime.d.ts +0 -34
  596. package/dist/src/agent/workflow/runtime.js +0 -402
  597. package/dist/src/agent/workflow/runtime.js.map +0 -1
  598. package/dist/src/connectors/oauth.d.ts +0 -22
  599. package/dist/src/connectors/oauth.js +0 -99
  600. package/dist/src/connectors/oauth.js.map +0 -1
  601. package/dist/src/workflows/runtime/script-runtime.d.ts +0 -3
  602. package/dist/src/workflows/runtime/script-runtime.js +0 -3
  603. package/dist/src/workflows/runtime/script-workflow-runtime.d.ts +0 -5
  604. package/dist/src/workflows/runtime/script-workflow-runtime.js +0 -15
  605. package/dist/src/workflows/runtime/script-workflow-runtime.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","names":[],"sources":["../../../../../src/gateway/hono/routes/workflows.ts"],"sourcesContent":["import { readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\n\nimport type { Hono } from 'hono';\n\nimport { resolveDefaultAgentId } from '../../../agent/agent-scope.js';\nimport { createWorkflowCatalog } from '../../../agent/workflow/catalog.js';\nimport { messagesToClientHistory } from '../../../session/client-history.js';\nimport type {\n WorkflowDefinition,\n WorkflowArtifactRef,\n WorkflowRunInputEnvelope,\n WorkflowRunSource,\n WorkflowRunSummary,\n WorkflowRunView,\n} from '../../../workflows/domain/index.js';\nimport { buildWorkflowDefinition, validateWorkflowDefinitionInput } from '../../../workflows/domain/index.js';\nimport { WorkflowDraftService, type CreateWorkflowDraftRequest } from '../../../workflows/draft/index.js';\nimport { resolveWorkflowRunArtifactsDir } from '../../../workflows/store/paths.js';\nimport { resolveProjectAgentId } from '../../../projects/index.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\ninterface StartWorkflowRunRequestBody {\n definitionId?: string;\n input?: unknown;\n inputEnvelope?: WorkflowRunInputEnvelope;\n goal?: string;\n goalId?: string;\n projectId?: string;\n workItemId?: string;\n agentId?: string;\n parentSessionKey?: string;\n source?: WorkflowRunSource;\n concurrency?: number;\n maxSubagents?: number;\n tokenBudget?: number | null;\n idempotencyKey?: string;\n}\n\ninterface ReplayWorkflowRunRequestBody {\n scope?: 'failed_agents' | 'failed_phases';\n}\n\ninterface RetryWorkflowRunRequestBody {\n projectId?: string;\n}\n\ninterface WorkflowRunComparison {\n sourceRunId: string;\n replayRunId: string;\n sourceStatus: WorkflowRunView['run']['status'];\n replayStatus: WorkflowRunView['run']['status'];\n statusChanged: boolean;\n durationDeltaMs: number | null;\n failedAgentsBefore: number;\n failedAgentsAfter: number;\n fixedAgentIds: string[];\n stillFailingAgentIds: string[];\n targetAgents: Array<{\n agentId: string;\n label: string;\n beforeStatus?: string;\n afterStatus?: string;\n beforeError?: string;\n afterError?: string;\n beforePreview?: string;\n afterPreview?: string;\n }>;\n}\n\ninterface SaveWorkflowDefinitionRequestBody {\n name?: string;\n script?: string;\n}\n\ninterface CreateWorkflowDraftRequestBody extends Omit<CreateWorkflowDraftRequest, 'agentId'> {\n agentId?: string;\n}\n\nexport function registerWorkflowRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n const workflowRunService = service.createWorkflowRunService();\n\n authenticated.get('/api/workflows/definitions', (c) => {\n const catalog = createWorkflowCatalog();\n const definitions = catalog.list().map((entry) => {\n try {\n return toWorkflowDefinition(catalog.load(entry.name));\n } catch {\n return null;\n }\n }).filter((definition): definition is WorkflowDefinition => Boolean(definition));\n\n return c.json({ definitions });\n });\n\n authenticated.get('/api/workflows/definitions/:id', (c) => {\n const id = c.req.param('id');\n const catalog = createWorkflowCatalog();\n try {\n const definition = toWorkflowDefinition(catalog.load(id));\n return c.json({ definition });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Workflow definition not found' }, 404);\n }\n });\n\n authenticated.post('/api/workflows/definitions/validate', async (c) => {\n const body = await readJsonBody<SaveWorkflowDefinitionRequestBody>(c.req.raw);\n const result = validateWorkflowDefinitionInput({\n name: body.name,\n script: body.script,\n });\n return c.json(result);\n });\n\n authenticated.post('/api/workflows/definitions/draft', async (c) => {\n const body = await readJsonBody<CreateWorkflowDraftRequestBody>(c.req.raw);\n const prompt = body.prompt?.trim();\n if (!prompt) {\n return c.json({ error: 'prompt is required' }, 400);\n }\n const agentId = getAgentId(body.agentId ?? c.req.query('agentId'), service.currentConfig);\n const draftService = new WorkflowDraftService({ config: service.currentConfig });\n try {\n const draft = await draftService.createDraft({\n prompt,\n agentId,\n language: body.language,\n mode: body.mode,\n existingScript: body.existingScript,\n constraints: body.constraints,\n }, c.req.raw.signal);\n return c.json({ draft }, 201);\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create workflow draft' }, 400);\n }\n });\n\n authenticated.post('/api/workflows/definitions', async (c) => {\n const body = await readJsonBody<SaveWorkflowDefinitionRequestBody>(c.req.raw);\n const validation = validateWorkflowDefinitionInput({\n name: body.name,\n script: body.script,\n });\n if (!validation.valid) {\n return c.json({ error: validation.errors[0]?.message ?? 'Invalid workflow definition', validation }, 400);\n }\n\n const name = body.name?.trim() ?? '';\n const script = body.script ?? '';\n const catalog = createWorkflowCatalog();\n try {\n catalog.save(name, script);\n const definition = toWorkflowDefinition(catalog.load(name));\n return c.json({ definition }, 201);\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to save workflow' }, 400);\n }\n });\n\n authenticated.delete('/api/workflows/definitions/:id', (c) => {\n const id = c.req.param('id').trim();\n if (!id) {\n return c.json({ error: 'id is required' }, 400);\n }\n\n const catalog = createWorkflowCatalog();\n try {\n const removed = catalog.remove(id);\n if (!removed) {\n return c.json({ error: 'User workflow not found or cannot delete built-in workflow' }, 404);\n }\n return c.json({ removed: true });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to delete workflow' }, 400);\n }\n });\n\n authenticated.get('/api/workflows/stats', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const definitionId = c.req.query('definitionId')?.trim();\n const runStore = workflowRunService.createRunStore(agentId);\n const runs = await runStore.listRunSummaries(500);\n const filteredRuns = definitionId ? runs.filter((run) => run.definitionId === definitionId) : runs;\n return c.json({ stats: buildWorkflowStats(filteredRuns) });\n });\n\n authenticated.post('/api/workflows/runs', async (c) => {\n const body = await readJsonBody<StartWorkflowRunRequestBody>(c.req.raw);\n const definitionId = body.definitionId?.trim();\n if (!definitionId) {\n return c.json({ error: 'definitionId is required' }, 400);\n }\n\n const parentSessionKey = body.parentSessionKey?.trim() || undefined;\n const goalId = body.goalId?.trim();\n const projectId = body.projectId?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const explicitAgentId = body.agentId ?? c.req.query('agentId');\n const agentId = projectId\n ? resolveProjectAgentId({\n config: service.currentConfig,\n projects: service.projects,\n explicitAgentId,\n projectId,\n })\n : getAgentId(explicitAgentId, service.currentConfig);\n const result = await workflowRunService.startWorkflowRun({\n agentId,\n definitionId,\n goalId,\n projectId,\n workItemId: typeof body.workItemId === 'string' ? body.workItemId : undefined,\n input: body.inputEnvelope ? undefined : body.input,\n inputEnvelope: body.inputEnvelope,\n goal: body.goal,\n parentSessionKey,\n source: normalizeWorkflowRunSource(body.source),\n concurrency: normalizePositiveInteger(body.concurrency),\n maxSubagents: normalizePositiveInteger(body.maxSubagents),\n tokenBudget: body.tokenBudget,\n idempotencyKey: body.idempotencyKey,\n });\n\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n\n authenticated.get('/api/workflows/runs', async (c) => {\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Number.parseInt(rawLimit, 10) : 50;\n const goalId = c.req.query('goalId')?.trim();\n const projectId = c.req.query('projectId')?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const explicitAgentId = c.req.query('agentId');\n const agentId = projectId\n ? resolveProjectAgentId({\n config: service.currentConfig,\n projects: service.projects,\n explicitAgentId,\n projectId,\n })\n : getAgentId(explicitAgentId, service.currentConfig);\n const runStore = workflowRunService.createRunStore(agentId);\n const runs = goalId\n ? await runStore.listRunSummariesForGoal(goalId, Number.isFinite(limit) ? limit : 50)\n : await runStore.listRunSummaries(Number.isFinite(limit) ? limit : 50, { projectId });\n return c.json({ runs });\n });\n\n authenticated.post('/api/workflows/runs/:runId/cancel', async (c) => {\n const runId = c.req.param('runId');\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const result = await workflowRunService.cancelWorkflowRun({\n agentId,\n runId,\n reason: 'Cancelled by user',\n });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n return c.json({\n cancelled: result.cancelled,\n alreadyFinished: result.alreadyFinished,\n });\n });\n\n authenticated.get('/api/workflows/runs/:runId/agents/:agentId/session', async (c) => {\n const ownerAgentId = getAgentId(c.req.query('ownerAgentId') ?? c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const workflowAgentId = c.req.param('agentId');\n const runStore = workflowRunService.createRunStore(ownerAgentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n const normalizedWorkflowAgentId = workflowAgentId.startsWith('agent-')\n ? workflowAgentId\n : `agent-${workflowAgentId}`;\n const agent = view.agents.find(\n (item) => item.id === workflowAgentId || item.id === normalizedWorkflowAgentId,\n );\n if (!agent) {\n return c.json({ error: 'Workflow agent not found' }, 404);\n }\n const session = await service.sessions.getSession(agent.sessionKey);\n if (!session || session.sessionType !== 'workflow-subagent') {\n return c.json({ error: 'Workflow agent session not found' }, 404);\n }\n return c.json({\n sessionKey: agent.sessionKey,\n metadata: {\n sessionType: session.sessionType,\n workflowRunId: session.workflowRunId,\n workflowAgentId: session.workflowAgentId,\n workflowAgentLabel: session.workflowAgentLabel,\n },\n messages: messagesToClientHistory(session.messages),\n });\n });\n\n authenticated.get('/api/workflows/runs/:runId/comparison', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const replayView = await runStore.readRunView(runId);\n if (!replayView) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n const sourceRunId = c.req.query('sourceRunId')?.trim() || replayView.run.metadata?.replay?.sourceRunId;\n if (!sourceRunId) {\n return c.json({ error: 'Workflow run is not a replay run' }, 409);\n }\n const sourceView = await runStore.readRunView(sourceRunId);\n if (!sourceView) {\n return c.json({ error: 'Source workflow run not found' }, 404);\n }\n return c.json({ comparison: buildWorkflowRunComparison(sourceView, replayView) });\n });\n\n authenticated.get('/api/workflows/runs/:runId', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n return c.json({ view });\n });\n\n authenticated.get('/api/workflows/runs/:runId/artifacts/:artifactId', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const artifactId = c.req.param('artifactId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n\n const artifact = findWorkflowArtifact(view, artifactId);\n if (!artifact) {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n\n const artifactPath = join(resolveWorkflowRunArtifactsDir(service.currentConfig, agentId, runId), basename(artifact.name));\n let file: Buffer;\n try {\n const info = await stat(artifactPath);\n if (!info.isFile()) {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n file = await readFile(artifactPath);\n } catch {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n\n return new Response(new Uint8Array(file), {\n headers: {\n 'Content-Type': artifact.mimeType || 'application/octet-stream',\n 'Content-Length': String(file.byteLength),\n 'Content-Disposition': `attachment; filename=\"${encodeHeaderFilename(artifact.name)}\"`,\n },\n });\n });\n\n authenticated.post('/api/workflows/runs/:runId/rebuild', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.rebuildRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n service.emit('workflow.run.updated', { runId, view });\n return c.json({ view });\n });\n\n authenticated.post('/api/workflows/runs/:runId/retry', async (c) => {\n const body = await readJsonBody<RetryWorkflowRunRequestBody>(c.req.raw);\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const projectId = body.projectId?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const result = await workflowRunService.retryWorkflowRun({ agentId, runId, projectId });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n\n authenticated.post('/api/workflows/runs/:runId/replay', async (c) => {\n const body = await readJsonBody<ReplayWorkflowRunRequestBody>(c.req.raw);\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const scope = body.scope === 'failed_phases' ? 'failed_phases' : 'failed_agents';\n const result = await workflowRunService.replayWorkflowRun({ agentId, runId, scope });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n}\n\nfunction buildWorkflowRunComparison(sourceView: WorkflowRunView, replayView: WorkflowRunView): WorkflowRunComparison {\n const targetAgentIds = replayView.run.metadata?.replay?.agentIds ?? replayView.agents.map((agent) => agent.id);\n const sourceAgents = new Map(sourceView.agents.map((agent) => [agent.id, agent]));\n const replayAgents = new Map(replayView.agents.map((agent) => [agent.id, agent]));\n const targetAgents = targetAgentIds.map((agentId) => {\n const before = sourceAgents.get(agentId);\n const after = replayAgents.get(agentId);\n return {\n agentId,\n label: after?.label ?? before?.label ?? agentId,\n beforeStatus: before?.status,\n afterStatus: after?.status,\n beforeError: before?.error,\n afterError: after?.error,\n beforePreview: before?.resultPreview,\n afterPreview: after?.resultPreview,\n };\n });\n const fixedAgentIds = targetAgents\n .filter((agent) => (agent.beforeStatus === 'error' || agent.beforeStatus === 'skipped') && agent.afterStatus === 'done')\n .map((agent) => agent.agentId);\n const stillFailingAgentIds = targetAgents\n .filter((agent) => agent.afterStatus === 'error' || agent.afterStatus === 'skipped')\n .map((agent) => agent.agentId);\n const durationDeltaMs =\n typeof sourceView.run.metrics.durationMs === 'number' && typeof replayView.run.metrics.durationMs === 'number'\n ? replayView.run.metrics.durationMs - sourceView.run.metrics.durationMs\n : null;\n\n return {\n sourceRunId: sourceView.run.id,\n replayRunId: replayView.run.id,\n sourceStatus: sourceView.run.status,\n replayStatus: replayView.run.status,\n statusChanged: sourceView.run.status !== replayView.run.status,\n durationDeltaMs,\n failedAgentsBefore: targetAgents.filter((agent) => agent.beforeStatus === 'error' || agent.beforeStatus === 'skipped').length,\n failedAgentsAfter: stillFailingAgentIds.length,\n fixedAgentIds,\n stillFailingAgentIds,\n targetAgents,\n };\n}\n\nfunction getAgentId(rawAgentId: string | undefined, config: AuthenticatedRouteDeps['service']['currentConfig']): string {\n const trimmed = rawAgentId?.trim();\n if (trimmed) {\n return trimmed;\n }\n return resolveDefaultAgentId(config);\n}\n\nfunction toWorkflowDefinition(loaded: ReturnType<ReturnType<typeof createWorkflowCatalog>['load']>): WorkflowDefinition {\n return buildWorkflowDefinition({\n name: loaded.name,\n source: loaded.source,\n script: loaded.script,\n meta: loaded.meta,\n manifest: loaded.manifest,\n });\n}\n\nfunction buildWorkflowStats(runs: WorkflowRunSummary[]): {\n totalRuns: number;\n activeRuns: number;\n succeededRuns: number;\n failedRuns: number;\n averageDurationMs: number | null;\n topDefinitions: Array<{ definitionId: string; count: number }>;\n} {\n const activeStatuses = new Set(['queued', 'running']);\n const succeededStatuses = new Set(['succeeded']);\n const failedStatuses = new Set(['failed', 'timeout', 'cancelled']);\n\n let durationTotal = 0;\n let durationCount = 0;\n const definitionCounts = new Map<string, number>();\n\n for (const run of runs) {\n definitionCounts.set(run.definitionId, (definitionCounts.get(run.definitionId) ?? 0) + 1);\n if (run.metrics.durationMs != null && Number.isFinite(run.metrics.durationMs)) {\n durationTotal += run.metrics.durationMs;\n durationCount += 1;\n }\n }\n\n const topDefinitions = [...definitionCounts.entries()]\n .sort((left, right) => right[1] - left[1])\n .slice(0, 5)\n .map(([definitionId, count]) => ({ definitionId, count }));\n\n return {\n totalRuns: runs.length,\n activeRuns: runs.filter((run) => activeStatuses.has(run.status)).length,\n succeededRuns: runs.filter((run) => succeededStatuses.has(run.status)).length,\n failedRuns: runs.filter((run) => failedStatuses.has(run.status)).length,\n averageDurationMs: durationCount > 0 ? Math.round(durationTotal / durationCount) : null,\n topDefinitions,\n };\n}\n\nasync function readJsonBody<T>(request: Request): Promise<T> {\n try {\n return await request.json() as T;\n } catch {\n return {} as T;\n }\n}\n\nfunction normalizeWorkflowRunSource(source: WorkflowRunSource | undefined): WorkflowRunSource {\n if (!source) {\n return { kind: 'webui' };\n }\n return source;\n}\n\nfunction normalizePositiveInteger(value: number | undefined): number | undefined {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction findWorkflowArtifact(\n view: { artifacts?: WorkflowArtifactRef[]; run?: { result?: unknown } },\n artifactId: string,\n): WorkflowArtifactRef | null {\n const all = [...(view.artifacts ?? []), ...extractResultArtifacts(view.run?.result)];\n return all.find((artifact) => artifact.id === artifactId) ?? null;\n}\n\nfunction extractResultArtifacts(result: unknown): WorkflowArtifactRef[] {\n if (!result || typeof result !== 'object' || Array.isArray(result)) {\n return [];\n }\n const maybeArtifacts = (result as { artifacts?: unknown }).artifacts;\n if (!Array.isArray(maybeArtifacts)) {\n return [];\n }\n return maybeArtifacts.filter(isWorkflowArtifactRef);\n}\n\nfunction isWorkflowArtifactRef(value: unknown): value is WorkflowArtifactRef {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const record = value as Partial<WorkflowArtifactRef>;\n return (\n typeof record.id === 'string' &&\n typeof record.name === 'string' &&\n typeof record.mimeType === 'string'\n );\n}\n\nfunction encodeHeaderFilename(value: string): string {\n return basename(value).replace(/[\"\\\\\\r\\n]/g, '_');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","names":[],"sources":["../../../../../src/gateway/hono/routes/workflows.ts"],"sourcesContent":["import { readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\n\nimport type { Hono } from 'hono';\n\nimport { resolveDefaultAgentId } from '../../../agent/agent-scope.js';\nimport {\n createWorkflowCatalog,\n WorkflowNameConflictError,\n WorkflowRevisionConflictError,\n} from '../../../agent/workflow/catalog.js';\nimport { messagesToClientHistory } from '../../../session/client-history.js';\nimport type {\n WorkflowDefinition,\n WorkflowDefinitionManifest,\n WorkflowGraph,\n WorkflowArtifactRef,\n WorkflowRunInputEnvelope,\n WorkflowRunSource,\n WorkflowRunSummary,\n WorkflowRunView,\n} from '../../../workflows/domain/index.js';\nimport { validateWorkflowDefinitionInput } from '../../../workflows/domain/index.js';\nimport { WorkflowDraftService, type CreateWorkflowDraftRequest } from '../../../workflows/draft/index.js';\nimport { WorkflowDraftConflictError, WorkflowDraftStore, type SaveWorkflowAuthoringDraftInput } from '../../../workflows/authoring/index.js';\nimport { resolveWorkflowRunArtifactsDir } from '../../../workflows/store/paths.js';\nimport { resolveProjectAgentId } from '../../../projects/index.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\ninterface StartWorkflowRunRequestBody {\n definitionId?: string;\n input?: unknown;\n inputEnvelope?: WorkflowRunInputEnvelope;\n goal?: string;\n goalId?: string;\n projectId?: string;\n workItemId?: string;\n agentId?: string;\n parentSessionKey?: string;\n source?: WorkflowRunSource;\n concurrency?: number;\n maxSubagents?: number;\n tokenBudget?: number | null;\n idempotencyKey?: string;\n}\n\ninterface ReplayWorkflowRunRequestBody {\n scope?: 'failed_agents' | 'failed_phases';\n}\n\ninterface RetryWorkflowRunRequestBody {\n projectId?: string;\n}\n\ninterface WorkflowRunComparison {\n sourceRunId: string;\n replayRunId: string;\n sourceStatus: WorkflowRunView['run']['status'];\n replayStatus: WorkflowRunView['run']['status'];\n statusChanged: boolean;\n durationDeltaMs: number | null;\n failedAgentsBefore: number;\n failedAgentsAfter: number;\n fixedAgentIds: string[];\n stillFailingAgentIds: string[];\n targetAgents: Array<{\n agentId: string;\n label: string;\n beforeStatus?: string;\n afterStatus?: string;\n beforeError?: string;\n afterError?: string;\n beforePreview?: string;\n afterPreview?: string;\n }>;\n}\n\ninterface SaveWorkflowDefinitionRequestBody {\n name?: string;\n graph?: WorkflowGraph;\n manifest?: WorkflowDefinitionManifest;\n expectedRevision?: number;\n}\n\ninterface CreateWorkflowDraftRequestBody extends Omit<CreateWorkflowDraftRequest, 'agentId'> {\n agentId?: string;\n}\n\ninterface SaveWorkflowAuthoringDraftRequestBody extends Omit<SaveWorkflowAuthoringDraftInput, 'id'> {\n id?: string;\n}\n\ninterface RestoreWorkflowRevisionRequestBody {\n expectedRevision?: number;\n}\n\nexport function registerWorkflowRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n const workflowRunService = service.createWorkflowRunService();\n\n authenticated.get('/api/workflows/definitions', (c) => {\n const catalog = createWorkflowCatalog();\n const definitions = catalog.list().map((entry) => {\n try {\n return catalog.load(entry.name);\n } catch {\n return null;\n }\n }).filter((definition): definition is WorkflowDefinition => Boolean(definition));\n\n return c.json({ definitions });\n });\n\n authenticated.get('/api/workflows/definitions/:id', (c) => {\n const id = c.req.param('id');\n const catalog = createWorkflowCatalog();\n try {\n const definition = catalog.load(id);\n return c.json({ definition });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Workflow definition not found' }, 404);\n }\n });\n\n authenticated.post('/api/workflows/definitions/validate', async (c) => {\n const body = await readJsonBody<SaveWorkflowDefinitionRequestBody>(c.req.raw);\n const result = validateWorkflowDefinitionInput({\n name: body.name,\n graph: body.graph,\n });\n return c.json(result);\n });\n\n authenticated.post('/api/workflows/definitions/generate', async (c) => {\n const body = await readJsonBody<CreateWorkflowDraftRequestBody>(c.req.raw);\n const prompt = body.prompt?.trim();\n if (!prompt) {\n return c.json({ error: 'prompt is required' }, 400);\n }\n const agentId = getAgentId(body.agentId ?? c.req.query('agentId'), service.currentConfig);\n const draftService = new WorkflowDraftService({ config: service.currentConfig });\n try {\n const draft = await draftService.createDraft({\n prompt,\n agentId,\n language: body.language,\n mode: body.mode,\n existingGraph: body.existingGraph,\n constraints: body.constraints,\n }, c.req.raw.signal);\n return c.json({ draft }, 201);\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create workflow draft' }, 400);\n }\n });\n\n authenticated.post('/api/workflows/definitions', async (c) => {\n const body = await readJsonBody<SaveWorkflowDefinitionRequestBody>(c.req.raw);\n if (!Number.isSafeInteger(body.expectedRevision) || body.expectedRevision! < 0) {\n return c.json({ error: 'expectedRevision is required' }, 400);\n }\n const validation = validateWorkflowDefinitionInput({\n name: body.name,\n graph: body.graph,\n });\n if (!validation.valid) {\n return c.json({ error: validation.errors[0]?.message ?? 'Invalid workflow definition', validation }, 400);\n }\n\n const name = body.name?.trim() ?? '';\n const catalog = createWorkflowCatalog();\n try {\n const { definition } = catalog.save({\n name,\n graph: body.graph!,\n manifest: body.manifest,\n expectedRevision: body.expectedRevision,\n // Keep revision > 0 compatible with older clients while new clients use PUT for updates.\n intent: body.expectedRevision === 0 ? 'create' : 'update',\n });\n return c.json({ definition }, body.expectedRevision === 0 ? 201 : 200);\n } catch (err) {\n if (err instanceof WorkflowNameConflictError) {\n return c.json({\n error: `Workflow name \"${err.workflowName}\" is already in use.`,\n code: 'WORKFLOW_NAME_EXISTS',\n name: err.workflowName,\n currentRevision: err.currentRevision,\n suggestedName: suggestAvailableWorkflowName(err.workflowName, catalog.list().map((entry) => entry.name)),\n }, 409);\n }\n if (err instanceof WorkflowRevisionConflictError) {\n return c.json({ error: err.message, code: 'WORKFLOW_REVISION_CONFLICT', currentRevision: err.currentRevision }, 409);\n }\n return c.json({ error: err instanceof Error ? err.message : 'Failed to save workflow' }, 400);\n }\n });\n\n authenticated.put('/api/workflows/definitions/:id', async (c) => {\n const id = c.req.param('id').trim();\n const body = await readJsonBody<SaveWorkflowDefinitionRequestBody>(c.req.raw);\n if (!Number.isSafeInteger(body.expectedRevision) || body.expectedRevision! < 1) {\n return c.json({ error: 'expectedRevision is required' }, 400);\n }\n const validation = validateWorkflowDefinitionInput({ name: id, graph: body.graph });\n if (!validation.valid) {\n return c.json({ error: validation.errors[0]?.message ?? 'Invalid workflow definition', validation }, 400);\n }\n const catalog = createWorkflowCatalog();\n try {\n const { definition } = catalog.save({\n name: id,\n graph: body.graph!,\n manifest: body.manifest,\n expectedRevision: body.expectedRevision,\n intent: 'update',\n });\n return c.json({ definition });\n } catch (err) {\n if (err instanceof WorkflowRevisionConflictError) {\n return c.json({\n error: err.message,\n code: 'WORKFLOW_REVISION_CONFLICT',\n currentRevision: err.currentRevision,\n }, 409);\n }\n return c.json({ error: err instanceof Error ? err.message : 'Failed to save workflow' }, 400);\n }\n });\n\n authenticated.get('/api/workflows/definitions/:id/revisions', (c) => {\n const id = c.req.param('id');\n try {\n return c.json({ revisions: createWorkflowCatalog().listRevisions(id) });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to list workflow revisions' }, 400);\n }\n });\n\n authenticated.get('/api/workflows/definitions/:id/revisions/:revision', (c) => {\n const id = c.req.param('id');\n const revision = Number.parseInt(c.req.param('revision'), 10);\n try {\n return c.json({ definition: createWorkflowCatalog().loadRevision(id, revision) });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Workflow revision not found' }, 404);\n }\n });\n\n authenticated.post('/api/workflows/definitions/:id/revisions/:revision/restore', async (c) => {\n const id = c.req.param('id');\n const revision = Number.parseInt(c.req.param('revision'), 10);\n const body = await readJsonBody<RestoreWorkflowRevisionRequestBody>(c.req.raw);\n if (!Number.isSafeInteger(body.expectedRevision)) return c.json({ error: 'expectedRevision is required' }, 400);\n try {\n const { definition } = createWorkflowCatalog().restore(id, revision, body.expectedRevision!);\n return c.json({ definition }, 201);\n } catch (err) {\n if (err instanceof WorkflowRevisionConflictError) return c.json({ error: err.message, currentRevision: err.currentRevision }, 409);\n return c.json({ error: err instanceof Error ? err.message : 'Failed to restore workflow revision' }, 400);\n }\n });\n\n authenticated.get('/api/workflows/drafts', (c) => {\n const workflowName = c.req.query('workflowName')?.trim();\n return c.json({ drafts: new WorkflowDraftStore().list(workflowName) });\n });\n\n authenticated.get('/api/workflows/drafts/:draftId', (c) => {\n try {\n const draft = new WorkflowDraftStore().get(c.req.param('draftId'));\n return draft ? c.json({ draft }) : c.json({ error: 'Workflow draft not found' }, 404);\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to load workflow draft' }, 400);\n }\n });\n\n authenticated.post('/api/workflows/drafts', async (c) => {\n const body = await readJsonBody<SaveWorkflowAuthoringDraftRequestBody>(c.req.raw);\n try {\n const draft = new WorkflowDraftStore().save(body);\n return c.json({ draft }, body.id ? 200 : 201);\n } catch (err) {\n if (err instanceof WorkflowDraftConflictError) return c.json({ error: err.message, currentUpdatedAtMs: err.currentUpdatedAtMs }, 409);\n return c.json({ error: err instanceof Error ? err.message : 'Failed to save workflow draft' }, 400);\n }\n });\n\n authenticated.delete('/api/workflows/drafts/:draftId', (c) => {\n try {\n const removed = new WorkflowDraftStore().remove(c.req.param('draftId'));\n return removed ? c.json({ removed: true }) : c.json({ error: 'Workflow draft not found' }, 404);\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to delete workflow draft' }, 400);\n }\n });\n\n authenticated.delete('/api/workflows/definitions/:id', (c) => {\n const id = c.req.param('id').trim();\n if (!id) {\n return c.json({ error: 'id is required' }, 400);\n }\n\n const catalog = createWorkflowCatalog();\n try {\n const removed = catalog.remove(id);\n if (!removed) {\n return c.json({ error: 'User workflow not found or cannot delete built-in workflow' }, 404);\n }\n const drafts = new WorkflowDraftStore().list(id);\n for (const draft of drafts) new WorkflowDraftStore().remove(draft.id);\n return c.json({ removed: true });\n } catch (err) {\n return c.json({ error: err instanceof Error ? err.message : 'Failed to delete workflow' }, 400);\n }\n });\n\n authenticated.get('/api/workflows/stats', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const definitionId = c.req.query('definitionId')?.trim();\n const runStore = workflowRunService.createRunStore(agentId);\n const runs = await runStore.listRunSummaries(500);\n const filteredRuns = definitionId ? runs.filter((run) => run.definitionId === definitionId) : runs;\n return c.json({ stats: buildWorkflowStats(filteredRuns) });\n });\n\n authenticated.post('/api/workflows/runs', async (c) => {\n const body = await readJsonBody<StartWorkflowRunRequestBody>(c.req.raw);\n const definitionId = body.definitionId?.trim();\n if (!definitionId) {\n return c.json({ error: 'definitionId is required' }, 400);\n }\n\n const parentSessionKey = body.parentSessionKey?.trim() || undefined;\n const goalId = body.goalId?.trim();\n const projectId = body.projectId?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const explicitAgentId = body.agentId ?? c.req.query('agentId');\n const agentId = projectId\n ? resolveProjectAgentId({\n config: service.currentConfig,\n projects: service.projects,\n explicitAgentId,\n projectId,\n })\n : getAgentId(explicitAgentId, service.currentConfig);\n const result = await workflowRunService.startWorkflowRun({\n agentId,\n definitionId,\n goalId,\n projectId,\n workItemId: typeof body.workItemId === 'string' ? body.workItemId : undefined,\n input: body.inputEnvelope ? undefined : body.input,\n inputEnvelope: body.inputEnvelope,\n goal: body.goal,\n parentSessionKey,\n source: normalizeWorkflowRunSource(body.source),\n concurrency: normalizePositiveInteger(body.concurrency),\n maxSubagents: normalizePositiveInteger(body.maxSubagents),\n tokenBudget: body.tokenBudget,\n idempotencyKey: body.idempotencyKey,\n });\n\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n\n authenticated.get('/api/workflows/runs', async (c) => {\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Number.parseInt(rawLimit, 10) : 50;\n const goalId = c.req.query('goalId')?.trim();\n const projectId = c.req.query('projectId')?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const explicitAgentId = c.req.query('agentId');\n const agentId = projectId\n ? resolveProjectAgentId({\n config: service.currentConfig,\n projects: service.projects,\n explicitAgentId,\n projectId,\n })\n : getAgentId(explicitAgentId, service.currentConfig);\n const runStore = workflowRunService.createRunStore(agentId);\n const runs = goalId\n ? await runStore.listRunSummariesForGoal(goalId, Number.isFinite(limit) ? limit : 50)\n : await runStore.listRunSummaries(Number.isFinite(limit) ? limit : 50, { projectId });\n return c.json({ runs });\n });\n\n authenticated.post('/api/workflows/runs/:runId/cancel', async (c) => {\n const runId = c.req.param('runId');\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const result = await workflowRunService.cancelWorkflowRun({\n agentId,\n runId,\n reason: 'Cancelled by user',\n });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n return c.json({\n cancelled: result.cancelled,\n alreadyFinished: result.alreadyFinished,\n });\n });\n\n authenticated.get('/api/workflows/runs/:runId/agents/:agentId/session', async (c) => {\n const ownerAgentId = getAgentId(c.req.query('ownerAgentId') ?? c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const workflowAgentId = c.req.param('agentId');\n const runStore = workflowRunService.createRunStore(ownerAgentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n const normalizedWorkflowAgentId = workflowAgentId.startsWith('agent-')\n ? workflowAgentId\n : `agent-${workflowAgentId}`;\n const agent = view.agents.find(\n (item) => item.id === workflowAgentId || item.id === normalizedWorkflowAgentId,\n );\n if (!agent) {\n return c.json({ error: 'Workflow agent not found' }, 404);\n }\n const session = await service.sessions.getSession(agent.sessionKey);\n if (!session || session.sessionType !== 'workflow-subagent') {\n return c.json({ error: 'Workflow agent session not found' }, 404);\n }\n return c.json({\n sessionKey: agent.sessionKey,\n metadata: {\n sessionType: session.sessionType,\n workflowRunId: session.workflowRunId,\n workflowAgentId: session.workflowAgentId,\n workflowAgentLabel: session.workflowAgentLabel,\n },\n messages: messagesToClientHistory(session.messages),\n });\n });\n\n authenticated.get('/api/workflows/runs/:runId/comparison', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const replayView = await runStore.readRunView(runId);\n if (!replayView) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n const sourceRunId = c.req.query('sourceRunId')?.trim() || replayView.run.metadata?.replay?.sourceRunId;\n if (!sourceRunId) {\n return c.json({ error: 'Workflow run is not a replay run' }, 409);\n }\n const sourceView = await runStore.readRunView(sourceRunId);\n if (!sourceView) {\n return c.json({ error: 'Source workflow run not found' }, 404);\n }\n return c.json({ comparison: buildWorkflowRunComparison(sourceView, replayView) });\n });\n\n authenticated.get('/api/workflows/runs/:runId', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n return c.json({ view });\n });\n\n authenticated.get('/api/workflows/runs/:runId/artifacts/:artifactId', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const artifactId = c.req.param('artifactId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.readRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n\n const artifact = findWorkflowArtifact(view, artifactId);\n if (!artifact) {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n\n const artifactPath = join(resolveWorkflowRunArtifactsDir(service.currentConfig, agentId, runId), basename(artifact.name));\n let file: Buffer;\n try {\n const info = await stat(artifactPath);\n if (!info.isFile()) {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n file = await readFile(artifactPath);\n } catch {\n return c.json({ error: 'Workflow artifact not found' }, 404);\n }\n\n return new Response(new Uint8Array(file), {\n headers: {\n 'Content-Type': artifact.mimeType || 'application/octet-stream',\n 'Content-Length': String(file.byteLength),\n 'Content-Disposition': `attachment; filename=\"${encodeHeaderFilename(artifact.name)}\"`,\n },\n });\n });\n\n authenticated.post('/api/workflows/runs/:runId/rebuild', async (c) => {\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const runStore = workflowRunService.createRunStore(agentId);\n const view = await runStore.rebuildRunView(runId);\n if (!view) {\n return c.json({ error: 'Workflow run not found' }, 404);\n }\n service.emit('workflow.run.updated', { runId, view });\n return c.json({ view });\n });\n\n authenticated.post('/api/workflows/runs/:runId/retry', async (c) => {\n const body = await readJsonBody<RetryWorkflowRunRequestBody>(c.req.raw);\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const projectId = body.projectId?.trim();\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const result = await workflowRunService.retryWorkflowRun({ agentId, runId, projectId });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n\n authenticated.post('/api/workflows/runs/:runId/replay', async (c) => {\n const body = await readJsonBody<ReplayWorkflowRunRequestBody>(c.req.raw);\n const agentId = getAgentId(c.req.query('agentId'), service.currentConfig);\n const runId = c.req.param('runId');\n const scope = body.scope === 'failed_phases' ? 'failed_phases' : 'failed_agents';\n const result = await workflowRunService.replayWorkflowRun({ agentId, runId, scope });\n if (result.ok === false) {\n return c.json({ error: result.message, code: result.code }, result.httpStatus);\n }\n\n return c.json({ runId: result.runId, sessionKey: result.sessionKey }, 202);\n });\n}\n\nfunction buildWorkflowRunComparison(sourceView: WorkflowRunView, replayView: WorkflowRunView): WorkflowRunComparison {\n const targetAgentIds = replayView.run.metadata?.replay?.agentIds ?? replayView.agents.map((agent) => agent.id);\n const sourceAgents = new Map(sourceView.agents.map((agent) => [agent.id, agent]));\n const replayAgents = new Map(replayView.agents.map((agent) => [agent.id, agent]));\n const targetAgents = targetAgentIds.map((agentId) => {\n const before = sourceAgents.get(agentId);\n const after = replayAgents.get(agentId);\n return {\n agentId,\n label: after?.label ?? before?.label ?? agentId,\n beforeStatus: before?.status,\n afterStatus: after?.status,\n beforeError: before?.error,\n afterError: after?.error,\n beforePreview: before?.resultPreview,\n afterPreview: after?.resultPreview,\n };\n });\n const fixedAgentIds = targetAgents\n .filter((agent) => (agent.beforeStatus === 'error' || agent.beforeStatus === 'skipped') && agent.afterStatus === 'done')\n .map((agent) => agent.agentId);\n const stillFailingAgentIds = targetAgents\n .filter((agent) => agent.afterStatus === 'error' || agent.afterStatus === 'skipped')\n .map((agent) => agent.agentId);\n const durationDeltaMs =\n typeof sourceView.run.metrics.durationMs === 'number' && typeof replayView.run.metrics.durationMs === 'number'\n ? replayView.run.metrics.durationMs - sourceView.run.metrics.durationMs\n : null;\n\n return {\n sourceRunId: sourceView.run.id,\n replayRunId: replayView.run.id,\n sourceStatus: sourceView.run.status,\n replayStatus: replayView.run.status,\n statusChanged: sourceView.run.status !== replayView.run.status,\n durationDeltaMs,\n failedAgentsBefore: targetAgents.filter((agent) => agent.beforeStatus === 'error' || agent.beforeStatus === 'skipped').length,\n failedAgentsAfter: stillFailingAgentIds.length,\n fixedAgentIds,\n stillFailingAgentIds,\n targetAgents,\n };\n}\n\nfunction getAgentId(rawAgentId: string | undefined, config: AuthenticatedRouteDeps['service']['currentConfig']): string {\n const trimmed = rawAgentId?.trim();\n if (trimmed) {\n return trimmed;\n }\n return resolveDefaultAgentId(config);\n}\n\nfunction buildWorkflowStats(runs: WorkflowRunSummary[]): {\n totalRuns: number;\n activeRuns: number;\n succeededRuns: number;\n failedRuns: number;\n averageDurationMs: number | null;\n topDefinitions: Array<{ definitionId: string; count: number }>;\n} {\n const activeStatuses = new Set(['queued', 'running']);\n const succeededStatuses = new Set(['succeeded']);\n const failedStatuses = new Set(['failed', 'timeout', 'cancelled']);\n\n let durationTotal = 0;\n let durationCount = 0;\n const definitionCounts = new Map<string, number>();\n\n for (const run of runs) {\n definitionCounts.set(run.definitionId, (definitionCounts.get(run.definitionId) ?? 0) + 1);\n if (run.metrics.durationMs != null && Number.isFinite(run.metrics.durationMs)) {\n durationTotal += run.metrics.durationMs;\n durationCount += 1;\n }\n }\n\n const topDefinitions = [...definitionCounts.entries()]\n .sort((left, right) => right[1] - left[1])\n .slice(0, 5)\n .map(([definitionId, count]) => ({ definitionId, count }));\n\n return {\n totalRuns: runs.length,\n activeRuns: runs.filter((run) => activeStatuses.has(run.status)).length,\n succeededRuns: runs.filter((run) => succeededStatuses.has(run.status)).length,\n failedRuns: runs.filter((run) => failedStatuses.has(run.status)).length,\n averageDurationMs: durationCount > 0 ? Math.round(durationTotal / durationCount) : null,\n topDefinitions,\n };\n}\n\nasync function readJsonBody<T>(request: Request): Promise<T> {\n try {\n return await request.json() as T;\n } catch {\n return {} as T;\n }\n}\n\nfunction normalizeWorkflowRunSource(source: WorkflowRunSource | undefined): WorkflowRunSource {\n if (!source) {\n return { kind: 'webui' };\n }\n return source;\n}\n\nfunction normalizePositiveInteger(value: number | undefined): number | undefined {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction suggestAvailableWorkflowName(name: string, existingNames: string[]): string {\n const used = new Set(existingNames);\n for (let suffix = 2; suffix < 1_000; suffix += 1) {\n const candidate = `${name}_${suffix}`;\n if (!used.has(candidate)) return candidate;\n }\n return `${name}_${Date.now()}`;\n}\n\nfunction findWorkflowArtifact(\n view: { artifacts?: WorkflowArtifactRef[]; run?: { result?: unknown } },\n artifactId: string,\n): WorkflowArtifactRef | null {\n const all = [...(view.artifacts ?? []), ...extractResultArtifacts(view.run?.result)];\n return all.find((artifact) => artifact.id === artifactId) ?? null;\n}\n\nfunction extractResultArtifacts(result: unknown): WorkflowArtifactRef[] {\n if (!result || typeof result !== 'object' || Array.isArray(result)) {\n return [];\n }\n const maybeArtifacts = (result as { artifacts?: unknown }).artifacts;\n if (!Array.isArray(maybeArtifacts)) {\n return [];\n }\n return maybeArtifacts.filter(isWorkflowArtifactRef);\n}\n\nfunction isWorkflowArtifactRef(value: unknown): value is WorkflowArtifactRef {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const record = value as Partial<WorkflowArtifactRef>;\n return (\n typeof record.id === 'string' &&\n typeof record.name === 'string' &&\n typeof record.mimeType === 'string'\n );\n}\n\nfunction encodeHeaderFilename(value: string): string {\n return basename(value).replace(/[\"\\\\\\r\\n]/g, '_');\n}\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Hono } from 'hono';
2
+ import type { MemoryRecord } from '../../../agent/memory/types.js';
3
+ import type { AuthenticatedRouteDeps } from './deps.js';
4
+ export declare function buildPersonalPlaybooks(records: MemoryRecord[]): {
5
+ id: "communication" | "execution" | "routines";
6
+ enabled: boolean;
7
+ rules: {
8
+ id: string;
9
+ statement: string;
10
+ origin: import("../../../agent/memory/types.js").MemoryExplicitness;
11
+ }[];
12
+ updatedAt: string;
13
+ }[];
14
+ export declare function buildInsightSuggestions(records: MemoryRecord[]): {
15
+ id: string;
16
+ insight: string;
17
+ kind: import("../../../agent/memory/types.js").MemoryKind;
18
+ action: "make_repeatable" | "start_progress";
19
+ evidenceCount: number;
20
+ confidence: number;
21
+ sourceName: string;
22
+ }[];
23
+ export declare function registerYouRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void;