Commit Graph

1009 Commits

Author SHA1 Message Date
Kaspre 072fa9b174 fix(wake): handle relative + agent-prefixed session keys consistently in cron adapter
Address review findings from successive codex rounds:

1. next-heartbeat + sessionKey now fires a targeted immediate wake.
   The regularly-scheduled heartbeat fires for the agent's main session,
   not the supplied sessionKey, so an event queued for a non-main session
   would sit stranded indefinitely; an "event"-intent wake is also
   deferred as not-due by the heartbeat runner and not retried, so
   neither path delivers without an explicit immediate wake.

2. resolveCronWakeTarget now always runs through resolveCronAgent, both
   for agent-prefixed session keys (so non-default agents are honored)
   and relative keys (so the configured default agent is used instead
   of the hardcoded "main" returned by resolveAgentIdFromSessionKey).
   Mirrors the matching fix in the enqueueSystemEvent adapter so wake
   and enqueue resolve to the same target.

3. Generated Swift `WakeParams` models now expose the new optional
   `sessionkey` field (codingKey "sessionKey") in both the macOS and
   shared OpenClawKit copies. Locally regenerated from agent.ts via
   protocol:gen + protocol:gen:swift would have produced this; the
   environment couldn't run the generators (fs-safe transitive
   typecheck errors), so the diff was applied by hand to match what
   pnpm protocol:check would output.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 17:24:30 +01:00
Kaspre 4ddd942f5f feat(wake): expose typed sessionKey on wake protocol + system event CLI
Adds an optional sessionKey to the WakeParamsSchema and threads it through
the gateway wake handler, CronService.wake(), and the underlying timer.wake()
ops so callers can target a specific session for async-task completion
relays instead of always hitting the agent's main session.

Also adds --session-key to `openclaw system event`.

The schema rejects empty/non-string sessionKey at the gateway boundary;
mismatched session keys (a key that does not belong to the resolving agent)
fall back to the agent's main session inside resolveCronSessionKey, which
is the existing safety path.

Refs #52305 (companion to PR #50818, which closes the related cron-run
remap slice at internal enqueue sites). Doesn't depend on #50818.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 17:24:30 +01:00
Shakker d4f3d4edad test: verify schema and timing messages 2026-05-11 17:18:19 +01:00
Shakker 4630076381 test: check cron timer handles 2026-05-11 16:19:50 +01:00
Peter Steinberger 402fa0e935 fix: keep cron heartbeat wakes on session route 2026-05-11 15:55:21 +01:00
Peter Steinberger 8ad588d9e6 test: tighten isolated cron assertions 2026-05-11 15:27:33 +01:00
Peter Steinberger 0ddf10ff89 test: tighten cron assertions 2026-05-11 15:22:15 +01:00
Shakker 54edf9513b test: pin cron channel delivery calls 2026-05-11 15:00:20 +01:00
Shakker 0abf14777d test: pin cron model switch retry 2026-05-11 14:57:04 +01:00
Feelw00 c1b59a95bf fix(cron): mark manual cron runs active (#78243)
Summary:
- Mark forced/manual cron runs active in the task registry until completion and clear them in finally.
- Add regression coverage for manual run success and failure cleanup.
- Update changelog for #78243 and apply a small lint-only test fix needed after rebasing on latest main.

Fixes #78233

Verification:
- pnpm test src/plugin-sdk/channel-streaming.test.ts src/cron/active-jobs-manual-run.test.ts
- pnpm run lint:extensions:bundled
- pnpm test extensions/codex/src/app-server/side-question.test.ts
- CI: https://github.com/openclaw/openclaw/actions/runs/25673031776

Co-authored-by: Feelw00 <dhrtn1006@naver.com>
2026-05-11 14:40:21 +01:00
Shakker 98f07a5387 test: pin cron delivery targets 2026-05-11 14:09:54 +01:00
Shakker 19a040ee88 test: pin cron session entries 2026-05-11 14:08:06 +01:00
Shakker 535348a1c7 test: pin cron main wake calls 2026-05-11 14:06:50 +01:00
Shakker 36d90ce431 test: pin cron read status 2026-05-11 14:05:33 +01:00
Shakker 7c75001492 test: pin cron diagnostics entries 2026-05-11 13:58:01 +01:00
Shakker a012bfb296 test: pin cron timer handles 2026-05-11 13:55:45 +01:00
Shakker 82cc6f1d25 test: pin cron schedule logs 2026-05-11 13:54:38 +01:00
Shakker 0fcddd3974 test: pin cron reaper store 2026-05-11 13:53:01 +01:00
Shakker 69c2bc58fa test: assert cron model diagnostics 2026-05-11 12:44:21 +01:00
Shakker 2d73d59905 test: assert cron store loads 2026-05-11 12:41:55 +01:00
Kaspre 7eefb26bc8 fix(heartbeat): remap cron-run exec events to session keys (#80214)
Summary:
- Remap cron-run async exec, ACP, node-event, and watchdog completion events to the queue heartbeat drains.
- Route per-sender cron-run events to the agent main queue and global-scope events to `global` while preserving the originating `agentId`.
- Tighten exec-completion classification and treat cron-run descendants as ephemeral for retention pruning.

Verification:
- CI: https://github.com/openclaw/openclaw/actions/runs/25625964382 passed.
- Real behavior proof: https://github.com/openclaw/openclaw/actions/runs/25666664248/job/75340798016 passed.
- PR targeted validation: `node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts src/routing/session-key.test.ts src/infra/heartbeat-events-filter.test.ts src/agents/bash-tools.exec-runtime.test.ts src/agents/acp-spawn-parent-stream.test.ts src/cron/session-reaper.test.ts`.
- PR targeted typecheck: `pnpm tsgo:core`.

Refs #52305.
Related: #18237, #14191.

Co-authored-by: Kaspre <kaspre@gmail.com>
2026-05-11 12:13:17 +01:00
Peter Steinberger 804edb10f3 test: tighten cron model preflight assertions 2026-05-11 10:08:30 +01:00
Peter Steinberger 6e6decf5d2 test: tighten cron sandbox config assertions 2026-05-11 10:04:37 +01:00
Peter Steinberger 37fac48f97 test: tighten cron session key assertions 2026-05-11 10:02:29 +01:00
Peter Steinberger 5a80be35e9 fix: track cron execution milestones 2026-05-11 06:14:22 +01:00
Peter Steinberger 7a26f74283 test: tighten cron catch-up assertions 2026-05-11 05:51:51 +01:00
Shakker a5ed3f28c1 test: tighten cron timer task ledger assertions 2026-05-11 05:10:38 +01:00
Peter Steinberger d356fc8f1a test: tighten cron ops regression assertions 2026-05-11 04:10:57 +01:00
Peter Steinberger 05fee92ee5 test: tighten cron ops assertions 2026-05-11 04:09:38 +01:00
Peter Steinberger 0d14f09dc9 test: tighten cron store assertions 2026-05-11 04:07:50 +01:00
Peter Steinberger c8f0d8911f test: tighten cron timer assertions 2026-05-10 23:46:00 +01:00
Peter Steinberger 8fa4ca481d test: tighten cron model override assertions 2026-05-10 23:01:43 +01:00
Peter Steinberger 4112e6bdc1 test: tighten cron failure alert assertions 2026-05-10 22:35:11 +01:00
Peter Steinberger 41859bb3fc fix: preserve cron lane timeout result 2026-05-10 19:03:17 +01:00
brokemac79 6e4d2d0ca2 fix cron nested lane timeout result 2026-05-10 19:03:17 +01:00
Peter Steinberger b387608ebd test: clear cron message tool broad matchers 2026-05-10 14:13:43 +01:00
Peter Steinberger a7aa5d98e3 test: clear cron dispatch broad matchers 2026-05-10 11:01:38 +01:00
Peter Steinberger 9160155902 fix(cron): delay cli model-start phase 2026-05-10 02:47:34 -04:00
Peter Steinberger 5b3e2497bd fix(cron): diagnose isolated pre-model stalls 2026-05-10 02:47:34 -04:00
Peter Steinberger 624af621e6 test: tighten cron failure notification assertions 2026-05-09 22:55:00 +01:00
Peter Steinberger 4ec277ca00 test: tighten cron isolated agent assertions 2026-05-09 22:53:45 +01:00
Shakker c7ab83e8ab test: speed up cron model override tests 2026-05-09 21:38:24 +01:00
奥森木 1f75d3c187 Cron: honor server_error retries (#45594)
Merged via squash.

Prepared head SHA: d2b1d73d32
Co-authored-by: clovericbot <258443621+clovericbot@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-05-09 20:10:29 +03:00
Peter Steinberger 55b4fc880c test: tighten cron event assertions 2026-05-09 12:34:05 +01:00
Shakker 01741f81f8 test: remove stale unused imports 2026-05-09 11:26:43 +01:00
Peter Steinberger a4b17d65a8 refactor: consolidate message delivery API 2026-05-09 07:04:04 +01:00
Shakker 7b73faaa7e test: tighten task empty array assertions 2026-05-09 05:13:55 +01:00
Shakker be3fd09ae0 test: tighten cron empty state assertions 2026-05-09 04:16:38 +01:00
Peter Steinberger 8562aa8ab2 test: tighten cron task cleanup assertion 2026-05-09 04:02:22 +01:00
Peter Steinberger aa6602a8fc test: dedupe cron store absence assertions 2026-05-09 02:34:48 +01:00