mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-22 06:59:03 +00:00
* feat(plugins): let requester commands schedule bounded follow-up turns Authenticated requester commands that opt into `scheduledTurns` can schedule bounded follow-up turns of the same command. Each occurrence restores the original requester under current policy, rechecks the exact parent session and loaded plugin instance, refuses direct model calls, and must route model work through admitted native subagents. - Bounds: deadline at most 7 days, maxRuns 1-100, 4 schedules per invocation and 8 active schedules per loaded plugin instance and parent session. Only enabled schedules of the same instance in the current Gateway process count. - Retirement: the scheduler disables the job and clears its next run in the same transaction that launches the final allowed attempt or finds it expired, exhausted, invalid or from a previous process. A replaced plugin instance retires the schedule on its first refusal. - v1 scope: schedules end when the Gateway restarts or the plugin reloads; plugins re-enroll from a later requester command. - Rows persist under a dedicated `pluginCommand` payload kind so hosts without this feature quarantine them instead of running a model prompt. - `command-scheduled-turns-v1` advertises support. - The session-event route predicates move to `timer-session-route.ts` so a scheduled occurrence can never prepare parent notices or prompt the model. * refactor(plugins): break scheduled command import cycles Move the stored schedule contract and its reserved message into `src/cron/plugin-command-schedule.types.ts`, and the native subagent request source into `src/agents/plugin-native-subagent.types.ts`, so cron types, creation and storage, and the native subagent runtime and scheduled turns no longer import each other. No behavior change. * test(plugins): prove queued scheduled children re-admit their requester A scheduled occurrence queues a native child, settles, and the child launches later through the real Gateway instance runtime. While the requester stays authorized the child passes the agent turn's admission revalidation; after the requester is demoted (committed and published as `users.setRole` does), the next queued child is refused at that admission, before any model runner. * test(plugins): close the agent turn runtime without awaiting a void result * fix(plugins): keep the native child list helper in command runtimes The command runtime projected `subagents` to spawn and collect so scheduling stays outside that object, which dropped the optional `list` helper added by #180274 for every command. Forward `list` when the native runtime provides it, and pin the exact helper set through a real command invocation. |
||
|---|---|---|
| .. | ||
| architecture-internals | ||
| codex-harness | ||
| codex-harness-reference | ||
| codex-harness-runtime | ||
| google-meet | ||
| hooks | ||
| manifest | ||
| reference | ||
| sdk-agent-harness | ||
| sdk-channel-plugins | ||
| sdk-entrypoints | ||
| sdk-migration | ||
| sdk-overview | ||
| sdk-provider-plugins | ||
| sdk-runtime | ||
| voice-call | ||
| adding-capabilities.md | ||
| admin-http-rpc.md | ||
| agent-guidance.md | ||
| agentsapi.md | ||
| apple-fm.md | ||
| architecture-internals.md | ||
| architecture.md | ||
| beam.md | ||
| building-plugins.md | ||
| bundles.md | ||
| cli-backend-plugins.md | ||
| cloudflare.md | ||
| codex-computer-use.md | ||
| codex-harness-reference.md | ||
| codex-harness-runtime.md | ||
| codex-harness.md | ||
| codex-native-plugins.md | ||
| codex-supervision.md | ||
| community.md | ||
| compatibility.md | ||
| copilot.md | ||
| dependency-resolution.md | ||
| facetime-recovery.md | ||
| facetime.md | ||
| feature-plugins.md | ||
| geolocation.md | ||
| github.md | ||
| google-meet.md | ||
| hooks.md | ||
| install-overrides.md | ||
| llama-cpp.md | ||
| logbook.md | ||
| manage-plugins.md | ||
| manifest.md | ||
| mcp-relay.md | ||
| meeting-plugins.md | ||
| memory-lancedb.md | ||
| memory-wiki.md | ||
| message-presentation.md | ||
| muse.md | ||
| oc-path.md | ||
| onepassword.md | ||
| onnx.md | ||
| plugin-inventory.md | ||
| plugin-permission-requests.md | ||
| reference.md | ||
| sdk-agent-harness.md | ||
| sdk-channel-inbound.md | ||
| sdk-channel-ingress.md | ||
| sdk-channel-outbound.md | ||
| sdk-channel-plugins.md | ||
| sdk-entrypoints.md | ||
| sdk-gateway-ingress.md | ||
| sdk-migration.md | ||
| sdk-overview.md | ||
| sdk-provider-plugins.md | ||
| sdk-runtime.md | ||
| sdk-setup.md | ||
| sdk-subpaths.md | ||
| sdk-testing.md | ||
| session-share.md | ||
| slack-huddles.md | ||
| subq.md | ||
| team-reports.md | ||
| teams-meetings.md | ||
| tool-plugins.md | ||
| typesafe.md | ||
| vault.md | ||
| voice-call.md | ||
| workboard.md | ||
| zalouser.md | ||
| zoom-meetings.md | ||