feat(cron): default scheduler enabled

This commit is contained in:
Peter Steinberger
2025-12-13 03:49:29 +00:00
parent eace21dcae
commit 772b5fdf0f
4 changed files with 10 additions and 6 deletions

View File

@@ -118,7 +118,7 @@ Cron is a Gateway-owned scheduler for wakeups and scheduled jobs. See `docs/cron
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| `enabled` | boolean | `false` | Enable the cron scheduler inside the Gateway |
| `enabled` | boolean | `true` | Enable the cron scheduler inside the Gateway (set to `false` to disable) |
| `store` | string | *(auto)* | Override the cron job store path (defaults to `~/.clawdis/cron/jobs.json` if present, otherwise `~/.clawdis/cron.json`) |
| `maxConcurrentRuns` | number | `1` | Max concurrent isolated cron runs (command-queue lane `"cron"`) |

View File

@@ -100,12 +100,14 @@ The scheduler should never require additional configuration for the base directo
## Enabling
Cron execution should be opt-in via config:
Cron execution is enabled by default inside the Gateway.
To disable it, set:
```json5
{
cron: {
enabled: true,
enabled: false,
// optional:
store: "~/.clawdis/cron.json",
maxConcurrentRuns: 1
@@ -113,6 +115,8 @@ Cron execution should be opt-in via config:
}
```
You can also disable scheduling via the environment variable `CLAWDIS_SKIP_CRON=1`.
## Scheduler design
### Ownership
@@ -344,7 +348,7 @@ Suggested log events:
- Respect existing allowlists/routing rules: delivery defaults should not send to arbitrary destinations unless explicitly configured.
- Provide a global “kill switch”:
- `cron.enabled: boolean` config default true (or false until enabled).
- `cron.enabled: boolean` (default `true`).
- `gateway method set-heartbeats` already exists; cron should have similar.
- Avoid persistence of sensitive payloads unless requested; job text may contain private content.

View File

@@ -15,7 +15,7 @@ async function warnIfCronSchedulerDisabled(opts: GatewayRpcOpts) {
defaultRuntime.error(
[
"warning: cron scheduler is disabled in the Gateway; jobs are saved but will not run automatically.",
"Enable with `cron.enabled: true` in your clawdis config and restart the Gateway.",
"Re-enable with `cron.enabled: true` (or remove `cron.enabled: false`) and restart the Gateway.",
store ? `store: ${store}` : "",
]
.filter(Boolean)

View File

@@ -387,7 +387,7 @@ export async function startGatewayServer(
});
const deps = createDefaultDeps();
const cronEnabled =
process.env.CLAWDIS_SKIP_CRON !== "1" && cfgAtStart.cron?.enabled === true;
process.env.CLAWDIS_SKIP_CRON !== "1" && cfgAtStart.cron?.enabled !== false;
const cron = new CronService({
storePath: cronStorePath,
cronEnabled,