openclaw/docs/plugins
Jason (Json) ad407430c4
feat(plugins): let requester commands schedule bounded follow-up turns (#180282)
* 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.
2026-10-21 23:40:03 -07:00
..
architecture-internals refactor(plugins): remove unread activation explanations (#177866) 2026-10-19 18:11:05 -07:00
codex-harness fix(doctor): keep the Codex host compaction model during repair (#179914) 2026-10-21 14:31:38 -07:00
codex-harness-reference feat(codex): enforce Gateway tool policy for model callbacks (#174565) 2026-10-21 13:01:51 -07:00
codex-harness-runtime perf(codex): avoid spawning Linux process inspection helpers (#179936) 2026-10-21 15:43:05 -07:00
google-meet
hooks fix: prevent oversized plugin context from blocking fresh turns (#176871) 2026-10-18 22:15:24 -07:00
manifest feat(plugins): let requester commands schedule bounded follow-up turns (#180282) 2026-10-21 23:40:03 -07:00
reference feat(clawrouter): support batch audio transcription (#178920) 2026-10-21 15:45:48 -07:00
sdk-agent-harness perf(agents): share tool invocation argument snapshots (#179143) 2026-10-21 10:17:04 -07:00
sdk-channel-plugins fix(discord): hide tool activity in default progress messages (#176470) 2026-10-19 05:23:22 +08:00
sdk-entrypoints feat(plugins): warn when providers close tool dictionaries (#180041) 2026-10-21 18:56:23 -07:00
sdk-migration refactor(automations): retire heartbeat SDK and scheduling entry points (#180106) 2026-10-21 19:20:05 -07:00
sdk-overview fix(memory): restore PostgreSQL keyword influence in hybrid search (#178714) 2026-10-20 20:19:27 +00:00
sdk-provider-plugins ClawRouter: use OpenAI hosted web search when the catalog admits it, and keep its source links (#179903) 2026-10-21 18:10:30 -07:00
sdk-runtime feat(plugins): let requester commands schedule bounded follow-up turns (#180282) 2026-10-21 23:40:03 -07:00
voice-call fix(voice-call): resolve per-number TTS SecretRefs (#128319) 2026-10-21 09:03:45 -07:00
adding-capabilities.md docs: simplify plugin sdk and authoring docs (#168701) 2026-10-13 00:28:25 -07:00
admin-http-rpc.md
agent-guidance.md feat(plugins): add optional agent-guidance plugin (#173602) 2026-10-15 19:47:21 -07:00
agentsapi.md refactor(plugins): retire 13 top-level SDK methods (#177829) 2026-10-19 22:06:19 -07:00
apple-fm.md
architecture-internals.md
architecture.md fix(plugins): tolerate ctime-only stat drift in native companion admission (#179949) 2026-10-22 01:05:05 +00:00
beam.md fix(beam): pause mirrors with unavailable credentials (#176510) 2026-10-18 21:51:18 +00:00
building-plugins.md docs(plugins): sync publish examples with canonical package snippet 2026-10-20 16:16:35 -07:00
bundles.md fix(lsp): bundle LSP servers inherit Gateway secrets (#179415) 2026-10-21 22:01:19 -04:00
cli-backend-plugins.md fix(anthropic): interrupt yielded Claude CLI turns (#176893) 2026-10-18 21:50:16 -07:00
cloudflare.md fix: resume interrupted R2 backup verification and restore (#171292) 2026-10-13 13:17:56 -07:00
codex-computer-use.md chore: update all dependencies with seven-day cutoff (#171658) 2026-10-14 23:21:47 -07:00
codex-harness-reference.md
codex-harness-runtime.md fix(codex): allow follow-up replies while background listeners run (#171963) 2026-10-15 02:27:57 -07:00
codex-harness.md fix(codex): count rejected tool attempts (#168830) 2026-10-21 08:48:59 -07:00
codex-native-plugins.md feat(codex): support read-only plugin tools (#180030) 2026-10-21 20:23:44 -07:00
codex-supervision.md perf(ui): reduce idle native session catalog polling (#174404) 2026-10-16 10:05:38 -07:00
community.md feat(plugins): default package installs to ClawHub (#173669) 2026-10-16 22:07:52 +00:00
compatibility.md refactor(plugins): drop unused compatibility inventories (#178352) 2026-10-20 04:42:02 -07:00
copilot.md fix: Tool Search uses one dispatcher name across providers (#169552) 2026-10-12 20:43:43 -07:00
dependency-resolution.md
facetime-recovery.md
facetime.md refactor(plugins): remove older-host fallback paths (#171633) 2026-10-13 21:25:19 -07:00
feature-plugins.md perf(ui): reduce dashboard and chat reload RPC fan-out (#179157) 2026-10-21 02:07:36 -07:00
geolocation.md perf(geolocation): release idle city database readers (#176512) 2026-10-18 14:54:34 -07:00
github.md perf(github): show cached hover previews without forced refresh (#179167) 2026-10-21 00:56:30 -07:00
google-meet.md
hooks.md
install-overrides.md
llama-cpp.md fix(llama-cpp): name the missing system library when the managed llama-server can't load (#180190) 2026-10-21 19:55:47 -07:00
logbook.md refactor: trust prepared feature-plugin facts (#173426) 2026-10-15 16:41:29 -07:00
manage-plugins.md feat(plugins): default package installs to ClawHub (#173669) 2026-10-16 22:07:52 +00:00
manifest.md feat(matrix): account-root state databases follow the selected engine (#174315) 2026-10-16 08:48:53 -07:00
mcp-relay.md docs: explain Codex setup, linked Gateways, and Team access for MCP Relay (#171575) 2026-10-13 20:09:42 -07:00
meeting-plugins.md fix(meetings): report failed startup cleanup (#177085) 2026-10-19 01:49:34 -07:00
memory-lancedb.md refactor: simplify older plugin and package lifecycles (#170800) 2026-10-13 01:29:12 -07:00
memory-wiki.md feat(automations): migrate heartbeat jobs through Doctor (#179387) 2026-10-21 05:46:54 -07:00
message-presentation.md fix(agents): gate ask_user by channel capability (#130223) 2026-10-15 22:47:51 -07:00
muse.md fix: show recommended Wonder and distinct Muse model names (#175806) 2026-10-17 13:29:38 -07:00
oc-path.md refactor(plugins): keep single-consumer registration with plugin owners (#176538) 2026-10-18 17:36:22 -07:00
onepassword.md fix(onepassword): preserve redacted resolver failure details (#177060) 2026-10-19 00:31:39 -07:00
onnx.md feat(onnx): use prepared decision model execution (#174162) 2026-10-17 08:00:10 +08:00
plugin-inventory.md feat: add Bifrost gateway setup and model discovery (#175509) 2026-10-20 13:28:34 -07:00
plugin-permission-requests.md docs: simplify plugin sdk and authoring docs (#168701) 2026-10-13 00:28:25 -07:00
reference.md feat: add Bifrost gateway setup and model discovery (#175509) 2026-10-20 13:28:34 -07:00
sdk-agent-harness.md
sdk-channel-inbound.md fix(reply): preserve older plugin debounce callbacks (#118011) 2026-10-21 10:22:57 -07:00
sdk-channel-ingress.md refactor: prepare synchronous SQLite SDK retirement (#171775) 2026-10-14 07:12:12 -07:00
sdk-channel-outbound.md perf(channels): claim idle ingress during durable admission (#175459) 2026-10-17 05:45:17 -07:00
sdk-channel-plugins.md fix(slack): default account stops starting once a named account is added (#176267) 2026-10-20 23:29:10 -07:00
sdk-entrypoints.md feat(clawrouter): support native typed Decisions 2026-10-20 19:23:31 -06:00
sdk-gateway-ingress.md feat: support principal-bound remote Control UI for trusted plugins (#170540) 2026-10-12 23:13:38 -07:00
sdk-migration.md refactor(automations): retire heartbeat SDK and scheduling entry points (#180106) 2026-10-21 19:20:05 -07:00
sdk-overview.md
sdk-provider-plugins.md fix(clawrouter): Fast unavailable for supported models (#178875) 2026-10-20 18:29:02 -07:00
sdk-runtime.md feat(plugins): expose requester-scoped model catalogs (#180283) 2026-10-21 21:42:29 -07:00
sdk-setup.md docs(plugins): sync publish examples with canonical package snippet 2026-10-20 16:16:35 -07:00
sdk-subpaths.md refactor(automations): retire heartbeat SDK and scheduling entry points (#180106) 2026-10-21 19:20:05 -07:00
sdk-testing.md refactor(core): remove private provider and container test facades (#177278) 2026-10-19 06:16:39 -07:00
session-share.md fix(session-share): report node discovery failures in the catalog (#175532) 2026-10-17 06:00:20 -07:00
slack-huddles.md
subq.md feat: use SubQ Snap for typed decisions (#171965) 2026-10-19 01:25:58 +00:00
team-reports.md perf(plugins): initialize Team Reports and the sessions board after service start (#173872) 2026-10-16 00:25:53 -07:00
teams-meetings.md
tool-plugins.md feat(plugins): warn when providers close tool dictionaries (#180041) 2026-10-21 18:56:23 -07:00
typesafe.md feat(typesafe): support prepared Decision V2 batches (#158565) 2026-10-20 12:58:55 +08:00
vault.md
voice-call.md
workboard.md perf(workboard): share dashboard board summaries (#179090) 2026-10-20 23:29:48 -07:00
zalouser.md
zoom-meetings.md