@clinebot/core 0.0.35 → 0.0.37
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/README.md +1 -2
- package/dist/ClineCore.d.ts +362 -39
- package/dist/ClineCore.d.ts.map +1 -1
- package/dist/account/cline-account-service.d.ts.map +1 -1
- package/dist/account/index.d.ts +1 -1
- package/dist/account/index.d.ts.map +1 -1
- package/dist/account/rpc.d.ts +6 -6
- package/dist/account/rpc.d.ts.map +1 -1
- package/dist/cron/cron-event-ingress.d.ts +38 -0
- package/dist/cron/cron-event-ingress.d.ts.map +1 -0
- package/dist/cron/cron-materializer.d.ts +36 -0
- package/dist/cron/cron-materializer.d.ts.map +1 -0
- package/dist/cron/cron-reconciler.d.ts +62 -0
- package/dist/cron/cron-reconciler.d.ts.map +1 -0
- package/dist/cron/cron-report-writer.d.ts +41 -0
- package/dist/cron/cron-report-writer.d.ts.map +1 -0
- package/dist/cron/cron-runner.d.ts +43 -0
- package/dist/cron/cron-runner.d.ts.map +1 -0
- package/dist/cron/cron-schema.d.ts +3 -0
- package/dist/cron/cron-schema.d.ts.map +1 -0
- package/dist/cron/cron-service.d.ts +57 -0
- package/dist/cron/cron-service.d.ts.map +1 -0
- package/dist/cron/cron-spec-parser.d.ts +27 -0
- package/dist/cron/cron-spec-parser.d.ts.map +1 -0
- package/dist/cron/cron-watcher.d.ts +23 -0
- package/dist/cron/cron-watcher.d.ts.map +1 -0
- package/dist/cron/resource-limiter.d.ts +9 -0
- package/dist/cron/resource-limiter.d.ts.map +1 -0
- package/dist/cron/schedule-command-service.d.ts +10 -0
- package/dist/cron/schedule-command-service.d.ts.map +1 -0
- package/dist/cron/schedule-service.d.ts +100 -0
- package/dist/cron/schedule-service.d.ts.map +1 -0
- package/dist/cron/scheduler.d.ts +68 -0
- package/dist/cron/scheduler.d.ts.map +1 -0
- package/dist/cron/sqlite-cron-store.d.ts +230 -0
- package/dist/cron/sqlite-cron-store.d.ts.map +1 -0
- package/dist/cron/sqlite-schedule-store.d.ts +52 -0
- package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
- package/dist/extensions/config/agent-config-loader.d.ts +4 -3
- package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
- package/dist/extensions/config/runtime-commands.d.ts +1 -0
- package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
- package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
- package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
- package/dist/extensions/context/agentic-compaction.d.ts +2 -2
- package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
- package/dist/extensions/context/compaction-shared.d.ts +5 -4
- package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
- package/dist/extensions/context/compaction.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-config-loader.d.ts +15 -2
- package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-loader.d.ts +13 -7
- package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-sandbox.d.ts +21 -2
- package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
- package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
- package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
- package/dist/extensions/plugin-sandbox-bootstrap.js +237 -276
- package/dist/extensions/tools/constants.d.ts +1 -0
- package/dist/extensions/tools/constants.d.ts.map +1 -1
- package/dist/extensions/tools/definitions.d.ts +3 -4
- package/dist/extensions/tools/definitions.d.ts.map +1 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
- package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
- package/dist/extensions/tools/executors/editor.d.ts.map +1 -1
- package/dist/extensions/tools/executors/search.d.ts +1 -1
- package/dist/extensions/tools/executors/search.d.ts.map +1 -1
- package/dist/extensions/tools/helpers.d.ts +1 -0
- package/dist/extensions/tools/helpers.d.ts.map +1 -1
- package/dist/extensions/tools/index.d.ts +3 -2
- package/dist/extensions/tools/index.d.ts.map +1 -1
- package/dist/extensions/tools/presets.d.ts +27 -44
- package/dist/extensions/tools/presets.d.ts.map +1 -1
- package/dist/extensions/tools/runtime.d.ts +25 -0
- package/dist/extensions/tools/runtime.d.ts.map +1 -0
- package/dist/extensions/tools/schemas.d.ts +25 -3
- package/dist/extensions/tools/schemas.d.ts.map +1 -1
- package/dist/extensions/tools/team/delegated-agent.d.ts +2 -2
- package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -1
- package/dist/extensions/tools/team/multi-agent.d.ts +7 -3
- package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -1
- package/dist/extensions/tools/team/team-tools.d.ts +1 -0
- package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
- package/dist/extensions/tools/types.d.ts +0 -5
- package/dist/extensions/tools/types.d.ts.map +1 -1
- package/dist/hooks/hook-bridge.d.ts +118 -0
- package/dist/hooks/hook-bridge.d.ts.map +1 -0
- package/dist/hooks/hook-file-hooks.d.ts +6 -2
- package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
- package/dist/hooks/hook-registry.d.ts +16 -0
- package/dist/hooks/hook-registry.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/subprocess.d.ts +8 -1
- package/dist/hooks/subprocess.d.ts.map +1 -1
- package/dist/hub/browser-websocket.d.ts +18 -0
- package/dist/hub/browser-websocket.d.ts.map +1 -0
- package/dist/hub/client.d.ts +51 -0
- package/dist/hub/client.d.ts.map +1 -0
- package/dist/hub/connect.d.ts +15 -0
- package/dist/hub/connect.d.ts.map +1 -0
- package/dist/hub/daemon-entry.d.ts +2 -0
- package/dist/hub/daemon-entry.d.ts.map +1 -0
- package/dist/hub/daemon-entry.js +1305 -0
- package/dist/hub/daemon.d.ts +5 -0
- package/dist/hub/daemon.d.ts.map +1 -0
- package/dist/hub/defaults.d.ts +17 -0
- package/dist/hub/defaults.d.ts.map +1 -0
- package/dist/hub/discovery.d.ts +29 -0
- package/dist/hub/discovery.d.ts.map +1 -0
- package/dist/hub/index.d.ts +15 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +1294 -0
- package/dist/hub/native-transport.d.ts +17 -0
- package/dist/hub/native-transport.d.ts.map +1 -0
- package/dist/hub/runtime-handlers.d.ts +11 -0
- package/dist/hub/runtime-handlers.d.ts.map +1 -0
- package/dist/hub/server.d.ts +104 -0
- package/dist/hub/server.d.ts.map +1 -0
- package/dist/hub/session-client.d.ts +90 -0
- package/dist/hub/session-client.d.ts.map +1 -0
- package/dist/hub/start-shared-server.d.ts +19 -0
- package/dist/hub/start-shared-server.d.ts.map +1 -0
- package/dist/hub/transport.d.ts +8 -0
- package/dist/hub/transport.d.ts.map +1 -0
- package/dist/hub/ui-client.d.ts +45 -0
- package/dist/hub/ui-client.d.ts.map +1 -0
- package/dist/hub/workspace.d.ts +4 -0
- package/dist/hub/workspace.d.ts.map +1 -0
- package/dist/index.d.ts +29 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +782 -471
- package/dist/llms/cline-recommended-models.d.ts +20 -0
- package/dist/llms/cline-recommended-models.d.ts.map +1 -0
- package/dist/llms/configured-provider-registry.d.ts +28 -0
- package/dist/llms/configured-provider-registry.d.ts.map +1 -0
- package/dist/llms/handler-factory.d.ts +16 -0
- package/dist/llms/handler-factory.d.ts.map +1 -0
- package/dist/llms/provider-defaults.d.ts +27 -0
- package/dist/llms/provider-defaults.d.ts.map +1 -0
- package/dist/llms/provider-settings.d.ts +245 -0
- package/dist/llms/provider-settings.d.ts.map +1 -0
- package/dist/llms/runtime-config.d.ts +4 -0
- package/dist/llms/runtime-config.d.ts.map +1 -0
- package/dist/llms/runtime-registry.d.ts +20 -0
- package/dist/llms/runtime-registry.d.ts.map +1 -0
- package/dist/llms/runtime-types.d.ts +85 -0
- package/dist/llms/runtime-types.d.ts.map +1 -0
- package/dist/runtime/agent-config-adapter.d.ts +148 -0
- package/dist/runtime/agent-config-adapter.d.ts.map +1 -0
- package/dist/runtime/agent-runtime-config-builder.d.ts +96 -0
- package/dist/runtime/agent-runtime-config-builder.d.ts.map +1 -0
- package/dist/runtime/history.d.ts +6 -0
- package/dist/runtime/history.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +1 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/loop-detection.d.ts +59 -0
- package/dist/runtime/loop-detection.d.ts.map +1 -0
- package/dist/runtime/mistake-tracker.d.ts +69 -0
- package/dist/runtime/mistake-tracker.d.ts.map +1 -0
- package/dist/runtime/rules.d.ts +1 -0
- package/dist/runtime/rules.d.ts.map +1 -1
- package/dist/runtime/runtime-builder.d.ts.map +1 -1
- package/dist/runtime/runtime-event-adapter.d.ts +102 -0
- package/dist/runtime/runtime-event-adapter.d.ts.map +1 -0
- package/dist/runtime/runtime-host.d.ts +49 -26
- package/dist/runtime/runtime-host.d.ts.map +1 -1
- package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
- package/dist/runtime/session-runtime-orchestrator.d.ts +261 -0
- package/dist/runtime/session-runtime-orchestrator.d.ts.map +1 -0
- package/dist/runtime/session-runtime.d.ts +16 -21
- package/dist/runtime/session-runtime.d.ts.map +1 -1
- package/dist/runtime/user-input-builder.d.ts +24 -0
- package/dist/runtime/user-input-builder.d.ts.map +1 -0
- package/dist/services/global-settings.d.ts +12 -0
- package/dist/services/global-settings.d.ts.map +1 -0
- package/dist/services/index.js +28 -0
- package/dist/services/local-runtime-bootstrap.d.ts +9 -3
- package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
- package/dist/services/plugin-tools.d.ts +16 -0
- package/dist/services/plugin-tools.d.ts.map +1 -0
- package/dist/services/providers/local-provider-registry.d.ts +199 -23
- package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
- package/dist/services/providers/local-provider-service.d.ts +15 -13
- package/dist/services/providers/local-provider-service.d.ts.map +1 -1
- package/dist/services/session-data.d.ts +1 -1
- package/dist/services/session-data.d.ts.map +1 -1
- package/dist/services/session-telemetry.d.ts +7 -2
- package/dist/services/session-telemetry.d.ts.map +1 -1
- package/dist/services/storage/file-team-store.d.ts.map +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
- package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
- package/dist/services/storage/provider-settings-manager.d.ts +1 -0
- package/dist/services/storage/provider-settings-manager.d.ts.map +1 -1
- package/dist/services/storage/sqlite-team-store.d.ts.map +1 -1
- package/dist/services/workspace-manifest.d.ts +11 -0
- package/dist/services/workspace-manifest.d.ts.map +1 -1
- package/dist/session/conversation-store.d.ts +30 -0
- package/dist/session/conversation-store.d.ts.map +1 -0
- package/dist/session/message-builder.d.ts +65 -0
- package/dist/session/message-builder.d.ts.map +1 -0
- package/dist/session/persistence-service.d.ts +11 -23
- package/dist/session/persistence-service.d.ts.map +1 -1
- package/dist/session/session-manifest-store.d.ts +22 -0
- package/dist/session/session-manifest-store.d.ts.map +1 -0
- package/dist/session/session-manifest.d.ts +1 -1
- package/dist/session/session-row.d.ts +93 -0
- package/dist/session/session-row.d.ts.map +1 -0
- package/dist/session/session-service.d.ts +2 -102
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/subagent-session-manager.d.ts +36 -0
- package/dist/session/subagent-session-manager.d.ts.map +1 -0
- package/dist/session/team-persistence-store.d.ts +24 -0
- package/dist/session/team-persistence-store.d.ts.map +1 -0
- package/dist/transports/hub.d.ts +58 -0
- package/dist/transports/hub.d.ts.map +1 -0
- package/dist/transports/local.d.ts +23 -9
- package/dist/transports/local.d.ts.map +1 -1
- package/dist/transports/remote.d.ts +10 -0
- package/dist/transports/remote.d.ts.map +1 -0
- package/dist/transports/runtime-host-support.d.ts +3 -2
- package/dist/transports/runtime-host-support.d.ts.map +1 -1
- package/dist/types/chat-schema.d.ts +15 -17
- package/dist/types/chat-schema.d.ts.map +1 -1
- package/dist/types/config.d.ts +17 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/events.d.ts +7 -6
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/provider-settings.d.ts +4 -5
- package/dist/types/provider-settings.d.ts.map +1 -1
- package/dist/types/session.d.ts +7 -3
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types.d.ts +11 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -6
- package/src/ClineCore.ts +757 -44
- package/src/account/cline-account-service.ts +44 -6
- package/src/account/index.ts +3 -3
- package/src/account/rpc.ts +12 -12
- package/src/cron/cron-event-ingress.ts +357 -0
- package/src/cron/cron-materializer.ts +97 -0
- package/src/cron/cron-reconciler.ts +241 -0
- package/src/cron/cron-report-writer.ts +153 -0
- package/src/cron/cron-runner.ts +495 -0
- package/src/cron/cron-schema.ts +127 -0
- package/src/cron/cron-service.ts +163 -0
- package/src/cron/cron-spec-parser.ts +489 -0
- package/src/cron/cron-watcher.ts +102 -0
- package/src/cron/index.ts +15 -0
- package/src/cron/resource-limiter.ts +46 -0
- package/src/cron/schedule-command-service.ts +193 -0
- package/src/cron/schedule-service.ts +703 -0
- package/src/cron/scheduler.ts +772 -0
- package/src/cron/sqlite-cron-store.ts +1286 -0
- package/src/cron/sqlite-schedule-store.ts +708 -0
- package/src/extensions/config/agent-config-loader.ts +17 -7
- package/src/extensions/config/runtime-commands.ts +6 -0
- package/src/extensions/config/user-instruction-config-loader.ts +1 -0
- package/src/extensions/context/agentic-compaction.ts +3 -3
- package/src/extensions/context/basic-compaction.ts +2 -2
- package/src/extensions/context/compaction-shared.ts +5 -4
- package/src/extensions/context/compaction.ts +3 -3
- package/src/extensions/plugin/plugin-config-loader.ts +37 -2
- package/src/extensions/plugin/plugin-loader.ts +69 -9
- package/src/extensions/plugin/plugin-module-import.ts +0 -2
- package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +243 -39
- package/src/extensions/plugin/plugin-sandbox.ts +173 -29
- package/src/extensions/plugin/plugin-targeting.ts +32 -0
- package/src/extensions/tools/constants.ts +2 -0
- package/src/extensions/tools/definitions.ts +61 -71
- package/src/extensions/tools/executors/apply-patch.ts +69 -80
- package/src/extensions/tools/executors/editor.ts +4 -3
- package/src/extensions/tools/executors/search.ts +195 -3
- package/src/extensions/tools/helpers.ts +24 -0
- package/src/extensions/tools/index.ts +11 -2
- package/src/extensions/tools/presets.ts +32 -47
- package/src/extensions/tools/runtime.ts +261 -0
- package/src/extensions/tools/schemas.ts +17 -20
- package/src/extensions/tools/team/delegated-agent.ts +8 -3
- package/src/extensions/tools/team/multi-agent.ts +135 -19
- package/src/extensions/tools/team/team-tools.ts +172 -91
- package/src/extensions/tools/types.ts +0 -6
- package/src/hooks/hook-bridge.ts +489 -0
- package/src/hooks/hook-file-hooks.ts +66 -5
- package/src/hooks/hook-registry.ts +257 -0
- package/src/hooks/index.ts +0 -7
- package/src/hooks/subprocess-runner.ts +1 -1
- package/src/hooks/subprocess.ts +9 -0
- package/src/hub/browser-websocket.ts +159 -0
- package/src/hub/client.ts +633 -0
- package/src/hub/connect.ts +156 -0
- package/src/hub/daemon-entry.ts +122 -0
- package/src/hub/daemon.ts +284 -0
- package/src/hub/defaults.ts +70 -0
- package/src/hub/discovery.ts +247 -0
- package/src/hub/index.ts +14 -0
- package/src/hub/native-transport.ts +31 -0
- package/src/hub/runtime-handlers.ts +141 -0
- package/src/hub/server.ts +2317 -0
- package/src/hub/session-client.ts +502 -0
- package/src/hub/start-shared-server.ts +61 -0
- package/src/hub/transport.ts +14 -0
- package/src/hub/ui-client.ts +126 -0
- package/src/hub/workspace.ts +19 -0
- package/src/index.ts +169 -68
- package/src/llms/cline-recommended-models.ts +167 -0
- package/src/llms/configured-provider-registry.ts +193 -0
- package/src/llms/handler-factory.ts +56 -0
- package/src/llms/provider-defaults.ts +653 -0
- package/src/llms/provider-settings.ts +310 -0
- package/src/llms/runtime-config.ts +43 -0
- package/src/llms/runtime-registry.ts +172 -0
- package/src/llms/runtime-types.ts +121 -0
- package/src/runtime/agent-config-adapter.ts +636 -0
- package/src/runtime/agent-runtime-config-builder.ts +205 -0
- package/src/runtime/error-feedback.ts +142 -0
- package/src/runtime/history.ts +137 -0
- package/src/runtime/host.ts +127 -267
- package/src/runtime/index.ts +1 -0
- package/src/runtime/loop-detection.ts +162 -0
- package/src/runtime/mistake-tracker.ts +221 -0
- package/src/runtime/rules.ts +12 -0
- package/src/runtime/runtime-builder.ts +85 -13
- package/src/runtime/runtime-event-adapter.ts +412 -0
- package/src/runtime/runtime-host.ts +134 -62
- package/src/runtime/runtime-oauth-token-manager.ts +11 -15
- package/src/runtime/session-runtime-orchestrator.ts +1253 -0
- package/src/runtime/session-runtime.ts +16 -26
- package/src/runtime/user-input-builder.ts +167 -0
- package/src/services/global-settings.ts +122 -0
- package/src/services/local-runtime-bootstrap.ts +175 -31
- package/src/services/plugin-tools.ts +86 -0
- package/src/services/providers/local-provider-registry.ts +277 -61
- package/src/services/providers/local-provider-service.ts +109 -44
- package/src/services/session-data.ts +18 -10
- package/src/services/session-telemetry.ts +6 -15
- package/src/services/storage/file-team-store.ts +1 -5
- package/src/services/storage/provider-settings-legacy-migration.ts +14 -51
- package/src/services/storage/provider-settings-manager.ts +17 -2
- package/src/services/storage/sqlite-team-store.ts +1 -5
- package/src/services/workspace-manifest.ts +18 -0
- package/src/session/conversation-store.ts +77 -0
- package/src/session/file-session-service.ts +1 -1
- package/src/session/index.ts +6 -27
- package/src/session/message-builder.ts +941 -0
- package/src/session/persistence-service.ts +119 -504
- package/src/session/session-manifest-store.ts +158 -0
- package/src/session/session-row.ts +199 -0
- package/src/session/session-service.ts +17 -376
- package/src/session/session-team-coordination.ts +1 -1
- package/src/session/subagent-session-manager.ts +397 -0
- package/src/session/team-persistence-store.ts +176 -0
- package/src/transports/hub.ts +1081 -0
- package/src/transports/local.ts +419 -93
- package/src/transports/remote.ts +27 -0
- package/src/transports/runtime-host-support.ts +63 -9
- package/src/types/chat-schema.ts +4 -5
- package/src/types/config.ts +17 -7
- package/src/types/events.ts +8 -6
- package/src/types/index.ts +3 -0
- package/src/types/provider-settings.ts +18 -7
- package/src/types/session.ts +7 -6
- package/src/types.ts +42 -2
- package/dist/hooks/persistent.d.ts +0 -64
- package/dist/hooks/persistent.d.ts.map +0 -1
- package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
- package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
- package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
- package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
- package/dist/services/telemetry/index.js +0 -15
- package/dist/session/rpc-session-service.d.ts +0 -16
- package/dist/session/rpc-session-service.d.ts.map +0 -1
- package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
- package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
- package/dist/transports/rpc.d.ts +0 -51
- package/dist/transports/rpc.d.ts.map +0 -1
- package/src/ClineCore.test.ts +0 -226
- package/src/account/cline-account-service.test.ts +0 -185
- package/src/account/featurebase-token.test.ts +0 -175
- package/src/account/rpc.test.ts +0 -63
- package/src/auth/bounded-ttl-cache.test.ts +0 -38
- package/src/auth/client.test.ts +0 -69
- package/src/auth/cline.test.ts +0 -267
- package/src/auth/codex.test.ts +0 -170
- package/src/auth/oca.test.ts +0 -340
- package/src/auth/server.test.ts +0 -287
- package/src/auth/utils.test.ts +0 -128
- package/src/extensions/config/agent-config-loader.test.ts +0 -236
- package/src/extensions/config/hooks-config-loader.test.ts +0 -20
- package/src/extensions/config/runtime-commands.test.ts +0 -115
- package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
- package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
- package/src/extensions/context/compaction.test.ts +0 -483
- package/src/extensions/mcp/config-loader.test.ts +0 -238
- package/src/extensions/mcp/manager.test.ts +0 -105
- package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
- package/src/extensions/plugin/plugin-loader.test.ts +0 -292
- package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
- package/src/extensions/tools/definitions.test.ts +0 -780
- package/src/extensions/tools/executors/bash.test.ts +0 -87
- package/src/extensions/tools/executors/editor.test.ts +0 -35
- package/src/extensions/tools/executors/file-read.test.ts +0 -125
- package/src/extensions/tools/model-tool-routing.test.ts +0 -86
- package/src/extensions/tools/presets.test.ts +0 -70
- package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
- package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
- package/src/extensions/tools/team/team-tools.test.ts +0 -918
- package/src/hooks/checkpoint-hooks.test.ts +0 -168
- package/src/hooks/hook-file-hooks.test.ts +0 -311
- package/src/hooks/persistent.ts +0 -661
- package/src/runtime/history.test.ts +0 -114
- package/src/runtime/host.test.ts +0 -230
- package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
- package/src/runtime/rpc-runtime-ensure.ts +0 -659
- package/src/runtime/rpc-spawn-lease.test.ts +0 -81
- package/src/runtime/rpc-spawn-lease.ts +0 -156
- package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
- package/src/runtime/runtime-builder.test.ts +0 -615
- package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
- package/src/runtime/runtime-parity.test.ts +0 -143
- package/src/services/providers/local-provider-service.test.ts +0 -1062
- package/src/services/session-data.test.ts +0 -160
- package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
- package/src/services/storage/provider-settings-manager.test.ts +0 -191
- package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
- package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
- package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
- package/src/services/telemetry/TelemetryService.test.ts +0 -134
- package/src/services/telemetry/distinct-id.test.ts +0 -57
- package/src/services/workspace/file-indexer.d.ts +0 -11
- package/src/services/workspace/file-indexer.test.ts +0 -156
- package/src/services/workspace/mention-enricher.test.ts +0 -106
- package/src/session/persistence-service.test.ts +0 -300
- package/src/session/rpc-session-service.ts +0 -114
- package/src/session/session-service.team-persistence.test.ts +0 -48
- package/src/session/sqlite-rpc-session-backend.ts +0 -301
- package/src/transports/local.e2e.test.ts +0 -380
- package/src/transports/local.test.ts +0 -2559
- package/src/transports/rpc.test.ts +0 -82
- package/src/transports/rpc.ts +0 -665
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CronSpecRecord, SqliteCronStore } from "./sqlite-cron-store";
|
|
2
|
+
/**
|
|
3
|
+
* Queue materialization rules shared between the reconciler, watcher, and
|
|
4
|
+
* periodic runner tick. Execution stays trigger-agnostic once a row is
|
|
5
|
+
* queued; this module is the only place that decides when to create a row.
|
|
6
|
+
*/
|
|
7
|
+
export interface CronMaterializerOptions {
|
|
8
|
+
store: SqliteCronStore;
|
|
9
|
+
now?: () => number;
|
|
10
|
+
}
|
|
11
|
+
export interface MaterializeSummary {
|
|
12
|
+
oneOffQueued: number;
|
|
13
|
+
scheduleQueued: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class CronMaterializer {
|
|
16
|
+
private readonly store;
|
|
17
|
+
private readonly nowFn;
|
|
18
|
+
constructor(options: CronMaterializerOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Run materialization for every valid/enabled spec. Typically called at
|
|
21
|
+
* startup (after reconciliation) and on each runner tick.
|
|
22
|
+
*/
|
|
23
|
+
materializeAll(): MaterializeSummary;
|
|
24
|
+
/**
|
|
25
|
+
* Ensure a single one-off spec has exactly one run record for its current
|
|
26
|
+
* revision unless an explicit rerun path creates a different trigger kind.
|
|
27
|
+
* Returns true if a new queued run was created.
|
|
28
|
+
*/
|
|
29
|
+
materializeOneOff(spec: CronSpecRecord): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Materialize schedule runs. Implements the "one overdue catch-up on
|
|
32
|
+
* startup, then advance" policy described in PLAN.md.
|
|
33
|
+
*/
|
|
34
|
+
materializeSchedule(spec: CronSpecRecord): boolean;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=cron-materializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-materializer.d.ts","sourceRoot":"","sources":["../../src/cron/cron-materializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3E;;;;GAIG;AAEH,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,OAAO,EAAE,uBAAuB;IAK5C;;;OAGG;IACI,cAAc,IAAI,kBAAkB;IA+B3C;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAevD;;;OAGG;IACI,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;CAUzD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { CronSpecParseResult } from "@clinebot/shared";
|
|
2
|
+
import { type ResolveCronSpecsDirOptions } from "@clinebot/shared/storage";
|
|
3
|
+
import type { CronSpecRecord, SqliteCronStore, UpsertSpecResult } from "./sqlite-cron-store";
|
|
4
|
+
/**
|
|
5
|
+
* Scan the configured cron specs directory on disk, parse every file, and
|
|
6
|
+
* upsert spec state into the cron DB. This is the startup source of truth:
|
|
7
|
+
* watcher events are triggers to re-run reconciliation for one file, not a
|
|
8
|
+
* replacement.
|
|
9
|
+
*/
|
|
10
|
+
export interface CronReconcilerOptions {
|
|
11
|
+
store: SqliteCronStore;
|
|
12
|
+
/**
|
|
13
|
+
* Cron spec source location. Defaults to global `~/.cline/cron`.
|
|
14
|
+
* Pass `{ scope: "workspace", workspaceRoot }` later to enable
|
|
15
|
+
* workspace-level cron sources without changing reconciler internals.
|
|
16
|
+
*/
|
|
17
|
+
specs?: ResolveCronSpecsDirOptions;
|
|
18
|
+
/** @deprecated Use `specs: { scope: "workspace", workspaceRoot }`. */
|
|
19
|
+
workspaceRoot?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ReconcileChange {
|
|
22
|
+
relativePath: string;
|
|
23
|
+
result: UpsertSpecResult;
|
|
24
|
+
parse: CronSpecParseResult;
|
|
25
|
+
}
|
|
26
|
+
export interface ReconcileSummary {
|
|
27
|
+
scanned: number;
|
|
28
|
+
upserted: number;
|
|
29
|
+
invalidParses: number;
|
|
30
|
+
removed: number;
|
|
31
|
+
changes: ReconcileChange[];
|
|
32
|
+
}
|
|
33
|
+
export declare class CronReconciler {
|
|
34
|
+
private readonly store;
|
|
35
|
+
private readonly cronDir;
|
|
36
|
+
constructor(options: CronReconcilerOptions);
|
|
37
|
+
getCronDir(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Reconcile every file under the cron specs directory into the DB and mark specs
|
|
40
|
+
* whose source files no longer exist as `removed=1`.
|
|
41
|
+
*/
|
|
42
|
+
reconcileAll(): Promise<ReconcileSummary>;
|
|
43
|
+
/**
|
|
44
|
+
* Reconcile a single file (absolute path). `relativePath` is expected to
|
|
45
|
+
* be POSIX-relative to the cron specs directory. Returns the reconciliation change
|
|
46
|
+
* or undefined if the file could not be read.
|
|
47
|
+
*/
|
|
48
|
+
reconcileFile(relativePath: string, absolutePath: string): Promise<ReconcileChange | undefined>;
|
|
49
|
+
/**
|
|
50
|
+
* Handle a file that disappeared from disk between reconciliations.
|
|
51
|
+
* Marks the spec as removed and cancels any queued runs for it.
|
|
52
|
+
*/
|
|
53
|
+
handleFileDeleted(spec: CronSpecRecord): void;
|
|
54
|
+
/**
|
|
55
|
+
* Refresh next_run_at for every enabled schedule spec.
|
|
56
|
+
* Used at startup to handle the "one overdue catch-up on startup then
|
|
57
|
+
* advance to next slot" policy.
|
|
58
|
+
*/
|
|
59
|
+
refreshScheduleNextRunAt(): void;
|
|
60
|
+
private applyScheduleNextRunAt;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cron-reconciler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-reconciler.d.ts","sourceRoot":"","sources":["../../src/cron/cron-reconciler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACN,KAAK,0BAA0B,EAE/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC3B;AAmCD,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,qBAAqB;IAUnC,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAwCtD;;;;OAIG;IACU,aAAa,CACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA2CvC;;;OAGG;IACI,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKpD;;;;OAIG;IACI,wBAAwB,IAAI,IAAI;IAWvC,OAAO,CAAC,sBAAsB;CAqB9B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ResolveCronSpecsDirOptions } from "@clinebot/shared/storage";
|
|
2
|
+
import type { CronEventLogRecord, CronRunRecord, CronSpecRecord } from "./sqlite-cron-store";
|
|
3
|
+
/**
|
|
4
|
+
* Writes a markdown report for a completed or failed cron run.
|
|
5
|
+
* Reports live under `<cron-specs-dir>/reports/<run-id>.md`.
|
|
6
|
+
* By default that is `~/.cline/cron/reports/<run-id>.md`.
|
|
7
|
+
* and are derived artifacts — the database is still the operational source
|
|
8
|
+
* of truth.
|
|
9
|
+
*/
|
|
10
|
+
export interface CronRunReportData {
|
|
11
|
+
finalText?: string;
|
|
12
|
+
usage?: {
|
|
13
|
+
inputTokens?: number;
|
|
14
|
+
outputTokens?: number;
|
|
15
|
+
cacheReadTokens?: number;
|
|
16
|
+
cacheWriteTokens?: number;
|
|
17
|
+
totalCost?: number;
|
|
18
|
+
};
|
|
19
|
+
toolCalls?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
durationMs?: number;
|
|
23
|
+
}>;
|
|
24
|
+
durationMs?: number;
|
|
25
|
+
error?: string;
|
|
26
|
+
triggerEvent?: CronEventLogRecord;
|
|
27
|
+
}
|
|
28
|
+
export interface WriteReportOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Cron spec source/report location. Defaults to global `~/.cline/cron`.
|
|
31
|
+
* Pass `{ scope: "workspace", workspaceRoot }` to write reports beside a
|
|
32
|
+
* future workspace-scoped cron specs directory.
|
|
33
|
+
*/
|
|
34
|
+
specs?: ResolveCronSpecsDirOptions;
|
|
35
|
+
workspaceRoot: string;
|
|
36
|
+
run: CronRunRecord;
|
|
37
|
+
spec: CronSpecRecord;
|
|
38
|
+
data: CronRunReportData;
|
|
39
|
+
}
|
|
40
|
+
export declare function writeCronRunReport(options: WriteReportOptions): string;
|
|
41
|
+
//# sourceMappingURL=cron-report-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-report-writer.d.ts","sourceRoot":"","sources":["../../src/cron/cron-report-writer.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,0BAA0B,EAE/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACX,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,MAAM,qBAAqB,CAAC;AAE7B;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;CACxB;AA+FD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAWtE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { BasicLogger } from "@clinebot/shared";
|
|
2
|
+
import type { ResolveCronSpecsDirOptions } from "@clinebot/shared/storage";
|
|
3
|
+
import type { CronMaterializer } from "./cron-materializer";
|
|
4
|
+
import type { HubScheduleRuntimeHandlers } from "./schedule-service";
|
|
5
|
+
import type { SqliteCronStore } from "./sqlite-cron-store";
|
|
6
|
+
export interface CronRunnerOptions {
|
|
7
|
+
store: SqliteCronStore;
|
|
8
|
+
materializer: CronMaterializer;
|
|
9
|
+
runtimeHandlers: HubScheduleRuntimeHandlers;
|
|
10
|
+
/** Default runtime workspace for the hub/daemon process. */
|
|
11
|
+
workspaceRoot: string;
|
|
12
|
+
/** Cron spec source/report location. Defaults to global `~/.cline/cron`. */
|
|
13
|
+
specs?: ResolveCronSpecsDirOptions;
|
|
14
|
+
logger?: BasicLogger;
|
|
15
|
+
pollIntervalMs?: number;
|
|
16
|
+
claimLeaseSeconds?: number;
|
|
17
|
+
globalMaxConcurrency?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class CronRunner {
|
|
20
|
+
private readonly store;
|
|
21
|
+
private readonly materializer;
|
|
22
|
+
private readonly options;
|
|
23
|
+
private readonly limiter;
|
|
24
|
+
private readonly claimLeaseMs;
|
|
25
|
+
private timer;
|
|
26
|
+
private started;
|
|
27
|
+
private ticking;
|
|
28
|
+
private disposed;
|
|
29
|
+
private stopping;
|
|
30
|
+
private readonly activeRuns;
|
|
31
|
+
constructor(options: CronRunnerOptions);
|
|
32
|
+
start(): Promise<void>;
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
dispose(): Promise<void>;
|
|
35
|
+
tick(): Promise<void>;
|
|
36
|
+
private executeClaim;
|
|
37
|
+
private buildPrompt;
|
|
38
|
+
private startClaimLeaseHeartbeat;
|
|
39
|
+
private loadRulesForSpec;
|
|
40
|
+
private buildSystemPrompt;
|
|
41
|
+
private buildStartRequest;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cron-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-runner.d.ts","sourceRoot":"","sources":["../../src/cron/cron-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,WAAW,EAGX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAQ3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAIX,eAAe,EACf,MAAM,qBAAqB,CAAC;AAiG7B,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,eAAe,EAAE,0BAA0B,CAAC;IAC5C,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGvB;gBAEQ,OAAO,EAAE,iBAAiB;IAWzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBpB,YAAY;IA4I1B,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,wBAAwB;YAkBlB,gBAAgB;YAmBhB,iBAAiB;YA2BjB,iBAAiB;CAmC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-schema.d.ts","sourceRoot":"","sources":["../../src/cron/cron-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAuHpD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAOnD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { AutomationEventEnvelope, BasicLogger } from "@clinebot/shared";
|
|
2
|
+
import type { ResolveCronSpecsDirOptions } from "@clinebot/shared/storage";
|
|
3
|
+
import { type CronEventIngressResult } from "./cron-event-ingress";
|
|
4
|
+
import type { HubScheduleRuntimeHandlers } from "./schedule-service";
|
|
5
|
+
import type { CronRunRecord, CronSpecRecord, ListEventLogsOptions, ListRunsOptions, ListSpecsOptions } from "./sqlite-cron-store";
|
|
6
|
+
/**
|
|
7
|
+
* Top-level orchestrator for file-based cron automation.
|
|
8
|
+
*
|
|
9
|
+
* Wires together:
|
|
10
|
+
* - `SqliteCronStore` (cron.db)
|
|
11
|
+
* - `CronReconciler` (disk -> DB)
|
|
12
|
+
* - `CronWatcher` (cron specs directory filesystem events)
|
|
13
|
+
* - `CronMaterializer` (queue materialization)
|
|
14
|
+
* - `CronRunner` (claim + execute + report)
|
|
15
|
+
*
|
|
16
|
+
* This service is the forward path: the legacy `HubScheduleService`
|
|
17
|
+
* continues to serve programmatic schedules, while `CronService` handles
|
|
18
|
+
* everything sourced from the configured file-based cron directory.
|
|
19
|
+
*/
|
|
20
|
+
export interface CronServiceOptions {
|
|
21
|
+
/** Default runtime workspace for the hub/daemon process. */
|
|
22
|
+
workspaceRoot: string;
|
|
23
|
+
/** Cron spec source/report location. Defaults to global `~/.cline/cron`. */
|
|
24
|
+
specs?: ResolveCronSpecsDirOptions;
|
|
25
|
+
runtimeHandlers: HubScheduleRuntimeHandlers;
|
|
26
|
+
dbPath?: string;
|
|
27
|
+
logger?: BasicLogger;
|
|
28
|
+
pollIntervalMs?: number;
|
|
29
|
+
claimLeaseSeconds?: number;
|
|
30
|
+
globalMaxConcurrency?: number;
|
|
31
|
+
watcherDebounceMs?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare class CronService {
|
|
34
|
+
private readonly store;
|
|
35
|
+
private readonly reconciler;
|
|
36
|
+
private readonly watcher;
|
|
37
|
+
private readonly eventIngress;
|
|
38
|
+
private readonly materializer;
|
|
39
|
+
private readonly runner;
|
|
40
|
+
private started;
|
|
41
|
+
private disposed;
|
|
42
|
+
constructor(options: CronServiceOptions);
|
|
43
|
+
start(): Promise<void>;
|
|
44
|
+
stop(): Promise<void>;
|
|
45
|
+
dispose(): Promise<void>;
|
|
46
|
+
listSpecs(options?: ListSpecsOptions): CronSpecRecord[];
|
|
47
|
+
getSpec(specId: string): CronSpecRecord | undefined;
|
|
48
|
+
listRuns(options?: ListRunsOptions): CronRunRecord[];
|
|
49
|
+
getRun(runId: string): CronRunRecord | undefined;
|
|
50
|
+
listActiveRuns(): CronRunRecord[];
|
|
51
|
+
listUpcomingRuns(limit?: number): CronRunRecord[];
|
|
52
|
+
reconcileNow(): Promise<void>;
|
|
53
|
+
ingestEvent(event: AutomationEventEnvelope): CronEventIngressResult;
|
|
54
|
+
listEventLogs(options?: ListEventLogsOptions): import("./sqlite-cron-store").CronEventLogRecord[];
|
|
55
|
+
getEventLog(eventId: string): import("./sqlite-cron-store").CronEventLogRecord | undefined;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=cron-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-service.d.ts","sourceRoot":"","sources":["../../src/cron/cron-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAEN,KAAK,sBAAsB,EAC3B,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,MAAM,qBAAqB,CAAC;AAG7B;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,kBAAkB;IAClC,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,eAAe,EAAE,0BAA0B,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,kBAAkB;IAuC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAIvD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAInD,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,aAAa,EAAE;IAIpD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD,cAAc,IAAI,aAAa,EAAE;IAIjC,gBAAgB,CAAC,KAAK,SAAK,GAAG,aAAa,EAAE;IAIvC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,WAAW,CAAC,KAAK,EAAE,uBAAuB,GAAG,sBAAsB;IAInE,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAI5C,WAAW,CAAC,OAAO,EAAE,MAAM;CAGlC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CronSpecParseResult, CronTriggerKind } from "@clinebot/shared";
|
|
2
|
+
/**
|
|
3
|
+
* Markdown frontmatter parser for `.cline/cron/*.md` automation specs.
|
|
4
|
+
*
|
|
5
|
+
* Lives in @clinebot/core because it depends on `yaml`. The spec types
|
|
6
|
+
* themselves live in @clinebot/shared so other packages can consume them
|
|
7
|
+
* without pulling in a YAML parser.
|
|
8
|
+
*
|
|
9
|
+
* The parser never throws for a single bad file — it produces a
|
|
10
|
+
* `CronSpecParseResult` with an `error` message so the reconciler can record
|
|
11
|
+
* `parse_status='invalid'` durably instead of dropping state.
|
|
12
|
+
*/
|
|
13
|
+
export declare function inferTriggerKindFromPath(relativePath: string): CronTriggerKind;
|
|
14
|
+
export declare function splitFrontmatter(raw: string): {
|
|
15
|
+
frontmatter: string | undefined;
|
|
16
|
+
body: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function computeContentHash(frontmatterJson: unknown, body: string): string;
|
|
19
|
+
export interface ParseCronSpecInput {
|
|
20
|
+
relativePath: string;
|
|
21
|
+
raw: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse a single cron spec file. Never throws; always returns a result.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseCronSpecFile(input: ParseCronSpecInput): CronSpecParseResult;
|
|
27
|
+
//# sourceMappingURL=cron-spec-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-spec-parser.d.ts","sourceRoot":"","sources":["../../src/cron/cron-spec-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOX,mBAAmB,EACnB,eAAe,EACf,MAAM,kBAAkB,CAAC;AAK1B;;;;;;;;;;GAUG;AAEH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,MAAM,GAClB,eAAe,CASjB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC9C,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACb,CAcA;AA+HD,wBAAgB,kBAAkB,CACjC,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,MAAM,GACV,MAAM,CAMR;AAqBD,MAAM,WAAW,kBAAkB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACZ;AAqCD;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,kBAAkB,GACvB,mBAAmB,CAqOrB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CronReconciler } from "./cron-reconciler";
|
|
2
|
+
export interface CronWatcherOptions {
|
|
3
|
+
reconciler: CronReconciler;
|
|
4
|
+
debounceMs?: number;
|
|
5
|
+
onError?: (error: unknown) => void;
|
|
6
|
+
onReconciled?: () => void | Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class CronWatcher {
|
|
9
|
+
private readonly reconciler;
|
|
10
|
+
private readonly debounceMs;
|
|
11
|
+
private readonly onError;
|
|
12
|
+
private readonly onReconciled;
|
|
13
|
+
private watcher?;
|
|
14
|
+
private readonly pending;
|
|
15
|
+
private disposed;
|
|
16
|
+
constructor(options: CronWatcherOptions);
|
|
17
|
+
start(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
private scheduleReconcile;
|
|
21
|
+
private reconcileNow;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cron-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-watcher.d.ts","sourceRoot":"","sources":["../../src/cron/cron-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,kBAAkB;IAOhC,KAAK,IAAI,IAAI;IAmBb,IAAI,IAAI,IAAI;IAOZ,OAAO,IAAI,IAAI;IAKtB,OAAO,CAAC,iBAAiB;YAUX,YAAY;CAsB1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class ResourceLimiter {
|
|
2
|
+
private readonly globalMaxConcurrency;
|
|
3
|
+
private readonly activeExecutions;
|
|
4
|
+
constructor(globalMaxConcurrency: number);
|
|
5
|
+
acquire(scheduleId: string, executionId: string, maxParallel: number): boolean;
|
|
6
|
+
release(scheduleId: string, executionId: string): void;
|
|
7
|
+
getGlobalActiveCount(): number;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=resource-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-limiter.d.ts","sourceRoot":"","sources":["../../src/cron/resource-limiter.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;gBAEvD,oBAAoB,EAAE,MAAM;IAIjC,OAAO,CACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GACjB,OAAO;IAeH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAWtD,oBAAoB,IAAI,MAAM;CAOrC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HubCommandEnvelope, HubReplyEnvelope } from "@clinebot/shared";
|
|
2
|
+
import type { HubScheduleService } from "./schedule-service";
|
|
3
|
+
export declare class HubScheduleCommandService {
|
|
4
|
+
private readonly schedules;
|
|
5
|
+
constructor(schedules: HubScheduleService);
|
|
6
|
+
handleCommand(envelope: HubCommandEnvelope): Promise<HubReplyEnvelope>;
|
|
7
|
+
private toCreateInput;
|
|
8
|
+
private toUpdateInput;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=schedule-command-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-command-service.d.ts","sourceRoot":"","sources":["../../src/cron/schedule-command-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA2B7D,qBAAa,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,kBAAkB;IAE7C,aAAa,CACzB,QAAQ,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAiH5B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,aAAa;CAoBrB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { BasicLogger, ChatRunTurnRequest, ChatStartSessionArtifacts, ChatStartSessionRequest, HubScheduleCreateInput, HubScheduleUpdateInput, ScheduleExecutionRecord, ScheduleRecord } from "@clinebot/shared";
|
|
2
|
+
import { type ListScheduleExecutionsOptions, type ListSchedulesOptions, type ScheduleExecutionStats } from "./sqlite-schedule-store";
|
|
3
|
+
type HubScheduleTurnResult = {
|
|
4
|
+
text: string;
|
|
5
|
+
usage?: {
|
|
6
|
+
inputTokens?: number;
|
|
7
|
+
outputTokens?: number;
|
|
8
|
+
cacheReadTokens?: number;
|
|
9
|
+
cacheWriteTokens?: number;
|
|
10
|
+
totalCost?: number;
|
|
11
|
+
};
|
|
12
|
+
inputTokens?: number;
|
|
13
|
+
outputTokens?: number;
|
|
14
|
+
iterations?: number;
|
|
15
|
+
finishReason?: string;
|
|
16
|
+
messages?: unknown[];
|
|
17
|
+
toolCalls?: Array<{
|
|
18
|
+
name: string;
|
|
19
|
+
input?: unknown;
|
|
20
|
+
output?: unknown;
|
|
21
|
+
error?: string;
|
|
22
|
+
durationMs?: number;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
export interface ScheduleAutonomousOptions {
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
idleTimeoutSeconds?: number;
|
|
28
|
+
pollIntervalSeconds?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface HubScheduleRuntimeHandlers {
|
|
31
|
+
startSession(request: ChatStartSessionRequest): Promise<{
|
|
32
|
+
sessionId: string;
|
|
33
|
+
startResult?: ChatStartSessionArtifacts;
|
|
34
|
+
}>;
|
|
35
|
+
sendSession(sessionId: string, request: ChatRunTurnRequest): Promise<{
|
|
36
|
+
result: HubScheduleTurnResult;
|
|
37
|
+
}>;
|
|
38
|
+
abortSession(sessionId: string): Promise<{
|
|
39
|
+
applied: boolean;
|
|
40
|
+
}>;
|
|
41
|
+
stopSession(sessionId: string): Promise<{
|
|
42
|
+
applied: boolean;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export interface ActiveScheduledExecution {
|
|
46
|
+
executionId: string;
|
|
47
|
+
scheduleId: string;
|
|
48
|
+
sessionId: string;
|
|
49
|
+
startedAt: string;
|
|
50
|
+
timeoutAt?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface HubScheduleServiceOptions {
|
|
53
|
+
runtimeHandlers: HubScheduleRuntimeHandlers;
|
|
54
|
+
eventPublisher?: (eventType: string, payload: unknown) => void;
|
|
55
|
+
logger?: BasicLogger;
|
|
56
|
+
sessionsDbPath?: string;
|
|
57
|
+
pollIntervalMs?: number;
|
|
58
|
+
globalMaxConcurrency?: number;
|
|
59
|
+
claimLeaseSeconds?: number;
|
|
60
|
+
}
|
|
61
|
+
export declare class HubScheduleService {
|
|
62
|
+
private readonly store;
|
|
63
|
+
private readonly resourceLimiter;
|
|
64
|
+
private readonly options;
|
|
65
|
+
private readonly claimLeaseMs;
|
|
66
|
+
private readonly activeExecutions;
|
|
67
|
+
private timer;
|
|
68
|
+
private started;
|
|
69
|
+
private ticking;
|
|
70
|
+
private disposed;
|
|
71
|
+
constructor(options: HubScheduleServiceOptions);
|
|
72
|
+
start(): Promise<void>;
|
|
73
|
+
stop(): Promise<void>;
|
|
74
|
+
dispose(): Promise<void>;
|
|
75
|
+
createSchedule(input: HubScheduleCreateInput): ScheduleRecord;
|
|
76
|
+
getSchedule(scheduleId: string): ScheduleRecord | undefined;
|
|
77
|
+
listSchedules(options?: ListSchedulesOptions): ScheduleRecord[];
|
|
78
|
+
updateSchedule(scheduleId: string, updates: HubScheduleUpdateInput): ScheduleRecord | undefined;
|
|
79
|
+
deleteSchedule(scheduleId: string): boolean;
|
|
80
|
+
pauseSchedule(scheduleId: string): ScheduleRecord | undefined;
|
|
81
|
+
resumeSchedule(scheduleId: string): ScheduleRecord | undefined;
|
|
82
|
+
triggerScheduleNow(scheduleId: string): Promise<ScheduleExecutionRecord | undefined>;
|
|
83
|
+
listScheduleExecutions(options: ListScheduleExecutionsOptions): ScheduleExecutionRecord[];
|
|
84
|
+
getScheduleStats(scheduleId: string): ScheduleExecutionStats;
|
|
85
|
+
getActiveExecutions(): ActiveScheduledExecution[];
|
|
86
|
+
getUpcomingRuns(limit?: number): Array<{
|
|
87
|
+
scheduleId: string;
|
|
88
|
+
name: string;
|
|
89
|
+
nextRunAt: string;
|
|
90
|
+
}>;
|
|
91
|
+
private tick;
|
|
92
|
+
private executeClaimedSchedule;
|
|
93
|
+
private startClaimLeaseHeartbeat;
|
|
94
|
+
private buildStartRequest;
|
|
95
|
+
private executeSchedule;
|
|
96
|
+
private publishEvent;
|
|
97
|
+
private runAutonomousIdleLoop;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=schedule-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-service.d.ts","sourceRoot":"","sources":["../../src/cron/schedule-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type HubScheduleCreateInput, type HubScheduleUpdateInput, type ScheduleExecutionRecord, type ScheduleExecutionStatus, type ScheduleRecord } from "@clinebot/shared";
|
|
2
|
+
export interface ParsedCron {
|
|
3
|
+
minutes: number[];
|
|
4
|
+
hours: number[];
|
|
5
|
+
daysOfMonth: number[];
|
|
6
|
+
months: number[];
|
|
7
|
+
daysOfWeek: number[];
|
|
8
|
+
}
|
|
9
|
+
export declare function parseCron(pattern: string): ParsedCron;
|
|
10
|
+
export declare function validateCronPattern(pattern: string): void;
|
|
11
|
+
export declare function validateCronSchedule(pattern: string, timezone?: string, after?: number): void;
|
|
12
|
+
export declare function validateTimezone(timezone: string | undefined): void;
|
|
13
|
+
export declare function getNextCronTime(pattern: string, after: number, timezone?: string): number;
|
|
14
|
+
export declare class ScheduleStore {
|
|
15
|
+
private schedules;
|
|
16
|
+
private executions;
|
|
17
|
+
load(schedules: ScheduleRecord[] | undefined, executions: ScheduleExecutionRecord[] | undefined): void;
|
|
18
|
+
snapshotSchedules(): ScheduleRecord[];
|
|
19
|
+
snapshotExecutions(): ScheduleExecutionRecord[];
|
|
20
|
+
create(input: HubScheduleCreateInput, now: number): ScheduleRecord;
|
|
21
|
+
get(scheduleId: string): ScheduleRecord | undefined;
|
|
22
|
+
list(): ScheduleRecord[];
|
|
23
|
+
update(input: HubScheduleUpdateInput, now: number): ScheduleRecord;
|
|
24
|
+
setEnabled(scheduleId: string, enabled: boolean, now: number): ScheduleRecord;
|
|
25
|
+
delete(scheduleId: string): void;
|
|
26
|
+
recordTriggered(scheduleId: string, now: number): ScheduleRecord;
|
|
27
|
+
getDueSchedules(now: number): ScheduleRecord[];
|
|
28
|
+
startExecution(scheduleId: string, sessionId: string, now: number): ScheduleExecutionRecord;
|
|
29
|
+
completeExecution(executionId: string, status: Exclude<ScheduleExecutionStatus, "running">, now: number, errorMessage?: string): ScheduleExecutionRecord;
|
|
30
|
+
listExecutions(scheduleId?: string): ScheduleExecutionRecord[];
|
|
31
|
+
}
|
|
32
|
+
export interface SchedulerTriggerContext {
|
|
33
|
+
scheduleId: string;
|
|
34
|
+
sessionId: string;
|
|
35
|
+
executionId: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SchedulerCallbacks {
|
|
38
|
+
onTrigger(record: ScheduleRecord): Promise<{
|
|
39
|
+
sessionId: string;
|
|
40
|
+
}>;
|
|
41
|
+
onExecutionCompleted(context: SchedulerTriggerContext, execution: ScheduleExecutionRecord): void;
|
|
42
|
+
onExecutionFailed(context: SchedulerTriggerContext, execution: ScheduleExecutionRecord, error: unknown): void;
|
|
43
|
+
onScheduleUpdated(record: ScheduleRecord): void;
|
|
44
|
+
onPersist(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
export interface HubSchedulerOptions {
|
|
47
|
+
store: ScheduleStore;
|
|
48
|
+
callbacks: SchedulerCallbacks;
|
|
49
|
+
now?: () => number;
|
|
50
|
+
pollIntervalMs?: number;
|
|
51
|
+
}
|
|
52
|
+
export declare class HubScheduler {
|
|
53
|
+
private readonly store;
|
|
54
|
+
private readonly callbacks;
|
|
55
|
+
private readonly now;
|
|
56
|
+
private readonly pollIntervalMs;
|
|
57
|
+
private timer;
|
|
58
|
+
private readonly runningExecutions;
|
|
59
|
+
constructor(options: HubSchedulerOptions);
|
|
60
|
+
start(): void;
|
|
61
|
+
stop(): void;
|
|
62
|
+
triggerNow(scheduleId: string): Promise<ScheduleExecutionRecord>;
|
|
63
|
+
notifySessionCompleted(sessionId: string, failed: boolean, errorMessage?: string): Promise<void>;
|
|
64
|
+
get scheduleStore(): ScheduleStore;
|
|
65
|
+
private poll;
|
|
66
|
+
private executeSchedule;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/cron/scheduler.ts"],"names":[],"mappings":"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"}
|