@xopcai/xopc 0.0.178 → 0.0.180

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 (450) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-BzGX__8I.js → activity-store-DFKtQDgE.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BzxntcaZ.js → agent-avatar-dicebear-CcTvB_4W.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-DgGj9bu6.js +2 -0
  6. package/dist/gateway/static/root/assets/{api-hi6f2Xtp.js → api-CUClAvuL.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-fTY1F7ac.js → app-management-settings-panel-Ib-cWKHM.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BZ-IxQfB.js → appearance-settings-CRSN8WuA.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-B5xahuT-.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-ZSLLG8wB.js → archive-plugin-BBF9zspN.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-D4YktqIF.js → attachment-load-D3QQfA7w.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-page-BUYrvMmD.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-BIkPxfxj.js → binary-plugins-D78XOjJ3.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-Q3v_YQom.js → block-editor-D_VVXlYX.js} +46 -46
  15. package/dist/gateway/static/root/assets/browser-settings-page-Cjw07q9h.js +8 -0
  16. package/dist/gateway/static/root/assets/{browser-workflow-inputs-M5lTEW1I.js → browser-workflow-inputs-_gu08MA4.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-workflows-page-B3T1KYk4.js → browser-workflows-page-58DBMXgG.js} +2 -2
  18. package/dist/gateway/static/root/assets/capabilities-settings-panel-D_dfVxHY.js +7 -0
  19. package/dist/gateway/static/root/assets/{capability-presets-api-DE09c0VB.js → capability-presets-api-DhCn9rPv.js} +1 -1
  20. package/dist/gateway/static/root/assets/capability-presets-settings-panel-LWWIYUT7.js +1 -0
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-CFR5FBfS.js → channel-recipient-api-DYtoNV5A.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-settings-Cyj5OunL.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-status-swr-TEFnV0IG.js +1 -0
  24. package/dist/gateway/static/root/assets/{connector-logo-B1mD-3pM.js → connector-logo-CxIXnifA.js} +1 -1
  25. package/dist/gateway/static/root/assets/connectors-page-0TobCpBB.js +2 -0
  26. package/dist/gateway/static/root/assets/desktop-pet-CwVSLL6N.js +1 -0
  27. package/dist/gateway/static/root/assets/desktop-pet-settings-BOIp4q0Z.js +1 -0
  28. package/dist/gateway/static/root/assets/{directory-picker-path-field-BYQJ2XUS.js → directory-picker-path-field-C8_lsW6S.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dreaming-settings-BXcb8fwx.js → dreaming-settings-Da9FeWQl.js} +3 -3
  30. package/dist/gateway/static/root/assets/{extension-debug-page-O1Xu1r4Q.js → extension-debug-page-CMNnSJP6.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-C2Jraq8l.js → extension-page-t0pJqLvM.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-settings-page-DcXQDTpG.js → extension-settings-page-aiR-tKnW.js} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-api-DmPIZrvg.js → gateway-config-api-CkyQBD6r.js} +1 -1
  34. package/dist/gateway/static/root/assets/gateway-settings-BIZfAgfB.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-startup-retry-BZEkOdPm.js → gateway-startup-retry-CSU7UvzG.js} +1 -1
  36. package/dist/gateway/static/root/assets/goals-settings-Dx9uTyWF.js +1 -0
  37. package/dist/gateway/static/root/assets/{heartbeat-settings-BtKu2NWT.js → heartbeat-settings-Cnr5ORXL.js} +1 -1
  38. package/dist/gateway/static/root/assets/{image-generation-api-05Gg8wsU.js → image-generation-api-BR6Kb77X.js} +1 -1
  39. package/dist/gateway/static/root/assets/index-B0Tdge_q.css +1 -0
  40. package/dist/gateway/static/root/assets/index-BA56bQ68.js +224 -0
  41. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CfmDR9Sc.js → keyboard-shortcuts-settings-D76uYKeQ.js} +1 -1
  42. package/dist/gateway/static/root/assets/local-app-workbench-page-DSUNtLHg.js +2 -0
  43. package/dist/gateway/static/root/assets/{local-apps-page-Df8BW1A_.js → local-apps-page-BsLnojTh.js} +1 -1
  44. package/dist/gateway/static/root/assets/{locale-store-CTwSy7yW.js → locale-store-BNC8HUCI.js} +1 -1
  45. package/dist/gateway/static/root/assets/logs-page-yI8kpQtO.js +7 -0
  46. package/dist/gateway/static/root/assets/{markdown-split-B3FvKbaP.js → markdown-split-D6smTQWD.js} +1 -1
  47. package/dist/gateway/static/root/assets/{media-plugins-DsjrvvB6.js → media-plugins-D1TmMF0A.js} +1 -1
  48. package/dist/gateway/static/root/assets/messages-H_iJjnEM.js +3 -0
  49. package/dist/gateway/static/root/assets/{notes-page-tuzIwy3c.js → notes-page-Vt-diFf0.js} +1 -1
  50. package/dist/gateway/static/root/assets/notes-workbench-BD297EZt.js +4 -0
  51. package/dist/gateway/static/root/assets/outcome-detail-page-C5i_ZR9a.js +1 -0
  52. package/dist/gateway/static/root/assets/{page-tabs-ke9s4nYi.js → page-tabs-BnSzIjH0.js} +1 -1
  53. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cp1eI4S9.js → preview-open-alternatives-CF12Eqi4.js} +1 -1
  54. package/dist/gateway/static/root/assets/product-delivery-BVG-eWQO.js +1 -0
  55. package/dist/gateway/static/root/assets/{product-open-page-dXQCMAtH.js → product-open-page-Du0TE_CU.js} +1 -1
  56. package/dist/gateway/static/root/assets/project-detail-page-D1HGz7Dy.js +1 -0
  57. package/dist/gateway/static/root/assets/projects-page-CqP2TnW-.js +1 -0
  58. package/dist/gateway/static/root/assets/remote-access-hub-BXdVJLS3.js +1 -0
  59. package/dist/gateway/static/root/assets/{save-bar-controls-Bl30zjHc.js → save-bar-controls-B53UNtDM.js} +1 -1
  60. package/dist/gateway/static/root/assets/{schedule-field-DqhmXQKo.js → schedule-field-C3dIMN5q.js} +1 -1
  61. package/dist/gateway/static/root/assets/{schema-form-DkUCy6vf.js → schema-form-BKvpxqof.js} +1 -1
  62. package/dist/gateway/static/root/assets/{schemas-DgQq6Z5S.js → schemas-C6onAggk.js} +2 -2
  63. package/dist/gateway/static/root/assets/sessions-page-CPAwDdl5.js +1 -0
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-C-jGsoft.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-form-section-C6ZbNpdy.js → settings-form-section-kt6GIS32.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-loading-skeleton-Bk58_cr7.js → settings-loading-skeleton-85eUPcKz.js} +1 -1
  67. package/dist/gateway/static/root/assets/{settings-page-k8iE_NdX.js → settings-page-Di5x6Xrc.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-page-layout-DgFSya2e.js → settings-page-layout-CkkCee_x.js} +1 -1
  69. package/dist/gateway/static/root/assets/{setup-status-panel-B_KDlyZA.js → setup-status-panel-uxEE6gAB.js} +1 -1
  70. package/dist/gateway/static/root/assets/{share-preview-page-CV7nL_J9.js → share-preview-page-BtLEstaI.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-2mcsMWgn.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-ocDwsrEt.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-9_jfsFU5.js +2 -0
  74. package/dist/gateway/static/root/assets/{skills-page.utils-kahBIHg0.js → skills-page.utils-C2SHvq8V.js} +1 -1
  75. package/dist/gateway/static/root/assets/{system-settings-panel-JV3-MG5F.js → system-settings-panel-CIJ66cUy.js} +1 -1
  76. package/dist/gateway/static/root/assets/{theme-store-DFLyzoLO.js → theme-store-ClDa_Bci.js} +1 -1
  77. package/dist/gateway/static/root/assets/time-picker-D0zAsHOo.js +1 -0
  78. package/dist/gateway/static/root/assets/{typed-models-lib-60Aqo-UJ.js → typed-models-lib-GsmwmB40.js} +1 -1
  79. package/dist/gateway/static/root/assets/{use-channel-catalog-CnTkHDnw.js → use-channel-catalog-BQz3K7xj.js} +1 -1
  80. package/dist/gateway/static/root/assets/user-context-page-Bn4BLg4W.js +1 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-CNa8qUgS.js → voice-api-key-field-Blaxsbb3.js} +1 -1
  82. package/dist/gateway/static/root/assets/work-copy-Cwyan9Sn.js +1 -0
  83. package/dist/gateway/static/root/assets/work-discovery-page-iJ9RBSpu.js +1 -0
  84. package/dist/gateway/static/root/assets/work-item-detail-page-CqTH7PQX.js +1 -0
  85. package/dist/gateway/static/root/assets/work-page-H3m99ccS.js +3 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-yV_x595t.js → workflow-run-setup-panel-CTG4RpRE.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-BxZSKMfv.js +11 -0
  88. package/dist/gateway/static/root/index.html +9 -10
  89. package/dist/package.js +1 -1
  90. package/dist/packages/gateway-contract/src/outcomes.js +137 -0
  91. package/dist/packages/gateway-contract/src/product-delivery.js +1 -0
  92. package/dist/packages/gateway-contract/src/work-intake.js +85 -0
  93. package/dist/src/activity/service.d.ts +1 -0
  94. package/dist/src/activity/service.js +4 -1
  95. package/dist/src/agent/agent-manager.d.ts +4 -1
  96. package/dist/src/agent/agent-manager.js +21 -7
  97. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  98. package/dist/src/agent/code-intelligence/binary.js +1 -1
  99. package/dist/src/agent/context/execution-scope.d.ts +1 -1
  100. package/dist/src/agent/context/execution-scope.js +6 -4
  101. package/dist/src/agent/embedded/model-runtime.js +1 -1
  102. package/dist/src/agent/embedded/run-for-session.d.ts +2 -0
  103. package/dist/src/agent/embedded/run-for-session.js +3 -1
  104. package/dist/src/agent/goals/post-turn.js +7 -6
  105. package/dist/src/agent/image/tool-model-config.js +1 -1
  106. package/dist/src/agent/inbound/turn-dispatcher.d.ts +6 -1
  107. package/dist/src/agent/inbound/turn-dispatcher.js +5 -2
  108. package/dist/src/agent/ipc/inbox.js +1 -1
  109. package/dist/src/agent/lifecycle/timeout-wrapper.d.ts +2 -0
  110. package/dist/src/agent/lifecycle/timeout-wrapper.js +39 -9
  111. package/dist/src/agent/mcp/bundle-mcp-materialize.js +2 -2
  112. package/dist/src/agent/mcp/bundle-mcp-runtime.js +6 -1
  113. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +1 -1
  114. package/dist/src/agent/mcp/mcp-stdio-transport.js +1 -1
  115. package/dist/src/agent/mcp/mcp-transport-config.d.ts +2 -0
  116. package/dist/src/agent/mcp/mcp-transport-config.js +10 -3
  117. package/dist/src/agent/mcp/mcp-transport.d.ts +1 -0
  118. package/dist/src/agent/mcp/mcp-transport.js +5 -2
  119. package/dist/src/agent/memory/dreaming/config.js +1 -1
  120. package/dist/src/agent/memory/user-context-coordinator.d.ts +1 -0
  121. package/dist/src/agent/memory/user-context-coordinator.js +17 -1
  122. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -1
  123. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +6 -2
  124. package/dist/src/agent/outcomes/{task-evaluation.d.ts → execution-evaluation.d.ts} +3 -3
  125. package/dist/src/agent/outcomes/{task-evaluation.js → execution-evaluation.js} +5 -5
  126. package/dist/src/agent/outcomes/execution-verifier.d.ts +29 -0
  127. package/dist/src/agent/outcomes/{task-verifier.js → execution-verifier.js} +4 -4
  128. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -0
  129. package/dist/src/agent/service/direct-turn-helpers.js +1 -0
  130. package/dist/src/agent/service/process-direct-one-shot.d.ts +3 -0
  131. package/dist/src/agent/service/process-direct-one-shot.js +4 -1
  132. package/dist/src/agent/service/process-direct-streaming.js +3 -1
  133. package/dist/src/agent/service.d.ts +1 -0
  134. package/dist/src/agent/service.js +5 -2
  135. package/dist/src/agent/session/session-inspector.js +1 -1
  136. package/dist/src/agent/skills/config.js +6 -0
  137. package/dist/src/agent/skills/filesystem-watcher.d.ts +4 -0
  138. package/dist/src/agent/skills/filesystem-watcher.js +16 -7
  139. package/dist/src/agent/skills/hub-lock.js +1 -1
  140. package/dist/src/agent/skills/index.d.ts +10 -7
  141. package/dist/src/agent/skills/index.js +56 -47
  142. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  143. package/dist/src/agent/skills/skill-manager.d.ts +5 -2
  144. package/dist/src/agent/skills/skill-manager.js +10 -5
  145. package/dist/src/agent/skills/skill-sources.d.ts +18 -0
  146. package/dist/src/agent/skills/skill-sources.js +143 -0
  147. package/dist/src/agent/skills/types.d.ts +25 -2
  148. package/dist/src/agent/tools/delegate-tool.js +2 -1
  149. package/dist/src/agent/tools/executor.d.ts +2 -0
  150. package/dist/src/agent/tools/executor.js +18 -11
  151. package/dist/src/agent/tools/factory.js +18 -1
  152. package/dist/src/agent/tools/goal-tool.js +5 -3
  153. package/dist/src/agent/tools/index.d.ts +1 -0
  154. package/dist/src/agent/tools/index.js +2 -1
  155. package/dist/src/agent/tools/managed-job-tool.d.ts +2 -0
  156. package/dist/src/agent/tools/managed-job-tool.js +160 -0
  157. package/dist/src/agent/tools/todo-tool.d.ts +5 -0
  158. package/dist/src/agent/tools/todo-tool.js +16 -4
  159. package/dist/src/agent/tools/update-plan-tool.d.ts +1 -0
  160. package/dist/src/agent/tools/update-plan-tool.js +6 -0
  161. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -0
  162. package/dist/src/agent/workspace-runtime/registry.js +3 -1
  163. package/dist/src/agent-runtime/index.js +1 -1
  164. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  165. package/dist/src/auth/credentials.d.ts +9 -1
  166. package/dist/src/auth/credentials.js +112 -56
  167. package/dist/src/auth/model-credential-store.js +7 -22
  168. package/dist/src/auth/oauth-provider-lock.d.ts +5 -0
  169. package/dist/src/auth/oauth-provider-lock.js +91 -0
  170. package/dist/src/auth/profiles/store.js +1 -1
  171. package/dist/src/auth/sync-provider-auth.js +2 -2
  172. package/dist/src/automations/domain/defaults.d.ts +8 -1
  173. package/dist/src/automations/domain/defaults.js +9 -2
  174. package/dist/src/automations/domain/index.js +2 -2
  175. package/dist/src/automations/domain/types.d.ts +33 -7
  176. package/dist/src/automations/domain/validation.d.ts +8 -0
  177. package/dist/src/automations/domain/validation.js +2 -0
  178. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -1
  179. package/dist/src/automations/index.js +2 -2
  180. package/dist/src/automations/service/action-executor.d.ts +2 -2
  181. package/dist/src/automations/service/action-executor.js +144 -34
  182. package/dist/src/automations/service/automation-service.d.ts +4 -0
  183. package/dist/src/automations/service/automation-service.js +197 -18
  184. package/dist/src/automations/storage/automation-run-repository.d.ts +1 -0
  185. package/dist/src/automations/storage/automation-run-repository.js +37 -7
  186. package/dist/src/automations/storage/index.js +2 -2
  187. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  188. package/dist/src/browser/providers/cloakbrowser.js +2 -2
  189. package/dist/src/channels/attachments/voice-stt-webchat.d.ts +0 -3
  190. package/dist/src/channels/attachments/voice-stt-webchat.js +1 -24
  191. package/dist/src/chat-commands/builtins/goal.js +5 -4
  192. package/dist/src/cli/commands/agents.js +1 -1
  193. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  194. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  195. package/dist/src/cli/commands/goal.js +6 -5
  196. package/dist/src/cli/commands/models.js +1 -1
  197. package/dist/src/cli/commands/tunnel.js +3 -3
  198. package/dist/src/cli/utils/oauth-login.js +1 -7
  199. package/dist/src/config/agent-profile.js +1 -1
  200. package/dist/src/config/index.js +4 -4
  201. package/dist/src/config/loader.js +1 -1
  202. package/dist/src/config/models-json.js +1 -1
  203. package/dist/src/config/schema.d.ts +3 -0
  204. package/dist/src/config/schema.js +2 -1
  205. package/dist/src/connectors/learning-coordinator.js +7 -1
  206. package/dist/src/connectors/source-change-publisher.d.ts +17 -0
  207. package/dist/src/connectors/source-change-publisher.js +148 -0
  208. package/dist/src/discussions/analyzer.d.ts +35 -0
  209. package/dist/src/discussions/analyzer.js +127 -0
  210. package/dist/src/discussions/index.d.ts +7 -0
  211. package/dist/src/discussions/index.js +7 -0
  212. package/dist/src/discussions/live-worker.d.ts +33 -0
  213. package/dist/src/discussions/live-worker.js +148 -0
  214. package/dist/src/discussions/pipeline.d.ts +33 -0
  215. package/dist/src/discussions/pipeline.js +205 -0
  216. package/dist/src/discussions/project-inference.d.ts +13 -0
  217. package/dist/src/discussions/project-inference.js +19 -0
  218. package/dist/src/discussions/repository.d.ts +29 -0
  219. package/dist/src/discussions/repository.js +255 -0
  220. package/dist/src/discussions/service.d.ts +51 -0
  221. package/dist/src/discussions/service.js +335 -0
  222. package/dist/src/discussions/transcript.d.ts +3 -0
  223. package/dist/src/discussions/transcript.js +15 -0
  224. package/dist/src/discussions/types.d.ts +116 -0
  225. package/dist/src/discussions/types.js +10 -0
  226. package/dist/src/discussions/worker.d.ts +18 -0
  227. package/dist/src/discussions/worker.js +74 -0
  228. package/dist/src/extensions/activation-context.js +2 -1
  229. package/dist/src/extensions/lockfile.js +1 -1
  230. package/dist/src/extensions/sdk/testing.js +1 -1
  231. package/dist/src/gateway/agents-admin.js +3 -3
  232. package/dist/src/gateway/chat-stream/mapper.js +53 -3
  233. package/dist/src/gateway/chat-stream/protocol.d.ts +17 -1
  234. package/dist/src/gateway/file-path-classifier.js +1 -1
  235. package/dist/src/gateway/hono/app.js +8 -3
  236. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  237. package/dist/src/gateway/hono/middleware/auth.js +2 -2
  238. package/dist/src/gateway/hono/middleware/logger.js +1 -1
  239. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +1 -1
  240. package/dist/src/gateway/hono/oauth-async.js +1 -7
  241. package/dist/src/gateway/hono/oauth.js +1 -7
  242. package/dist/src/gateway/hono/routes/agents.js +1 -1
  243. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  244. package/dist/src/gateway/hono/routes/connectors.js +79 -0
  245. package/dist/src/gateway/hono/routes/discussions.d.ts +3 -0
  246. package/dist/src/gateway/hono/routes/discussions.js +177 -0
  247. package/dist/src/gateway/hono/routes/execution-receipts.d.ts +3 -0
  248. package/dist/src/gateway/hono/routes/execution-receipts.js +163 -0
  249. package/dist/src/gateway/hono/routes/exposure.js +1 -1
  250. package/dist/src/gateway/hono/routes/goals.js +3 -288
  251. package/dist/src/gateway/hono/routes/home.d.ts +2 -102
  252. package/dist/src/gateway/hono/routes/home.js +8 -424
  253. package/dist/src/gateway/hono/routes/index.js +6 -2
  254. package/dist/src/gateway/hono/routes/memory.js +7 -7
  255. package/dist/src/gateway/hono/routes/models.js +1 -1
  256. package/dist/src/gateway/hono/routes/notes.js +30 -0
  257. package/dist/src/gateway/hono/routes/projects.js +8 -152
  258. package/dist/src/gateway/hono/routes/shares.js +1 -1
  259. package/dist/src/gateway/hono/routes/status.js +2 -2
  260. package/dist/src/gateway/hono/routes/tunnel.js +3 -3
  261. package/dist/src/gateway/hono/routes/voice.js +1 -1
  262. package/dist/src/gateway/hono/routes/work.d.ts +3 -0
  263. package/dist/src/gateway/hono/routes/work.js +207 -0
  264. package/dist/src/gateway/hono/routes/you.js +13 -15
  265. package/dist/src/gateway/index.js +2 -2
  266. package/dist/src/gateway/runtime-config.js +2 -2
  267. package/dist/src/gateway/security/audit.js +2 -2
  268. package/dist/src/gateway/security/index.js +1 -1
  269. package/dist/src/gateway/service/config-coordinator.js +2 -2
  270. package/dist/src/gateway/service/run-gateway-agent.js +46 -51
  271. package/dist/src/gateway/service.d.ts +8 -1
  272. package/dist/src/gateway/service.js +142 -15
  273. package/dist/src/goals/goal-queue-store.d.ts +1 -0
  274. package/dist/src/goals/goal-queue-store.js +5 -1
  275. package/dist/src/goals/goal-queue-types.d.ts +11 -1
  276. package/dist/src/goals/goal-runner.js +10 -6
  277. package/dist/src/goals/goal-service.d.ts +2 -15
  278. package/dist/src/goals/goal-service.js +9 -42
  279. package/dist/src/goals/goal-store.d.ts +1 -18
  280. package/dist/src/goals/goal-store.js +25 -231
  281. package/dist/src/goals/goal-workflow-judge.js +1 -1
  282. package/dist/src/goals/index.d.ts +0 -4
  283. package/dist/src/goals/index.js +1 -3
  284. package/dist/src/goals/types.d.ts +4 -66
  285. package/dist/src/notes/agent-context.js +1 -1
  286. package/dist/src/notes/service.d.ts +1 -0
  287. package/dist/src/notes/service.js +10 -1
  288. package/dist/src/notes/types.d.ts +1 -0
  289. package/dist/src/proactive/events/product-event-bridge.d.ts +7 -0
  290. package/dist/src/proactive/events/product-event-bridge.js +84 -0
  291. package/dist/src/proactive/execution/context.d.ts +27 -11
  292. package/dist/src/proactive/execution/context.js +259 -25
  293. package/dist/src/proactive/execution/repository.js +18 -5
  294. package/dist/src/proactive/execution/types.d.ts +7 -1
  295. package/dist/src/proactive/execution/worker.js +7 -6
  296. package/dist/src/proactive/inbox/repository.js +8 -2
  297. package/dist/src/proactive/index.d.ts +4 -2
  298. package/dist/src/proactive/index.js +5 -3
  299. package/dist/src/proactive/temporal/worker.d.ts +16 -0
  300. package/dist/src/proactive/temporal/worker.js +110 -0
  301. package/dist/src/projects/project-loop.js +3 -3
  302. package/dist/src/providers/auth-runtime/oauth.js +12 -0
  303. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  304. package/dist/src/providers/index.js +2 -2
  305. package/dist/src/providers/model-registry.js +1 -1
  306. package/dist/src/providers/register-runtime-providers.js +1 -1
  307. package/dist/src/share/share-zip.js +1 -1
  308. package/dist/src/share/site-proxy.js +1 -1
  309. package/dist/src/storage/sqlite/activity-repository.d.ts +1 -0
  310. package/dist/src/storage/sqlite/activity-repository.js +4 -1
  311. package/dist/src/storage/sqlite/connector-sync-policy-repository.d.ts +20 -0
  312. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +50 -0
  313. package/dist/src/storage/sqlite/execution-receipt-repository.d.ts +146 -0
  314. package/dist/src/storage/sqlite/execution-receipt-repository.js +235 -0
  315. package/dist/src/storage/sqlite/index.d.ts +4 -2
  316. package/dist/src/storage/sqlite/index.js +6 -4
  317. package/dist/src/storage/sqlite/knowledge-repository.d.ts +3 -0
  318. package/dist/src/storage/sqlite/knowledge-repository.js +9 -1
  319. package/dist/src/storage/sqlite/memory-records-repository.js +1 -1
  320. package/dist/src/storage/sqlite/migrations/075_connector_sync_policies.sql +13 -0
  321. package/dist/src/storage/sqlite/migrations/076_meeting_preparation_scenario.sql +29 -0
  322. package/dist/src/storage/sqlite/migrations/077_proactive_insight_fingerprints.sql +4 -0
  323. package/dist/src/storage/sqlite/migrations/078_discussion_captures.sql +64 -0
  324. package/dist/src/storage/sqlite/migrations/079_discussion_follow_up_scenario.sql +29 -0
  325. package/dist/src/storage/sqlite/migrations/080_task_outcome_context.sql +15 -0
  326. package/dist/src/storage/sqlite/migrations/081_project_monitoring_policies.sql +10 -0
  327. package/dist/src/storage/sqlite/migrations/082_one_click_live_discussions.sql +100 -0
  328. package/dist/src/storage/sqlite/migrations/083_session_task_plans.sql +9 -0
  329. package/dist/src/storage/sqlite/migrations/084_work_intake_lifecycle.sql +26 -0
  330. package/dist/src/storage/sqlite/migrations/085_task_outcome_projection.sql +19 -0
  331. package/dist/src/storage/sqlite/migrations/086_outcome_aggregates.sql +168 -0
  332. package/dist/src/storage/sqlite/migrations/087_context_snapshots.sql +21 -0
  333. package/dist/src/storage/sqlite/migrations/088_automation_execution_deadlines.sql +5 -0
  334. package/dist/src/storage/sqlite/migrations/089_automation_run_leases.sql +8 -0
  335. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  336. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  337. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  338. package/dist/src/storage/sqlite/notes-repository.js +9 -0
  339. package/dist/src/storage/sqlite/schema.js +1 -1
  340. package/dist/src/storage/sqlite/schema.sql +89 -44
  341. package/dist/src/storage/sqlite/session-repository.js +1 -1
  342. package/dist/src/storage/sqlite/session-task-plan-repository.d.ts +20 -0
  343. package/dist/src/storage/sqlite/session-task-plan-repository.js +77 -0
  344. package/dist/src/tui/backends/embedded-backend.d.ts +2 -0
  345. package/dist/src/tui/backends/embedded-backend.js +12 -8
  346. package/dist/src/tui/tui-backend.d.ts +2 -0
  347. package/dist/src/tui/tui-oauth-login.js +1 -7
  348. package/dist/src/tui/tui-picker-overlay.js +1 -0
  349. package/dist/src/tui/tui-picker-services.d.ts +1 -0
  350. package/dist/src/tui/tui-skills-autocomplete.d.ts +6 -2
  351. package/dist/src/tui/tui-skills-autocomplete.js +10 -6
  352. package/dist/src/tui/tui-startup-resources.d.ts +3 -1
  353. package/dist/src/tui/tui-startup-resources.js +4 -3
  354. package/dist/src/tui/tui.js +4 -1
  355. package/dist/src/tunnel/frpc-binary.js +1 -1
  356. package/dist/src/tunnel/frpc-extract.js +1 -1
  357. package/dist/src/tunnel/index.js +2 -2
  358. package/dist/src/user-context/context-compiler.d.ts +31 -0
  359. package/dist/src/user-context/context-compiler.js +51 -0
  360. package/dist/src/voice/local/model-files.js +1 -1
  361. package/dist/src/voice/stt/config.d.ts +4 -0
  362. package/dist/src/voice/stt/config.js +26 -0
  363. package/dist/src/voice/stt/index.d.ts +1 -0
  364. package/dist/src/voice/stt/index.js +2 -1
  365. package/dist/src/voice/stt/list-providers.js +1 -1
  366. package/dist/src/work/attention-governor.d.ts +20 -0
  367. package/dist/src/work/attention-governor.js +46 -0
  368. package/dist/src/work/execution-context.d.ts +16 -0
  369. package/dist/src/work/execution-context.js +66 -0
  370. package/dist/src/work/home-query-service.d.ts +147 -0
  371. package/dist/src/work/home-query-service.js +389 -0
  372. package/dist/src/work/index.d.ts +14 -0
  373. package/dist/src/work/index.js +15 -0
  374. package/dist/src/work/outcome-contract-definition.d.ts +8 -0
  375. package/dist/src/work/outcome-contract-definition.js +15 -0
  376. package/dist/src/work/outcome-execution-service.d.ts +27 -0
  377. package/dist/src/work/outcome-execution-service.js +60 -0
  378. package/dist/src/work/outcome-projection-service.d.ts +7 -0
  379. package/dist/src/work/outcome-projection-service.js +51 -0
  380. package/dist/src/work/outcome-receipt-service.d.ts +13 -0
  381. package/dist/src/work/outcome-receipt-service.js +55 -0
  382. package/dist/src/work/outcome-repository.d.ts +50 -0
  383. package/dist/src/work/outcome-repository.js +112 -0
  384. package/dist/src/work/outcome-run-coordinator.d.ts +25 -0
  385. package/dist/src/work/outcome-run-coordinator.js +117 -0
  386. package/dist/src/work/project-monitoring-service.d.ts +21 -0
  387. package/dist/src/work/project-monitoring-service.js +76 -0
  388. package/dist/src/work/project-operating-view-service.d.ts +10 -0
  389. package/dist/src/work/project-operating-view-service.js +46 -0
  390. package/dist/src/work/work-intake-repository.d.ts +49 -0
  391. package/dist/src/work/work-intake-repository.js +97 -0
  392. package/dist/src/work/work-intake-service.d.ts +26 -0
  393. package/dist/src/work/work-intake-service.js +171 -0
  394. package/dist/src/work/work-value-metrics-service.d.ts +4 -0
  395. package/dist/src/work/work-value-metrics-service.js +88 -0
  396. package/dist/src/work-items/work-item-service.d.ts +0 -2
  397. package/dist/src/work-items/work-item-service.js +0 -28
  398. package/dist/src/workflows/service/workflow-run-service.js +2 -2
  399. package/dist/src/workflows/service/workflow-run-service.types.d.ts +3 -1
  400. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  401. package/package.json +1 -1
  402. package/dist/gateway/static/root/assets/agents-DC9F12Kw.js +0 -2
  403. package/dist/gateway/static/root/assets/apps-page-5bKr05Fa.js +0 -1
  404. package/dist/gateway/static/root/assets/automation-suggestion-card-B7mxFRtf.js +0 -1
  405. package/dist/gateway/static/root/assets/automations-page-Dg6dmt5g.js +0 -6
  406. package/dist/gateway/static/root/assets/browser-settings-page-BHoo6Rpq.js +0 -8
  407. package/dist/gateway/static/root/assets/capabilities-settings-panel-BlsqN8Fu.js +0 -7
  408. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DJeT8_B4.js +0 -1
  409. package/dist/gateway/static/root/assets/channels-settings-C4VVjYEm.js +0 -1
  410. package/dist/gateway/static/root/assets/channels-status-swr-vdf8kB16.js +0 -1
  411. package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +0 -1
  412. package/dist/gateway/static/root/assets/connectors-page-DNcrDThX.js +0 -2
  413. package/dist/gateway/static/root/assets/desktop-pet-B1urphOZ.js +0 -1
  414. package/dist/gateway/static/root/assets/desktop-pet-settings-DTL6J3EP.js +0 -1
  415. package/dist/gateway/static/root/assets/gateway-settings-DmObBx9b.js +0 -1
  416. package/dist/gateway/static/root/assets/goal-create-dialog-BRhmmBe9.js +0 -1
  417. package/dist/gateway/static/root/assets/goal-detail-page-C1k7_s_O.js +0 -4
  418. package/dist/gateway/static/root/assets/goals-config-api-Fwu1wjEP.js +0 -1
  419. package/dist/gateway/static/root/assets/goals-page-hOu9uA3q.js +0 -2
  420. package/dist/gateway/static/root/assets/goals-settings-DY-JjvHz.js +0 -1
  421. package/dist/gateway/static/root/assets/index-C0CGebQ1.js +0 -212
  422. package/dist/gateway/static/root/assets/index-eqq25gvV.css +0 -1
  423. package/dist/gateway/static/root/assets/local-app-workbench-page-EjsNT7nJ.js +0 -2
  424. package/dist/gateway/static/root/assets/logs-page-Dswjlraa.js +0 -7
  425. package/dist/gateway/static/root/assets/messages-DP6tPKk-.js +0 -3
  426. package/dist/gateway/static/root/assets/notes-workbench-DSh3-hMY.js +0 -4
  427. package/dist/gateway/static/root/assets/product-delivery-BTRT9kCS.js +0 -1
  428. package/dist/gateway/static/root/assets/project-detail-page-D0QPRHR_.js +0 -1
  429. package/dist/gateway/static/root/assets/projects-page-CI5Vz62F.js +0 -1
  430. package/dist/gateway/static/root/assets/remote-access-hub-S1jpzBS5.js +0 -1
  431. package/dist/gateway/static/root/assets/sessions-page-CTm66k7h.js +0 -1
  432. package/dist/gateway/static/root/assets/settings-advanced-gate-CU52AUVD.js +0 -1
  433. package/dist/gateway/static/root/assets/shares-settings-DK6XK95e.js +0 -1
  434. package/dist/gateway/static/root/assets/skill-reload-api-Bvv_u4ii.js +0 -1
  435. package/dist/gateway/static/root/assets/skills-page-BGHvVbay.js +0 -2
  436. package/dist/gateway/static/root/assets/time-picker-XwpxdZFr.js +0 -1
  437. package/dist/gateway/static/root/assets/user-context-page-DBCMk-Vn.js +0 -1
  438. package/dist/gateway/static/root/assets/work-discovery-page-C1UIdsCl.js +0 -1
  439. package/dist/gateway/static/root/assets/work-item-detail-page-DEAQepB8.js +0 -1
  440. package/dist/gateway/static/root/assets/work-page-D5qYmCTq.js +0 -3
  441. package/dist/gateway/static/root/assets/workflows-page-yrK17ZZ5.js +0 -11
  442. package/dist/src/agent/outcomes/task-verifier.d.ts +0 -29
  443. package/dist/src/gateway/hono/routes/task-outcomes.d.ts +0 -3
  444. package/dist/src/gateway/hono/routes/task-outcomes.js +0 -109
  445. package/dist/src/goals/goal-contract-draft.d.ts +0 -15
  446. package/dist/src/goals/goal-contract-draft.js +0 -112
  447. package/dist/src/goals/goal-evidence-review.d.ts +0 -15
  448. package/dist/src/goals/goal-evidence-review.js +0 -89
  449. package/dist/src/storage/sqlite/task-outcome-repository.d.ts +0 -90
  450. package/dist/src/storage/sqlite/task-outcome-repository.js +0 -138
@@ -1,4 +1,5 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { init_oauth_provider_lock, withOAuthProviderLock } from "./oauth-provider-lock.js";
2
3
  import { CredentialResolver, init_credentials } from "./credentials.js";
3
4
  //#region src/auth/model-credential-store.ts
4
5
  function normalizeProviderId(providerId) {
@@ -30,26 +31,10 @@ function toPersistedToken(credential, current) {
30
31
  createdAt: current?.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()
31
32
  };
32
33
  }
33
- async function serializeProviderModification(providerId, operation) {
34
- const previous = providerModificationTails.get(providerId) ?? Promise.resolve();
35
- let release;
36
- const gate = new Promise((resolve) => {
37
- release = resolve;
38
- });
39
- const tail = previous.catch(() => void 0).then(() => gate);
40
- providerModificationTails.set(providerId, tail);
41
- await previous.catch(() => void 0);
42
- try {
43
- return await operation();
44
- } finally {
45
- release();
46
- if (providerModificationTails.get(providerId) === tail) providerModificationTails.delete(providerId);
47
- }
48
- }
49
- var providerModificationTails, XopcModelCredentialStore;
34
+ var XopcModelCredentialStore;
50
35
  var init_model_credential_store = __esmMin((() => {
51
36
  init_credentials();
52
- providerModificationTails = /* @__PURE__ */ new Map();
37
+ init_oauth_provider_lock();
53
38
  XopcModelCredentialStore = class {
54
39
  runtimeApiKeys = /* @__PURE__ */ new Map();
55
40
  constructor(repository = new CredentialResolver()) {
@@ -81,7 +66,7 @@ var init_model_credential_store = __esmMin((() => {
81
66
  }
82
67
  async modify(providerId, update, options) {
83
68
  const normalizedProvider = normalizeProviderId(providerId);
84
- return serializeProviderModification(normalizedProvider, async () => {
69
+ return withOAuthProviderLock(normalizedProvider, async () => {
85
70
  options?.signal?.throwIfAborted();
86
71
  const persisted = await this.repository.loadOAuthTokenRecord(normalizedProvider);
87
72
  const current = this.runtimeApiKeys.get(normalizedProvider) ?? (persisted ? toRuntimeCredential(persisted) : void 0);
@@ -93,15 +78,15 @@ var init_model_credential_store = __esmMin((() => {
93
78
  this.runtimeApiKeys.delete(normalizedProvider);
94
79
  } else this.runtimeApiKeys.set(normalizedProvider, updated);
95
80
  return updated;
96
- });
81
+ }, { signal: options?.signal });
97
82
  }
98
83
  async delete(providerId, options) {
99
84
  const normalizedProvider = normalizeProviderId(providerId);
100
- await serializeProviderModification(normalizedProvider, async () => {
85
+ await withOAuthProviderLock(normalizedProvider, async () => {
101
86
  options?.signal?.throwIfAborted();
102
87
  await this.repository.deleteOAuthToken(normalizedProvider);
103
88
  this.runtimeApiKeys.delete(normalizedProvider);
104
- });
89
+ }, { signal: options?.signal });
105
90
  }
106
91
  };
107
92
  }));
@@ -0,0 +1,5 @@
1
+ interface OAuthProviderLockOptions {
2
+ signal?: AbortSignal;
3
+ }
4
+ export declare function withOAuthProviderLock<T>(providerId: string, operation: () => Promise<T>, options?: OAuthProviderLockOptions): Promise<T>;
5
+ export {};
@@ -0,0 +1,91 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { init_paths, resolveOAuthPath } from "../config/paths.js";
3
+ import { AsyncLocalStorage } from "node:async_hooks";
4
+ import { dirname } from "node:path";
5
+ import { randomUUID } from "node:crypto";
6
+ import { mkdir, open, readFile, rm, stat } from "node:fs/promises";
7
+ import { setTimeout } from "node:timers/promises";
8
+ //#region src/auth/oauth-provider-lock.ts
9
+ function lockPath(providerId) {
10
+ return `${resolveOAuthPath(providerId.toLowerCase())}.lock`;
11
+ }
12
+ function isAlreadyExists(error) {
13
+ return error?.code === "EEXIST";
14
+ }
15
+ function isMissing(error) {
16
+ return error?.code === "ENOENT";
17
+ }
18
+ async function removeStaleLock(path) {
19
+ try {
20
+ const info = await stat(path);
21
+ if (Date.now() - info.mtimeMs < STALE_LOCK_MS) return false;
22
+ await rm(path, { force: true });
23
+ return true;
24
+ } catch (error) {
25
+ if (isMissing(error)) return true;
26
+ throw error;
27
+ }
28
+ }
29
+ async function acquireFileLock(providerId, options) {
30
+ const path = lockPath(providerId);
31
+ const owner = `${process.pid}:${randomUUID()}`;
32
+ const deadline = Date.now() + LOCK_TIMEOUT_MS;
33
+ await mkdir(dirname(path), { recursive: true });
34
+ while (true) {
35
+ options.signal?.throwIfAborted();
36
+ try {
37
+ const handle = await open(path, "wx", 384);
38
+ try {
39
+ await handle.writeFile(owner, "utf8");
40
+ } finally {
41
+ await handle.close();
42
+ }
43
+ return async () => {
44
+ try {
45
+ if (await readFile(path, "utf8") === owner) await rm(path, { force: true });
46
+ } catch {}
47
+ };
48
+ } catch (error) {
49
+ if (!isAlreadyExists(error)) throw error;
50
+ if (await removeStaleLock(path)) continue;
51
+ if (Date.now() >= deadline) throw new Error(`Timed out waiting for OAuth credential lock for ${providerId}`);
52
+ await setTimeout(LOCK_RETRY_MS, void 0, options.signal ? { signal: options.signal } : void 0);
53
+ }
54
+ }
55
+ }
56
+ async function withOAuthProviderLock(providerId, operation, options = {}) {
57
+ const normalizedProvider = providerId.toLowerCase();
58
+ const heldLocks = heldProviderLocks.getStore();
59
+ if (heldLocks?.has(normalizedProvider)) return operation();
60
+ const previous = providerModificationTails.get(normalizedProvider) ?? Promise.resolve();
61
+ let releaseQueue;
62
+ const queueGate = new Promise((resolve) => {
63
+ releaseQueue = resolve;
64
+ });
65
+ const tail = previous.catch(() => void 0).then(() => queueGate);
66
+ providerModificationTails.set(normalizedProvider, tail);
67
+ await previous.catch(() => void 0);
68
+ let releaseFileLock;
69
+ try {
70
+ releaseFileLock = await acquireFileLock(normalizedProvider, options);
71
+ const nextHeldLocks = new Set(heldLocks);
72
+ nextHeldLocks.add(normalizedProvider);
73
+ return await heldProviderLocks.run(nextHeldLocks, operation);
74
+ } finally {
75
+ await releaseFileLock?.();
76
+ releaseQueue();
77
+ if (providerModificationTails.get(normalizedProvider) === tail) providerModificationTails.delete(normalizedProvider);
78
+ }
79
+ }
80
+ var LOCK_RETRY_MS, LOCK_TIMEOUT_MS, STALE_LOCK_MS, providerModificationTails, heldProviderLocks;
81
+ var init_oauth_provider_lock = __esmMin((() => {
82
+ init_paths();
83
+ LOCK_RETRY_MS = 50;
84
+ LOCK_TIMEOUT_MS = 9e4;
85
+ STALE_LOCK_MS = 6e4;
86
+ providerModificationTails = /* @__PURE__ */ new Map();
87
+ heldProviderLocks = new AsyncLocalStorage();
88
+ }));
89
+ //#endregion
90
+ init_oauth_provider_lock();
91
+ export { init_oauth_provider_lock, withOAuthProviderLock };
@@ -1,5 +1,5 @@
1
- import { init_paths, resolveCredentialsDir } from "../../config/paths.js";
2
1
  import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
2
+ import { init_paths, resolveCredentialsDir } from "../../config/paths.js";
3
3
  import path from "node:path";
4
4
  import { chmodSync, existsSync, mkdirSync, readFileSync } from "node:fs";
5
5
  //#region src/auth/profiles/store.ts
@@ -1,8 +1,8 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
- import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
3
2
  import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveOAuthPath } from "../config/paths.js";
4
- import { init_loader, loadConfig } from "../config/loader.js";
5
3
  import { init_registry, isOAuthOnlyProvider } from "./oauth/registry.js";
4
+ import { init_loader, loadConfig } from "../config/loader.js";
5
+ import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
  //#region src/auth/sync-provider-auth.ts
8
8
  /**
@@ -1 +1,8 @@
1
- export declare const DEFAULT_AUTOMATION_TIMEOUT_SECONDS = 300;
1
+ import type { AutomationAction } from './types.js';
2
+ export declare const DEFAULT_AUTOMATION_TIMEOUT_SECONDS: number;
3
+ export declare const DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS: number;
4
+ export declare function defaultAutomationTimeoutSeconds(action: AutomationAction): number;
5
+ export declare function resolveAutomationTimeoutSeconds(action: AutomationAction, reliability?: {
6
+ executionTimeoutSeconds?: number;
7
+ timeoutSeconds?: number;
8
+ }): number;
@@ -1,4 +1,11 @@
1
1
  //#region src/automations/domain/defaults.ts
2
- const DEFAULT_AUTOMATION_TIMEOUT_SECONDS = 300;
2
+ const DEFAULT_AUTOMATION_TIMEOUT_SECONDS = 1800;
3
+ const DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS = 600;
4
+ function defaultAutomationTimeoutSeconds(action) {
5
+ return action.kind === "browser_recipe" ? 600 : DEFAULT_AUTOMATION_TIMEOUT_SECONDS;
6
+ }
7
+ function resolveAutomationTimeoutSeconds(action, reliability) {
8
+ return reliability?.executionTimeoutSeconds ?? action.timeoutSeconds ?? reliability?.timeoutSeconds ?? defaultAutomationTimeoutSeconds(action);
9
+ }
3
10
  //#endregion
4
- export { DEFAULT_AUTOMATION_TIMEOUT_SECONDS };
11
+ export { DEFAULT_AUTOMATION_TIMEOUT_SECONDS, DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS, defaultAutomationTimeoutSeconds, resolveAutomationTimeoutSeconds };
@@ -1,4 +1,4 @@
1
- import { DEFAULT_AUTOMATION_TIMEOUT_SECONDS } from "./defaults.js";
1
+ import { DEFAULT_AUTOMATION_TIMEOUT_SECONDS, DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS, defaultAutomationTimeoutSeconds, resolveAutomationTimeoutSeconds } from "./defaults.js";
2
2
  import { computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, timerDelayUntil } from "./schedule.js";
3
3
  import { AutomationActionSchema, AutomationAfterRunSchema, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, UpdateAutomationSchema } from "./validation.js";
4
- export { AutomationActionSchema, AutomationAfterRunSchema, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, DEFAULT_AUTOMATION_TIMEOUT_SECONDS, UpdateAutomationSchema, computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, timerDelayUntil };
4
+ export { AutomationActionSchema, AutomationAfterRunSchema, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, DEFAULT_AUTOMATION_TIMEOUT_SECONDS, DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS, UpdateAutomationSchema, computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, defaultAutomationTimeoutSeconds, resolveAutomationTimeoutSeconds, timerDelayUntil };
@@ -1,5 +1,5 @@
1
1
  import type { WorkflowRunInputEnvelope } from '../../workflows/domain/index.js';
2
- import type { StartWorkflowRunServiceParams, WorkflowRunServiceResult } from '../../workflows/service/workflow-run-service.types.js';
2
+ import type { WorkflowRunServiceLike } from '../../workflows/service/workflow-run-service.types.js';
3
3
  export type AutomationSchedule = {
4
4
  kind: 'once';
5
5
  at: string;
@@ -58,11 +58,20 @@ export type AutomationAfterRun = {
58
58
  url: string;
59
59
  };
60
60
  export interface AutomationReliability {
61
+ /** Overall run deadline. `timeoutSeconds` remains a read-only legacy fallback. */
62
+ executionTimeoutSeconds?: number;
61
63
  timeoutSeconds?: number;
62
64
  retryCount?: number;
63
65
  maxConcurrentRuns?: number;
64
66
  disableAfterConsecutiveFailures?: number;
65
67
  }
68
+ export type AutomationRunPhase = 'queued' | 'action' | 'after_run' | 'cancelling' | 'completed';
69
+ export interface AutomationRunTermination {
70
+ reason: 'completed' | 'failed' | 'user_cancelled' | 'deadline_exceeded';
71
+ component?: 'automation' | 'agent_turn' | 'tool' | 'mcp' | 'process';
72
+ componentName?: string;
73
+ cancellationConfirmed: boolean;
74
+ }
66
75
  export type AutomationSafetyMode = 'suggest_only' | 'ask_before_apply' | 'auto_apply';
67
76
  export interface AutomationSafetyPolicy {
68
77
  mode: AutomationSafetyMode;
@@ -90,7 +99,7 @@ export interface Automation {
90
99
  createdAtMs: number;
91
100
  updatedAtMs: number;
92
101
  }
93
- export type AutomationRunStatus = 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timeout';
102
+ export type AutomationRunStatus = 'queued' | 'running' | 'cancelling' | 'succeeded' | 'failed' | 'cancelled' | 'timeout';
94
103
  export interface AutomationRun {
95
104
  id: string;
96
105
  automationId: string;
@@ -108,8 +117,18 @@ export interface AutomationRun {
108
117
  sessionKey?: string;
109
118
  workflowRunId?: string;
110
119
  model?: string;
120
+ deadlineAtMs?: number;
121
+ currentPhase?: AutomationRunPhase;
122
+ cancelRequestedAtMs?: number;
123
+ cancelConfirmedAtMs?: number;
124
+ termination?: AutomationRunTermination;
125
+ heartbeatAtMs?: number;
126
+ leaseOwner?: string;
127
+ leaseExpiresAtMs?: number;
128
+ attemptNumber?: number;
129
+ rootRunId?: string;
111
130
  }
112
- export type AutomationRunEventType = 'run.queued' | 'run.started' | 'action.started' | 'action.completed' | 'action.failed' | 'after_run.started' | 'after_run.completed' | 'after_run.failed' | 'run.completed';
131
+ export type AutomationRunEventType = 'run.queued' | 'run.started' | 'run.deadline_resolved' | 'run.cancel_requested' | 'run.cancel_confirmed' | 'run.cancellation_unconfirmed' | 'run.recovered' | 'action.started' | 'action.retry_scheduled' | 'action.completed' | 'action.failed' | 'after_run.started' | 'after_run.completed' | 'after_run.failed' | 'run.completed';
113
132
  export interface AutomationRunEvent {
114
133
  id: string;
115
134
  runId: string;
@@ -147,15 +166,17 @@ export interface AutomationDeps {
147
166
  applyAutomationModelOverride?: (sessionKey: string, model: string | undefined) => Promise<boolean>;
148
167
  };
149
168
  turnDispatcher?: {
150
- processDirect: (message: string, sessionKey: string) => Promise<string>;
169
+ processDirect: (message: string, sessionKey: string, attachments?: unknown[], thinking?: string, options?: {
170
+ signal?: AbortSignal;
171
+ runId?: string;
172
+ deadlineAtMs?: number;
173
+ }) => Promise<string>;
151
174
  };
152
175
  getModelForSession?: (sessionKey: string) => string | undefined;
153
176
  };
154
177
  getDefaultAgentId?: () => string;
155
178
  getProjectWorkspaceRoot?: (projectId: string) => string | undefined;
156
- workflowRunService?: {
157
- startWorkflowRun(params: StartWorkflowRunServiceParams): Promise<WorkflowRunServiceResult>;
158
- };
179
+ workflowRunService?: WorkflowRunServiceLike;
159
180
  browserRecipeService?: {
160
181
  runAndWait(recipeId: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<{
161
182
  id: string;
@@ -173,4 +194,9 @@ export interface AutomationActionOutcome {
173
194
  sessionKey?: string;
174
195
  workflowRunId?: string;
175
196
  model?: string;
197
+ deadlineAtMs?: number;
198
+ termination?: AutomationRunTermination;
199
+ }
200
+ export interface AutomationActionExecutionHooks {
201
+ onRunPatch?: (patch: Partial<AutomationRun>) => void | Promise<void>;
176
202
  }
@@ -73,6 +73,7 @@ export declare const AutomationAfterRunSchema: z.ZodDiscriminatedUnion<[z.ZodObj
73
73
  url: z.ZodString;
74
74
  }, z.core.$strict>], "kind">;
75
75
  export declare const AutomationReliabilitySchema: z.ZodObject<{
76
+ executionTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
76
77
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
77
78
  retryCount: z.ZodOptional<z.ZodNumber>;
78
79
  maxConcurrentRuns: z.ZodOptional<z.ZodNumber>;
@@ -96,6 +97,7 @@ export declare const AutomationStateSchema: z.ZodObject<{
96
97
  cancelled: "cancelled";
97
98
  timeout: "timeout";
98
99
  succeeded: "succeeded";
100
+ cancelling: "cancelling";
99
101
  }>>;
100
102
  lastError: z.ZodOptional<z.ZodString>;
101
103
  consecutiveFailures: z.ZodOptional<z.ZodNumber>;
@@ -175,6 +177,7 @@ export declare const AutomationSchema: z.ZodObject<{
175
177
  url: z.ZodString;
176
178
  }, z.core.$strict>], "kind">>;
177
179
  reliability: z.ZodOptional<z.ZodObject<{
180
+ executionTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
178
181
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
179
182
  retryCount: z.ZodOptional<z.ZodNumber>;
180
183
  maxConcurrentRuns: z.ZodOptional<z.ZodNumber>;
@@ -191,6 +194,7 @@ export declare const AutomationSchema: z.ZodObject<{
191
194
  cancelled: "cancelled";
192
195
  timeout: "timeout";
193
196
  succeeded: "succeeded";
197
+ cancelling: "cancelling";
194
198
  }>>;
195
199
  lastError: z.ZodOptional<z.ZodString>;
196
200
  consecutiveFailures: z.ZodOptional<z.ZodNumber>;
@@ -271,6 +275,7 @@ export declare const CreateAutomationSchema: z.ZodObject<{
271
275
  url: z.ZodString;
272
276
  }, z.core.$strict>], "kind">>;
273
277
  reliability: z.ZodOptional<z.ZodObject<{
278
+ executionTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
274
279
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
275
280
  retryCount: z.ZodOptional<z.ZodNumber>;
276
281
  maxConcurrentRuns: z.ZodOptional<z.ZodNumber>;
@@ -289,6 +294,7 @@ export declare const CreateAutomationSchema: z.ZodObject<{
289
294
  cancelled: "cancelled";
290
295
  timeout: "timeout";
291
296
  succeeded: "succeeded";
297
+ cancelling: "cancelling";
292
298
  }>>>;
293
299
  lastError: z.ZodOptional<z.ZodOptional<z.ZodString>>;
294
300
  consecutiveFailures: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
@@ -337,6 +343,7 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
337
343
  cancelled: "cancelled";
338
344
  timeout: "timeout";
339
345
  succeeded: "succeeded";
346
+ cancelling: "cancelling";
340
347
  }>>;
341
348
  lastError: z.ZodOptional<z.ZodString>;
342
349
  consecutiveFailures: z.ZodOptional<z.ZodNumber>;
@@ -383,6 +390,7 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
383
390
  url: z.ZodString;
384
391
  }, z.core.$strict>], "kind">>>;
385
392
  reliability: z.ZodOptional<z.ZodOptional<z.ZodObject<{
393
+ executionTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
386
394
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
387
395
  retryCount: z.ZodOptional<z.ZodNumber>;
388
396
  maxConcurrentRuns: z.ZodOptional<z.ZodNumber>;
@@ -97,6 +97,7 @@ const AutomationAfterRunSchema = z.discriminatedUnion("kind", [
97
97
  }).strict()
98
98
  ]);
99
99
  const AutomationReliabilitySchema = z.object({
100
+ executionTimeoutSeconds: z.number().int().min(1).max(86400).optional(),
100
101
  timeoutSeconds: z.number().int().min(1).max(86400).optional(),
101
102
  retryCount: z.number().int().min(0).max(10).optional(),
102
103
  maxConcurrentRuns: z.number().int().min(1).max(20).optional(),
@@ -114,6 +115,7 @@ const AutomationStateSchema = z.object({
114
115
  lastRunStatus: z.enum([
115
116
  "queued",
116
117
  "running",
118
+ "cancelling",
117
119
  "succeeded",
118
120
  "failed",
119
121
  "cancelled",
@@ -78,6 +78,7 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
78
78
  url: string;
79
79
  };
80
80
  reliability?: {
81
+ executionTimeoutSeconds?: number;
81
82
  timeoutSeconds?: number;
82
83
  retryCount?: number;
83
84
  maxConcurrentRuns?: number;
@@ -89,7 +90,7 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
89
90
  nextRunAtMs?: number;
90
91
  runningRunId?: string;
91
92
  lastRunAtMs?: number;
92
- lastRunStatus?: "queued" | "running" | "failed" | "cancelled" | "timeout" | "succeeded";
93
+ lastRunStatus?: "queued" | "running" | "failed" | "cancelled" | "timeout" | "succeeded" | "cancelling";
93
94
  lastError?: string;
94
95
  consecutiveFailures?: number;
95
96
  };
@@ -1,9 +1,9 @@
1
1
  import { onAutomationProductEvent, publishAutomationProductEvent } from "./product-events.js";
2
- import { DEFAULT_AUTOMATION_TIMEOUT_SECONDS } from "./domain/defaults.js";
2
+ import { DEFAULT_AUTOMATION_TIMEOUT_SECONDS, DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS, defaultAutomationTimeoutSeconds, resolveAutomationTimeoutSeconds } from "./domain/defaults.js";
3
3
  import { computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, timerDelayUntil } from "./domain/schedule.js";
4
4
  import { AutomationActionSchema, AutomationAfterRunSchema, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, UpdateAutomationSchema } from "./domain/validation.js";
5
5
  import "./domain/index.js";
6
6
  import { AutomationActionExecutor } from "./service/action-executor.js";
7
7
  import { AutomationAlreadyRunningError, AutomationService } from "./service/automation-service.js";
8
8
  import "./service/index.js";
9
- export { AutomationActionExecutor, AutomationActionSchema, AutomationAfterRunSchema, AutomationAlreadyRunningError, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationService, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, DEFAULT_AUTOMATION_TIMEOUT_SECONDS, UpdateAutomationSchema, computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, onAutomationProductEvent, publishAutomationProductEvent, timerDelayUntil };
9
+ export { AutomationActionExecutor, AutomationActionSchema, AutomationAfterRunSchema, AutomationAlreadyRunningError, AutomationReliabilitySchema, AutomationSafetyPolicySchema, AutomationScheduleSchema, AutomationSchema, AutomationService, AutomationStateSchema, AutomationTriggerSchema, CreateAutomationSchema, DEFAULT_AUTOMATION_TIMEOUT_SECONDS, DEFAULT_BROWSER_AUTOMATION_TIMEOUT_SECONDS, UpdateAutomationSchema, computeNextAutomationRunAtMs, computeNextScheduleRunAtMs, defaultAutomationTimeoutSeconds, onAutomationProductEvent, publishAutomationProductEvent, resolveAutomationTimeoutSeconds, timerDelayUntil };
@@ -1,8 +1,8 @@
1
- import type { Automation, AutomationActionOutcome, AutomationDeps, AutomationRun } from '../domain/types.js';
1
+ import type { Automation, AutomationActionExecutionHooks, AutomationActionOutcome, AutomationDeps, AutomationRun } from '../domain/types.js';
2
2
  export declare class AutomationActionExecutor {
3
3
  private deps;
4
4
  setDeps(deps: AutomationDeps): void;
5
- execute(automation: Automation, run: AutomationRun, signal: AbortSignal): Promise<AutomationActionOutcome>;
5
+ execute(automation: Automation, run: AutomationRun, signal: AbortSignal, hooks?: AutomationActionExecutionHooks): Promise<AutomationActionOutcome>;
6
6
  private executeWithoutTimeout;
7
7
  private executeBrowserRecipe;
8
8
  private executeAgent;