@xopcai/xopc 0.0.111 → 0.0.113

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 (443) hide show
  1. package/dist/browser-ext/icons/icon-128.png +0 -0
  2. package/dist/browser-ext/icons/icon-16.png +0 -0
  3. package/dist/browser-ext/icons/icon-32.png +0 -0
  4. package/dist/browser-ext/icons/icon-48.png +0 -0
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  7. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  8. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
  9. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  10. package/dist/extensions/telegram/src/plugin.js +1 -1
  11. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  12. package/dist/extensions/telegram/src/update-offset-store.js +1 -1
  13. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  14. package/dist/extensions/telegram/xopc.extension.json +1 -1
  15. package/dist/extensions/weixin/src/api/api.js +2 -2
  16. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  17. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  18. package/dist/extensions/weixin/src/delivery-to.d.ts +3 -3
  19. package/dist/extensions/weixin/src/delivery-to.js.map +1 -1
  20. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  21. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  22. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  23. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  24. package/dist/extensions/weixin/src/plugin.js +1 -1
  25. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  26. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  27. package/dist/gateway/static/root/apple-touch-icon.png +0 -0
  28. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-zlx9l5Yp.js → agent-avatar-dicebear-CBlklyNr.js} +1 -1
  29. package/dist/gateway/static/root/assets/agent-browser-settings-page-rGbKc2Hh.js +6 -0
  30. package/dist/gateway/static/root/assets/{agent-defaults-tabbed-page-Bz7JWjRM.js → agent-defaults-tabbed-page-CtwVbjOA.js} +1 -1
  31. package/dist/gateway/static/root/assets/agents-CCBmGcwc.js +71 -0
  32. package/dist/gateway/static/root/assets/{app-management-settings-panel-DaQwdeCq.js → app-management-settings-panel-28E_WfMe.js} +1 -1
  33. package/dist/gateway/static/root/assets/{appearance-settings-D2zv6r3P.js → appearance-settings-Do1z0XgJ.js} +1 -1
  34. package/dist/gateway/static/root/assets/{apps-page-BIppe_jj.js → apps-page-xwCsJS15.js} +1 -1
  35. package/dist/gateway/static/root/assets/{archive-plugin-DEmu8eH7.js → archive-plugin-BAFlsov_.js} +1 -1
  36. package/dist/gateway/static/root/assets/{attachment-load-B98lJoN5.js → attachment-load-V3qGPC3x.js} +1 -1
  37. package/dist/gateway/static/root/assets/{binary-plugins-CL9QKmyo.js → binary-plugins-DT8NvA6W.js} +1 -1
  38. package/dist/gateway/static/root/assets/{block-editor-BOAhMAhT.js → block-editor-CdLMEcHd.js} +1 -1
  39. package/dist/gateway/static/root/assets/{channels-settings-Br8iRnXp.js → channels-settings-C044DcYk.js} +1 -1
  40. package/dist/gateway/static/root/assets/{config-api-0o1WYdz2.js → config-api-Bf5mjpu7.js} +1 -1
  41. package/dist/gateway/static/root/assets/config-reload-event-Bjh2zoKp.js +1 -0
  42. package/dist/gateway/static/root/assets/connectors-settings-8VEWUOTj.js +2 -0
  43. package/dist/gateway/static/root/assets/cron-api--pAB_rps.js +1 -0
  44. package/dist/gateway/static/root/assets/cron-page-DqmNGNOy.js +3 -0
  45. package/dist/gateway/static/root/assets/dreaming-settings-6UZE1FSK.js +1 -0
  46. package/dist/gateway/static/root/assets/{extension-debug-page-Cjx6pZVz.js → extension-debug-page-BGhE7msg.js} +1 -1
  47. package/dist/gateway/static/root/assets/{extension-page-BSPNL90V.js → extension-page-CvpI45WG.js} +1 -1
  48. package/dist/gateway/static/root/assets/extension-settings-page-DAmR5FUe.js +1 -0
  49. package/dist/gateway/static/root/assets/{fetch-Bs7in_4F.js → fetch-NZmjSXLl.js} +1 -1
  50. package/dist/gateway/static/root/assets/format-cron-label-BsotZDO5.js +2 -0
  51. package/dist/gateway/static/root/assets/{format-interval-label-CftJ5uXu.js → format-interval-label-qhth3BMV.js} +1 -1
  52. package/dist/gateway/static/root/assets/{gateway-config-api-Clfck-hW.js → gateway-config-api-CaXBt-9R.js} +1 -1
  53. package/dist/gateway/static/root/assets/gateway-settings-DphpbLBc.js +1 -0
  54. package/dist/gateway/static/root/assets/{gateway-startup-retry-BkjVJc38.js → gateway-startup-retry-Be1omjh3.js} +1 -1
  55. package/dist/gateway/static/root/assets/{goal-detail-page-kqJue0sE.js → goal-detail-page-bv0VRDaf.js} +1 -1
  56. package/dist/gateway/static/root/assets/goals-page-1Ywnt4Cb.js +2 -0
  57. package/dist/gateway/static/root/assets/{goals-settings-CJnzNSDo.js → goals-settings-ceEBjnfc.js} +1 -1
  58. package/dist/gateway/static/root/assets/{heartbeat-config-api-Cp7CPuIn.js → heartbeat-config-api-BzO6G4fD.js} +1 -1
  59. package/dist/gateway/static/root/assets/{heartbeat-settings-ifSI1Wbh.js → heartbeat-settings-DCST9-du.js} +1 -1
  60. package/dist/gateway/static/root/assets/index-Cxm6xsps.js +122 -0
  61. package/dist/gateway/static/root/assets/index-b_R4tKqt.css +1 -0
  62. package/dist/gateway/static/root/assets/interval-presets-DJmshV8n.js +1 -0
  63. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings--MI1rYl7.js → keyboard-shortcuts-settings-9AUUlQ5Q.js} +1 -1
  64. package/dist/gateway/static/root/assets/{logs-page-BwrVNlyW.js → logs-page-B_wrxhee.js} +1 -1
  65. package/dist/gateway/static/root/assets/{markdown-split-B_oc9lJe.js → markdown-split-CYYELqAr.js} +1 -1
  66. package/dist/gateway/static/root/assets/{media-plugins-DLPvB5H3.js → media-plugins-BEcMR2M8.js} +1 -1
  67. package/dist/gateway/static/root/assets/messages-CkT-lcgP.js +3 -0
  68. package/dist/gateway/static/root/assets/models-hub-panel-D0JDSbNu.js +2 -0
  69. package/dist/gateway/static/root/assets/note-detail-page-DpFV-EO6.js +2 -0
  70. package/dist/gateway/static/root/assets/{note-image-lightbox-rSqAgOi9.js → note-image-lightbox-DNAoPcmm.js} +1 -1
  71. package/dist/gateway/static/root/assets/{notes-page-C9ACGEty.js → notes-page-CdkjTch8.js} +1 -1
  72. package/dist/gateway/static/root/assets/{preview-open-alternatives-Bw_N2oZi.js → preview-open-alternatives-BPLz0AIv.js} +1 -1
  73. package/dist/gateway/static/root/assets/{remote-access-hub-BhcWIKuM.js → remote-access-hub-DSYVAi96.js} +1 -1
  74. package/dist/gateway/static/root/assets/{save-bar-controls-CNP2jmw0.js → save-bar-controls-CrWwWRVK.js} +1 -1
  75. package/dist/gateway/static/root/assets/schedule-field-CF2sadvN.js +1 -0
  76. package/dist/gateway/static/root/assets/{schema-form-CDPzua9q.js → schema-form-Di5cKjYE.js} +1 -1
  77. package/dist/gateway/static/root/assets/{sessions-page-DzkpSDZr.js → sessions-page-CenkcVjF.js} +1 -1
  78. package/dist/gateway/static/root/assets/settings-advanced-gate-D9sva86V.js +1 -0
  79. package/dist/gateway/static/root/assets/{settings-collapsible-section-C9bff85B.js → settings-collapsible-section-Chh282jW.js} +1 -1
  80. package/dist/gateway/static/root/assets/settings-form-section-Dq-83cQd.js +1 -0
  81. package/dist/gateway/static/root/assets/{settings-page-DWK4Zo7s.js → settings-page-DL35U0x0.js} +1 -1
  82. package/dist/gateway/static/root/assets/setup-status-panel-Ctwbp9Er.js +1 -0
  83. package/dist/gateway/static/root/assets/{share-preview-page-DnutoY_S.js → share-preview-page-0FXYnSUA.js} +1 -1
  84. package/dist/gateway/static/root/assets/{shares-settings-6oRgJMpn.js → shares-settings-DIM3JNsr.js} +1 -1
  85. package/dist/gateway/static/root/assets/skill-reload-api-DAlNaNzL.js +1 -0
  86. package/dist/gateway/static/root/assets/skills-page-CLrHVzAt.js +2 -0
  87. package/dist/gateway/static/root/assets/{system-settings-panel-qP1JDtDd.js → system-settings-panel-W1pTcojB.js} +1 -1
  88. package/dist/gateway/static/root/assets/use-agent-defaults-form-BVRvkK7m.js +1 -0
  89. package/dist/gateway/static/root/assets/{use-channel-catalog-C4mg1hjD.js → use-channel-catalog-CgJibfMM.js} +1 -1
  90. package/dist/gateway/static/root/assets/{use-settings-tab-guard-F6C0mpJt.js → use-settings-tab-guard-Bw_qkRQE.js} +1 -1
  91. package/dist/gateway/static/root/assets/{voice-api-key-field-BnDDb6qO.js → voice-api-key-field-vYAO71Gn.js} +1 -1
  92. package/dist/gateway/static/root/assets/{voice-player-store-B2EwIhtY.js → voice-player-store-C7lziaAx.js} +1 -1
  93. package/dist/gateway/static/root/assets/{workflow-page.utils-CRB7WX9l.js → workflow-page.utils-sgHjOXOm.js} +1 -1
  94. package/dist/gateway/static/root/assets/{workflows-page-2Fptr0je.js → workflows-page-DYyOTmFx.js} +1 -1
  95. package/dist/gateway/static/root/favicon-16x16.png +0 -0
  96. package/dist/gateway/static/root/favicon-32x32.png +0 -0
  97. package/dist/gateway/static/root/favicon-icon.svg +1 -0
  98. package/dist/gateway/static/root/favicon.ico +0 -0
  99. package/dist/gateway/static/root/favicon.png +0 -0
  100. package/dist/gateway/static/root/favicon.svg +24 -15
  101. package/dist/gateway/static/root/index.html +11 -10
  102. package/dist/gateway/static/root/logo-dark.svg +23 -15
  103. package/dist/gateway/static/root/logo.svg +23 -16
  104. package/dist/package.js +1 -1
  105. package/dist/src/agent/agent-manager.d.ts +28 -2
  106. package/dist/src/agent/agent-manager.js +82 -11
  107. package/dist/src/agent/agent-manager.js.map +1 -1
  108. package/dist/src/agent/agent-scope.js +1 -1
  109. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  110. package/dist/src/agent/context/workspace-seed.js +2 -2
  111. package/dist/src/agent/context/workspace-state.js +1 -1
  112. package/dist/src/agent/context/workspace.js +1 -1
  113. package/dist/src/agent/goals/goal-locale.js +2 -2
  114. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  115. package/dist/src/agent/goals/post-turn.js +3 -3
  116. package/dist/src/agent/image/load-image-media.js +2 -2
  117. package/dist/src/agent/ipc/inbox.js +3 -3
  118. package/dist/src/agent/ipc/socket.js +1 -1
  119. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  120. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  121. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  122. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  123. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  124. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  125. package/dist/src/agent/memory/dreaming/events.js +1 -1
  126. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  127. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  128. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  129. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  130. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  131. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  132. package/dist/src/agent/memory/memory-flush.js +1 -1
  133. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  134. package/dist/src/agent/messaging/command-handler.d.ts +3 -0
  135. package/dist/src/agent/messaging/command-handler.js +5 -0
  136. package/dist/src/agent/messaging/command-handler.js.map +1 -1
  137. package/dist/src/agent/models/manager.js +1 -1
  138. package/dist/src/agent/prompt/memory/index.js +1 -1
  139. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  140. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  141. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  142. package/dist/src/agent/sandbox/path-policy.js +2 -2
  143. package/dist/src/agent/service/process-direct-streaming.js +9 -4
  144. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  145. package/dist/src/agent/service/reconcile-dreaming-cron.js +8 -5
  146. package/dist/src/agent/service/reconcile-dreaming-cron.js.map +1 -1
  147. package/dist/src/agent/service.d.ts +2 -1
  148. package/dist/src/agent/service.js +10 -5
  149. package/dist/src/agent/service.js.map +1 -1
  150. package/dist/src/agent/service.types.d.ts +4 -0
  151. package/dist/src/agent/session/session-config-service.d.ts +8 -0
  152. package/dist/src/agent/session/session-config-service.js +20 -0
  153. package/dist/src/agent/session/session-config-service.js.map +1 -1
  154. package/dist/src/agent/session/session-inspector.js +1 -1
  155. package/dist/src/agent/skills/config.js +2 -2
  156. package/dist/src/agent/skills/filesystem-watcher.d.ts +19 -0
  157. package/dist/src/agent/skills/filesystem-watcher.js +182 -0
  158. package/dist/src/agent/skills/filesystem-watcher.js.map +1 -0
  159. package/dist/src/agent/skills/hub-hash.js +2 -2
  160. package/dist/src/agent/skills/hub-lock.js +1 -1
  161. package/dist/src/agent/skills/hub-pull.js +30 -36
  162. package/dist/src/agent/skills/hub-pull.js.map +1 -1
  163. package/dist/src/agent/skills/index.js +82 -38
  164. package/dist/src/agent/skills/index.js.map +1 -1
  165. package/dist/src/agent/skills/installer.js +2 -2
  166. package/dist/src/agent/skills/managed-store.d.ts +19 -0
  167. package/dist/src/agent/skills/managed-store.js +97 -38
  168. package/dist/src/agent/skills/managed-store.js.map +1 -1
  169. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  170. package/dist/src/agent/skills/skill-manager.d.ts +16 -6
  171. package/dist/src/agent/skills/skill-manager.js +79 -24
  172. package/dist/src/agent/skills/skill-manager.js.map +1 -1
  173. package/dist/src/agent/skills/skill-view-path.js +1 -1
  174. package/dist/src/agent/skills/test-framework.js +1 -1
  175. package/dist/src/agent/skills/types.d.ts +11 -0
  176. package/dist/src/agent/skills/watcher.js +1 -1
  177. package/dist/src/agent/starter-agents.js +1 -1
  178. package/dist/src/agent/tools/cronjob-tool.d.ts +6 -3
  179. package/dist/src/agent/tools/cronjob-tool.js +58 -23
  180. package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
  181. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  182. package/dist/src/agent/tools/factory.js +1 -1
  183. package/dist/src/agent/tools/find.js +1 -1
  184. package/dist/src/agent/tools/grep.js +1 -1
  185. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  186. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  187. package/dist/src/agent/tools/workflow-tool.js +1 -1
  188. package/dist/src/agent/workflow/catalog.js +1 -1
  189. package/dist/src/agent/workspace-runtime/registry.d.ts +5 -0
  190. package/dist/src/agent/workspace-runtime/registry.js +7 -0
  191. package/dist/src/agent/workspace-runtime/registry.js.map +1 -1
  192. package/dist/src/ai-assist/text-assist.d.ts +42 -0
  193. package/dist/src/ai-assist/text-assist.js +252 -0
  194. package/dist/src/ai-assist/text-assist.js.map +1 -0
  195. package/dist/src/auth/credentials.js +2 -2
  196. package/dist/src/auth/profiles/store.js +2 -2
  197. package/dist/src/auth/sync-provider-auth.js +1 -1
  198. package/dist/src/browser/cache-dir-policy.js +1 -1
  199. package/dist/src/browser/cdp-local-launcher.js +2 -2
  200. package/dist/src/browser/providers/browser-ext-install.js +4 -4
  201. package/dist/src/browser/providers/cloakbrowser.js +5 -5
  202. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  203. package/dist/src/browser/stealth.js +1 -1
  204. package/dist/src/channels/outbound/persist-store.js +1 -1
  205. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  206. package/dist/src/channels/pairing/pairing-store.js +2 -2
  207. package/dist/src/channels/plugins/types.adapters.d.ts +2 -2
  208. package/dist/src/chat-commands/agent-edit.js +2 -2
  209. package/dist/src/chat-commands/builtins/config.js +3 -3
  210. package/dist/src/chat-commands/builtins/system.js +11 -4
  211. package/dist/src/chat-commands/builtins/system.js.map +1 -1
  212. package/dist/src/chat-commands/context.d.ts +3 -0
  213. package/dist/src/chat-commands/context.js +7 -0
  214. package/dist/src/chat-commands/context.js.map +1 -1
  215. package/dist/src/chat-commands/types.d.ts +2 -0
  216. package/dist/src/cli/commands/config.js +1 -1
  217. package/dist/src/cli/commands/cron.js +55 -16
  218. package/dist/src/cli/commands/cron.js.map +1 -1
  219. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  220. package/dist/src/cli/commands/doctor/checks/cron-health.js +2 -83
  221. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -1
  222. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  223. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  224. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  225. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  226. package/dist/src/cli/commands/extension-create.js +1 -1
  227. package/dist/src/cli/commands/extension-dev.js +2 -2
  228. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  229. package/dist/src/cli/commands/extension-pack.js +2 -2
  230. package/dist/src/cli/commands/extension.js +3 -3
  231. package/dist/src/cli/commands/gateway/logs.js +1 -1
  232. package/dist/src/cli/commands/image.js +1 -1
  233. package/dist/src/cli/commands/init.js +2 -2
  234. package/dist/src/cli/commands/models.js +1 -1
  235. package/dist/src/cli/commands/skills-test.js +1 -1
  236. package/dist/src/cli/templates.js +1 -1
  237. package/dist/src/cli/utils/gateway-client.js +1 -1
  238. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  239. package/dist/src/config/agent-profile.js +1 -1
  240. package/dist/src/config/agent-typed-models.js +1 -1
  241. package/dist/src/config/gateway-bind.js +1 -1
  242. package/dist/src/config/index.js +7 -7
  243. package/dist/src/config/loader.js +4 -4
  244. package/dist/src/config/models-json.js +2 -2
  245. package/dist/src/config/paths-state.js +1 -1
  246. package/dist/src/config/paths.js +1 -1
  247. package/dist/src/config/profile.js +1 -1
  248. package/dist/src/config/reload.js +1 -1
  249. package/dist/src/config/schema.d.ts +0 -2
  250. package/dist/src/config/schema.js +0 -3
  251. package/dist/src/config/schema.js.map +1 -1
  252. package/dist/src/config/web-patch.d.ts +0 -1
  253. package/dist/src/config/web-patch.js +0 -2
  254. package/dist/src/config/web-patch.js.map +1 -1
  255. package/dist/src/config/workspace-path.js +1 -1
  256. package/dist/src/cron/executor.js +102 -71
  257. package/dist/src/cron/executor.js.map +1 -1
  258. package/dist/src/cron/index.d.ts +1 -1
  259. package/dist/src/cron/index.js +3 -3
  260. package/dist/src/cron/run-log-store.d.ts +1 -0
  261. package/dist/src/cron/run-log-store.js +4 -2
  262. package/dist/src/cron/run-log-store.js.map +1 -1
  263. package/dist/src/cron/schedule.d.ts +10 -0
  264. package/dist/src/cron/schedule.js +85 -0
  265. package/dist/src/cron/schedule.js.map +1 -0
  266. package/dist/src/cron/service.d.ts +34 -77
  267. package/dist/src/cron/service.js +327 -264
  268. package/dist/src/cron/service.js.map +1 -1
  269. package/dist/src/cron/types.d.ts +80 -50
  270. package/dist/src/cron/validation.d.ts +358 -90
  271. package/dist/src/cron/validation.js +152 -132
  272. package/dist/src/cron/validation.js.map +1 -1
  273. package/dist/src/cron/workflow-run-completion.js +1 -1
  274. package/dist/src/daemon/constants.js +1 -1
  275. package/dist/src/daemon/install-plan.js +2 -2
  276. package/dist/src/daemon/launchd.js +2 -2
  277. package/dist/src/daemon/schtasks.js +2 -2
  278. package/dist/src/daemon/systemd.js +2 -2
  279. package/dist/src/extensions/bundle-mcp.js +1 -1
  280. package/dist/src/extensions/discover-extensions.js +2 -2
  281. package/dist/src/extensions/health.js +1 -1
  282. package/dist/src/extensions/install.js +2 -2
  283. package/dist/src/extensions/loader.js +2 -2
  284. package/dist/src/extensions/lockfile.js +3 -3
  285. package/dist/src/extensions/security.js +1 -1
  286. package/dist/src/extensions/update.js +2 -2
  287. package/dist/src/gateway/agents-admin.js +2 -2
  288. package/dist/src/gateway/chat-stream/mapper.d.ts +1 -0
  289. package/dist/src/gateway/chat-stream/mapper.js +6 -2
  290. package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
  291. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -0
  292. package/dist/src/gateway/file-path-classifier.js +2 -2
  293. package/dist/src/gateway/hono/lib/config-payload.d.ts +0 -1
  294. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  295. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  296. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  297. package/dist/src/gateway/hono/oauth-async.js +1 -1
  298. package/dist/src/gateway/hono/routes/agents.js +1 -1
  299. package/dist/src/gateway/hono/routes/ai-assist.d.ts +3 -0
  300. package/dist/src/gateway/hono/routes/ai-assist.js +66 -0
  301. package/dist/src/gateway/hono/routes/ai-assist.js.map +1 -0
  302. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  303. package/dist/src/gateway/hono/routes/commands-skills.js +7 -0
  304. package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
  305. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  306. package/dist/src/gateway/hono/routes/cron.js +24 -5
  307. package/dist/src/gateway/hono/routes/cron.js.map +1 -1
  308. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  309. package/dist/src/gateway/hono/routes/home.js +5 -3
  310. package/dist/src/gateway/hono/routes/home.js.map +1 -1
  311. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  312. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  313. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  314. package/dist/src/gateway/hono/routes/models.js +1 -1
  315. package/dist/src/gateway/hono/routes/shares.js +1 -1
  316. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  317. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  318. package/dist/src/gateway/lock.js +3 -3
  319. package/dist/src/gateway/ports.js +1 -1
  320. package/dist/src/gateway/service/agent-runner.js +2 -2
  321. package/dist/src/gateway/service/config-coordinator.js +1 -1
  322. package/dist/src/gateway/service/marketplace-service.d.ts +22 -10
  323. package/dist/src/gateway/service/marketplace-service.js +46 -5
  324. package/dist/src/gateway/service/marketplace-service.js.map +1 -1
  325. package/dist/src/gateway/service.js +11 -5
  326. package/dist/src/gateway/service.js.map +1 -1
  327. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  328. package/dist/src/goals/goal-notifications.js +1 -1
  329. package/dist/src/goals/goal-workflow-judge.js +3 -3
  330. package/dist/src/i18n/goals-bundle.js +1 -1
  331. package/dist/src/i18n/index.js +1 -1
  332. package/dist/src/i18n/share-tool-bundle.js +2 -2
  333. package/dist/src/infra/brew.js +1 -1
  334. package/dist/src/infra/package-json.js +1 -1
  335. package/dist/src/infra/package-update-steps.js +1 -1
  336. package/dist/src/infra/path-env.js +2 -2
  337. package/dist/src/infra/restart.js +1 -1
  338. package/dist/src/infra/stable-node-path.js +1 -1
  339. package/dist/src/infra/update-check.js +1 -1
  340. package/dist/src/infra/update-global.js +1 -1
  341. package/dist/src/infra/update-lock.js +2 -2
  342. package/dist/src/infra/update-restart.js +1 -1
  343. package/dist/src/infra/update-runner.js +1 -1
  344. package/dist/src/infra/update-startup.js +1 -1
  345. package/dist/src/infra/write-file-atomic.js +2 -2
  346. package/dist/src/media/store.js +1 -1
  347. package/dist/src/notes/agent-context.js +1 -1
  348. package/dist/src/notes/service.js +1 -1
  349. package/dist/src/notes/store.js +2 -2
  350. package/dist/src/project-trust/trust-store.js +2 -2
  351. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  352. package/dist/src/providers/index.js +1 -1
  353. package/dist/src/providers/model-registry.js +4 -4
  354. package/dist/src/session/init-session-turn.js +2 -2
  355. package/dist/src/session/resolve-session.js +3 -3
  356. package/dist/src/session/session-title.js +2 -2
  357. package/dist/src/session/store-reader.d.ts +5 -0
  358. package/dist/src/session/store-reader.js +1 -0
  359. package/dist/src/session/store.js +1 -1
  360. package/dist/src/share/share-auto.js +2 -2
  361. package/dist/src/share/share-store.js +3 -3
  362. package/dist/src/share/share-thumbnail.js +2 -2
  363. package/dist/src/share/share-zip.js +1 -1
  364. package/dist/src/share/site-share-store.js +3 -3
  365. package/dist/src/share/site-static-serve.js +1 -1
  366. package/dist/src/storage/sqlite/connection.js +1 -1
  367. package/dist/src/storage/sqlite/cron-job-repository.d.ts +6 -0
  368. package/dist/src/storage/sqlite/cron-job-repository.js +70 -0
  369. package/dist/src/storage/sqlite/cron-job-repository.js.map +1 -0
  370. package/dist/src/storage/sqlite/cron-run-repository.js +0 -1
  371. package/dist/src/storage/sqlite/cron-run-repository.js.map +1 -1
  372. package/dist/src/storage/sqlite/index.d.ts +1 -0
  373. package/dist/src/storage/sqlite/index.js +2 -1
  374. package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
  375. package/dist/src/storage/sqlite/migrations/009_cron_jobs.sql +24 -0
  376. package/dist/src/storage/sqlite/migrations/discover.js +1 -1
  377. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  378. package/dist/src/storage/sqlite/migrations/runner.js +4 -4
  379. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  380. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  381. package/dist/src/storage/sqlite/schema.js +2 -2
  382. package/dist/src/storage/sqlite/schema.sql +25 -0
  383. package/dist/src/tui/clipboard-image.js +3 -3
  384. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  385. package/dist/src/tui/theme-manager.js +1 -1
  386. package/dist/src/tui/tui-command-formatters.js +4 -4
  387. package/dist/src/tui/tui-commands.js +2 -2
  388. package/dist/src/tui/tui-keybindings-file.js +1 -1
  389. package/dist/src/tui/tui-scoped-models.js +2 -2
  390. package/dist/src/tui/tui-settings.js +1 -1
  391. package/dist/src/tui/tui-startup-resources.js +1 -1
  392. package/dist/src/tui/tui.js +6 -6
  393. package/dist/src/tunnel/frpc-binary.js +4 -4
  394. package/dist/src/tunnel/frpc-config.js +1 -1
  395. package/dist/src/tunnel/frpc-extract.js +1 -1
  396. package/dist/src/tunnel/tunnel-state.js +1 -1
  397. package/dist/src/utils/logger/audit.js +1 -1
  398. package/dist/src/utils/logger/log-store.js +1 -1
  399. package/dist/src/utils/logger/rotation.js +1 -1
  400. package/dist/src/utils/logger/streams.js +1 -1
  401. package/dist/src/voice/tts/audio.js +1 -1
  402. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  403. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  404. package/dist/src/workflows/engine/projector.js +23 -14
  405. package/dist/src/workflows/engine/projector.js.map +1 -1
  406. package/dist/src/workflows/engine/workflow-engine.d.ts +1 -0
  407. package/dist/src/workflows/engine/workflow-engine.js +36 -0
  408. package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
  409. package/dist/src/workflows/index.js +1 -1
  410. package/dist/src/workflows/service/workflow-run-service.js +2 -2
  411. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  412. package/dist/src/workflows/store/event-store.js +1 -1
  413. package/dist/src/workflows/store/run-store.js +1 -1
  414. package/package.json +2 -3
  415. package/dist/gateway/static/root/assets/agent-browser-settings-page-B-0zGjt8.js +0 -6
  416. package/dist/gateway/static/root/assets/agents-DwDnJlXT.js +0 -71
  417. package/dist/gateway/static/root/assets/connectors-settings-DDvHo9in.js +0 -2
  418. package/dist/gateway/static/root/assets/cron-api-Dj_UZKST.js +0 -1
  419. package/dist/gateway/static/root/assets/cron-page-Dv7GII9G.js +0 -1
  420. package/dist/gateway/static/root/assets/cron-schedule-picker-DH10KgD6.js +0 -1
  421. package/dist/gateway/static/root/assets/dreaming-settings-L2rgZDQl.js +0 -1
  422. package/dist/gateway/static/root/assets/extension-settings-page-m_UQYkVc.js +0 -1
  423. package/dist/gateway/static/root/assets/gateway-settings-CS177xni.js +0 -1
  424. package/dist/gateway/static/root/assets/goals-page-C0FujUB5.js +0 -2
  425. package/dist/gateway/static/root/assets/index-COkF54xv.js +0 -121
  426. package/dist/gateway/static/root/assets/index-DIaSNGEO.css +0 -1
  427. package/dist/gateway/static/root/assets/interval-presets-B29Ss_2y.js +0 -2
  428. package/dist/gateway/static/root/assets/messages-Csef1aW7.js +0 -3
  429. package/dist/gateway/static/root/assets/models-hub-panel-DHGiTIvf.js +0 -2
  430. package/dist/gateway/static/root/assets/note-detail-page-BM7zlDiT.js +0 -2
  431. package/dist/gateway/static/root/assets/schedule-field-BPAWui3P.js +0 -1
  432. package/dist/gateway/static/root/assets/schedule-summary-B-hdSRdR.js +0 -1
  433. package/dist/gateway/static/root/assets/settings-advanced-gate-BYS-rpzn.js +0 -1
  434. package/dist/gateway/static/root/assets/settings-form-section-BsrK7TBF.js +0 -1
  435. package/dist/gateway/static/root/assets/setup-status-panel-DJiksNu4.js +0 -1
  436. package/dist/gateway/static/root/assets/skill-reload-api-CU9i0nJV.js +0 -1
  437. package/dist/gateway/static/root/assets/skills-page-ERbdWENm.js +0 -2
  438. package/dist/gateway/static/root/assets/use-agent-defaults-form-D3FGVLZb.js +0 -1
  439. package/dist/gateway/static/root/favicon-16.png +0 -0
  440. package/dist/gateway/static/root/favicon-32.png +0 -0
  441. package/dist/src/cron/persistence.d.ts +0 -62
  442. package/dist/src/cron/persistence.js +0 -188
  443. package/dist/src/cron/persistence.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ import crypto from "node:crypto";
2
+ import { CronExpressionParser } from "cron-parser";
3
+ //#region src/cron/schedule.ts
4
+ const MAX_TIMER_DELAY_MS = 2147483647;
5
+ const DEFAULT_TOP_OF_HOUR_STAGGER_MS = 5 * 6e4;
6
+ function normalizeCronStaggerMs(value) {
7
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) return;
8
+ return Math.floor(value);
9
+ }
10
+ function isRecurringTopOfHourCronExpr(expr) {
11
+ const parts = expr.trim().split(/\s+/);
12
+ if (parts.length !== 5) return false;
13
+ return parts[0] === "0" && parts[1] !== "*" && parts[2] === "*" && parts[3] === "*" && parts[4] === "*";
14
+ }
15
+ function resolveDefaultCronStaggerMs(expr) {
16
+ return isRecurringTopOfHourCronExpr(expr) ? DEFAULT_TOP_OF_HOUR_STAGGER_MS : void 0;
17
+ }
18
+ function resolveCronStaggerMs(schedule) {
19
+ if (schedule.kind !== "cron") return 0;
20
+ const explicit = normalizeCronStaggerMs(schedule.staggerMs);
21
+ if (explicit !== void 0) return explicit;
22
+ return resolveDefaultCronStaggerMs(schedule.expr) ?? 0;
23
+ }
24
+ function stableOffsetMs(jobId, windowMs) {
25
+ if (windowMs <= 1) return 0;
26
+ return crypto.createHash("sha256").update(jobId).digest().readUInt32BE(0) % windowMs;
27
+ }
28
+ function parseAtMs(at) {
29
+ const ms = Date.parse(at);
30
+ if (!Number.isFinite(ms)) throw new Error(`Invalid at schedule timestamp: ${at}`);
31
+ return ms;
32
+ }
33
+ function parseCron(schedule, currentDate) {
34
+ return CronExpressionParser.parse(schedule.expr, {
35
+ currentDate,
36
+ ...schedule.tz ? { tz: schedule.tz } : {}
37
+ });
38
+ }
39
+ function computeNextRunAtMs(job, nowMs = Date.now()) {
40
+ if (!job.enabled) return void 0;
41
+ const schedule = job.schedule;
42
+ if (schedule.kind === "at") {
43
+ const atMs = parseAtMs(schedule.at);
44
+ return atMs >= nowMs ? atMs : void 0;
45
+ }
46
+ if (schedule.kind === "every") {
47
+ const everyMs = Math.max(1, Math.floor(schedule.everyMs));
48
+ const anchorMs = Math.max(0, Math.floor(schedule.anchorMs ?? nowMs));
49
+ if (anchorMs >= nowMs) return anchorMs;
50
+ const elapsed = nowMs - anchorMs;
51
+ return anchorMs + (Math.floor(elapsed / everyMs) + 1) * everyMs;
52
+ }
53
+ const staggerMs = resolveCronStaggerMs(schedule);
54
+ const offsetMs = stableOffsetMs(job.id, staggerMs);
55
+ return parseCron(schedule, new Date(Math.max(0, nowMs - offsetMs))).next().getTime() + offsetMs;
56
+ }
57
+ function computePreviousRunAtMs(job, nowMs = Date.now()) {
58
+ const schedule = job.schedule;
59
+ if (schedule.kind === "at") {
60
+ const atMs = parseAtMs(schedule.at);
61
+ return atMs <= nowMs ? atMs : void 0;
62
+ }
63
+ if (schedule.kind === "every") {
64
+ const everyMs = Math.max(1, Math.floor(schedule.everyMs));
65
+ const anchorMs = Math.max(0, Math.floor(schedule.anchorMs ?? nowMs));
66
+ if (anchorMs > nowMs) return void 0;
67
+ const elapsed = nowMs - anchorMs;
68
+ return anchorMs + Math.floor(elapsed / everyMs) * everyMs;
69
+ }
70
+ const staggerMs = resolveCronStaggerMs(schedule);
71
+ const offsetMs = stableOffsetMs(job.id, staggerMs);
72
+ return parseCron(schedule, new Date(Math.max(0, nowMs - offsetMs))).prev().getTime() + offsetMs;
73
+ }
74
+ function describeSchedule(schedule) {
75
+ if (schedule.kind === "at") return `at ${schedule.at}`;
76
+ if (schedule.kind === "every") return `every ${schedule.everyMs}ms`;
77
+ return `cron ${schedule.expr}${schedule.tz ? ` (${schedule.tz})` : ""}`;
78
+ }
79
+ function timerDelayUntil(targetMs, nowMs = Date.now()) {
80
+ return Math.max(0, Math.min(MAX_TIMER_DELAY_MS, targetMs - nowMs));
81
+ }
82
+ //#endregion
83
+ export { DEFAULT_TOP_OF_HOUR_STAGGER_MS, computeNextRunAtMs, computePreviousRunAtMs, describeSchedule, isRecurringTopOfHourCronExpr, normalizeCronStaggerMs, resolveCronStaggerMs, resolveDefaultCronStaggerMs, timerDelayUntil };
84
+
85
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","names":[],"sources":["../../../src/cron/schedule.ts"],"sourcesContent":["import crypto from 'node:crypto';\n\nimport { CronExpressionParser } from 'cron-parser';\n\nimport type { CronSchedule, JobData } from './types.js';\n\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\nexport const DEFAULT_TOP_OF_HOUR_STAGGER_MS = 5 * 60_000;\n\nexport function normalizeCronStaggerMs(value: unknown): number | undefined {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nexport function isRecurringTopOfHourCronExpr(expr: string): boolean {\n const parts = expr.trim().split(/\\s+/);\n if (parts.length !== 5) return false;\n return parts[0] === '0' && parts[1] !== '*' && parts[2] === '*' && parts[3] === '*' && parts[4] === '*';\n}\n\nexport function resolveDefaultCronStaggerMs(expr: string): number | undefined {\n return isRecurringTopOfHourCronExpr(expr) ? DEFAULT_TOP_OF_HOUR_STAGGER_MS : undefined;\n}\n\nexport function resolveCronStaggerMs(schedule: CronSchedule): number {\n if (schedule.kind !== 'cron') return 0;\n const explicit = normalizeCronStaggerMs(schedule.staggerMs);\n if (explicit !== undefined) return explicit;\n return resolveDefaultCronStaggerMs(schedule.expr) ?? 0;\n}\n\nfunction stableOffsetMs(jobId: string, windowMs: number): number {\n if (windowMs <= 1) return 0;\n const digest = crypto.createHash('sha256').update(jobId).digest();\n return digest.readUInt32BE(0) % windowMs;\n}\n\nfunction parseAtMs(at: string): number {\n const ms = Date.parse(at);\n if (!Number.isFinite(ms)) {\n throw new Error(`Invalid at schedule timestamp: ${at}`);\n }\n return ms;\n}\n\nfunction parseCron(schedule: Extract<CronSchedule, { kind: 'cron' }>, currentDate: Date) {\n return CronExpressionParser.parse(schedule.expr, {\n currentDate,\n ...(schedule.tz ? { tz: schedule.tz } : {}),\n });\n}\n\nexport function computeNextRunAtMs(job: Pick<JobData, 'id' | 'enabled' | 'schedule'>, nowMs = Date.now()): number | undefined {\n if (!job.enabled) return undefined;\n const schedule = job.schedule;\n if (schedule.kind === 'at') {\n const atMs = parseAtMs(schedule.at);\n return atMs >= nowMs ? atMs : undefined;\n }\n if (schedule.kind === 'every') {\n const everyMs = Math.max(1, Math.floor(schedule.everyMs));\n const anchorMs = Math.max(0, Math.floor(schedule.anchorMs ?? nowMs));\n if (anchorMs >= nowMs) return anchorMs;\n const elapsed = nowMs - anchorMs;\n return anchorMs + (Math.floor(elapsed / everyMs) + 1) * everyMs;\n }\n\n const staggerMs = resolveCronStaggerMs(schedule);\n const offsetMs = stableOffsetMs(job.id, staggerMs);\n const interval = parseCron(schedule, new Date(Math.max(0, nowMs - offsetMs)));\n return interval.next().getTime() + offsetMs;\n}\n\nexport function computePreviousRunAtMs(job: Pick<JobData, 'id' | 'schedule'>, nowMs = Date.now()): number | undefined {\n const schedule = job.schedule;\n if (schedule.kind === 'at') {\n const atMs = parseAtMs(schedule.at);\n return atMs <= nowMs ? atMs : undefined;\n }\n if (schedule.kind === 'every') {\n const everyMs = Math.max(1, Math.floor(schedule.everyMs));\n const anchorMs = Math.max(0, Math.floor(schedule.anchorMs ?? nowMs));\n if (anchorMs > nowMs) return undefined;\n const elapsed = nowMs - anchorMs;\n return anchorMs + Math.floor(elapsed / everyMs) * everyMs;\n }\n\n const staggerMs = resolveCronStaggerMs(schedule);\n const offsetMs = stableOffsetMs(job.id, staggerMs);\n const interval = parseCron(schedule, new Date(Math.max(0, nowMs - offsetMs)));\n return interval.prev().getTime() + offsetMs;\n}\n\nexport function describeSchedule(schedule: CronSchedule): string {\n if (schedule.kind === 'at') return `at ${schedule.at}`;\n if (schedule.kind === 'every') return `every ${schedule.everyMs}ms`;\n return `cron ${schedule.expr}${schedule.tz ? ` (${schedule.tz})` : ''}`;\n}\n\nexport function timerDelayUntil(targetMs: number, nowMs = Date.now()): number {\n return Math.max(0, Math.min(MAX_TIMER_DELAY_MS, targetMs - nowMs));\n}\n"],"mappings":"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"}
@@ -1,101 +1,58 @@
1
- import { Config } from '../config/index.js';
2
- import type { JobData, JobExecution, JobExecutorDeps, CronMetrics, CronHealth, AddJobOptions, JobWithNextRun, CronRunHistoryRow } from './types.js';
1
+ import type { Config } from '../config/schema.js';
2
+ import type { AddJobOptions, CronHealth, CronJobPatch, CronMetrics, CronRunHistoryRow, JobData, JobExecution, JobExecutorDeps } from './types.js';
3
3
  export interface CronServiceConfig {
4
- filePath?: string;
5
- agentService?: any;
6
- messageBus?: any;
7
- /** Override SQLite database path (tests). */
8
4
  dbPath?: string;
5
+ agentService?: unknown;
6
+ messageBus?: unknown;
7
+ maxConcurrentJobs?: number;
8
+ missedJobStaggerMs?: number;
9
+ }
10
+ export declare class CronJobAlreadyRunningError extends Error {
11
+ readonly jobId: string;
12
+ readonly runningSessionKey?: string;
13
+ constructor(jobId: string, runningSessionKey?: string);
14
+ }
15
+ export interface CronJobRunNowResult {
16
+ job: JobData;
17
+ history: JobExecution[];
9
18
  }
10
19
  export declare class CronService {
11
- private persistence;
12
20
  private executor;
13
21
  private runLogStore;
14
- private tasks;
15
22
  private initialized;
16
- private agentService;
17
- private messageBus;
23
+ private stopped;
24
+ private running;
25
+ private timer;
26
+ private deps;
27
+ private maxConcurrentJobs;
28
+ private missedJobStaggerMs;
18
29
  constructor(config?: CronServiceConfig);
19
- /**
20
- * Set dependencies for the executor
21
- */
22
30
  setDeps(deps: JobExecutorDeps): void;
23
- /**
24
- * Initialize the service and load all jobs
25
- */
26
31
  initialize(): Promise<void>;
27
- /**
28
- * Add a new job
29
- */
30
- addJob(schedule: string, options: AddJobOptions): Promise<{
32
+ addJob(scheduleOrInput: AddJobOptions['schedule'], options?: Omit<AddJobOptions, 'schedule'>): Promise<{
31
33
  id: string;
32
- schedule: string;
34
+ schedule: AddJobOptions['schedule'];
33
35
  }>;
34
- /**
35
- * List all jobs with next run time
36
- */
37
- listJobs(): Promise<JobWithNextRun[]>;
38
- /**
39
- * Get a single job
40
- */
36
+ listJobs(): Promise<JobData[]>;
41
37
  getJob(id: string): Promise<JobData | null>;
42
- /**
43
- * Update a job
44
- */
45
- updateJob(id: string, updates: Partial<Omit<JobData, 'id' | 'created_at' | 'updated_at'>>): Promise<boolean>;
46
- /**
47
- * Remove a job
48
- */
38
+ updateJob(id: string, updates: CronJobPatch): Promise<boolean>;
49
39
  removeJob(id: string): Promise<boolean>;
50
- /**
51
- * Toggle job enabled state
52
- */
53
40
  toggleJob(id: string, enabled: boolean): Promise<boolean>;
54
- /**
55
- * Execution history for one job: merged in-memory (incl. running) + persisted SQLite rows.
56
- */
57
41
  getJobHistory(jobId: string, limit?: number): Promise<JobExecution[]>;
58
- /**
59
- * Latest runs across all jobs (persisted rows + optional job name).
60
- */
61
42
  getAllRunsHistory(limit?: number): Promise<CronRunHistoryRow[]>;
62
- /**
63
- * Get service metrics
64
- */
65
43
  getMetrics(): Promise<CronMetrics>;
66
- /**
67
- * Update config (hot reload)
68
- */
69
- updateConfig(_config: Config): void;
70
- /**
71
- * Health check
72
- */
44
+ updateConfig(config: Config): void;
73
45
  healthCheck(): Promise<CronHealth>;
74
- /**
75
- * Run a job immediately (manual trigger)
76
- */
77
- runJobNow(id: string): Promise<void>;
78
- /**
79
- * Stop all jobs and cleanup
80
- */
46
+ runJobNow(id: string): Promise<CronJobRunNowResult>;
81
47
  stop(options?: {
82
48
  waitForRunning?: boolean;
83
49
  timeout?: number;
84
50
  }): Promise<void>;
85
- /**
86
- * Load and schedule all enabled jobs
87
- */
88
- private loadAllJobs;
89
- /**
90
- * Schedule a job with node-cron
91
- */
92
- private scheduleJob;
93
- /**
94
- * Execute a job with retry logic
95
- */
96
- private executeJob;
97
- /**
98
- * Cancel a scheduled task
99
- */
100
- private cancelTask;
51
+ private recomputeAllNextRuns;
52
+ private armTimer;
53
+ private onTimer;
54
+ private startSingleJob;
55
+ private runSingleJob;
56
+ private runReservedJob;
57
+ private maybeEmitFailureAlert;
101
58
  }