Tyler Yust
a290f5e50f
fix: persist outbound sends and skip stale cron deliveries ( #50092 )
...
* fix(bluebubbles): auto-create chats for new numbers, persist outbound messages to session transcripts
Two fixes for BlueBubbles message tool behavior:
1. **Attachment sends to new phone numbers**: sendBlueBubblesAttachment now
auto-creates a new DM chat (via /api/v1/chat/new) when no existing chat
is found for a handle target, matching the behavior already present in
sendMessageBlueBubbles for text sends. The existing createNewChatWithMessage
is refactored into a reusable createChatForHandle that returns the chatGuid.
2. **Outbound message session persistence**: Ensures outbound messages sent
via the message tool are reliably tracked in session transcripts:
- ensureOutboundSessionEntry now falls back to directly creating a session
store entry when recordSessionMetaFromInbound returns null, guaranteeing
a sessionId exists for the subsequent mirror append.
- appendAssistantMessageToSessionTranscript now normalizes the session key
(lowercased) when looking up the store, preventing case mismatches
between the store keys and the mirror sessionKey.
Tests added for all changes.
* test(slack): verify outbound session tracking and new target sends for Slack
The shared infrastructure changes from the BlueBubbles fix (session key
normalization in transcript.ts and fallback session entry creation in
outbound-session.ts) already cover Slack. Slack's sendMessageSlack uses
conversations.open to auto-create DM channels for new user targets.
Add tests confirming:
- Slack user DM and channel session route resolution (outbound.test.ts)
- Slack session key normalization for transcript append (sessions.test.ts)
- Slack outbound sendText/sendMedia to new user and channel targets (channel.test.ts)
* fix(cron): skip stale delayed deliveries
* fix: prep PR #50092
2026-03-19 11:40:34 +09:00
Peter Steinberger
c70837f07d
refactor: converge plugin sdk channel helpers
2026-03-19 00:25:19 +00:00
Peter Steinberger
07d9f725b6
refactor: unify plugin sdk primitives
2026-03-18 23:58:56 +00:00
Vincent Koc
757c2cc2de
fix(release): isolate bundled config docs loading
2026-03-18 16:01:43 -07:00
Peter Steinberger
8d73bc77fa
refactor: deduplicate reply payload helpers
2026-03-18 17:30:25 +00:00
Peter Steinberger
27f655ed11
refactor: deduplicate channel runtime helpers
2026-03-18 16:37:27 +00:00
Peter Steinberger
861fcb1575
fix: restore rebased full gate
2026-03-18 15:34:27 +00:00
Vincent Koc
6e723dfd69
Plugins: internalize medium extension SDK imports
2026-03-17 23:09:26 -07:00
Peter Steinberger
05603e4e6c
refactor: deduplicate channel config adapters
2026-03-18 04:51:29 +00:00
Gustavo Madeira Santana
e93412b5ce
Outbound: move target resolution heuristics behind plugins
2026-03-18 04:24:54 +00:00
Gustavo Madeira Santana
0f7cd59824
BlueBubbles: move outbound session routing behind plugin boundary
2026-03-18 04:09:48 +00:00
Peter Steinberger
1a9114a169
refactor: deduplicate setup wizard helpers
2026-03-18 03:58:22 +00:00
Gustavo Madeira Santana
a8f433d611
BlueBubbles: move group policy behind plugin boundary
2026-03-18 03:40:42 +00:00
Peter Steinberger
9350cb19dd
refactor: deduplicate plugin setup and channel config helpers
2026-03-18 03:28:05 +00:00
Vincent Koc
2f21eeb3cb
Plugins: internalize bluebubbles SDK imports
2026-03-17 20:21:00 -07:00
Gustavo Madeira Santana
682f4d1ca3
Plugin SDK: require unified message discovery
2026-03-18 03:02:16 +00:00
Gustavo Madeira Santana
4b5e801d1b
BlueBubbles: scope group actions in message discovery
2026-03-17 23:48:43 +00:00
Peter Steinberger
39a8dab0da
refactor: dedupe plugin lazy runtime helpers
2026-03-17 09:24:22 -07:00
Peter Steinberger
9b22bd41d8
test: inline bluebubbles action mocks
2026-03-17 16:21:58 +00:00
Peter Steinberger
795f1f438b
refactor: expose lazy runtime helper to plugins
2026-03-17 08:37:11 -07:00
Peter Steinberger
f9588da3e0
refactor: split plugin testing seam from bundled extension helpers
2026-03-17 01:05:09 -07:00
Peter Steinberger
9648e7fecb
refactor: consolidate lazy runtime surfaces
2026-03-17 00:59:20 -07:00
Peter Steinberger
3dec814fda
refactor: bundle lazy runtime surfaces
2026-03-17 00:00:45 -07:00
Peter Steinberger
f2bd76cd1a
refactor: finalize plugin sdk legacy boundary cleanup
2026-03-16 22:51:46 -07:00
Peter Steinberger
0cfc80b81c
refactor: finish public plugin sdk boundary seams
2026-03-16 21:33:59 -07:00
Peter Steinberger
4ae71485e9
refactor(setup): share scoped config prelude
2026-03-17 04:10:03 +00:00
Peter Steinberger
2497b8147e
refactor: add shared setup sdk subpath
2026-03-16 20:17:13 -07:00
Vincent Koc
e1f759f4f1
BlueBubbles: lazy-load channel runtime paths
2026-03-16 02:35:43 -07:00
Peter Steinberger
656848dcd7
refactor: rename setup wizard surfaces
2026-03-15 21:40:31 -07:00
Peter Steinberger
77d0ff629c
refactor: rename channel setup flow seam
2026-03-15 20:44:25 -07:00
Vincent Koc
4ed30abc7a
BlueBubbles: split setup adapter helpers
2026-03-15 19:10:54 -07:00
Peter Steinberger
bad65f130e
refactor: move bluebubbles to setup wizard
2026-03-15 17:34:36 -07:00
rstar327
ba6064cc22
feat(gateway): make health monitor stale threshold and max restarts configurable (openclaw#42107)
...
Verified:
- pnpm exec vitest --run src/config/config-misc.test.ts -t "gateway.channelHealthCheckMinutes"
- pnpm exec vitest --run src/gateway/server-channels.test.ts -t "health monitor"
- pnpm exec vitest --run src/gateway/channel-health-monitor.test.ts src/gateway/server/readiness.test.ts
- pnpm exec vitest --run extensions/feishu/src/outbound.test.ts
- pnpm exec tsc --noEmit
Co-authored-by: rstar327 <114364448+rstar327@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-14 21:21:56 -05:00
Peter Steinberger
9b0e333f2c
refactor: share bluebubbles multipart helpers
2026-03-13 23:35:28 +00:00
Peter Steinberger
fd58268f04
test: dedupe bluebubbles normalize fixtures
2026-03-13 23:35:27 +00:00
Peter Steinberger
d0337a18b6
fix: clear typecheck backlog
2026-03-13 22:09:06 +00:00
Peter Steinberger
8896a477df
test: dedupe bluebubbles local media send cases
2026-03-13 21:54:39 +00:00
Peter Steinberger
d5d2fe1b0e
test: reduce webhook auth test duplication
2026-03-13 21:40:53 +00:00
Peter Steinberger
eca22c0cc7
test: share bluebubbles attachment fixtures
2026-03-13 21:40:53 +00:00
Peter Steinberger
89e0e80db3
test: share bluebubbles removal reaction helper
2026-03-13 21:40:53 +00:00
Peter Steinberger
6756e376f3
refactor: share bluebubbles response and tapback helpers
2026-03-13 21:40:53 +00:00
Vincent Koc
4dfd8eea90
BlueBubbles: require confirmed outbound for self-chat cache
2026-03-12 03:22:57 -04:00
Vincent Koc
241e8cc553
fix(bluebubbles): dedupe reflected self-chat duplicates ( #38442 )
...
* BlueBubbles: drop reflected self-chat duplicates
* Changelog: add BlueBubbles self-chat echo dedupe entry
* BlueBubbles: gate self-chat cache and expand coverage
* BlueBubbles: require explicit sender ids for self-chat dedupe
* BlueBubbles: harden self-chat cache
* BlueBubbles: move self-chat cache identity into cache
* BlueBubbles: gate self-chat cache to confirmed outbound sends
* Update CHANGELOG.md
* BlueBubbles: bound self-chat cache input work
* Tests: cover BlueBubbles cache cap under cleanup throttle
* BlueBubbles: canonicalize self-chat DM scope
* Tests: cover BlueBubbles mixed self-chat scope aliases
2026-03-12 03:11:43 -04:00
Josh Avant
36d2ae2a22
SecretRef: harden custom/provider secret persistence and reuse ( #42554 )
...
* Models: gate custom provider keys by usable secret semantics
* Config: project runtime writes onto source snapshot
* Models: prevent stale apiKey preservation for marker-managed providers
* Runner: strip SecretRef marker headers from resolved models
* Secrets: scan active agent models.json path in audit
* Config: guard runtime-source projection for unrelated configs
* Extensions: fix onboarding type errors in CI
* Tests: align setup helper account-enabled expectation
* Secrets audit: harden models.json file reads
* fix: harden SecretRef custom/provider secret persistence (#42554 ) (thanks @joshavant)
2026-03-10 23:55:10 +00:00
Peter Steinberger
a455c0cc3d
refactor: share passive account lifecycle helpers
2026-03-10 22:18:04 +00:00
Peter Steinberger
50ded5052f
refactor: share channel config schema fragments
2026-03-10 22:18:04 +00:00
Peter Steinberger
00170f8e1a
refactor: share scoped account config patching
2026-03-10 22:18:03 +00:00
Kyle
a438ff4397
fix(plugin-sdk): remove remaining bundled plugin src imports (openclaw#39638)
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: Kyle <3477429+kyledh@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-08 22:32:45 -05:00
Peter Steinberger
141738f717
refactor: harden browser runtime profile handling
2026-03-09 00:25:43 +00:00
Peter Steinberger
5845b5bfba
refactor: share multi-account config schema fragments
2026-03-08 23:38:24 +00:00