Peter Steinberger
0bd9f0d4ac
fix: enforce strict allowlist across pairing stores ( #23017 )
2026-02-22 00:00:23 +01:00
Peter Steinberger
58254b3b57
test: dedupe channel and transport adapters
2026-02-21 21:44:01 +00:00
Peter Steinberger
4540790cb6
refactor(bluebubbles): share dm/group access policy checks
2026-02-21 20:08:33 +01:00
Peter Steinberger
51c0893673
refactor(security): remove unused empty allowlist mode
2026-02-21 19:57:36 +01:00
Peter Steinberger
2ba6de7eaa
refactor(security): make empty allowlist behavior explicit
2026-02-21 19:54:59 +01:00
Peter Steinberger
9632b9bcf0
fix(security): fail closed parsed chat allowlist
2026-02-21 19:51:36 +01:00
Onur
8178ea472d
feat: thread-bound subagents on Discord ( #21805 )
...
* docs: thread-bound subagents plan
* docs: add exact thread-bound subagent implementation touchpoints
* Docs: prioritize auto thread-bound subagent flow
* Docs: add ACP harness thread-binding extensions
* Discord: add thread-bound session routing and auto-bind spawn flow
* Subagents: add focus commands and ACP/session binding lifecycle hooks
* Tests: cover thread bindings, focus commands, and ACP unbind hooks
* Docs: add plugin-hook appendix for thread-bound subagents
* Plugins: add subagent lifecycle hook events
* Core: emit subagent lifecycle hooks and decouple Discord bindings
* Discord: handle subagent bind lifecycle via plugin hooks
* Subagents: unify completion finalizer and split registry modules
* Add subagent lifecycle events module
* Hooks: fix subagent ended context key
* Discord: share thread bindings across ESM and Jiti
* Subagents: add persistent sessions_spawn mode for thread-bound sessions
* Subagents: clarify thread intro and persistent completion copy
* test(subagents): stabilize sessions_spawn lifecycle cleanup assertions
* Discord: add thread-bound session TTL with auto-unfocus
* Subagents: fail session spawns when thread bind fails
* Subagents: cover thread session failure cleanup paths
* Session: add thread binding TTL config and /session ttl controls
* Tests: align discord reaction expectations
* Agent: persist sessionFile for keyed subagent sessions
* Discord: normalize imports after conflict resolution
* Sessions: centralize sessionFile resolve/persist helper
* Discord: harden thread-bound subagent session routing
* Rebase: resolve upstream/main conflicts
* Subagents: move thread binding into hooks and split bindings modules
* Docs: add channel-agnostic subagent routing hook plan
* Agents: decouple subagent routing from Discord
* Discord: refactor thread-bound subagent flows
* Subagents: prevent duplicate end hooks and orphaned failed sessions
* Refactor: split subagent command and provider phases
* Subagents: honor hook delivery target overrides
* Discord: add thread binding kill switches and refresh plan doc
* Discord: fix thread bind channel resolution
* Routing: centralize account id normalization
* Discord: clean up thread bindings on startup failures
* Discord: add startup cleanup regression tests
* Docs: add long-term thread-bound subagent architecture
* Docs: split session binding plan and dedupe thread-bound doc
* Subagents: add channel-agnostic session binding routing
* Subagents: stabilize announce completion routing tests
* Subagents: cover multi-bound completion routing
* Subagents: suppress lifecycle hooks on failed thread bind
* tests: fix discord provider mock typing regressions
* docs/protocol: sync slash command aliases and delete param models
* fix: add changelog entry for Discord thread-bound subagents (#21805 ) (thanks @onutc)
---------
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-21 16:14:55 +01:00
Peter Steinberger
283029bdea
refactor(security): unify webhook auth matching paths
2026-02-21 11:52:34 +01:00
Peter Steinberger
e1e91bdb4a
test: cover plugin status helper branches
2026-02-19 15:09:19 +00:00
Peter Steinberger
ec232a9e2d
refactor(security): harden temp-path handling for inbound media
2026-02-19 14:06:37 +01:00
Mariano
a7c0aa94d9
refactor(security): share safe temp media path builder ( #20810 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7a088e6801d4ec45858ba47d20a8c8615ba35389
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-19 09:59:21 +00:00
Peter Steinberger
d51929ecb5
fix: block ISATAP SSRF bypass via shared host/ip guard
2026-02-19 09:59:47 +01:00
Peter Steinberger
2f6b8663ff
refactor(shared): reuse outbound text chunking core
2026-02-19 07:01:54 +00: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
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
Peter Steinberger
2992639f88
Revert "feat: add Linq channel — real iMessage via API, no Mac required"
...
This reverts commit d4a142fd8f .
2026-02-17 02:30:55 +01:00
Peter Steinberger
a36782e342
Revert "feat(linq): add interactive onboarding adapter"
...
This reverts commit b91e43714b .
2026-02-17 02:30:55 +01:00
Peter Steinberger
7147cd9cc0
refactor: dedupe process-scoped lock maps
2026-02-17 00:45:02 +00:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
7632e60d70
refactor(onboarding): reuse allowFrom merge helper in extensions
2026-02-16 23:47:57 +00:00
yinghaosang
5544ab820c
channels: add createAccountListHelpers factory
2026-02-16 23:53:19 +01:00
George McCain
b91e43714b
feat(linq): add interactive onboarding adapter
...
Walk users through Linq setup via `openclaw channels add` wizard
instead of requiring manual JSON config editing. Prompts for API
token, phone number, and webhook config with sensible defaults.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:52:56 +01:00
George McCain
d4a142fd8f
feat: add Linq channel — real iMessage via API, no Mac required
...
Adds a complete Linq iMessage channel adapter that replaces the existing
iMessage channel's Mac Mini + dedicated Apple ID + SSH wrapper + Full Disk
Access setup with a single API key and phone number.
Core implementation (src/linq/):
- types.ts: Linq webhook event and message types
- accounts.ts: Multi-account resolution from config (env/file/inline token)
- send.ts: REST outbound via Linq Blue V3 API (messages, typing, reactions)
- probe.ts: Health check via GET /v3/phonenumbers
- monitor.ts: Webhook HTTP server with HMAC-SHA256 signature verification,
replay protection, inbound debouncing, and full dispatch pipeline integration
Extension plugin (extensions/linq/):
- ChannelPlugin implementation with config, security, setup, outbound,
gateway, and status adapters
- Supports direct and group chats, reactions, and media
Wiring:
- Channel registry, dock, config schema, plugin-sdk exports, and plugin
runtime all updated to include the new linq channel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:52:56 +01:00
Colin
c943ffab7c
Slack: reject blocks plus media in send paths
2026-02-16 23:51:44 +01:00
Colin
10d876e319
Slack: validate blocks input shape centrally
2026-02-16 23:51:44 +01:00
Colin
378e18b75b
Slack: support blocks in plugin edit action
2026-02-16 23:51:44 +01:00
Colin
3912a2264b
Slack: support blocks in plugin send action
2026-02-16 23:51:44 +01:00
Latitude Bot
3238bd78d9
fix(discord): normalize bare numeric IDs in outbound target resolution
...
Bare numeric Discord IDs (e.g. '1470130713209602050') in cron
delivery.to caused 'Ambiguous Discord recipient' errors and silent
delivery failures.
Adds normalizeDiscordOutboundTarget() to the existing Discord
normalize module (channels/plugins/normalize/discord.ts) alongside
normalizeDiscordMessagingTarget. Defaults bare numeric IDs to
'channel:<id>', matching existing behavior.
Both the Discord extension plugin and standalone outbound adapter
use the shared helper via a one-liner resolveTarget.
Fixes #14753 . Related: #13927
2026-02-16 13:25:58 -06:00
Peter Steinberger
04892ee230
refactor(core): dedupe shared config and runtime helpers
2026-02-16 14:59:30 +00:00
Peter Steinberger
80eb91d9e7
refactor(plugin-sdk): add shared helper utilities
2026-02-15 19:37:40 +00:00
Peter Steinberger
5248b759fe
refactor(shared): reuse isPidAlive
2026-02-15 19:06:54 +00:00
Shadow
c6b3736fe7
fix: dedupe probe/token base types ( #16986 ) (thanks @iyoda)
2026-02-15 11:36:54 -06:00
Peter Steinberger
d80ccdb9e0
refactor(plugin-sdk): dedupe file lock release
2026-02-15 13:11:25 +00:00
Peter Steinberger
fef86e475b
refactor: dedupe shared helpers across ui/gateway/extensions
2026-02-15 03:34:14 +00:00
Peter Steinberger
451deb066f
refactor(plugin-sdk): reuse dedupe cache
2026-02-15 01:46:52 +00:00
Peter Steinberger
5e205030ed
refactor(telegram): share outbound param parsing
2026-02-15 01:15:43 +00:00
Peter Steinberger
461ead8ceb
refactor(imessage): share target parsing helpers
2026-02-15 01:15:43 +00:00
Peter Steinberger
f835eb32f3
refactor(slack): share message action helpers
2026-02-15 01:15:43 +00:00
Peter Steinberger
eccd4d8c39
refactor(whatsapp): share target resolver
2026-02-15 01:15:43 +00:00
Peter Steinberger
56bc9b5058
refactor(zalo): share outbound chunker
2026-02-15 01:15:43 +00:00
Peter Steinberger
0d0ebd0e20
refactor(onboarding): share promptAccountId helper
2026-02-15 01:15:43 +00:00
Peter Steinberger
52bfe5060c
refactor: share file lock via plugin-sdk
2026-02-15 00:26:46 +00:00
Peter Steinberger
bfa7d21e99
fix(security): harden tlon Urbit requests against SSRF
2026-02-14 18:42:10 +01:00
Peter Steinberger
6543ce717c
perf(test): avoid plugin-sdk barrel imports
2026-02-14 12:42:19 +00:00
Peter Steinberger
3cbcba10cf
fix(security): enforce bounded webhook body handling
2026-02-13 19:14:54 +01:00
quotentiroler
cc87c0ed7c
Update contributing, deduplicate more functions
2026-02-09 19:21:33 -08:00
max
40b11db80e
TypeScript: add extensions to tsconfig and fix type errors ( #12781 )
...
* TypeScript: add extensions to tsconfig and fix type errors
- Add extensions/**/* to tsconfig.json includes
- Export ProviderAuthResult, AnyAgentTool from plugin-sdk
- Fix optional chaining for messageActions across channels
- Add missing type imports (MSTeamsConfig, GroupPolicy, etc.)
- Add type annotations for provider auth handlers
- Fix undici/fetch type compatibility in zalo proxy
- Correct ChannelAccountSnapshot property usage
- Add type casts for tool registrations
- Extract usage view styles and types to separate files
* TypeScript: fix optional debug calls and handleAction guards
2026-02-09 10:05:38 -08:00
max
f0924d3c4e
refactor: consolidate PNG encoder and safeParseJson utilities ( #12457 )
...
- Create shared PNG encoder module (src/media/png-encode.ts)
- Refactor qr-image.ts and live-image-probe.ts to use shared encoder
- Add safeParseJson to utils.ts and plugin-sdk exports
- Update msteams and pairing-store to use centralized safeParseJson
2026-02-09 00:21:54 -08:00