Peter Steinberger
29dde80c3e
fix: harden message hook session/group context and add integration coverage ( #9859 ) (thanks @Drickon)
2026-03-02 22:34:43 +00:00
Eric Lytle
b5102ba4f9
fix(hooks): add isGroup and groupId to message:sent context
...
Adds group context fields to MessageSentHookContext so hooks can
correlate sent events with received events for the same conversation.
Previously, message:received included isGroup/groupId but message:sent
did not, forcing hooks to use mismatched identifiers (e.g. groupId vs
numeric chat ID) when tracking conversations.
Fields are derived from MsgContext in dispatch-from-config and threaded
through route-reply and deliver via the mirror parameter.
Addresses feedback from matskevich (production user, 550+ events)
reported on PR #6797 .
2026-03-02 22:34:43 +00:00
Eric Lytle
e0b8b80067
feat(hooks): add message:transcribed and message:preprocessed internal hooks
...
Adds two new internal hook events that fire after media/link processing:
- message:transcribed: fires when audio has been transcribed, providing
the transcript text alongside the original body and media metadata.
Useful for logging, analytics, or routing based on spoken content.
- message:preprocessed: fires for every message after all media + link
understanding completes. Gives hooks access to the fully enriched body
(transcripts, image descriptions, link summaries) before the agent sees it.
Both hooks are added in get-reply.ts, after applyMediaUnderstanding and
applyLinkUnderstanding. message:received and message:sent are already
in upstream (f07bb8e8) and are not duplicated here.
Typed contexts (MessageTranscribedHookContext, MessagePreprocessedHookContext)
and type guards (isMessageTranscribedEvent, isMessagePreprocessedEvent) added
to internal-hooks.ts alongside the existing received/sent types.
Test coverage in src/hooks/message-hooks.test.ts.
2026-03-02 22:34:43 +00:00
Peter Steinberger
3beb1b9da9
test: speed up heavy suites with shared fixtures
2026-03-02 21:58:35 +00:00
Peter Steinberger
9617ac9dd5
refactor: dedupe agent and reply runtimes
2026-03-02 19:57:33 +00:00
Peter Steinberger
b645654923
fix: avoid stale followup drain callbacks ( #31902 ) (thanks @Lanfei)
2026-03-02 19:38:08 +00:00
Jealous
60130203e1
fix(queue): restart drain when message enqueued after idle window
...
After a drain loop empties the queue it deletes the key from
FOLLOWUP_QUEUES. If a new message arrives at that moment
enqueueFollowupRun creates a fresh queue object with draining:false
but never starts a drain, leaving the message stranded until the
next run completes and calls finalizeWithFollowup.
Fix: persist the most recent runFollowup callback per queue key in
FOLLOWUP_RUN_CALLBACKS (drain.ts). enqueueFollowupRun now calls
kickFollowupDrainIfIdle after a successful push; if a cached
callback exists and no drain is running it calls scheduleFollowupDrain
to restart immediately. clearSessionQueues cleans up the callback
cache alongside the queue state.
2026-03-02 19:38:08 +00:00
stone-jin
2a98fd3d0b
fix(slack): guard against undefined text in includes calls during mention handling
2026-03-02 19:00:08 +00:00
Lucenx9
5c1eb071ca
fix(whatsapp): restore direct inbound metadata for relay agents ( #31969 )
...
* fix(whatsapp): restore direct inbound metadata for relay agents
* fix(auto-reply): use shared inbound channel resolver for direct metadata
* chore(ci): retrigger checks after base update
* fix: add changelog attribution for inbound metadata relay fix (#31969 ) (thanks @Lucenx9)
---------
Co-authored-by: Simone <simone@example.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-02 18:40:04 +00:00
liuxiaopai-ai
740bb77c8c
fix(reply): prefer provider over surface for run channel fallback
2026-03-02 18:37:00 +00:00
Peter Steinberger
07b16d5ad0
fix(security): harden workspace bootstrap boundary reads
2026-03-02 17:07:36 +00:00
Peter Steinberger
4a80311628
refactor(security): split sandbox media staging and stream safe copies
2026-03-02 16:53:14 +00:00
Peter Steinberger
17ede52a4b
fix(security): harden sandbox media staging destination writes
2026-03-02 16:35:08 +00:00
Peter Steinberger
2fd8264ab0
refactor(gateway): hard-break plugin wildcard http handlers
2026-03-02 16:24:06 +00:00
Keenan
050e928985
[codex] Fix main-session web UI reply routing to Telegram (openclaw#29328) thanks @BeeSting50
...
Verified:
- pnpm test src/auto-reply/reply/dispatch-from-config.test.ts src/gateway/server-methods/chat.directive-tags.test.ts
- pnpm exec oxfmt --check src/auto-reply/reply/dispatch-from-config.test.ts src/gateway/server-methods/chat.directive-tags.test.ts src/auto-reply/reply/dispatch-from-config.ts src/gateway/server-methods/chat.ts CHANGELOG.md
- CI note: non-required check "check" failed on unrelated src/slack/monitor/events/messages.ts TS errors outside this PR scope.
Co-authored-by: BeeSting50 <85285887+BeeSting50@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-02 07:54:16 -06:00
Jared Grimes
aa5d173bec
fix(feishu): prevent duplicate delivery when message tool uses generic provider (openclaw#31538) thanks @jlgrimes
...
Verified:
- pnpm exec vitest run src/auto-reply/reply/agent-runner-payloads.test.ts src/auto-reply/reply/followup-runner.test.ts
- pnpm check (fails on unrelated baseline type errors outside PR scope)
Co-authored-by: jlgrimes <8084595+jlgrimes@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-02 07:35:58 -06:00
Peter Steinberger
b02b94673f
refactor: dedupe runtime and helper flows
2026-03-02 12:55:47 +00:00
Peter Steinberger
7e29d604ba
test(agents): dedupe agent and cron test scaffolds
2026-03-02 07:13:10 +00:00
Tyler Yust
f918b336d1
fix: agent-only announce path, BB message IDs, sender identity, SSRF allowlist ( #23970 )
...
* fix(agents): defer announces until descendant cleanup settles
* fix(bluebubbles): harden message metadata extraction
* feat(contributors): rank by composite score (commits, PRs, LOC, tenure)
* refactor(control-ui): move method guard after path checks to improve request handling
* fix subagent completion announce when only current run is pending
* fix(subagents): keep orchestrator runs active until descendants finish
* fix: prepare PR feedback follow-ups (#23970 ) (thanks @tyler6204)
2026-03-01 22:52:11 -08:00
Peter Steinberger
5b8f492a48
fix(security): harden spoofed system marker handling
2026-03-02 06:19:16 +00:00
Peter Steinberger
a13586619b
test: move integration-heavy suites to e2e lane
2026-03-02 05:33:07 +00:00
Peter Steinberger
6b78544f82
refactor(commands): unify repeated ACP and routing flows
2026-03-02 05:20:19 +00:00
Peter Steinberger
6fc0787bf0
chore(deps): bump workspace dependencies
2026-03-02 04:22:33 +00:00
Mark L
0f2dce0483
fix(agents): prioritize per-model thinking defaults ( #30439 )
...
* fix(agents): honor per-model thinking defaults
* fix(agents): preserve thinking fallback with model defaults
---------
Co-authored-by: Mark L <73659136+markliuyuxiang@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-02 04:00:02 +00:00
Peter Steinberger
0202d79df4
fix(inbound-meta): land #30984 include account_id context (@Stxle2)
...
Landed from contributor PR #30984 by @Stxle2.
Co-authored-by: Stxle2 <166609401+Stxle2@users.noreply.github.com>
2026-03-02 03:36:48 +00:00
Ayaan Zaidi
c13b35b83d
feat(telegram): improve DM topics support ( #30579 ) (thanks @kesor)
2026-03-02 09:06:45 +05:30
Peter Steinberger
072e1e9e38
test(session): cover internal route without external fallback
2026-03-02 03:33:12 +00:00
graysurf
95db5bb5e8
fix(session): preserve external lastTo routing for internal turns
2026-03-02 03:33:12 +00:00
Vincent Koc
1a42ea3abf
fix(auto-reply): normalize block-reply callback to Promise for timeout path ( #31200 )
...
* Auto-reply: wrap block reply callback in Promise.resolve for timeout safety
* Build: add strict smoke build script for CI regression gating
* CI: gate strict TS smoke build in check workflow
* docs(changelog): add auto-reply block reply timeout fix under Unreleased
* docs(changelog): credit original #19779 contributor and vincentkoc
2026-03-01 19:23:38 -08:00
Jose E Velez
0c8fa63b93
feat: lightweight bootstrap context mode for heartbeat/cron runs (openclaw#26064) thanks @jose-velez
...
Verified:
- pnpm build
- pnpm check (fails on pre-existing unrelated repo issues in extensions/diffs and src/agents/tools/nodes-tool.test.ts)
- pnpm vitest run src/agents/bootstrap-files.test.ts src/infra/heartbeat-runner.model-override.test.ts src/cli/cron-cli.test.ts
- pnpm test:macmini (fails on pre-existing extensions/diffs import errors; touched suites pass)
Co-authored-by: jose-velez <10926182+jose-velez@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-01 20:13:24 -06:00
Peter Steinberger
a6a742f3d0
fix(auto-reply): land #31080 from @scoootscooob
...
Co-authored-by: scoootscooob <zhentongfan@gmail.com>
2026-03-02 01:17:42 +00:00
Peter Steinberger
412eabc42b
fix(session): retire stale dm main route after dmScope migration ( #31010 )
2026-03-02 00:33:54 +00:00
Peter Steinberger
fbd832d64f
refactor(config): share byte-size parsing for memory flush
2026-03-02 00:32:33 +00:00
Peter Steinberger
9e727893ff
refactor(session): consolidate transcript snapshot reads
2026-03-02 00:32:33 +00:00
Peter Steinberger
d729ab2150
fix(session): harden usage accounting and memory flush recovery
2026-03-02 00:07:29 +00:00
Peter Steinberger
b99666a47a
fix(security): harden inbound metadata sentinel stripping
2026-03-01 23:11:48 +00:00
Agent
3a93a7bb1e
fix(security): enforce auth for abort triggers and models
2026-03-01 21:30:07 +00:00
Onur
8292401719
ACP: rename stream char limits to output/sessionUpdate
2026-03-01 20:39:24 +01:00
Onur
053e5eb506
ACP: remove maxMetaEventsPerTurn limit
2026-03-01 20:39:24 +01:00
Onur
ca31683ca3
Tests: fix dispatch-acp mock typings for tsgo
2026-03-01 20:39:24 +01:00
Onur
f4538b22f7
ACP: fix projector dedupe regressions
2026-03-01 20:39:24 +01:00
Onur
be73eb28b3
ACP: improve live text batching readability
2026-03-01 20:39:24 +01:00
Onur
dd2fcade3e
ACP: make live mode flush incremental chunks
2026-03-01 20:39:24 +01:00
Onur
43c57005a6
ACP: start typing lifecycle at turn start and harden delivery
2026-03-01 20:39:24 +01:00
Onur
c8b958e573
ACP: add hidden-boundary separator for hidden tool events
2026-03-01 20:39:24 +01:00
Onur
acd6ddb829
ACP: hide tool_call tags by default
2026-03-01 20:39:24 +01:00
Onur
c3a1fe01ae
ACP: make final_only defer all projected output
2026-03-01 20:39:24 +01:00
Onur
4a82012461
ACP: default stream delivery to final_only
2026-03-01 20:39:24 +01:00
Onur
4e2efaf659
ACP: simplify stream config to repeatSuppression
2026-03-01 20:39:24 +01:00
Onur
752398a6ba
Refactor: split ACP dispatch delivery and settings
2026-03-01 20:39:24 +01:00