openclaw/extensions
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
..
acpx fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
amazon-bedrock fix(plugin-sdk): isolate provider entry surfaces 2026-03-18 13:20:46 -07:00
anthropic refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
bluebubbles fix: persist outbound sends and skip stale cron deliveries (#50092) 2026-03-19 11:40:34 +09:00
brave fix: checkpoint gate fixes before rebase 2026-03-18 15:36:18 +00:00
byteplus refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
chutes refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
cloudflare-ai-gateway refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
copilot-proxy fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
device-pair fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
diagnostics-otel fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
diffs fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
discord Discord: enforce strict DM component allowlist auth (#49997) 2026-03-18 20:11:47 -05:00
elevenlabs refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
fal Image generation: add fal provider (#49454) 2026-03-17 21:35:13 -07:00
feishu fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
firecrawl refactor move web search sdk helpers into plugin-sdk 2026-03-18 00:27:02 -05:00
github-copilot Plugin SDK: split provider auth login seam 2026-03-18 02:04:10 -07:00
google fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
googlechat fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
huggingface refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
imessage refactor: tighten plugin sdk channel surfaces 2026-03-19 00:46:36 +00:00
irc fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
kilocode refactor: converge plugin sdk channel helpers 2026-03-19 00:25:19 +00:00
kimi-coding refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
line fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
llm-task fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
lobster fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
matrix fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
mattermost fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
memory-core refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
memory-lancedb fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
microsoft refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
minimax fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
mistral refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
modelstudio refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
moonshot refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
msteams fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
nextcloud-talk fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
nostr fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
nvidia refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
ollama fix: preserve interactive Ollama model selection (#49249) (thanks @BruceMacD) 2026-03-18 18:02:44 -07:00
open-prose fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
openai fix(auth): lazy-load provider oauth helpers 2026-03-18 13:40:28 -07:00
opencode refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
opencode-go refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
openrouter fix(plugin-sdk): isolate provider entry surfaces 2026-03-18 13:20:46 -07:00
openshell
perplexity fix: checkpoint gate fixes before rebase 2026-03-18 15:36:18 +00:00
phone-control fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
qianfan refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
qwen-portal-auth fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
sglang refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
shared refactor: finalize plugin sdk legacy boundary cleanup 2026-03-16 22:51:46 -07:00
signal fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
slack fix: persist outbound sends and skip stale cron deliveries (#50092) 2026-03-19 11:40:34 +09:00
synology-chat fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
synthetic refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
talk-voice fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
telegram refactor: tighten plugin sdk channel surfaces 2026-03-19 00:46:36 +00:00
thread-ownership fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
tlon refactor: tighten plugin sdk channel surfaces 2026-03-19 00:46:36 +00:00
together refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
twitch refactor: tighten plugin sdk channel surfaces 2026-03-19 00:46:36 +00:00
venice refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
vercel-ai-gateway refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
vllm refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
voice-call fix(release): isolate config doc surfaces and sdk exports 2026-03-18 17:14:15 -07:00
volcengine refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
whatsapp fix(whatsapp): use globalThis singleton for active-listener Map (#47433) 2026-03-18 22:16:31 -03:00
xai refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
xiaomi refactor: dedupe bundled plugin entrypoints 2026-03-17 00:14:12 -07:00
zai fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
zalo fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
zalouser fix(plugin-sdk): restore public runtime subpaths 2026-03-18 17:38:49 -07:00
.npmignore