Alix-007
f5849f134f
fix(matrix): prevent shared client key collisions ( #119667 )
2026-08-05 17:44:58 -07:00
Vincent Koc
a3419d4a4b
fix(matrix): retire shared E2EE clients safely ( #119570 )
...
* fix(qa): bound Matrix E2EE client shutdown
Punchcard-Session: silver-valley-valley-dt
* fix(qa): drain Matrix decryptions before SDK shutdown
Punchcard-Session: silver-valley-valley-dt
* fix(matrix): retire shared E2EE clients safely
Punchcard-Session: silver-valley-valley-dt
* fix(matrix): satisfy lifecycle lint gate
Punchcard-Session: silver-valley-valley-dt
2026-08-06 01:14:31 +08:00
Peter Steinberger
f9d9d1225a
refactor(channels): own the lifecycle status contract in SDK patch factories ( #118795 )
...
* refactor(sdk): add channel lifecycle patch factories
* refactor(channels): adopt lifecycle patches in a-m
* refactor(channels): adopt lifecycle patches in n-z
* refactor(runtime): lifecycle-own ambient registries
* test(slack): assert lifecycle factory fields
* fix(sdk): preserve lifecycle patch extras types
* test(zalouser): widen lifecycle status sink
* test(irc): avoid shadowed status patch
* fix(zalo): reuse account-agnostic media route
* fix(gateway): accept explicit channel ready recovery
* test(qa): assert terminal Slack block fact
* test(qa): restore Slack blocked lifecycle scenario
* test(gateway): lock explicit lifecycle recovery contract
2026-08-03 12:39:48 -07:00
Peter Steinberger
ef478c14b1
test(matrix): isolate runtime state ( #118892 )
2026-08-03 12:28:49 -07:00
Peter Steinberger
2a8f2e6756
fix(matrix): block plaintext attachments in encrypted rooms ( #118609 )
...
* fix(matrix): block plaintext uploads to encrypted rooms
* test(matrix): spy on room encryption detection safely
* fix(matrix): enforce encrypted room confidentiality at outbound owner
* test(matrix): keep delivery trace client aligned with send owner
2026-08-03 04:33:46 -07:00
Peter Steinberger
d26dcc02c5
fix(matrix): preserve indented code without triggering mentions ( #118497 )
...
* fix(matrix): preserve indented code without triggering mentions
* fix(matrix): retain whitespace through Gateway message actions
* fix(matrix): retain legacy trailing whitespace normalization
2026-08-02 23:13:11 -07:00
Peter Steinberger
4c66ed5615
feat(channels): lifecycle wave 2 — fifteen more channels publish recorded lifecycle ( #118298 )
...
* feat(channels): publish lifecycle from existing status sinks
* feat(channels): thread lifecycle through provider monitors
* fix(mattermost): keep lifecycle status helper private
* fix(matrix): preserve terminal lifecycle during startup cleanup
* fix(matrix): reject invalid tokens during startup
* test(mattermost): drop unused vi import
2026-08-02 17:30:56 -07:00
Peter Steinberger
04b94910ba
refactor(matrix): consolidate monitor test fixtures ( #118175 )
2026-08-02 13:24:12 -07:00
Peter Steinberger
1e10c44474
fix(matrix): preserve complete multi-event delivery receipts ( #118128 )
2026-08-02 12:04:05 -07:00
Simone
3f9b4519a9
fix: prevent fractional chunk limits from stalling text splitting ( #117727 )
...
* fix: normalize fractional text chunk limits
* fix: normalize markdown chunk limits
* fix: normalize direct newline chunk limits
* fix(matrix): reuse progress-safe text chunker
* test(matrix): align runtime API guard
* test(matrix): keep outbound shard topology stable
* fix(matrix): preserve facade chunk compatibility
* test(matrix): keep runtime export guard stable
* fix(matrix): normalize render-aware chunk limits
* test(matrix): type real-send assertions
* fix(matrix): preserve one-unit event limits
---------
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-02 04:53:31 -05:00
Peter Steinberger
a154b4faea
refactor: consolidate Teams and error helpers ( #117907 )
2026-08-02 02:02:17 -07:00
Peter Steinberger
03c28795f8
fix(matrix): bot ignores valid plain-text room mentions ( #117764 )
...
* fix(matrix): recognize native plain-text room mentions
* fix(matrix): reject Unicode account-prefix mention spoofing
* fix(matrix): enforce complete native mention account boundaries
* fix(matrix): recognize full user ID command mentions
2026-08-01 22:18:56 -07:00
Peter Steinberger
d6e537a859
refactor(channels): share persistent state error reporting ( #117813 )
2026-08-01 22:06:25 -07:00
Peter Steinberger
e98fdeefdf
refactor(errors): consolidate message formatting ( #117818 )
2026-08-01 22:05:49 -07:00
Peter Steinberger
88d19d6cc4
refactor(matrix): consolidate auth config sources ( #117794 )
2026-08-01 21:30:00 -07:00
Peter Steinberger
28e681c92f
fix(channels): preserve workspace media access in gateway sends ( #117711 )
2026-08-01 18:09:17 -07:00
Patrick Erichsen
213b43ff03
fix(channels): preserve human group session titles ( #117680 )
2026-08-01 17:00:04 -07:00
Peter Steinberger
3772f0754b
test(matrix): deduplicate CLI fixtures ( #117651 )
2026-08-01 15:05:02 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
joshavant
07b7d6446c
fix(matrix): reconcile durable sends after response loss
2026-08-01 02:45:12 -05:00
Ayaan Gazali
11069c3df5
fix(channels): config validation rejects documented channels.<id>.configWrites on 13 channels ( #117206 )
2026-08-01 15:33:16 +08:00
Peter Steinberger
edfeec49e7
refactor(channels): centralize progress draft events ( #117269 )
2026-08-01 00:26:56 -07:00
Peter Steinberger
654744da17
refactor(channels): unify setup ownership across bundled channels ( #117188 )
2026-07-31 20:33:20 -07:00
Peter Steinberger
a1b41d5ddb
refactor(channels): share Matrix and Slack progress draft composition ( #117097 )
2026-07-31 17:17:07 -07:00
Peter Steinberger
9e4381eb1c
refactor(channels): unify bundled channel setup contracts ( #117106 )
...
* refactor(channels): canonicalize bundled setup contracts
* test(matrix): use scoped environment fixtures
2026-07-31 16:57:29 -07:00
Peter Steinberger
c572982556
fix(channels): preserve actionable presentation fallbacks ( #116990 )
...
* fix(channels): preserve actionable presentation fallbacks
* test(interactive): isolate presentation fallback regression coverage
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:37:30 -07:00
Peter Steinberger
9922ea02e9
fix(matrix): preserve media, reaction, and member state ( #116890 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 08:08:32 -07:00
Peter Steinberger
f061b82d11
fix(matrix): preserve message-tool room thread routing ( #116802 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 05:05:16 -07:00
joshavant
b7bfe21348
test(matrix): use preferred temp root
2026-07-30 16:07:51 -05:00
joshavant
7051d94f79
test(matrix): keep temp tracker plugin-local
2026-07-30 16:07:51 -05:00
joshavant
f36bfabf89
test(matrix): use temp directory tracker
2026-07-30 16:07:51 -05:00
Benjamin Badejo
ab24d29d6c
fix(matrix): use managed SQLite opener
2026-07-30 16:07:51 -05:00
Benjamin Badejo
aa8fbb7f3c
fix(matrix): reserve dedupe migration capacity
2026-07-30 16:07:51 -05:00
Benjamin Badejo
505d7b9f52
fix(state): preserve doctor import TTL
2026-07-30 16:07:51 -05:00
Benjamin Badejo
d25e89d1ee
fix(matrix): preserve migrated dedupe retention order
2026-07-30 16:07:51 -05:00
Benjamin Badejo
d140a051ce
chore(matrix): keep census result type private
2026-07-30 16:07:51 -05:00
Benjamin Badejo
080cbb1693
fix(matrix): fail closed on incomplete dedupe census
2026-07-30 16:07:51 -05:00
Benjamin Badejo
cb95f6e9e8
fix(matrix): checkpoint completed dedupe migration
2026-07-30 16:07:51 -05:00
Benjamin Badejo
8155f64b64
fix(matrix): migrate dedupe from legacy state databases
2026-07-30 16:07:51 -05:00
pash-openai
e52354ea13
fix(build): pin typebox to a published release ( #116333 )
2026-07-30 09:58:51 +00:00
Ayaan Zaidi
21d3533460
fix(channels): ack mentions in groups that do not require them
...
The group-mentions ack gate returned false whenever a group did not require mentions, conflating group policy with whether this message mentioned the agent. Under the default scope, mentioning the agent in a group configured to answer everything produced no ack at all, so the user had no signal the turn was picked up until the reply arrived.
Behavior change on a default path: those groups now show the 👀 ack (and the lifecycle status reactions when messages.statusReactions.enabled is true) on mentions. Mention-required groups, group-all, unmentioned messages, and off/none are unchanged. The gate no longer reads requireMention, so the parameter is gone from the shared type and all channel call sites.
Proven live on Telegram across three configurations, including a no-mention control confirming group-mentions did not become group-all.
2026-07-30 17:58:46 +09:00
joshavant
32a61cabf0
fix(matrix): observe automatic reply settlement
2026-07-30 02:31:15 -05:00
Ayaan Zaidi
06aa81a73f
fix(channels): show tool lines under the progress status headline
...
A status headline replaced the rolling tool lines instead of sitting above
them, so a default Discord draft showed one preamble sentence for an entire
tool-heavy turn. Operators reached for `/verbose` to see any activity, which
delivers durable per-tool-call messages and floods the channel.
- Render the headline above the lines; both stay visible in one message.
- Shorten the start gate from 5s to 1.5s. The gate only creates the draft
when the timer fires and finalize cancels it, so quick answers still post
no draft while a 3s tool turn stops being silent.
- Drop Discord's label-gated tool-progress default so
resolveChannelStreamingPreviewToolProgress is the single owner. An explicit
`toolProgress: false` still silences the lines.
- Resolve that toggle against a "progress" mode guess when `streaming.mode`
is unset, so the progress-draft channels stop ignoring an explicit
`progress.toolProgress` opt-out.
Telegram now defaults to `streaming.mode: "progress"` like Discord; set
`"partial"` to keep streamed answer text. Its renderer draws work lines from
the compositor's structured lines, so `rendersRollingLinesNatively` keeps
them out of the composed text rather than printing every line twice.
2026-07-30 13:36:21 +09:00
Peter Steinberger
d16e33e08e
fix: restore trustworthy end-to-end QA and cross-channel delivery ( #115404 )
...
* fix(qa): repair verified end-to-end and channel regressions
* fix(gateway): make interrupted restart recovery lifecycle-safe
* test(heartbeat): target the canonical recovery session store
* fix(gateway): prioritize durable restart recovery before heartbeat
* fix(qa): preserve safe restart recovery and channel expiry
* fix(qa): fail closed and fence restart recovery
* test(agents): isolate restart recovery timing
* test(agents): prove actual restart retry timing
* fix(qa): report incompatible profile scenarios
* fix(scripts): resolve symlinked docker scheduler entrypoints
* fix(qa): require fresh native test evidence
* fix(heartbeat): fence active restart recovery delivery
* fix(gateway): consume untargeted restart acknowledgements
* fix(qa): satisfy exhaustive hosted validation gates
* fix(agents): fence stopped restart recovery dispatch
* style(agents): format restart recovery lifecycle regression
* test(gateway): isolate context prewarm sidecar lifecycle
* test(qa): make scenario process timeout cleanup deterministic
* fix(qa): stamp synthetic gateway configs with current version
* fix(openai): preserve vision capabilities in stale model catalogs
* test(qa): align profile channel rejection with current main
* fix(openai): forward supported moderation for image edits
* fix: restore latest-main CI and image edit documentation
* fix(qa): retain relocated code-mode evidence validation
* fix(openai): expose GPT-5.4 vision in static catalog
* fix(pricing): honor explicit model cost overrides
* test(pricing): keep isolated provider regressions deterministic
* fix(openai): inherit transport for discovered static models
* fix(gateway): honor agent-owned static image capabilities
* test(gateway): preserve prepared-snapshot attachment races
* test(gateway): isolate subagent persistence failure injection
* test(gateway): exercise concurrent voice replay admission
* fix(gateway): restore stale model image capabilities
* fix(agents): publish configured model vision capabilities
* fix(agents): isolate detached media transcript ownership
* test(agents): preserve generic transcript lock regression
* fix(gateway): require proven static model route identity
* fix(qa): accept bounded full-size generated image attachments
* fix(qa): require fresh script producer evidence
* test(qa): prove native E2E scenario execution
2026-07-29 12:45:27 -04:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Peter Steinberger
4232126bba
chore: update dependencies across workspace ( #115677 )
...
* chore(deps): update dependencies
* fix(deps): restore CI compatibility
2026-07-29 05:16:42 -04:00
Peter Steinberger
c402688894
feat(media): probe duration and dimensions for playback metadata ( #115728 )
...
* feat(media): probe playback metadata
* fix(media): satisfy CI gates
* fix(media): satisfy lint rules
2026-07-29 04:52:17 -04:00
Peter Steinberger
d37fd8f2d4
fix(matrix): accept documented automatic approval mode ( #115676 )
...
Restore the explicitly shipped Matrix approval mode without changing omitted, boolean, invalid, or non-strict configuration behavior. Regenerate the canonical channel metadata and prove native Matrix approvals against a real homeserver.
Co-authored-by: mingdideng <deng.mingdi@xydigit.com >
2026-07-29 03:37:19 -04:00
Peter Steinberger
dbe645a08f
fix(matrix): prevent private reasoning from reaching rooms ( #99412 ) ( #115553 )
2026-07-29 00:55:07 -04:00
joshavant
ba85271dbe
fix(matrix): suppress previews for modifying hooks
2026-07-28 11:47:49 -05:00