Peter Steinberger
d6d73d0ed9
test(core): trim redundant test resets and use mockClear
2026-02-22 08:12:55 +00:00
Peter Steinberger
e893157600
test(core): use lightweight clears in runtime and telegram setup
2026-02-22 08:09:14 +00:00
Peter Steinberger
4ddaafee68
test(plugins): use lightweight clears in wired hooks setup
2026-02-22 08:01:16 +00:00
Peter Steinberger
185fba1d22
refactor(agents): dedupe plugin hooks and test helpers
2026-02-22 07:44:57 +00:00
Vignesh Natarajan
8920e281cc
Plugins: allowlist plugins when enabling from CLI
2026-02-21 19:37:26 -08:00
Peter Steinberger
5c8f0b5a77
test: tighten plugin e2e matrix coverage
2026-02-21 21:44:50 +00: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
7a27e2648a
refactor(test): dedupe plugin env overrides via env helpers
2026-02-21 13:03:41 +00:00
Peter Steinberger
a1cb700a05
test: dedupe and optimize test suites
2026-02-19 15:19:38 +00:00
Peter Steinberger
bc6f983f85
fix(ci): resolve format drift and acp mock typing
2026-02-19 15:11:27 +00:00
Peter Steinberger
cc9be84b9c
refactor(runtime): split runtime builders and stabilize cron tool seam
2026-02-19 16:09:56 +01:00
Peter Steinberger
dcd592a601
refactor: eliminate jscpd clones and boost tests
2026-02-19 15:08:54 +00:00
Peter Steinberger
edf92f1cb0
refactor: share npm integrity drift handling
2026-02-19 15:08:14 +00:00
Peter Steinberger
2e421f32df
fix(security): restore trusted plugin runtime exec default
2026-02-19 16:01:29 +01:00
Peter Steinberger
f76f98b268
chore: fix formatting drift and stabilize cron tool mocks
2026-02-19 15:41:38 +01:00
Peter Steinberger
81b19aaa1a
fix(security): enforce plugin and hook path containment
2026-02-19 15:37:29 +01:00
Peter Steinberger
77c748304b
refactor(plugins): extract safety and provenance helpers
2026-02-19 15:24:14 +01:00
Peter Steinberger
3561442a9f
fix(plugins): harden discovery trust checks
2026-02-19 15:14:12 +01:00
Peter Steinberger
5dc50b8a3f
fix(security): harden npm plugin and hook install integrity flow
2026-02-19 15:11:25 +01:00
Mariano
db73402235
Security: add explicit opt-in for deprecated plugin runtime exec ( #20874 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: de69f817259f0b4eba2d676005a9ed6833179ea2
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 11:30:36 +00:00
Mariano
45db2aa0cd
Security: disable plugin runtime command execution primitive ( #20828 )
...
Co-authored-by: mbelinky <mbelinky@users.noreply.github.com >
2026-02-19 10:17:29 +00:00
Peter Steinberger
5e7cffc568
test: merge duplicate plugin memory-none cases
2026-02-19 08:51:38 +00:00
Peter Steinberger
aa8f87a3bf
refactor(plugins): reuse plugin loader logger adapter
2026-02-18 23:48:32 +00:00
Peter Steinberger
5ae4595bb9
refactor(plugins): reuse plugin service runtime context
2026-02-18 17:23:44 +00:00
Peter Steinberger
f05395ae00
refactor(test): share internal hook and npm pack assertions
2026-02-18 17:01:22 +00:00
Peter Steinberger
112f8250fc
test: dedupe registry/session tests and add install source coverage
2026-02-18 05:05:04 +00:00
Peter Steinberger
a69e7682c1
refactor(test): dedupe channel and monitor action suites
2026-02-18 04:49:22 +00:00
Peter Steinberger
31f83c86b2
refactor(test): dedupe agent harnesses and routing fixtures
2026-02-18 04:49:22 +00:00
Peter Steinberger
8a9fddedc9
refactor: extract shared install and embedding utilities
2026-02-18 04:49:22 +00:00
Peter Steinberger
262472ba20
test: remove duplicated scenario scaffolding across runtime tests
2026-02-18 04:04:14 +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
Sebastian
210bc37971
chore(subagents): add regression coverage and changelog
2026-02-17 08:40:36 -05:00
Mariano
0c87dbdcfc
voice-call: harden closed-loop turn loop and transcript routing ( #19140 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 14a3edb00572b20348f839bbafa56ca826cee362
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-17 13:02:38 +00:00
cpojer
7b31e8fc59
chore: Fix types in tests 36/N.
2026-02-17 15:50:07 +09:00
cpojer
6e5df1dc0f
chore: Fix types in tests 25/N.
2026-02-17 14:31:02 +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
cf6cdc74d0
chore: Fix types in tests 23/N.
2026-02-17 12:24:03 +09:00
cpojer
9c5f08244e
chore: Format files.
2026-02-17 11:37:11 +09:00
Peter Steinberger
0c1c34c950
refactor(plugins): split before-agent hooks by model and prompt phases
2026-02-17 03:28:20 +01:00
Peter Steinberger
a75e95be02
fix(reply): track messaging media aliases for dedupe
2026-02-17 03:27:23 +01:00
cpojer
01ea808876
chore: Format files.
2026-02-17 10:57:31 +09: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
5195179150
refactor: centralize plugin allowlist mutation
2026-02-17 00:45:02 +00:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
eaa2f7a7bf
fix(ci): restore main lint/typecheck after direct merges
2026-02-16 23:26:11 +00:00
Parker Todd Brooks
15fe87e6b7
feat: add before_message_write plugin hook
...
Synchronous hook that lets plugins inspect and optionally block messages
before they are written to the session JSONL file. Primary use case is
private mode... when enabled, the plugin returns { block: true } and the
message never gets persisted.
The hook runs on the hot path (synchronous, like tool_result_persist).
Handlers execute sequentially in priority order. If any handler returns
{ block: true }, the write is skipped immediately. Handlers can also
return a modified message to write instead of the original.
Changes:
- src/plugins/types.ts: add hook name, event/result types, handler map entry
- src/plugins/hooks.ts: add runBeforeMessageWrite() following tool_result_persist pattern
- src/agents/session-tool-result-guard.ts: invoke hook before every originalAppend() call
- src/agents/session-tool-result-guard-wrapper.ts: wire hook runner to the guard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:58:12 +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
Yaroslav Boiko
a02bcb3620
fix(test): add missing media dedup state fields to mock contexts
...
Pre-existing test mocks lacked pendingMessagingMediaUrls and
messagingToolSentMediaUrls fields added by the media dedup feature,
causing runtime errors in handleToolExecutionEnd.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:51:51 +01:00