Commit Graph

1369 Commits

Author SHA1 Message Date
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