@xopcai/xopc 0.0.118 → 0.0.120

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 (503) hide show
  1. package/README.md +2 -1
  2. package/README.zh-CN.md +2 -1
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-dzUrQoeZ.js → agent-avatar-dicebear-APTlX9Sq.js} +1 -1
  6. package/dist/gateway/static/root/assets/agents-CFW_FS_V.js +2 -0
  7. package/dist/gateway/static/root/assets/app-management-settings-panel-DTKc5HHT.js +1 -0
  8. package/dist/gateway/static/root/assets/appearance-settings-BTciFrE9.js +1 -0
  9. package/dist/gateway/static/root/assets/{apps-page--wMEL00f.js → apps-page-DT52OrbM.js} +1 -1
  10. package/dist/gateway/static/root/assets/{archive-plugin-Cki4SfU2.js → archive-plugin-CiHaUMII.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-D-KnS2Do.js → attachment-load-t4gSrNjL.js} +1 -1
  12. package/dist/gateway/static/root/assets/automation-suggestion-card-CtysjSoQ.js +1 -0
  13. package/dist/gateway/static/root/assets/automations-page-B2YvT3ES.js +1 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-D2sgvJja.js → binary-plugins-BAbSldW5.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-DIq-4Gvb.js → block-editor-BNr_82xl.js} +28 -28
  16. package/dist/gateway/static/root/assets/browser-settings-page-BQEXPhDU.js +8 -0
  17. package/dist/gateway/static/root/assets/capability-presets-api-tzD702Gg.js +1 -0
  18. package/dist/gateway/static/root/assets/capability-presets-settings-panel-AGhTueAc.js +1 -0
  19. package/dist/gateway/static/root/assets/channel-recipient-api-DL_KzwGE.js +1 -0
  20. package/dist/gateway/static/root/assets/channels-settings-DRTutLlN.js +1 -0
  21. package/dist/gateway/static/root/assets/cn-BQ_8x0bT.js +1 -0
  22. package/dist/gateway/static/root/assets/connectors-page-DneJVuge.js +2 -0
  23. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +2 -0
  24. package/dist/gateway/static/root/assets/dreaming-settings-BEwWA1yf.js +1 -0
  25. package/dist/gateway/static/root/assets/{extension-debug-page-DYu1KaFQ.js → extension-debug-page-Dl2kO0Sf.js} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-page-B3W6QwlZ.js → extension-page-DmbLPsx_.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-settings-page-D7VQ-cxE.js → extension-settings-page-BS2rx40e.js} +1 -1
  28. package/dist/gateway/static/root/assets/{fetch-B7xDPu-R.js → fetch-B3ME5Eri.js} +1 -1
  29. package/dist/gateway/static/root/assets/format-cron-label-arqgGlVV.js +1 -0
  30. package/dist/gateway/static/root/assets/{gateway-config-api-BTBLSeUu.js → gateway-config-api-DI9_BBTo.js} +1 -1
  31. package/dist/gateway/static/root/assets/gateway-settings-DAFI_T0W.js +1 -0
  32. package/dist/gateway/static/root/assets/{gateway-startup-retry-CYj9FWCp.js → gateway-startup-retry-CSZQTz6K.js} +1 -1
  33. package/dist/gateway/static/root/assets/goal-detail-page-DLuz4jC9.js +1 -0
  34. package/dist/gateway/static/root/assets/{goals-config-api-CQQgzPr3.js → goals-config-api-Bhzqrp2w.js} +1 -1
  35. package/dist/gateway/static/root/assets/{goals-page-BHitvJAv.js → goals-page-DTAfv9Ft.js} +2 -2
  36. package/dist/gateway/static/root/assets/goals-settings-CWN2iirQ.js +1 -0
  37. package/dist/gateway/static/root/assets/heartbeat-settings-CkkkHvOi.js +1 -0
  38. package/dist/gateway/static/root/assets/index-CnjzMw5i.js +191 -0
  39. package/dist/gateway/static/root/assets/index-E1QinYKp.css +1 -0
  40. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-kMp08SlX.js +1 -0
  41. package/dist/gateway/static/root/assets/{locale-store-DjbfSsfA.js → locale-store-Ba72bFmP.js} +1 -1
  42. package/dist/gateway/static/root/assets/{logs-page-C2Uqvae9.js → logs-page-CDXDlS_W.js} +2 -2
  43. package/dist/gateway/static/root/assets/{markdown-split-BwOFrJ2E.js → markdown-split-Bc0w40vz.js} +1 -1
  44. package/dist/gateway/static/root/assets/{media-plugins-Cnz6Q5G6.js → media-plugins-DJ_HvgIy.js} +1 -1
  45. package/dist/gateway/static/root/assets/messages-CISb1HLv.js +3 -0
  46. package/dist/gateway/static/root/assets/models-hub-panel-BTwxMIgZ.js +2 -0
  47. package/dist/gateway/static/root/assets/note-detail-page-BBfOeB0m.js +2 -0
  48. package/dist/gateway/static/root/assets/{note-image-lightbox-B-Svpmza.js → note-image-lightbox-4zntqpZq.js} +1 -1
  49. package/dist/gateway/static/root/assets/notes-page-VocWOjoK.js +1 -0
  50. package/dist/gateway/static/root/assets/{preview-open-alternatives-Bss4TiwP.js → preview-open-alternatives-BbA7sRd_.js} +1 -1
  51. package/dist/gateway/static/root/assets/remote-access-hub-CXwjuD_Q.js +1 -0
  52. package/dist/gateway/static/root/assets/{save-bar-controls-BRNjdgKq.js → save-bar-controls-Dividh61.js} +1 -1
  53. package/dist/gateway/static/root/assets/schedule-field-pRheF2CO.js +1 -0
  54. package/dist/gateway/static/root/assets/{schema-form-Dub9sy8r.js → schema-form-D6PiPxfr.js} +1 -1
  55. package/dist/gateway/static/root/assets/sessions-page-CpcVySQK.js +1 -0
  56. package/dist/gateway/static/root/assets/settings-advanced-gate-BVy_TawT.js +1 -0
  57. package/dist/gateway/static/root/assets/{settings-collapsible-section-BeFLavGi.js → settings-collapsible-section-BMCOfuE_.js} +1 -1
  58. package/dist/gateway/static/root/assets/settings-form-section-DBkGwpIN.js +1 -0
  59. package/dist/gateway/static/root/assets/settings-page-CZpNyCWn.js +1 -0
  60. package/dist/gateway/static/root/assets/settings-page-layout-NxoW5Y57.js +1 -0
  61. package/dist/gateway/static/root/assets/setup-status-panel-MVHLLu_a.js +1 -0
  62. package/dist/gateway/static/root/assets/{share-preview-page-C8glrdqe.js → share-preview-page-B0suFCfj.js} +1 -1
  63. package/dist/gateway/static/root/assets/shares-settings-C6DBbQGo.js +1 -0
  64. package/dist/gateway/static/root/assets/skill-reload-api-6hJmhwSn.js +1 -0
  65. package/dist/gateway/static/root/assets/skills-page-Im1MA0Iw.js +2 -0
  66. package/dist/gateway/static/root/assets/system-settings-panel-CrmEnyX4.js +1 -0
  67. package/dist/gateway/static/root/assets/{theme-store-CD2wtgZV.js → theme-store-Bt6vAkSB.js} +1 -1
  68. package/dist/gateway/static/root/assets/typed-models-lib-BAsGn25g.js +1 -0
  69. package/dist/gateway/static/root/assets/{use-channel-catalog-DqlWTsDb.js → use-channel-catalog-C7vcAoGb.js} +1 -1
  70. package/dist/gateway/static/root/assets/user-profile-settings-panel-QAQWGelF.js +1 -0
  71. package/dist/gateway/static/root/assets/utils-Dl9efgnV.js +1 -0
  72. package/dist/gateway/static/root/assets/{voice-api-key-field-C73IVZeC.js → voice-api-key-field-D-6XueTv.js} +1 -1
  73. package/dist/gateway/static/root/assets/{voice-player-store-C_ArLJPM.js → voice-player-store-CMC5NOJp.js} +1 -1
  74. package/dist/gateway/static/root/assets/workflow-run-setup-panel-DVPllR4k.js +3 -0
  75. package/dist/gateway/static/root/assets/workflows-page-B94WISTW.js +18 -0
  76. package/dist/gateway/static/root/index.html +8 -9
  77. package/dist/package.js +1 -1
  78. package/dist/src/agent/agent-manager.d.ts +4 -5
  79. package/dist/src/agent/agent-manager.js +4 -8
  80. package/dist/src/agent/agent-manager.js.map +1 -1
  81. package/dist/src/agent/context/workspace-templates/AGENTS.md +3 -2
  82. package/dist/src/agent/embedded/run-for-session.js +102 -14
  83. package/dist/src/agent/embedded/run-for-session.js.map +1 -1
  84. package/dist/src/agent/fallback/candidates.d.ts +0 -8
  85. package/dist/src/agent/fallback/candidates.js.map +1 -1
  86. package/dist/src/agent/index.js +1 -1
  87. package/dist/src/agent/lifecycle/handlers/compaction.d.ts +1 -3
  88. package/dist/src/agent/lifecycle/handlers/compaction.js +1 -16
  89. package/dist/src/agent/lifecycle/handlers/compaction.js.map +1 -1
  90. package/dist/src/agent/lifecycle/progress.d.ts +0 -1
  91. package/dist/src/agent/lifecycle/progress.js +1 -6
  92. package/dist/src/agent/lifecycle/progress.js.map +1 -1
  93. package/dist/src/agent/lifecycle/timeout-wrapper.d.ts +1 -2
  94. package/dist/src/agent/lifecycle/timeout-wrapper.js +1 -7
  95. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +1 -1
  96. package/dist/src/agent/memory/builtin-memory-store.d.ts +1 -1
  97. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  98. package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
  99. package/dist/src/agent/memory/builtin-provider.d.ts +2 -2
  100. package/dist/src/agent/memory/builtin-provider.js +2 -2
  101. package/dist/src/agent/memory/builtin-provider.js.map +1 -1
  102. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -7
  103. package/dist/src/agent/memory/dreaming/light-sweep.js +16 -277
  104. package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -1
  105. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +1 -1
  106. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  107. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -1
  108. package/dist/src/agent/memory/dreaming/short-term-store.d.ts +3 -3
  109. package/dist/src/agent/memory/dreaming/short-term-store.js +5 -5
  110. package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -1
  111. package/dist/src/agent/memory/dreaming/utils.d.ts +2 -2
  112. package/dist/src/agent/memory/dreaming/utils.js +2 -2
  113. package/dist/src/agent/memory/dreaming/utils.js.map +1 -1
  114. package/dist/src/agent/memory/index.d.ts +0 -2
  115. package/dist/src/agent/memory/index.js +1 -2
  116. package/dist/src/agent/middleware/self-verify.d.ts +0 -1
  117. package/dist/src/agent/middleware/self-verify.js +0 -2
  118. package/dist/src/agent/middleware/self-verify.js.map +1 -1
  119. package/dist/src/agent/models/index.d.ts +1 -1
  120. package/dist/src/agent/models/manager.d.ts +4 -20
  121. package/dist/src/agent/models/manager.js +9 -126
  122. package/dist/src/agent/models/manager.js.map +1 -1
  123. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -4
  124. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -9
  125. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  126. package/dist/src/agent/prompt/sections/memory-skills.js +11 -10
  127. package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
  128. package/dist/src/agent/prompt/sections/tooling.js +4 -4
  129. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  130. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  131. package/dist/src/agent/prompt/service-prompt-builder.js +0 -12
  132. package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
  133. package/dist/src/agent/prompt/subagent-context.js +1 -1
  134. package/dist/src/agent/prompt/subagent-context.js.map +1 -1
  135. package/dist/src/agent/prompt/types.d.ts +1 -1
  136. package/dist/src/agent/reply/startup-context.js +6 -105
  137. package/dist/src/agent/reply/startup-context.js.map +1 -1
  138. package/dist/src/agent/service.d.ts +1 -12
  139. package/dist/src/agent/service.js +3 -81
  140. package/dist/src/agent/service.js.map +1 -1
  141. package/dist/src/agent/service.types.d.ts +2 -2
  142. package/dist/src/agent/session/session-config-service.d.ts +11 -11
  143. package/dist/src/agent/session/session-config-service.js +14 -14
  144. package/dist/src/agent/session/session-config-service.js.map +1 -1
  145. package/dist/src/agent/session/session-inspector.js +3 -2
  146. package/dist/src/agent/session/session-inspector.js.map +1 -1
  147. package/dist/src/agent/starter-agents.js +12 -12
  148. package/dist/src/agent/starter-agents.js.map +1 -1
  149. package/dist/src/agent/tools/automation-tool.d.ts +14 -0
  150. package/dist/src/agent/tools/automation-tool.js +102 -0
  151. package/dist/src/agent/tools/automation-tool.js.map +1 -0
  152. package/dist/src/agent/tools/delegate-tool.js +1 -1
  153. package/dist/src/agent/tools/delegate-tool.js.map +1 -1
  154. package/dist/src/agent/tools/factory.d.ts +3 -3
  155. package/dist/src/agent/tools/factory.js +2 -2
  156. package/dist/src/agent/tools/factory.js.map +1 -1
  157. package/dist/src/agent/tools/index.d.ts +1 -1
  158. package/dist/src/agent/tools/index.js +2 -2
  159. package/dist/src/agent/tools/memory-tool.js +2 -2
  160. package/dist/src/agent/tools/memory-tool.js.map +1 -1
  161. package/dist/src/agent-manifest/resolver.d.ts +1 -0
  162. package/dist/src/agent-manifest/resolver.js +1 -0
  163. package/dist/src/agent-manifest/resolver.js.map +1 -1
  164. package/dist/src/agent-manifest/schema.d.ts +6 -0
  165. package/dist/src/agent-manifest/schema.js +12 -3
  166. package/dist/src/agent-manifest/schema.js.map +1 -1
  167. package/dist/src/ai-assist/text-assist.d.ts +1 -1
  168. package/dist/src/ai-assist/text-assist.js +56 -0
  169. package/dist/src/ai-assist/text-assist.js.map +1 -1
  170. package/dist/src/auth/profiles/store.js.map +1 -1
  171. package/dist/src/automations/api/routes.d.ts +3 -0
  172. package/dist/src/automations/api/routes.js +193 -0
  173. package/dist/src/automations/api/routes.js.map +1 -0
  174. package/dist/src/automations/domain/index.d.ts +3 -0
  175. package/dist/src/automations/domain/index.js +3 -0
  176. package/dist/src/automations/domain/schedule.d.ts +4 -0
  177. package/dist/src/automations/domain/schedule.js +37 -0
  178. package/dist/src/automations/domain/schedule.js.map +1 -0
  179. package/dist/src/automations/domain/types.d.ts +160 -0
  180. package/dist/src/automations/domain/validation.d.ts +370 -0
  181. package/dist/src/automations/domain/validation.js +149 -0
  182. package/dist/src/automations/domain/validation.js.map +1 -0
  183. package/dist/src/automations/draft/automation-draft-prompt.d.ts +26 -0
  184. package/dist/src/automations/draft/automation-draft-prompt.js +127 -0
  185. package/dist/src/automations/draft/automation-draft-prompt.js.map +1 -0
  186. package/dist/src/automations/draft/automation-draft-service.d.ts +12 -0
  187. package/dist/src/automations/draft/automation-draft-service.js +135 -0
  188. package/dist/src/automations/draft/automation-draft-service.js.map +1 -0
  189. package/dist/src/automations/draft/automation-draft-validator.d.ts +99 -0
  190. package/dist/src/automations/draft/automation-draft-validator.js +105 -0
  191. package/dist/src/automations/draft/automation-draft-validator.js.map +1 -0
  192. package/dist/src/automations/draft/automation-draft.types.d.ts +40 -0
  193. package/dist/src/automations/draft/index.d.ts +3 -0
  194. package/dist/src/automations/draft/index.js +3 -0
  195. package/dist/src/automations/index.d.ts +3 -0
  196. package/dist/src/automations/index.js +8 -0
  197. package/dist/src/automations/product-events.d.ts +5 -0
  198. package/dist/src/automations/product-events.js +21 -0
  199. package/dist/src/automations/product-events.js.map +1 -0
  200. package/dist/src/automations/service/action-executor.d.ts +9 -0
  201. package/dist/src/automations/service/action-executor.js +157 -0
  202. package/dist/src/automations/service/action-executor.js.map +1 -0
  203. package/dist/src/automations/service/automation-service.d.ts +54 -0
  204. package/dist/src/automations/service/automation-service.js +404 -0
  205. package/dist/src/automations/service/automation-service.js.map +1 -0
  206. package/dist/src/automations/service/index.d.ts +2 -0
  207. package/dist/src/automations/service/index.js +3 -0
  208. package/dist/src/automations/storage/automation-repository.d.ts +6 -0
  209. package/dist/src/automations/storage/automation-repository.js +61 -0
  210. package/dist/src/automations/storage/automation-repository.js.map +1 -0
  211. package/dist/src/automations/storage/automation-run-repository.d.ts +17 -0
  212. package/dist/src/automations/storage/automation-run-repository.js +130 -0
  213. package/dist/src/automations/storage/automation-run-repository.js.map +1 -0
  214. package/dist/src/automations/storage/index.d.ts +2 -0
  215. package/dist/src/automations/storage/index.js +3 -0
  216. package/dist/src/channels/plugin-types.d.ts +3 -0
  217. package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
  218. package/dist/src/cli/command-catalog.js +0 -39
  219. package/dist/src/cli/command-catalog.js.map +1 -1
  220. package/dist/src/cli/command-loaders.js +0 -1
  221. package/dist/src/cli/command-loaders.js.map +1 -1
  222. package/dist/src/cli/command-manifest.js +0 -4
  223. package/dist/src/cli/command-manifest.js.map +1 -1
  224. package/dist/src/cli/commands/agents.js +7 -6
  225. package/dist/src/cli/commands/agents.js.map +1 -1
  226. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  227. package/dist/src/cli/commands/doctor/checks/{cron-health.d.ts → migrations.d.ts} +1 -1
  228. package/dist/src/cli/commands/doctor/checks/migrations.js +40 -0
  229. package/dist/src/cli/commands/doctor/checks/migrations.js.map +1 -0
  230. package/dist/src/cli/commands/doctor/flow.js +2 -2
  231. package/dist/src/cli/commands/doctor/flow.js.map +1 -1
  232. package/dist/src/cli/commands/gateway/call.js +2 -2
  233. package/dist/src/cli/commands/gateway/call.js.map +1 -1
  234. package/dist/src/cli/commands/gateway/run-foreground.js +4 -2
  235. package/dist/src/cli/commands/gateway/run-foreground.js.map +1 -1
  236. package/dist/src/cli/commands/init.js +27 -9
  237. package/dist/src/cli/commands/init.js.map +1 -1
  238. package/dist/src/cli/commands/tui.js +24 -2
  239. package/dist/src/cli/commands/tui.js.map +1 -1
  240. package/dist/src/cli/templates.js +3 -2
  241. package/dist/src/cli/templates.js.map +1 -1
  242. package/dist/src/cli/utils/init-workspace-core.js +2 -0
  243. package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
  244. package/dist/src/commands/agents.config.d.ts +9 -0
  245. package/dist/src/commands/agents.config.js +40 -2
  246. package/dist/src/commands/agents.config.js.map +1 -1
  247. package/dist/src/config/agent-profile.js +4 -3
  248. package/dist/src/config/agent-profile.js.map +1 -1
  249. package/dist/src/config/agent-typed-models.js.map +1 -1
  250. package/dist/src/config/config-surface.d.ts +3 -0
  251. package/dist/src/config/index.d.ts +0 -1
  252. package/dist/src/config/index.js +3 -3
  253. package/dist/src/config/index.js.map +1 -1
  254. package/dist/src/config/paths.d.ts +0 -9
  255. package/dist/src/config/paths.js +1 -14
  256. package/dist/src/config/paths.js.map +1 -1
  257. package/dist/src/config/profile.js +0 -1
  258. package/dist/src/config/profile.js.map +1 -1
  259. package/dist/src/config/rules.js +0 -5
  260. package/dist/src/config/rules.js.map +1 -1
  261. package/dist/src/config/schema.d.ts +13 -12
  262. package/dist/src/config/schema.js +22 -26
  263. package/dist/src/config/schema.js.map +1 -1
  264. package/dist/src/config/web-patch.d.ts +0 -12
  265. package/dist/src/config/web-patch.js +2 -29
  266. package/dist/src/config/web-patch.js.map +1 -1
  267. package/dist/src/extensions/api.d.ts +2 -0
  268. package/dist/src/extensions/api.js +10 -0
  269. package/dist/src/extensions/api.js.map +1 -1
  270. package/dist/src/extensions/extension-registry-impl.d.ts +4 -1
  271. package/dist/src/extensions/extension-registry-impl.js +8 -0
  272. package/dist/src/extensions/extension-registry-impl.js.map +1 -1
  273. package/dist/src/extensions/loader.d.ts +3 -3
  274. package/dist/src/extensions/loader.js +3 -3
  275. package/dist/src/extensions/loader.js.map +1 -1
  276. package/dist/src/extensions/sdk/testing.d.ts +2 -0
  277. package/dist/src/extensions/sdk/testing.js +7 -0
  278. package/dist/src/extensions/sdk/testing.js.map +1 -1
  279. package/dist/src/extensions/types/core.d.ts +10 -1
  280. package/dist/src/extensions/types/index.d.ts +1 -1
  281. package/dist/src/extensions/types/{phase4.d.ts → registration.d.ts} +2 -2
  282. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  283. package/dist/src/gateway/agent-builtin-tools.js +1 -1
  284. package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
  285. package/dist/src/gateway/agents-admin.d.ts +1 -0
  286. package/dist/src/gateway/agents-admin.js +13 -15
  287. package/dist/src/gateway/agents-admin.js.map +1 -1
  288. package/dist/src/gateway/capability-presets-admin.d.ts +1 -0
  289. package/dist/src/gateway/capability-presets-admin.js +19 -10
  290. package/dist/src/gateway/capability-presets-admin.js.map +1 -1
  291. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +11 -0
  292. package/dist/src/gateway/dreaming-automation-reconciler.js +105 -0
  293. package/dist/src/gateway/dreaming-automation-reconciler.js.map +1 -0
  294. package/dist/src/gateway/heartbeat/service.d.ts +0 -2
  295. package/dist/src/gateway/heartbeat/service.js +0 -7
  296. package/dist/src/gateway/heartbeat/service.js.map +1 -1
  297. package/dist/src/gateway/hono/lib/config-payload.d.ts +5 -6
  298. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  299. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  300. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  301. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  302. package/dist/src/gateway/hono/routes/config-patch/misc.js +15 -6
  303. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
  304. package/dist/src/gateway/hono/routes/dreaming.js +27 -37
  305. package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
  306. package/dist/src/gateway/hono/routes/home.d.ts +2 -2
  307. package/dist/src/gateway/hono/routes/home.js +34 -25
  308. package/dist/src/gateway/hono/routes/home.js.map +1 -1
  309. package/dist/src/gateway/hono/routes/lazy-bundles.js +10 -6
  310. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  311. package/dist/src/gateway/hono/routes/migrations.d.ts +3 -0
  312. package/dist/src/gateway/hono/routes/migrations.js +35 -0
  313. package/dist/src/gateway/hono/routes/migrations.js.map +1 -0
  314. package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
  315. package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
  316. package/dist/src/gateway/hono/routes/sessions.js +14 -0
  317. package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
  318. package/dist/src/gateway/run-loop.js +2 -0
  319. package/dist/src/gateway/run-loop.js.map +1 -1
  320. package/dist/src/gateway/security/operator-scopes.js +5 -1
  321. package/dist/src/gateway/security/operator-scopes.js.map +1 -1
  322. package/dist/src/gateway/service/config-coordinator.d.ts +4 -4
  323. package/dist/src/gateway/service/config-coordinator.js +14 -8
  324. package/dist/src/gateway/service/config-coordinator.js.map +1 -1
  325. package/dist/src/gateway/service/sessions-api.d.ts +2 -1
  326. package/dist/src/gateway/service/sessions-api.js +6 -1
  327. package/dist/src/gateway/service/sessions-api.js.map +1 -1
  328. package/dist/src/gateway/service.d.ts +7 -3
  329. package/dist/src/gateway/service.js +61 -27
  330. package/dist/src/gateway/service.js.map +1 -1
  331. package/dist/src/goals/goal-service.js +45 -4
  332. package/dist/src/goals/goal-service.js.map +1 -1
  333. package/dist/src/migrations/config/default-capability-preset.d.ts +10 -0
  334. package/dist/src/migrations/config/default-capability-preset.js +135 -0
  335. package/dist/src/migrations/config/default-capability-preset.js.map +1 -0
  336. package/dist/src/migrations/index.d.ts +4 -0
  337. package/dist/src/migrations/index.js +4 -0
  338. package/dist/src/migrations/registry.d.ts +8 -0
  339. package/dist/src/migrations/registry.js +18 -0
  340. package/dist/src/migrations/registry.js.map +1 -0
  341. package/dist/src/migrations/runner.d.ts +17 -0
  342. package/dist/src/migrations/runner.js +191 -0
  343. package/dist/src/migrations/runner.js.map +1 -0
  344. package/dist/src/migrations/types.d.ts +34 -0
  345. package/dist/src/notes/service.js +24 -1
  346. package/dist/src/notes/service.js.map +1 -1
  347. package/dist/src/providers/model-registry.d.ts +0 -1
  348. package/dist/src/providers/model-registry.js +0 -3
  349. package/dist/src/providers/model-registry.js.map +1 -1
  350. package/dist/src/routing/resolve-tui-session-key.d.ts +3 -0
  351. package/dist/src/routing/resolve-tui-session-key.js +14 -3
  352. package/dist/src/routing/resolve-tui-session-key.js.map +1 -1
  353. package/dist/src/session/transcript-outline.d.ts +47 -0
  354. package/dist/src/session/transcript-outline.js +481 -0
  355. package/dist/src/session/transcript-outline.js.map +1 -0
  356. package/dist/src/storage/sqlite/index.d.ts +0 -2
  357. package/dist/src/storage/sqlite/index.js +1 -3
  358. package/dist/src/storage/sqlite/migrations/016_automations.sql +47 -0
  359. package/dist/src/storage/sqlite/migrations/017_automation_run_events.sql +14 -0
  360. package/dist/src/storage/sqlite/migrations/018_automation_safety.sql +1 -0
  361. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  362. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  363. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  364. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  365. package/dist/src/storage/sqlite/row-mappers.js +3 -1
  366. package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
  367. package/dist/src/storage/sqlite/schema.js +1 -1
  368. package/dist/src/storage/sqlite/schema.sql +56 -46
  369. package/dist/src/tui/backends/embedded-backend.d.ts +6 -0
  370. package/dist/src/tui/backends/embedded-backend.js +19 -9
  371. package/dist/src/tui/backends/embedded-backend.js.map +1 -1
  372. package/dist/src/tui/backends/gateway-sse-backend.d.ts +3 -0
  373. package/dist/src/tui/backends/gateway-sse-backend.js +14 -0
  374. package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
  375. package/dist/src/tui/tui-backend.d.ts +4 -0
  376. package/dist/src/tui/tui-commands.d.ts +5 -0
  377. package/dist/src/tui/tui-commands.js +43 -0
  378. package/dist/src/tui/tui-commands.js.map +1 -1
  379. package/dist/src/tui/tui-transcript-tree.d.ts +1 -1
  380. package/dist/src/tui/tui-transcript-tree.js +17 -257
  381. package/dist/src/tui/tui-transcript-tree.js.map +1 -1
  382. package/dist/src/tui/tui-types.d.ts +2 -0
  383. package/dist/src/tui/tui-types.js.map +1 -1
  384. package/dist/src/tui/tui.js +7 -2
  385. package/dist/src/tui/tui.js.map +1 -1
  386. package/dist/src/workflows/domain/index.js +1 -1
  387. package/dist/src/workflows/domain/run.d.ts +7 -7
  388. package/dist/src/workflows/domain/run.js.map +1 -1
  389. package/dist/src/workflows/index.js +2 -2
  390. package/dist/src/workflows/service/workflow-run-service.d.ts +2 -0
  391. package/dist/src/workflows/service/workflow-run-service.js +31 -9
  392. package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
  393. package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -1
  394. package/package.json +4 -2
  395. package/dist/gateway/static/root/assets/agents-BCxZbkOw.js +0 -2
  396. package/dist/gateway/static/root/assets/app-management-settings-panel-bxYJVJpx.js +0 -1
  397. package/dist/gateway/static/root/assets/appearance-settings-BCIykXlI.js +0 -1
  398. package/dist/gateway/static/root/assets/browser-settings-page-DRhKdn81.js +0 -8
  399. package/dist/gateway/static/root/assets/capability-presets-api-CorhiHlg.js +0 -1
  400. package/dist/gateway/static/root/assets/capability-presets-settings-panel-qFx9Jtce.js +0 -1
  401. package/dist/gateway/static/root/assets/channels-settings-BAwAkqIA.js +0 -1
  402. package/dist/gateway/static/root/assets/cn-JdwAhgNB.js +0 -1
  403. package/dist/gateway/static/root/assets/connectors-page-BQLcfitM.js +0 -2
  404. package/dist/gateway/static/root/assets/createLucideIcon-DPHK1VkS.js +0 -1
  405. package/dist/gateway/static/root/assets/cron-api-qGwmL-24.js +0 -1
  406. package/dist/gateway/static/root/assets/cron-dreaming-jobs-nCMWCf0p.js +0 -1
  407. package/dist/gateway/static/root/assets/cron-page-BBWMAj8-.js +0 -3
  408. package/dist/gateway/static/root/assets/dreaming-settings-Dw89Obml.js +0 -1
  409. package/dist/gateway/static/root/assets/format-cron-label-BsotZDO5.js +0 -2
  410. package/dist/gateway/static/root/assets/format-interval-label-BzxafKxR.js +0 -1
  411. package/dist/gateway/static/root/assets/gateway-settings-Cmwy58rS.js +0 -1
  412. package/dist/gateway/static/root/assets/goal-detail-page-l7mu5GWX.js +0 -1
  413. package/dist/gateway/static/root/assets/goals-settings-CYVY4NGp.js +0 -1
  414. package/dist/gateway/static/root/assets/heartbeat-config-api-DriO_CN9.js +0 -1
  415. package/dist/gateway/static/root/assets/heartbeat-settings-CUQTKxg7.js +0 -1
  416. package/dist/gateway/static/root/assets/index-C17Tsd_b.css +0 -1
  417. package/dist/gateway/static/root/assets/index-Cc41r16l.js +0 -191
  418. package/dist/gateway/static/root/assets/interval-presets-DFPCKW_W.js +0 -1
  419. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-CcVcqstx.js +0 -1
  420. package/dist/gateway/static/root/assets/messages-B1iSKjiw.js +0 -3
  421. package/dist/gateway/static/root/assets/models-hub-panel-BfLfcta8.js +0 -2
  422. package/dist/gateway/static/root/assets/note-detail-page-BjwOQBfT.js +0 -2
  423. package/dist/gateway/static/root/assets/notes-page-DktdBiwB.js +0 -1
  424. package/dist/gateway/static/root/assets/remote-access-hub-rfVx96fq.js +0 -1
  425. package/dist/gateway/static/root/assets/schedule-field-CUCKODde.js +0 -1
  426. package/dist/gateway/static/root/assets/sessions-page-DbtMFuuH.js +0 -1
  427. package/dist/gateway/static/root/assets/settings-advanced-gate-5re5gAnP.js +0 -1
  428. package/dist/gateway/static/root/assets/settings-form-section-dmyaPOTG.js +0 -1
  429. package/dist/gateway/static/root/assets/settings-page-D-WMyLlj.js +0 -1
  430. package/dist/gateway/static/root/assets/setup-status-panel-Cl-DEJAU.js +0 -1
  431. package/dist/gateway/static/root/assets/shares-settings-CyPVvbLt.js +0 -1
  432. package/dist/gateway/static/root/assets/skill-reload-api-CleTH1oz.js +0 -1
  433. package/dist/gateway/static/root/assets/skills-page-Ck8hdXqR.js +0 -2
  434. package/dist/gateway/static/root/assets/system-settings-panel-DI-LN_8G.js +0 -1
  435. package/dist/gateway/static/root/assets/typed-models-lib-kX9duch4.js +0 -1
  436. package/dist/gateway/static/root/assets/user-profile-settings-panel-B-UFPMXy.js +0 -1
  437. package/dist/gateway/static/root/assets/utils-Dm0hKalR.js +0 -1
  438. package/dist/gateway/static/root/assets/workflows-page-BtFGp2y_.js +0 -18
  439. package/dist/src/agent/fallback/error.d.ts +0 -22
  440. package/dist/src/agent/fallback/error.js +0 -32
  441. package/dist/src/agent/fallback/error.js.map +0 -1
  442. package/dist/src/agent/fallback/index.d.ts +0 -5
  443. package/dist/src/agent/fallback/index.js +0 -9
  444. package/dist/src/agent/fallback/index.js.map +0 -1
  445. package/dist/src/agent/memory/memory-flush.d.ts +0 -27
  446. package/dist/src/agent/memory/memory-flush.js +0 -124
  447. package/dist/src/agent/memory/memory-flush.js.map +0 -1
  448. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +0 -29
  449. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +0 -76
  450. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +0 -1
  451. package/dist/src/agent/service/reconcile-dreaming-cron.d.ts +0 -6
  452. package/dist/src/agent/service/reconcile-dreaming-cron.js +0 -84
  453. package/dist/src/agent/service/reconcile-dreaming-cron.js.map +0 -1
  454. package/dist/src/agent/tools/cronjob-tool.d.ts +0 -29
  455. package/dist/src/agent/tools/cronjob-tool.js +0 -274
  456. package/dist/src/agent/tools/cronjob-tool.js.map +0 -1
  457. package/dist/src/cli/commands/cron-cli.d.ts +0 -2
  458. package/dist/src/cli/commands/cron-cli.js +0 -15
  459. package/dist/src/cli/commands/cron-cli.js.map +0 -1
  460. package/dist/src/cli/commands/cron.d.ts +0 -4
  461. package/dist/src/cli/commands/cron.js +0 -188
  462. package/dist/src/cli/commands/cron.js.map +0 -1
  463. package/dist/src/cli/commands/doctor/checks/cron-health.js +0 -35
  464. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +0 -1
  465. package/dist/src/cron/execution-types.d.ts +0 -42
  466. package/dist/src/cron/executor.d.ts +0 -67
  467. package/dist/src/cron/executor.js +0 -669
  468. package/dist/src/cron/executor.js.map +0 -1
  469. package/dist/src/cron/index.d.ts +0 -7
  470. package/dist/src/cron/index.js +0 -7
  471. package/dist/src/cron/job-content.d.ts +0 -5
  472. package/dist/src/cron/job-content.js +0 -15
  473. package/dist/src/cron/job-content.js.map +0 -1
  474. package/dist/src/cron/run-log-store.d.ts +0 -12
  475. package/dist/src/cron/run-log-store.js +0 -58
  476. package/dist/src/cron/run-log-store.js.map +0 -1
  477. package/dist/src/cron/schedule.d.ts +0 -10
  478. package/dist/src/cron/schedule.js +0 -85
  479. package/dist/src/cron/schedule.js.map +0 -1
  480. package/dist/src/cron/service.d.ts +0 -58
  481. package/dist/src/cron/service.js +0 -419
  482. package/dist/src/cron/service.js.map +0 -1
  483. package/dist/src/cron/types.d.ts +0 -183
  484. package/dist/src/cron/validation.d.ts +0 -500
  485. package/dist/src/cron/validation.js +0 -192
  486. package/dist/src/cron/validation.js.map +0 -1
  487. package/dist/src/cron/workflow-run-completion.d.ts +0 -23
  488. package/dist/src/cron/workflow-run-completion.js +0 -72
  489. package/dist/src/cron/workflow-run-completion.js.map +0 -1
  490. package/dist/src/extensions/types/phase4.js +0 -1
  491. package/dist/src/gateway/hono/routes/cron.d.ts +0 -3
  492. package/dist/src/gateway/hono/routes/cron.js +0 -109
  493. package/dist/src/gateway/hono/routes/cron.js.map +0 -1
  494. package/dist/src/storage/sqlite/cron-job-repository.d.ts +0 -6
  495. package/dist/src/storage/sqlite/cron-job-repository.js +0 -70
  496. package/dist/src/storage/sqlite/cron-job-repository.js.map +0 -1
  497. package/dist/src/storage/sqlite/cron-run-repository.d.ts +0 -5
  498. package/dist/src/storage/sqlite/cron-run-repository.js +0 -96
  499. package/dist/src/storage/sqlite/cron-run-repository.js.map +0 -1
  500. /package/dist/src/{cron → automations/domain}/types.js +0 -0
  501. /package/dist/src/{config/defaults.d.ts → automations/draft/automation-draft.types.js} +0 -0
  502. /package/dist/src/{config/defaults.js → extensions/types/registration.js} +0 -0
  503. /package/dist/src/{cron/execution-types.js → migrations/types.js} +0 -0
@@ -1,669 +0,0 @@
1
- import { init_agent_scope, normalizeAgentId } from "../agent/agent-scope.js";
2
- import { buildSessionKey, init_session_key } from "../routing/session-key.js";
3
- import { createLogger } from "../utils/logger/index.js";
4
- import { init_logger } from "../utils/logger.js";
5
- import { shouldSilence, stripHeartbeatToken } from "../heartbeat/tokens.js";
6
- import { getChannelPlugin } from "../channels/plugins/registry.js";
7
- import { getCronPayloadText } from "./job-content.js";
8
- import { buildWorkflowRunCronSummary, buildWorkflowRunDeliveryText, isWorkflowRunCronSuccess, resolveWorkflowCronWaitMs, waitForWorkflowRunView } from "./workflow-run-completion.js";
9
- //#region src/cron/executor.ts
10
- init_logger();
11
- init_agent_scope();
12
- init_session_key();
13
- const log = createLogger("CronExecutor");
14
- const ERROR_BACKOFF_MS = [
15
- 3e4,
16
- 6e4,
17
- 5 * 6e4,
18
- 15 * 6e4,
19
- 60 * 6e4
20
- ];
21
- function errorBackoffMs(consecutiveErrors) {
22
- const idx = Math.min(consecutiveErrors - 1, ERROR_BACKOFF_MS.length - 1);
23
- return ERROR_BACKOFF_MS[Math.max(0, idx)];
24
- }
25
- function resolveIsolatedCronJobModel(job) {
26
- if (job.payload?.kind === "agentTurn") {
27
- const m = job.payload.model?.trim();
28
- if (m) return m;
29
- }
30
- }
31
- async function postCronWebhook(url, payload) {
32
- const res = await fetch(url, {
33
- method: "POST",
34
- headers: { "content-type": "application/json" },
35
- body: JSON.stringify(payload)
36
- });
37
- if (!res.ok) {
38
- const text = await res.text().catch(() => "");
39
- throw new Error(`Webhook delivery failed: HTTP ${res.status}${text ? ` ${text.slice(0, 200)}` : ""}`);
40
- }
41
- }
42
- var DefaultJobExecutor = class {
43
- history = /* @__PURE__ */ new Map();
44
- runningJobs = /* @__PURE__ */ new Map();
45
- agentService = null;
46
- messageBus = null;
47
- heartbeatService = null;
48
- sessionStore;
49
- runLogStore = null;
50
- getDefaultCronAgentId = null;
51
- workflowRunService = null;
52
- goalRunner = null;
53
- setRunLogStore(store) {
54
- this.runLogStore = store;
55
- }
56
- setDeps(deps) {
57
- this.agentService = deps.agentService;
58
- this.messageBus = deps.messageBus;
59
- this.heartbeatService = deps.heartbeatService ?? null;
60
- if (deps.sessionStore !== void 0) this.sessionStore = deps.sessionStore;
61
- this.getDefaultCronAgentId = deps.getDefaultCronAgentId ?? null;
62
- this.workflowRunService = deps.workflowRunService ?? null;
63
- this.goalRunner = deps.goalRunner ?? null;
64
- }
65
- async buildCronOutboundMessage(channel, to, content) {
66
- const plugin = getChannelPlugin(channel);
67
- if (plugin?.cronDelivery) {
68
- const { chatId, accountId, metadata } = await plugin.cronDelivery.normalizeDeliveryTarget(to, this.sessionStore);
69
- const meta = accountId || metadata ? {
70
- ...metadata ?? {},
71
- ...accountId ? { accountId } : {}
72
- } : void 0;
73
- return {
74
- channel,
75
- chat_id: chatId,
76
- content,
77
- type: "message",
78
- ...meta && Object.keys(meta).length > 0 ? { metadata: meta } : {}
79
- };
80
- }
81
- return {
82
- channel,
83
- chat_id: to,
84
- content,
85
- type: "message"
86
- };
87
- }
88
- async execute(job, signal, deps) {
89
- if (deps) this.setDeps(deps);
90
- const executionId = crypto.randomUUID();
91
- const execution = {
92
- id: executionId,
93
- jobId: job.id,
94
- status: "running",
95
- startedAt: (/* @__PURE__ */ new Date()).toISOString(),
96
- retryCount: 0,
97
- sessionId: job.sessionKey,
98
- sessionKey: job.sessionKey,
99
- sessionType: job.sessionKey ? "cron" : void 0
100
- };
101
- this.addToHistory(job.id, execution);
102
- if (this.runLogStore) await this.runLogStore.upsert(execution);
103
- this.runningJobs.set(job.id, new AbortController());
104
- log.info({
105
- jobId: job.id,
106
- executionId,
107
- preview: getCronPayloadText(job).slice(0, 100)
108
- }, "Job executing");
109
- let result;
110
- try {
111
- if (signal.aborted) throw new Error("Job was cancelled before execution");
112
- result = await this.performJob(job, signal);
113
- execution.status = result.status === "ok" ? "success" : result.status === "skipped" ? "cancelled" : "failed";
114
- execution.endedAt = (/* @__PURE__ */ new Date()).toISOString();
115
- execution.duration = Date.now() - new Date(execution.startedAt).getTime();
116
- execution.summary = result.summary;
117
- execution.error = result.error;
118
- execution.sessionId = result.sessionId;
119
- execution.sessionKey = result.sessionKey;
120
- execution.sessionType = result.sessionType;
121
- execution.model = result.model;
122
- execution.workflowRunId = result.workflowRunId;
123
- if (result.status === "ok") log.info({
124
- jobId: job.id,
125
- executionId,
126
- duration: execution.duration
127
- }, "Job completed");
128
- else if (result.status === "skipped") log.warn({
129
- jobId: job.id,
130
- executionId,
131
- reason: result.error
132
- }, "Job skipped");
133
- else log.error({
134
- jobId: job.id,
135
- executionId,
136
- errorMessage: result.error,
137
- phase: "cron.execute"
138
- }, `Job failed: ${result.error ?? "unknown"}`);
139
- if (result.status === "ok" && job.wakeMode === "next-heartbeat" && this.heartbeatService) try {
140
- this.heartbeatService.requestNow({ reason: `cron:${job.id}` });
141
- } catch (e) {
142
- log.warn({
143
- jobId: job.id,
144
- err: e
145
- }, "Heartbeat wake after cron failed");
146
- }
147
- } catch (error) {
148
- execution.status = "failed";
149
- execution.endedAt = (/* @__PURE__ */ new Date()).toISOString();
150
- execution.duration = Date.now() - new Date(execution.startedAt).getTime();
151
- execution.error = error instanceof Error ? error.message : String(error);
152
- log.error({
153
- err: error,
154
- errorMessage: execution.error,
155
- jobId: job.id,
156
- executionId,
157
- phase: "cron.execute"
158
- }, `Job execution error: ${execution.error}`);
159
- result = {
160
- status: "error",
161
- error: execution.error
162
- };
163
- } finally {
164
- this.runningJobs.delete(job.id);
165
- }
166
- if (this.runLogStore) await this.runLogStore.upsert(execution);
167
- }
168
- /**
169
- * Perform the actual job work - integrate with AgentService
170
- */
171
- async performJob(job, signal) {
172
- const timeout = job.payload.kind === "agentTurn" && job.payload.timeoutSeconds ? job.payload.timeoutSeconds * 1e3 : 18e4;
173
- const sessionTarget = job.sessionTarget;
174
- if (signal.aborted) return {
175
- status: "skipped",
176
- error: "Job was aborted before execution"
177
- };
178
- try {
179
- if (job.payload.kind === "goalContinue") return await this.executeGoalContinue(job);
180
- if (job.payload.kind === "workflowRun") return await this.executeWorkflowRun(job, signal);
181
- if (!this.agentService || !this.messageBus) {
182
- log.warn({ jobId: job.id }, "No agent service configured, using basic execution");
183
- return this.basicExecute(job, signal, timeout);
184
- }
185
- if (sessionTarget === "main") return await this.executeMainSession(job, signal, timeout);
186
- else return await this.executeIsolated(job, signal, timeout);
187
- } catch (error) {
188
- return {
189
- status: "error",
190
- error: error instanceof Error ? error.message : String(error)
191
- };
192
- }
193
- }
194
- async executeGoalContinue(job) {
195
- if (job.payload.kind !== "goalContinue") return {
196
- status: "error",
197
- error: "Cron job payload is not goalContinue"
198
- };
199
- if (!this.goalRunner) return {
200
- status: "error",
201
- error: "Goal runner is not configured for cron"
202
- };
203
- const item = this.goalRunner.enqueue(job.payload.goalId, {
204
- message: job.payload.message,
205
- maxRetries: job.payload.maxRetries ?? 0,
206
- source: "cron"
207
- });
208
- return {
209
- status: "ok",
210
- summary: `Queued goal ${job.payload.goalId} (${item.status})`,
211
- sessionId: item.sessionKey,
212
- sessionKey: item.sessionKey,
213
- sessionType: "goal"
214
- };
215
- }
216
- async executeWorkflowRun(job, signal) {
217
- if (signal.aborted) return {
218
- status: "skipped",
219
- error: "Job was aborted before workflow run start"
220
- };
221
- if (job.payload.kind !== "workflowRun") return {
222
- status: "error",
223
- error: "Cron job payload is not workflowRun"
224
- };
225
- if (!this.workflowRunService) return {
226
- status: "error",
227
- error: "Workflow run service is not configured for cron"
228
- };
229
- const fallbackAgentId = this.getDefaultCronAgentId?.() ?? "main";
230
- const agentId = normalizeAgentId(job.payload.agentId || job.agentId || fallbackAgentId);
231
- const fireId = job.payload.source?.fireId || crypto.randomUUID();
232
- const source = {
233
- kind: "cron",
234
- scheduleId: job.payload.source?.scheduleId || job.id,
235
- fireId,
236
- scheduledAtMs: job.payload.source?.scheduledAtMs ?? Date.now()
237
- };
238
- const result = await this.workflowRunService.startWorkflowRun({
239
- agentId,
240
- definitionId: job.payload.definitionId,
241
- input: job.payload.input,
242
- inputEnvelope: job.payload.inputEnvelope,
243
- goal: job.payload.goal,
244
- source,
245
- idempotencyKey: `cron:${job.id}:${fireId}`
246
- });
247
- if (result.ok === false) return {
248
- status: "error",
249
- error: result.message
250
- };
251
- log.info({
252
- jobId: job.id,
253
- workflowRunId: result.runId,
254
- definitionId: job.payload.definitionId,
255
- sessionKey: result.sessionKey
256
- }, "Workflow run started from cron");
257
- if (!(job.payload.waitForCompletion !== false) || !this.workflowRunService.readWorkflowRunView) return {
258
- status: "ok",
259
- summary: `Started workflow run ${result.runId}`,
260
- sessionId: result.sessionKey,
261
- sessionKey: result.sessionKey,
262
- sessionType: "workflow",
263
- workflowRunId: result.runId
264
- };
265
- return this.waitForWorkflowRunOutcome({
266
- job,
267
- agentId,
268
- sessionKey: result.sessionKey,
269
- initialRunId: result.runId,
270
- signal
271
- });
272
- }
273
- async waitForWorkflowRunOutcome(params) {
274
- const waitMs = resolveWorkflowCronWaitMs(18e4);
275
- const maxWorkflowRetries = params.job.payload.kind === "workflowRun" ? Math.max(0, Math.floor(params.job.payload.maxRetries ?? 0)) : 0;
276
- let runId = params.initialRunId;
277
- let attempt = 0;
278
- while (attempt <= maxWorkflowRetries) {
279
- const waitResult = await waitForWorkflowRunView({
280
- readView: (id) => this.workflowRunService.readWorkflowRunView(params.agentId, id),
281
- runId,
282
- signal: params.signal,
283
- timeoutMs: waitMs
284
- });
285
- if (waitResult.kind === "aborted") return {
286
- status: "skipped",
287
- error: "Job was aborted while waiting for workflow run"
288
- };
289
- if (waitResult.kind === "timeout") return {
290
- status: "error",
291
- error: `Workflow run ${runId} did not finish within ${waitMs}ms`,
292
- summary: waitResult.lastView ? buildWorkflowRunCronSummary(waitResult.lastView) : void 0,
293
- sessionId: params.sessionKey,
294
- sessionKey: params.sessionKey,
295
- sessionType: "workflow",
296
- workflowRunId: runId
297
- };
298
- const view = waitResult.view;
299
- const summary = buildWorkflowRunCronSummary(view);
300
- if (isWorkflowRunCronSuccess(view)) {
301
- const baseOutcome = {
302
- status: "ok",
303
- summary,
304
- sessionId: params.sessionKey,
305
- sessionKey: params.sessionKey,
306
- sessionType: "workflow",
307
- workflowRunId: runId
308
- };
309
- await this.deliverWorkflowRunOutcome(params.job, view, baseOutcome);
310
- return baseOutcome;
311
- }
312
- if (!(attempt < maxWorkflowRetries && view.run.status === "failed" && Boolean(this.workflowRunService?.retryWorkflowRun))) return {
313
- status: "error",
314
- summary,
315
- error: summary,
316
- sessionId: params.sessionKey,
317
- sessionKey: params.sessionKey,
318
- sessionType: "workflow",
319
- workflowRunId: runId
320
- };
321
- const retryResult = await this.workflowRunService.retryWorkflowRun({
322
- agentId: params.agentId,
323
- runId
324
- });
325
- if (retryResult.ok === false) return {
326
- status: "error",
327
- error: retryResult.message,
328
- summary,
329
- sessionId: params.sessionKey,
330
- sessionKey: params.sessionKey,
331
- sessionType: "workflow",
332
- workflowRunId: runId
333
- };
334
- runId = retryResult.runId;
335
- attempt += 1;
336
- log.info({
337
- jobId: params.job.id,
338
- attempt,
339
- workflowRunId: runId
340
- }, "Retrying failed workflow run from cron");
341
- }
342
- return {
343
- status: "error",
344
- error: "Workflow run retries exhausted",
345
- sessionId: params.sessionKey,
346
- sessionKey: params.sessionKey,
347
- sessionType: "workflow",
348
- workflowRunId: runId
349
- };
350
- }
351
- async deliverWorkflowRunOutcome(job, view, outcome) {
352
- const delivery = job.delivery;
353
- if (!delivery || delivery.mode === "none" || delivery.channel === "local" || !delivery.to?.trim()) return;
354
- try {
355
- const text = buildWorkflowRunDeliveryText(view);
356
- if (delivery.mode === "webhook") {
357
- await postCronWebhook(delivery.to, {
358
- jobId: job.id,
359
- jobName: job.name,
360
- payloadKind: job.payload.kind,
361
- workflowRunId: view.run.id,
362
- status: view.run.status,
363
- text,
364
- run: view.run
365
- });
366
- log.info({
367
- jobId: job.id,
368
- workflowRunId: view.run.id
369
- }, "Delivered workflow run webhook from cron");
370
- return;
371
- }
372
- if (!this.messageBus || !delivery.channel) return;
373
- const outbound = await this.buildCronOutboundMessage(delivery.channel, delivery.to, text);
374
- await this.messageBus.publishOutbound(outbound);
375
- log.info({
376
- jobId: job.id,
377
- channel: delivery.channel,
378
- to: outbound.chat_id,
379
- workflowRunId: view.run.id
380
- }, "Delivered workflow run result from cron");
381
- } catch (err) {
382
- const em = err instanceof Error ? err.message : String(err);
383
- log.warn({
384
- jobId: job.id,
385
- err,
386
- workflowRunId: view.run.id
387
- }, `Workflow cron delivery failed: ${em}`);
388
- if (outcome.status === "ok") outcome.summary = `${outcome.summary ?? ""} (delivery failed: ${em})`.trim();
389
- }
390
- }
391
- /**
392
- * Execute in main session - sends system event
393
- */
394
- async executeMainSession(job, signal, timeout) {
395
- const text = getCronPayloadText(job);
396
- if (!text || !text.trim()) return {
397
- status: "skipped",
398
- error: "Main session job requires non-empty message"
399
- };
400
- const delivery = job.delivery;
401
- const channel = delivery?.channel ?? "local";
402
- const to = delivery?.to ?? "";
403
- const actualMessage = text;
404
- const timeoutPromise = new Promise((_, reject) => {
405
- setTimeout(() => reject(/* @__PURE__ */ new Error(`Job timed out after ${timeout}ms`)), timeout);
406
- });
407
- const executePromise = (async () => {
408
- if (signal.aborted) throw new Error("Job was aborted");
409
- if (!delivery || delivery.mode === "none" || channel === "local") {
410
- log.info({
411
- jobId: job.id,
412
- messageLength: actualMessage.length
413
- }, "Cron main session: no outbound publish");
414
- return {
415
- status: "ok",
416
- summary: actualMessage.slice(0, 200)
417
- };
418
- }
419
- if (delivery.mode === "webhook") {
420
- if (!to.trim()) throw new Error("Webhook delivery requires delivery.to");
421
- await postCronWebhook(to, {
422
- jobId: job.id,
423
- jobName: job.name,
424
- payloadKind: job.payload.kind,
425
- text: actualMessage
426
- });
427
- return {
428
- status: "ok",
429
- summary: actualMessage.slice(0, 200)
430
- };
431
- }
432
- if (!this.messageBus) return {
433
- status: "error",
434
- error: "MessageBus not available"
435
- };
436
- const outbound = await this.buildCronOutboundMessage(channel, to, actualMessage);
437
- await this.messageBus.publishOutbound(outbound);
438
- log.info({
439
- jobId: job.id,
440
- channel,
441
- to: outbound.chat_id,
442
- messageLength: actualMessage.length
443
- }, "Sent message to main session");
444
- return {
445
- status: "ok",
446
- summary: actualMessage.slice(0, 200)
447
- };
448
- })();
449
- return await Promise.race([executePromise, timeoutPromise]);
450
- }
451
- /**
452
- * Execute in isolated mode - runs agent independently
453
- */
454
- async executeIsolated(job, signal, timeout) {
455
- const message = getCronPayloadText(job);
456
- if (!message || !message.trim()) return {
457
- status: "skipped",
458
- error: "Isolated job requires non-empty message"
459
- };
460
- const explicitSessionKey = job.sessionTarget.startsWith("session:") ? job.sessionTarget.slice(8).trim() : job.sessionTarget === "current" ? job.sessionKey?.trim() : job.sessionTarget === "isolated" ? job.sessionKey?.trim() : void 0;
461
- const aid = job.agentId?.trim();
462
- const fallbackAgentId = this.getDefaultCronAgentId?.() ?? "main";
463
- const sessionKey = explicitSessionKey || buildSessionKey({
464
- agentId: normalizeAgentId(aid || fallbackAgentId),
465
- source: "cron",
466
- accountId: "default",
467
- peerKind: "dm",
468
- peerId: `${job.id}-${crypto.randomUUID().slice(0, 8)}`
469
- });
470
- const timeoutPromise = new Promise((_, reject) => {
471
- setTimeout(() => reject(/* @__PURE__ */ new Error(`Job timed out after ${timeout}ms`)), timeout);
472
- });
473
- const executePromise = (async () => {
474
- if (signal.aborted) throw new Error("Job was aborted");
475
- await this.agentService.sessionConfig.applyCronJobWorkingDirectory(sessionKey, job.workingDirectory);
476
- const jobModel = resolveIsolatedCronJobModel(job);
477
- if (jobModel) {
478
- if (!await this.agentService.sessionConfig.applyCronJobModelOverride(sessionKey, jobModel)) log.warn({
479
- jobId: job.id,
480
- sessionKey,
481
- model: jobModel
482
- }, "Cron job model invalid; using agent default");
483
- } else await this.agentService.sessionConfig.applyCronJobModelOverride(sessionKey, void 0);
484
- const response = await this.agentService.turnDispatcher.processDirect(message, sessionKey);
485
- const model = this.agentService.getModelForSession(sessionKey);
486
- log.info({
487
- jobId: job.id,
488
- sessionKey,
489
- responseLength: response.length,
490
- model
491
- }, "Agent execution completed");
492
- const delivery = job.delivery;
493
- const outboundChannel = delivery?.channel;
494
- if (delivery && delivery.mode !== "none" && delivery.to) {
495
- if (shouldSilence(response, 300) || response.trim() === "NO_REPLY") return {
496
- status: "ok",
497
- summary: response.slice(0, 200),
498
- sessionId: sessionKey,
499
- sessionKey,
500
- sessionType: "cron",
501
- model
502
- };
503
- const { stripped } = stripHeartbeatToken(response);
504
- const outboundText = stripped || response.trim();
505
- if (delivery.mode === "webhook") {
506
- await postCronWebhook(delivery.to, {
507
- jobId: job.id,
508
- jobName: job.name,
509
- payloadKind: job.payload.kind,
510
- sessionKey,
511
- model,
512
- text: outboundText
513
- });
514
- log.info({ jobId: job.id }, "Delivered agent response webhook");
515
- return {
516
- status: "ok",
517
- summary: response.slice(0, 200),
518
- sessionId: sessionKey,
519
- sessionKey,
520
- sessionType: "cron",
521
- model
522
- };
523
- }
524
- if (outboundChannel === "local") return {
525
- status: "ok",
526
- summary: response.slice(0, 200),
527
- sessionId: sessionKey,
528
- sessionKey,
529
- sessionType: "cron",
530
- model
531
- };
532
- const targetChannel = outboundChannel || "cli";
533
- const outbound = await this.buildCronOutboundMessage(targetChannel, delivery.to, outboundText);
534
- await this.messageBus.publishOutbound(outbound);
535
- log.info({
536
- jobId: job.id,
537
- channel: targetChannel,
538
- to: outbound.chat_id
539
- }, "Delivered agent response");
540
- return {
541
- status: "ok",
542
- summary: response.slice(0, 200),
543
- sessionId: sessionKey,
544
- sessionKey,
545
- sessionType: "cron",
546
- model
547
- };
548
- }
549
- return {
550
- status: "ok",
551
- summary: response.slice(0, 200),
552
- sessionId: sessionKey,
553
- sessionKey,
554
- sessionType: "cron",
555
- model
556
- };
557
- })();
558
- try {
559
- return await Promise.race([executePromise, timeoutPromise]);
560
- } finally {
561
- const { retireSessionMcpRuntimeForSessionKey } = await import("../agent/mcp/bundle-mcp-tools.js");
562
- await retireSessionMcpRuntimeForSessionKey({
563
- sessionKey,
564
- reason: "cron-isolated-end"
565
- }).catch(() => {});
566
- }
567
- }
568
- /**
569
- * Basic execution without agent service (fallback)
570
- */
571
- async basicExecute(job, signal, timeout) {
572
- return new Promise((resolve, reject) => {
573
- const timeoutId = setTimeout(() => {
574
- reject(/* @__PURE__ */ new Error(`Job timed out after ${timeout}ms`));
575
- }, timeout);
576
- const abortHandler = () => {
577
- clearTimeout(timeoutId);
578
- reject(/* @__PURE__ */ new Error("Job was aborted"));
579
- };
580
- signal.addEventListener("abort", abortHandler);
581
- setTimeout(() => {
582
- clearTimeout(timeoutId);
583
- signal.removeEventListener("abort", abortHandler);
584
- if (signal.aborted) reject(/* @__PURE__ */ new Error("Job was aborted"));
585
- else resolve({
586
- status: "ok",
587
- summary: `Executed: ${getCronPayloadText(job).slice(0, 100)}`
588
- });
589
- }, 100);
590
- });
591
- }
592
- /**
593
- * Cancel a running job
594
- */
595
- cancelJob(jobId) {
596
- const controller = this.runningJobs.get(jobId);
597
- if (controller) {
598
- controller.abort();
599
- this.runningJobs.delete(jobId);
600
- return true;
601
- }
602
- return false;
603
- }
604
- /**
605
- * Get execution history for a job
606
- */
607
- getHistory(jobId, limit = 10) {
608
- return (this.history.get(jobId) || []).slice(-limit);
609
- }
610
- /**
611
- * Get currently running executions
612
- */
613
- getRunningExecutions() {
614
- const result = [];
615
- for (const [jobId] of this.runningJobs) {
616
- const history = this.history.get(jobId);
617
- if (history) {
618
- const running = history.find((e) => e.status === "running");
619
- if (running) result.push(running);
620
- }
621
- }
622
- return result;
623
- }
624
- /**
625
- * Check if a job is currently running
626
- */
627
- isRunning(jobId) {
628
- return this.runningJobs.has(jobId);
629
- }
630
- /**
631
- * Get consecutive error count for a job
632
- */
633
- getConsecutiveErrors(jobId) {
634
- const history = this.history.get(jobId) || [];
635
- for (let i = history.length - 1; i >= 0; i--) if (history[i].status !== "running") {
636
- if (history[i].status === "failed" || history[i].status === "cancelled") {
637
- let count = 0;
638
- for (let j = i - 1; j >= 0; j--) if (history[j].status === "failed" || history[j].status === "cancelled") count++;
639
- else break;
640
- return count + 1;
641
- }
642
- return 0;
643
- }
644
- return 0;
645
- }
646
- /**
647
- * Calculate backoff delay for a job
648
- */
649
- calculateBackoff(jobId) {
650
- return errorBackoffMs(this.getConsecutiveErrors(jobId));
651
- }
652
- /**
653
- * Clear old history entries
654
- */
655
- cleanupHistory(maxAgeDays = 7) {
656
- const cutoff = Date.now() - maxAgeDays * 24 * 60 * 60 * 1e3;
657
- for (const [jobId, executions] of this.history) this.history.set(jobId, executions.filter((e) => new Date(e.startedAt).getTime() > cutoff));
658
- }
659
- addToHistory(jobId, execution) {
660
- const existing = this.history.get(jobId) || [];
661
- existing.push(execution);
662
- if (existing.length > 100) existing.shift();
663
- this.history.set(jobId, existing);
664
- }
665
- };
666
- //#endregion
667
- export { DefaultJobExecutor };
668
-
669
- //# sourceMappingURL=executor.js.map