@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.
- package/dist/browser-ext/icons/icon-128.png +0 -0
- package/dist/browser-ext/icons/icon-16.png +0 -0
- package/dist/browser-ext/icons/icon-32.png +0 -0
- package/dist/browser-ext/icons/icon-48.png +0 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
- package/dist/extensions/telegram/src/inbound-processor.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/update-offset-store.js +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/delivery-to.d.ts +3 -3
- package/dist/extensions/weixin/src/delivery-to.js.map +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/apple-touch-icon.png +0 -0
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-zlx9l5Yp.js → agent-avatar-dicebear-CBlklyNr.js} +1 -1
- package/dist/gateway/static/root/assets/agent-browser-settings-page-rGbKc2Hh.js +6 -0
- package/dist/gateway/static/root/assets/{agent-defaults-tabbed-page-Bz7JWjRM.js → agent-defaults-tabbed-page-CtwVbjOA.js} +1 -1
- package/dist/gateway/static/root/assets/agents-CCBmGcwc.js +71 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DaQwdeCq.js → app-management-settings-panel-28E_WfMe.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-D2zv6r3P.js → appearance-settings-Do1z0XgJ.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-BIppe_jj.js → apps-page-xwCsJS15.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-DEmu8eH7.js → archive-plugin-BAFlsov_.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-B98lJoN5.js → attachment-load-V3qGPC3x.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-CL9QKmyo.js → binary-plugins-DT8NvA6W.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BOAhMAhT.js → block-editor-CdLMEcHd.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-Br8iRnXp.js → channels-settings-C044DcYk.js} +1 -1
- package/dist/gateway/static/root/assets/{config-api-0o1WYdz2.js → config-api-Bf5mjpu7.js} +1 -1
- package/dist/gateway/static/root/assets/config-reload-event-Bjh2zoKp.js +1 -0
- package/dist/gateway/static/root/assets/connectors-settings-8VEWUOTj.js +2 -0
- package/dist/gateway/static/root/assets/cron-api--pAB_rps.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-DqmNGNOy.js +3 -0
- package/dist/gateway/static/root/assets/dreaming-settings-6UZE1FSK.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-Cjx6pZVz.js → extension-debug-page-BGhE7msg.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BSPNL90V.js → extension-page-CvpI45WG.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-DAmR5FUe.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-Bs7in_4F.js → fetch-NZmjSXLl.js} +1 -1
- package/dist/gateway/static/root/assets/format-cron-label-BsotZDO5.js +2 -0
- package/dist/gateway/static/root/assets/{format-interval-label-CftJ5uXu.js → format-interval-label-qhth3BMV.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-Clfck-hW.js → gateway-config-api-CaXBt-9R.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-DphpbLBc.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BkjVJc38.js → gateway-startup-retry-Be1omjh3.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-detail-page-kqJue0sE.js → goal-detail-page-bv0VRDaf.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-1Ywnt4Cb.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-CJnzNSDo.js → goals-settings-ceEBjnfc.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-Cp7CPuIn.js → heartbeat-config-api-BzO6G4fD.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-ifSI1Wbh.js → heartbeat-settings-DCST9-du.js} +1 -1
- package/dist/gateway/static/root/assets/index-Cxm6xsps.js +122 -0
- package/dist/gateway/static/root/assets/index-b_R4tKqt.css +1 -0
- package/dist/gateway/static/root/assets/interval-presets-DJmshV8n.js +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings--MI1rYl7.js → keyboard-shortcuts-settings-9AUUlQ5Q.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-BwrVNlyW.js → logs-page-B_wrxhee.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-B_oc9lJe.js → markdown-split-CYYELqAr.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DLPvB5H3.js → media-plugins-BEcMR2M8.js} +1 -1
- package/dist/gateway/static/root/assets/messages-CkT-lcgP.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-D0JDSbNu.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-DpFV-EO6.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-rSqAgOi9.js → note-image-lightbox-DNAoPcmm.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-C9ACGEty.js → notes-page-CdkjTch8.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-Bw_N2oZi.js → preview-open-alternatives-BPLz0AIv.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BhcWIKuM.js → remote-access-hub-DSYVAi96.js} +1 -1
- package/dist/gateway/static/root/assets/{save-bar-controls-CNP2jmw0.js → save-bar-controls-CrWwWRVK.js} +1 -1
- package/dist/gateway/static/root/assets/schedule-field-CF2sadvN.js +1 -0
- package/dist/gateway/static/root/assets/{schema-form-CDPzua9q.js → schema-form-Di5cKjYE.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-DzkpSDZr.js → sessions-page-CenkcVjF.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-D9sva86V.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-C9bff85B.js → settings-collapsible-section-Chh282jW.js} +1 -1
- package/dist/gateway/static/root/assets/settings-form-section-Dq-83cQd.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-DWK4Zo7s.js → settings-page-DL35U0x0.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Ctwbp9Er.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DnutoY_S.js → share-preview-page-0FXYnSUA.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-6oRgJMpn.js → shares-settings-DIM3JNsr.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DAlNaNzL.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-CLrHVzAt.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-qP1JDtDd.js → system-settings-panel-W1pTcojB.js} +1 -1
- package/dist/gateway/static/root/assets/use-agent-defaults-form-BVRvkK7m.js +1 -0
- package/dist/gateway/static/root/assets/{use-channel-catalog-C4mg1hjD.js → use-channel-catalog-CgJibfMM.js} +1 -1
- package/dist/gateway/static/root/assets/{use-settings-tab-guard-F6C0mpJt.js → use-settings-tab-guard-Bw_qkRQE.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BnDDb6qO.js → voice-api-key-field-vYAO71Gn.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-player-store-B2EwIhtY.js → voice-player-store-C7lziaAx.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-page.utils-CRB7WX9l.js → workflow-page.utils-sgHjOXOm.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-2Fptr0je.js → workflows-page-DYyOTmFx.js} +1 -1
- package/dist/gateway/static/root/favicon-16x16.png +0 -0
- package/dist/gateway/static/root/favicon-32x32.png +0 -0
- package/dist/gateway/static/root/favicon-icon.svg +1 -0
- package/dist/gateway/static/root/favicon.ico +0 -0
- package/dist/gateway/static/root/favicon.png +0 -0
- package/dist/gateway/static/root/favicon.svg +24 -15
- package/dist/gateway/static/root/index.html +11 -10
- package/dist/gateway/static/root/logo-dark.svg +23 -15
- package/dist/gateway/static/root/logo.svg +23 -16
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +28 -2
- package/dist/src/agent/agent-manager.js +82 -11
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/agent-scope.js +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
- package/dist/src/agent/context/workspace-seed.js +2 -2
- package/dist/src/agent/context/workspace-state.js +1 -1
- package/dist/src/agent/context/workspace.js +1 -1
- package/dist/src/agent/goals/goal-locale.js +2 -2
- package/dist/src/agent/goals/persistent-goal-service.js +1 -1
- package/dist/src/agent/goals/post-turn.js +3 -3
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/ipc/inbox.js +3 -3
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/memory-flush.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/messaging/command-handler.d.ts +3 -0
- package/dist/src/agent/messaging/command-handler.js +5 -0
- package/dist/src/agent/messaging/command-handler.js.map +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/prompt/memory/index.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
- package/dist/src/agent/reply/post-compaction-context.js +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/process-direct-streaming.js +9 -4
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/reconcile-dreaming-cron.js +8 -5
- package/dist/src/agent/service/reconcile-dreaming-cron.js.map +1 -1
- package/dist/src/agent/service.d.ts +2 -1
- package/dist/src/agent/service.js +10 -5
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +4 -0
- package/dist/src/agent/session/session-config-service.d.ts +8 -0
- package/dist/src/agent/session/session-config-service.js +20 -0
- package/dist/src/agent/session/session-config-service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/config.js +2 -2
- package/dist/src/agent/skills/filesystem-watcher.d.ts +19 -0
- package/dist/src/agent/skills/filesystem-watcher.js +182 -0
- package/dist/src/agent/skills/filesystem-watcher.js.map +1 -0
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +30 -36
- package/dist/src/agent/skills/hub-pull.js.map +1 -1
- package/dist/src/agent/skills/index.js +82 -38
- package/dist/src/agent/skills/index.js.map +1 -1
- package/dist/src/agent/skills/installer.js +2 -2
- package/dist/src/agent/skills/managed-store.d.ts +19 -0
- package/dist/src/agent/skills/managed-store.js +97 -38
- package/dist/src/agent/skills/managed-store.js.map +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.d.ts +16 -6
- package/dist/src/agent/skills/skill-manager.js +79 -24
- package/dist/src/agent/skills/skill-manager.js.map +1 -1
- package/dist/src/agent/skills/skill-view-path.js +1 -1
- package/dist/src/agent/skills/test-framework.js +1 -1
- package/dist/src/agent/skills/types.d.ts +11 -0
- package/dist/src/agent/skills/watcher.js +1 -1
- package/dist/src/agent/starter-agents.js +1 -1
- package/dist/src/agent/tools/cronjob-tool.d.ts +6 -3
- package/dist/src/agent/tools/cronjob-tool.js +58 -23
- package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.js +1 -1
- package/dist/src/agent/tools/find.js +1 -1
- package/dist/src/agent/tools/grep.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/agent/workspace-runtime/registry.d.ts +5 -0
- package/dist/src/agent/workspace-runtime/registry.js +7 -0
- package/dist/src/agent/workspace-runtime/registry.js.map +1 -1
- package/dist/src/ai-assist/text-assist.d.ts +42 -0
- package/dist/src/ai-assist/text-assist.js +252 -0
- package/dist/src/ai-assist/text-assist.js.map +1 -0
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +2 -2
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +4 -4
- package/dist/src/browser/providers/cloakbrowser.js +5 -5
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/channels/plugins/types.adapters.d.ts +2 -2
- package/dist/src/chat-commands/agent-edit.js +2 -2
- package/dist/src/chat-commands/builtins/config.js +3 -3
- package/dist/src/chat-commands/builtins/system.js +11 -4
- package/dist/src/chat-commands/builtins/system.js.map +1 -1
- package/dist/src/chat-commands/context.d.ts +3 -0
- package/dist/src/chat-commands/context.js +7 -0
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/chat-commands/types.d.ts +2 -0
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/cron.js +55 -16
- package/dist/src/cli/commands/cron.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/cron-health.js +2 -83
- package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
- package/dist/src/cli/commands/extension-create.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -2
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension-pack.js +2 -2
- package/dist/src/cli/commands/extension.js +3 -3
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/image.js +1 -1
- package/dist/src/cli/commands/init.js +2 -2
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/skills-test.js +1 -1
- package/dist/src/cli/templates.js +1 -1
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +2 -2
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/agent-typed-models.js +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +7 -7
- package/dist/src/config/loader.js +4 -4
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.js +1 -1
- package/dist/src/config/paths.js +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/reload.js +1 -1
- package/dist/src/config/schema.d.ts +0 -2
- package/dist/src/config/schema.js +0 -3
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/web-patch.d.ts +0 -1
- package/dist/src/config/web-patch.js +0 -2
- package/dist/src/config/web-patch.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/cron/executor.js +102 -71
- package/dist/src/cron/executor.js.map +1 -1
- package/dist/src/cron/index.d.ts +1 -1
- package/dist/src/cron/index.js +3 -3
- package/dist/src/cron/run-log-store.d.ts +1 -0
- package/dist/src/cron/run-log-store.js +4 -2
- package/dist/src/cron/run-log-store.js.map +1 -1
- package/dist/src/cron/schedule.d.ts +10 -0
- package/dist/src/cron/schedule.js +85 -0
- package/dist/src/cron/schedule.js.map +1 -0
- package/dist/src/cron/service.d.ts +34 -77
- package/dist/src/cron/service.js +327 -264
- package/dist/src/cron/service.js.map +1 -1
- package/dist/src/cron/types.d.ts +80 -50
- package/dist/src/cron/validation.d.ts +358 -90
- package/dist/src/cron/validation.js +152 -132
- package/dist/src/cron/validation.js.map +1 -1
- package/dist/src/cron/workflow-run-completion.js +1 -1
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +2 -2
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/install.js +2 -2
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/lockfile.js +3 -3
- package/dist/src/extensions/security.js +1 -1
- package/dist/src/extensions/update.js +2 -2
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/chat-stream/mapper.d.ts +1 -0
- package/dist/src/gateway/chat-stream/mapper.js +6 -2
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
- package/dist/src/gateway/chat-stream/protocol.d.ts +2 -0
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +0 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/oauth-async.js +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/ai-assist.d.ts +3 -0
- package/dist/src/gateway/hono/routes/ai-assist.js +66 -0
- package/dist/src/gateway/hono/routes/ai-assist.js.map +1 -0
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +7 -0
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/cron.js +24 -5
- package/dist/src/gateway/hono/routes/cron.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +1 -1
- package/dist/src/gateway/hono/routes/home.js +5 -3
- package/dist/src/gateway/hono/routes/home.js.map +1 -1
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +2 -2
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +2 -2
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +22 -10
- package/dist/src/gateway/service/marketplace-service.js +46 -5
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service.js +11 -5
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/goals/goal-notifications.js +1 -1
- package/dist/src/goals/goal-workflow-judge.js +3 -3
- package/dist/src/i18n/goals-bundle.js +1 -1
- package/dist/src/i18n/index.js +1 -1
- package/dist/src/i18n/share-tool-bundle.js +2 -2
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +1 -1
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +2 -2
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/media/store.js +1 -1
- package/dist/src/notes/agent-context.js +1 -1
- package/dist/src/notes/service.js +1 -1
- package/dist/src/notes/store.js +2 -2
- package/dist/src/project-trust/trust-store.js +2 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.js +1 -1
- package/dist/src/providers/model-registry.js +4 -4
- package/dist/src/session/init-session-turn.js +2 -2
- package/dist/src/session/resolve-session.js +3 -3
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store-reader.d.ts +5 -0
- package/dist/src/session/store-reader.js +1 -0
- package/dist/src/session/store.js +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/storage/sqlite/connection.js +1 -1
- package/dist/src/storage/sqlite/cron-job-repository.d.ts +6 -0
- package/dist/src/storage/sqlite/cron-job-repository.js +70 -0
- package/dist/src/storage/sqlite/cron-job-repository.js.map +1 -0
- package/dist/src/storage/sqlite/cron-run-repository.js +0 -1
- package/dist/src/storage/sqlite/cron-run-repository.js.map +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
- package/dist/src/storage/sqlite/migrations/009_cron_jobs.sql +24 -0
- package/dist/src/storage/sqlite/migrations/discover.js +1 -1
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +4 -4
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +2 -2
- package/dist/src/storage/sqlite/schema.sql +25 -0
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/extension-host/load-extensions.js +1 -1
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-command-formatters.js +4 -4
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +6 -6
- package/dist/src/tunnel/frpc-binary.js +4 -4
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/utils/logger/streams.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/engine/projector.js +23 -14
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +1 -0
- package/dist/src/workflows/engine/workflow-engine.js +36 -0
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +2 -3
- package/dist/gateway/static/root/assets/agent-browser-settings-page-B-0zGjt8.js +0 -6
- package/dist/gateway/static/root/assets/agents-DwDnJlXT.js +0 -71
- package/dist/gateway/static/root/assets/connectors-settings-DDvHo9in.js +0 -2
- package/dist/gateway/static/root/assets/cron-api-Dj_UZKST.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-Dv7GII9G.js +0 -1
- package/dist/gateway/static/root/assets/cron-schedule-picker-DH10KgD6.js +0 -1
- package/dist/gateway/static/root/assets/dreaming-settings-L2rgZDQl.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-m_UQYkVc.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-CS177xni.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-C0FujUB5.js +0 -2
- package/dist/gateway/static/root/assets/index-COkF54xv.js +0 -121
- package/dist/gateway/static/root/assets/index-DIaSNGEO.css +0 -1
- package/dist/gateway/static/root/assets/interval-presets-B29Ss_2y.js +0 -2
- package/dist/gateway/static/root/assets/messages-Csef1aW7.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-DHGiTIvf.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-BM7zlDiT.js +0 -2
- package/dist/gateway/static/root/assets/schedule-field-BPAWui3P.js +0 -1
- package/dist/gateway/static/root/assets/schedule-summary-B-hdSRdR.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BYS-rpzn.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-BsrK7TBF.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DJiksNu4.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CU9i0nJV.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-ERbdWENm.js +0 -2
- package/dist/gateway/static/root/assets/use-agent-defaults-form-D3FGVLZb.js +0 -1
- package/dist/gateway/static/root/favicon-16.png +0 -0
- package/dist/gateway/static/root/favicon-32.png +0 -0
- package/dist/src/cron/persistence.d.ts +0 -62
- package/dist/src/cron/persistence.js +0 -188
- 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/
|
|
2
|
-
import type {
|
|
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
|
|
17
|
-
private
|
|
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:
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
private
|
|
89
|
-
|
|
90
|
-
|
|
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
|
}
|