Peter Steinberger
b8b8a5f314
fix(security): enforce explicit ingress owner context
2026-03-02 23:50:36 +00:00
Peter Steinberger
58659b931b
fix(gateway): enforce owner boundary for agent runs
2026-03-02 00:27:44 +00:00
Peter Steinberger
4c43fccb3e
feat(agents): use structured internal completion events
2026-03-01 23:11:48 +00:00
Jarvis
fcb6859784
fix(memoryFlush): correct context token accounting for flush gating ( #5343 )
...
Merged via squash.
Prepared head SHA: afaa7bae3b18a470928a14eea306c9b91957ba90
Co-authored-by: jarvis-medmatic <252428873+jarvis-medmatic@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-02-28 16:54:57 -08:00
Peter Steinberger
7ef6623bf3
fix: forward resolved session key in agent delivery (follow-up #27584 by @qualiobra)
...
Co-authored-by: Lucas Teixeira Campos Araujo <lucas@MacBook-Pro-de-Lucas.local >
2026-02-26 21:18:15 +00:00
Peter Steinberger
712e231725
fix(agent): forward resolved outbound session context for delivery
2026-02-26 22:14:22 +01:00
Peter Steinberger
a1628d89ec
refactor: unify outbound session context wiring
2026-02-26 21:03:28 +01:00
Lucas Teixeira Campos Araujo
a4408a917e
fix: pass sessionKey to deliverOutboundPayloads for message:sent hook dispatch
...
Several call sites of deliverOutboundPayloads() were not passing the
sessionKey parameter, causing the internal message:sent hook to never
fire (the guard `if (!sessionKeyForInternalHooks) return` in deliver.ts
silently skipped the triggerInternalHook call).
Fixed call sites:
- commands/agent/delivery.ts (agent loop replies — main fix)
- infra/heartbeat-runner.ts (heartbeat OK + alert delivery)
- infra/outbound/message.ts (message tool sends)
- cron/isolated-agent/delivery-dispatch.ts (cron job delivery)
- gateway/server-node-events.ts (node event forwarding)
The sessionKey parameter already existed in DeliverOutboundPayloadsCoreParams
and was used by deliver.ts to emit the message:sent internal hook event,
but was simply not being passed from most callers.
2026-02-26 19:56:27 +00:00
Onur Solmaz
a7d56e3554
feat: ACP thread-bound agents ( #23580 )
...
* docs: add ACP thread-bound agents plan doc
* docs: expand ACP implementation specification
* feat(acp): route ACP sessions through core dispatch and lifecycle cleanup
* feat(acp): add /acp commands and Discord spawn gate
* ACP: add acpx runtime plugin backend
* fix(subagents): defer transient lifecycle errors before announce
* Agents: harden ACP sessions_spawn and tighten spawn guidance
* Agents: require explicit ACP target for runtime spawns
* docs: expand ACP control-plane implementation plan
* ACP: harden metadata seeding and spawn guidance
* ACP: centralize runtime control-plane manager and fail-closed dispatch
* ACP: harden runtime manager and unify spawn helpers
* Commands: route ACP sessions through ACP runtime in agent command
* ACP: require persisted metadata for runtime spawns
* Sessions: preserve ACP metadata when updating entries
* Plugins: harden ACP backend registry across loaders
* ACPX: make availability probe compatible with adapters
* E2E: add manual Discord ACP plain-language smoke script
* ACPX: preserve streamed spacing across Discord delivery
* Docs: add ACP Discord streaming strategy
* ACP: harden Discord stream buffering for thread replies
* ACP: reuse shared block reply pipeline for projector
* ACP: unify streaming config and adopt coalesceIdleMs
* Docs: add temporary ACP production hardening plan
* Docs: trim temporary ACP hardening plan goals
* Docs: gate ACP thread controls by backend capabilities
* ACP: add capability-gated runtime controls and /acp operator commands
* Docs: remove temporary ACP hardening plan
* ACP: fix spawn target validation and close cache cleanup
* ACP: harden runtime dispatch and recovery paths
* ACP: split ACP command/runtime internals and centralize policy
* ACP: harden runtime lifecycle, validation, and observability
* ACP: surface runtime and backend session IDs in thread bindings
* docs: add temp plan for binding-service migration
* ACP: migrate thread binding flows to SessionBindingService
* ACP: address review feedback and preserve prompt wording
* ACPX plugin: pin runtime dependency and prefer bundled CLI
* Discord: complete binding-service migration cleanup and restore ACP plan
* Docs: add standalone ACP agents guide
* ACP: route harness intents to thread-bound ACP sessions
* ACP: fix spawn thread routing and queue-owner stall
* ACP: harden startup reconciliation and command bypass handling
* ACP: fix dispatch bypass type narrowing
* ACP: align runtime metadata to agentSessionId
* ACP: normalize session identifier handling and labels
* ACP: mark thread banner session ids provisional until first reply
* ACP: stabilize session identity mapping and startup reconciliation
* ACP: add resolved session-id notices and cwd in thread intros
* Discord: prefix thread meta notices consistently
* Discord: unify ACP/thread meta notices with gear prefix
* Discord: split thread persona naming from meta formatting
* Extensions: bump acpx plugin dependency to 0.1.9
* Agents: gate ACP prompt guidance behind acp.enabled
* Docs: remove temp experiment plan docs
* Docs: scope streaming plan to holy grail refactor
* Docs: refactor ACP agents guide for human-first flow
* Docs/Skill: add ACP feature-flag guidance and direct acpx telephone-game flow
* Docs/Skill: add OpenCode and Pi to ACP harness lists
* Docs/Skill: align ACP harness list with current acpx registry
* Dev/Test: move ACP plain-language smoke script and mark as keep
* Docs/Skill: reorder ACP harness lists with Pi first
* ACP: split control-plane manager into core/types/utils modules
* Docs: refresh ACP thread-bound agents plan
* ACP: extract dispatch lane and split manager domains
* ACP: centralize binding context and remove reverse deps
* Infra: unify system message formatting
* ACP: centralize error boundaries and session id rendering
* ACP: enforce init concurrency cap and strict meta clear
* Tests: fix ACP dispatch binding mock typing
* Tests: fix Discord thread-binding mock drift and ACP request id
* ACP: gate slash bypass and persist cleared overrides
* ACPX: await pre-abort cancel before runTurn return
* Extension: pin acpx runtime dependency to 0.1.11
* Docs: add pinned acpx install strategy for ACP extension
* Extensions/acpx: enforce strict local pinned startup
* Extensions/acpx: tighten acp-router install guidance
* ACPX: retry runtime test temp-dir cleanup
* Extensions/acpx: require proactive ACPX repair for thread spawns
* Extensions/acpx: require restart offer after acpx reinstall
* extensions/acpx: remove workspace protocol devDependency
* extensions/acpx: bump pinned acpx to 0.1.13
* extensions/acpx: sync lockfile after dependency bump
* ACPX: make runtime spawn Windows-safe
* fix: align doctor-config-flow repair tests with default-account migration (#23580 ) (thanks @osolmaz)
2026-02-26 11:00:09 +01:00
byungsker
177386ed73
fix(tui): resolve wrong provider prefix when session has model without modelProvider ( #25874 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f0953a72845fb3f9e8745cb6ab476cea7a5cd98b
Co-authored-by: lbo728 <72309817+lbo728@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-25 00:36:27 -05:00
Peter Steinberger
885452f5c1
fix: fail-closed shared-session reply routing ( #24571 ) (thanks @brandonwise)
2026-02-25 02:11:34 +00:00
Vincent Koc
f03ff39754
Providers: skip context1m beta for Anthropic OAuth tokens ( #24620 )
...
* Providers: skip context1m beta for Anthropic OAuth tokens
* Tests: cover OAuth context1m beta skip behavior
* Docs: note context1m OAuth incompatibility
* Agents: add context1m-aware context token resolver
* Agents: cover context1m context-token resolver
* Commands: apply context1m-aware context tokens in session store
* Commands: apply context1m-aware context tokens in status summary
* Status: resolve context tokens with context1m model params
* Status: test context1m status context display
2026-02-23 12:29:09 -05:00
Peter Steinberger
1cd3b30907
fix: stop hardcoded channel fallback and auto-pick sole configured channel ( #23357 ) (thanks @lbo728)
...
Co-authored-by: lbo728 <extreme0728@gmail.com >
2026-02-22 11:21:43 +01:00
Vishal
f1e1cc4ee3
feat: surface cached token counts in /status output (openclaw#21248) thanks @vishaltandale00
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: vishaltandale00 <9222298+vishaltandale00@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-19 21:06:13 -06:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
cpojer
6264c5e842
chore: Fix types in tests 41/N.
2026-02-17 15:50:07 +09:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
f717a13039
refactor(agent): dedupe harness and command workflows
2026-02-16 14:59:30 +00:00
Mr. Guy
e927fd1e35
fix: allow agent workspace directories in media local roots ( #17136 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7545ef1e1901a5bfd33aaa55a2320e003ea39126
Co-authored-by: MisterGuy420 <255743668+MisterGuy420@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-15 10:53:45 -05:00
Peter Steinberger
2086cdfb9b
perf(test): reduce hot-suite import and setup overhead
2026-02-13 20:26:39 +00:00
Marcus Castro
eed8cd383f
fix(agent): search all agent stores when resolving --session-id ( #13579 )
...
* fix(agent): search all agent stores when resolving --session-id
When `--session-id` was provided without `--to` or `--agent`, the reverse
lookup only searched the default agent's session store. Sessions created
under a specific agent (e.g. `--agent mybot`) live in that agent's store
file, so the lookup silently failed and the session was not reused.
Now `resolveSessionKeyForRequest` iterates all configured agent stores
when the primary store doesn't contain the requested sessionId.
Fixes #12881
* fix: search other agent stores when --to key does not match --session-id
When --to derives a session key whose stored sessionId doesn't match the
requested --session-id, the cross-store search now also runs. This handles
the case where a user provides both --to and --session-id targeting a
session in a different agent's store.
2026-02-13 18:46:54 +01:00
青雲
fd076eb43a
fix: /status shows incorrect context percentage — totalTokens clamped to contextTokens ( #15114 ) ( #15133 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: a489669fc7e86db03484ef5a0ae222d9360e72f7
Co-authored-by: echoVic <16428813+echoVic@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-12 23:52:19 -05:00
Peter Steinberger
85409e401b
fix: preserve inter-session input provenance (thanks @anbecker)
2026-02-13 02:02:01 +01:00
Vladimir Peshekhonov
957b883082
fix(agents): stabilize overflow compaction retries and session context accounting (openclaw#14102) thanks @vpesh
...
Verified:
- CI checks for commit 86a7ecb45ebf0be61dce9261398000524fd9fab6
- Rebase conflict resolution for compatibility with latest main
Co-authored-by: vpesh <9496634+vpesh@users.noreply.github.com >
2026-02-12 17:53:13 -06:00
Tyler Yust
191da1feb5
fix: context overflow compaction and subagent announce improvements ( #11664 ) (thanks @tyler6204)
...
* initial commit
* feat: implement deriveSessionTotalTokens function and update usage tests
* Added deriveSessionTotalTokens function to calculate total tokens based on usage and context tokens.
* Updated usage tests to include cases for derived session total tokens.
* Refactored session usage calculations in multiple files to utilize the new function for improved accuracy.
* fix: restore overflow truncation fallback + changelog/test hardening (#11551 ) (thanks @tyler6204)
2026-02-07 20:02:32 -08:00
Clawdbot
a13efbe2b5
fix: pass threadId/to/accountId from parent to subagent gateway call
...
When spawning a subagent, the requesterOrigin's threadId, to, and
accountId were not forwarded to the callGateway({method:'agent'}) params.
This meant the subagent's runContext had no currentThreadTs or
currentChannelId, so resolveTelegramAutoThreadId could not auto-inject
the forum topic thread ID when the subagent used the message tool.
Changes:
- sessions-spawn-tool: pass to, accountId, threadId from requesterOrigin
- run-context: populate currentChannelId from opts.to as fallback
Fixes subagent messages landing in General Topic instead of the correct
Telegram DM topic thread.
2026-02-06 00:23:04 +05:30
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Peter Steinberger
9d98e55ed5
fix: enforce group tool policy inheritance for subagents ( #1557 ) (thanks @adam91holt)
2026-01-24 05:49:39 +00:00
Echo
c415ccaed5
feat(sessions): add channelIdleMinutes config for per-channel session idle durations ( #1353 )
...
* feat(sessions): add channelIdleMinutes config for per-channel session idle durations
Add new `channelIdleMinutes` config option to allow different session idle
timeouts per channel. For example, Discord sessions can now be configured
to last 7 days (10080 minutes) while other channels use shorter defaults.
Config example:
sessions:
channelIdleMinutes:
discord: 10080 # 7 days
The channel-specific idle is passed as idleMinutesOverride to the existing
resolveSessionResetPolicy, integrating cleanly with the new reset policy
architecture.
* fix
* feat: add per-channel session reset overrides (#1353 ) (thanks @cash-echo-bot)
---------
Co-authored-by: Cash Williams <cashwilliams@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-01-21 19:10:31 +00:00
Peter Steinberger
17f3635109
fix: preserve restart routing + thread replies ( #1337 ) (thanks @John-Rood)
...
Co-authored-by: John-Rood <John-Rood@users.noreply.github.com >
Co-authored-by: Outdoor <outdoor@users.noreply.github.com >
2026-01-21 01:20:25 +00:00
Peter Steinberger
02ca148583
fix: preserve subagent thread routing ( #1241 )
...
Thanks @gnarco.
Co-authored-by: gnarco <gnarco@users.noreply.github.com >
2026-01-20 17:22:07 +00:00
Peter Steinberger
bbc67f3754
fix: expand /v1/responses inputs ( #1229 ) (thanks @RyanLisse)
2026-01-20 07:37:30 +00:00
Ryan Lisse
a5afe7bc2b
feat(gateway): implement OpenResponses /v1/responses endpoint phase 2
...
- Add input_image and input_file support with SSRF protection
- Add client-side tools (Hosted Tools) support
- Add turn-based tool flow with function_call_output handling
- Export buildAgentPrompt for testing
2026-01-20 07:37:01 +00:00
Peter Steinberger
989543c9c3
fix: propagate agent run context for subagent announce
2026-01-19 00:45:30 +00:00
Peter Steinberger
404c373153
feat: add agent targeting + reply overrides
2026-01-18 22:50:51 +00:00
Peter Steinberger
f5c84768ff
chore(format): oxfmt
2026-01-18 07:14:40 +00:00
Peter Steinberger
367826f6e4
feat(session): add daily reset policy
...
Co-authored-by: Austin Mudd <austinm911@gmail.com >
2026-01-18 06:37:37 +00:00
Peter Steinberger
96df70fccf
fix: add nested agent log context
2026-01-17 18:59:59 +00:00
Peter Steinberger
7cebe7a506
style: run oxfmt
2026-01-17 08:00:05 +00:00
Peter Steinberger
7b31b280f8
refactor: reuse agent outbound target resolution
...
Co-authored-by: Adam Holt <mail@adamholt.co.nz >
2026-01-17 06:54:31 +00:00
Peter Steinberger
65a8a93854
fix: normalize delivery routing context
...
Co-authored-by: adam91holt <adam91holt@users.noreply.github.com >
2026-01-17 06:38:33 +00:00
Peter Steinberger
285ed8bac3
fix: sync delivery routing context
...
Co-authored-by: adam91holt <adam91holt@users.noreply.github.com >
2026-01-17 06:02:27 +00:00
Peter Steinberger
e59d8c5436
style: oxfmt format
2026-01-17 05:48:56 +00:00
Peter Steinberger
572e04d5fb
refactor(cli): split outbound send deps
2026-01-17 05:06:39 +00:00