Ayaan Zaidi
8b66fe773f
feat(mcp): deliver requester-scoped MCP to shared-thread harnesses
...
Requester-scoped servers never enter harness-native MCP config: Codex
thread and CLI user-MCP projections partition them out (fail-closed,
static-partition fingerprints stay sender-independent so shared threads
never rotate). Codex delivers them as per-attempt dynamic tools through
a scoped-only runtime path on the same core manager, with a
session-stable advertised catalog so authed and unauthed senders share
one spec surface; unauthed calls get a clean not-connected tool error.
New SDK seam materializeRequesterScopedMcpToolsForHarnessRun lets any
future harness consume the same contract.
2026-07-14 17:09:53 +05:30
Peter Steinberger
2b0cd2761c
test(anthropic): type node invoke mock from runtime ( #107421 )
2026-07-14 04:39:47 -07:00
Peter Steinberger
e798a76662
refactor(schemas): use TypeBox native enums
2026-07-14 04:25:58 -07:00
Peter Steinberger
97df597688
fix(twitch): abort timed-out user lookups ( #107360 )
...
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-07-14 04:22:34 -07:00
Peter Steinberger
5688d90bf3
fix(signal): await daemon exit before restart ( #107409 )
...
Co-authored-by: zhoukailian <2415699291@qq.com >
2026-07-14 04:21:51 -07:00
Peter Steinberger
0604903f88
fix(session-catalog): authorize paired-node reads ( #107410 )
2026-07-14 04:19:09 -07:00
Peter Steinberger
b911f94be7
fix(signal): reconnect receive loop after stalled container handshake ( #107386 )
...
* fix(signal): bound container receive handshake waits
Co-authored-by: NIO <hu.genshen@xydigit.com >
* test(signal): stabilize adapter mocks
---------
Co-authored-by: NIO <hu.genshen@xydigit.com >
2026-07-14 04:13:12 -07:00
Peter Steinberger
4ea1c71b88
fix(signal): keep username targets out of phone normalization ( #107365 )
...
* fix(signal): canonicalize username targets
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com >
* fix(signal): canonicalize username targets
---------
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com >
2026-07-14 04:11:46 -07:00
Peter Steinberger
c56d1bbbbb
fix(reef): send through the connected gateway ( #107373 )
...
* fix(reef): route outbound through gateway
* chore: keep Reef release note in PR
2026-07-14 04:08:36 -07:00
Peter Steinberger
6ceb72d2bd
refactor(memory): split QMD manager responsibilities ( #107381 )
...
* refactor(memory): split QMD manager responsibilities
* fix(memory): keep QMD helper types private
* style(memory): format QMD debug types
2026-07-14 04:07:51 -07:00
Peter Steinberger
dd42e80480
refactor(qa-lab): split mock and Slack runtimes ( #107377 )
...
* refactor(qa-lab): split mock and Slack runtimes
* refactor(qa-lab): narrow Slack helper exports
2026-07-14 04:06:48 -07:00
Peter Steinberger
236a6b815c
refactor(diffs): trim internal export surface ( #107400 )
2026-07-14 04:02:26 -07:00
Peter Steinberger
610c25881b
fix(feishu): remove unused schema builder export ( #107395 )
2026-07-14 03:56:36 -07:00
Peter Steinberger
ca83f1ca51
fix(ci): restore release validation after runtime migrations ( #107371 )
...
* test(ci): repair plugin prerelease validation
* test(zalo): preserve adapter narrowing in sender helpers
* test(ci): track current bundled startup metadata
* fix(google-meet): refresh plugin shrinkwrap
2026-07-14 03:52:44 -07:00
Peter Steinberger
e488dc0012
feat(sessions): signal watchers when an adopted upstream disappears ( #107356 )
2026-07-14 03:51:20 -07:00
Peter Steinberger
3229fbdc48
fix(config): render Feishu group policy in Form mode ( #107336 )
...
* fix(ui): scope unsupported config guidance to fields
* fix(config): export Feishu transform inputs
* chore: remove release-owned changelog entry
2026-07-14 03:42:43 -07:00
Peter Steinberger
723895d713
fix(deps): regenerate google-meet shrinkwrap for jszip
...
5c509efb02 added jszip without regenerating npm-shrinkwrap.json,
failing check-shrinkwrap on main.
2026-07-14 03:41:49 -07:00
Peter Steinberger
5c509efb02
refactor(google-meet): use JSZip for exports
2026-07-14 03:29:43 -07:00
Peter Steinberger
70dbbf3bcd
fix(msteams): rename shadowed close callback in lifecycle test
...
ee472357cb added an app.listen callback param that the inner
server.close callback shadowed, failing oxlint no-shadow on main.
2026-07-14 03:17:59 -07:00
Ayaan Zaidi
42bd094c12
chore(telegram): keep test-only spool constants module-local
...
The retention bound, claim lease default, and liveness options type were
exported only for tests, which fails the dead-export gate. Tests pin the
policy literals locally instead.
Refs #107246
2026-07-14 15:40:29 +05:30
Ayaan Zaidi
c130ceb5e1
fix(telegram): accept delayed cross-lane spool replays exactly once
...
Telegram update ids are global across chats, but the update tracker rejected
any id at or below its single high-water mark. When one lane was delayed
while other lanes completed newer ids, the delayed durable-spool replay was
rejected as accepted-watermark and tombstoned without dispatch - silent
message loss. The tracker now rejects only restored-offset ids and exact ids
it already accepted, with the accepted-id set pruned at the persisted offset
plus a bounded retention window; the startup-only floor-replay special case
is deleted.
Refs #107246
2026-07-14 15:40:29 +05:30
Ayaan Zaidi
f942734bb1
fix(telegram): bind spool claim liveness to process start identity
...
Spool claim owners now encode pid:starttime:uuid, and live-owner detection
requires the pid to exist with a matching process start time. Bare
process.kill(pid, 0) treated Linux thread IDs and recycled PIDs of the new
gateway as a live foreign owner, wedging a chat lane behind a dead claim for
the full 30-minute lease after a restart. Legacy pid:uuid and explicit-x
owners keep existence-only lease protection so rolling upgrades and
no-starttime platforms cannot double-dispatch a live worker's claim.
Refs #107246
2026-07-14 15:40:29 +05:30
Peter Steinberger
ee472357cb
refactor(msteams): use Express listen errors
2026-07-14 03:06:11 -07:00
Alix-007
a9c70f3956
fix(twitch): time out Helix user resolution lookups ( #105883 )
...
* fix(twitch): time out Helix user resolution lookups
* test(twitch): satisfy resolver lint guards
* test(twitch): satisfy resolver account typing
* test(twitch): prove resolver recovery after timeout
* test(twitch): use explicit credential placeholder
* chore(changelog): defer Twitch note to release
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 02:56:39 -07:00
Peter Steinberger
cd7290bc29
fix(discord): show only agent status in progress drafts ( #107338 )
...
* fix(discord): show agent status only in progress drafts
* test(discord): preserve explicit progress label expectation
* test(telegram): update default progress label fixtures
* test(ui): use supported hidden-label assertions
2026-07-14 02:52:01 -07:00
Peter Steinberger
673b163b72
refactor(cli): use Commander native APIs
2026-07-14 02:45:52 -07:00
Peter Steinberger
88e5dc1219
refactor(oc-path): reuse YAML path resolution
2026-07-14 02:33:33 -07:00
Dallin Romney
561cf56c53
refactor(workboard): share control ui contract ( #102271 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 02:33:22 -07:00
Peter Steinberger
92cca9343e
feat(linux): headless node device capabilities (camera, location, notifications) ( #107193 )
...
* feat(linux): add node device capabilities
* fix(linux-node): actionable pending-approval error + node-host advertise integration test
* fix(linux-node): map geoclue access-denied to LOCATION_DISABLED; floor camera maxWidth to avoid zero-height scale
* fix(linux-node): clamp small camera maxWidth to 2 instead of default
* docs(linux-node): clarify where-am-i -t is a process timeout, not update throttle
* refactor(gateway): extract legacy-node filter + rejection hint to fit LOC ratchet; docs-map + deadcode baseline
* fix(gateway): drop now-unused DEFAULT_DANGEROUS_NODE_COMMANDS import after hint extraction
* test(node-host): drop imports orphaned by removed error-code test
2026-07-14 02:30:36 -07:00
snowzlmbot
e8ad0466ff
fix: render assistant transcript headers safely ( #99404 )
...
* fix: render assistant transcript headers safely
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* fix(markdown): nest crossing annotation spans
* fix(markdown): protect final transport projections
* refactor(markdown): split transcript render ownership
* test(ui): cover assistant transcript render flag
* refactor(markdown): keep transcript helpers private
* docs(changelog): note assistant transcript headers
* chore(plugin-sdk): refresh transcript annotation baseline
* fix(markdown): harden final transcript projections
* docs(changelog): defer transcript note to release
* refactor(markdown): centralize HTML tokenization
* fix(markdown): satisfy lint gates
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-14 02:25:37 -07:00
Peter Steinberger
b54a455e38
test(zalo): prove poll backoff cancellation
2026-07-14 02:21:25 -07:00
NIO
cc76dc1d8f
fix(zalo): make poll error backoff abort-aware
2026-07-14 02:21:25 -07:00
Peter Steinberger
31a845875d
refactor(qa-matrix): trim internal exports ( #107331 )
2026-07-14 02:18:24 -07:00
Peter Steinberger
22d30bee2b
test(zalo): narrow message adapter fixture ( #107326 )
2026-07-14 02:09:12 -07:00
Peter Steinberger
4893523d69
refactor(oc-path): trim internal exports ( #107321 )
2026-07-14 02:03:58 -07:00
Peter Steinberger
4341d85268
refactor(google): use GenAI runtime enums
2026-07-14 01:51:34 -07:00
Peter Steinberger
cbfad474a6
refactor(zalo): trim internal exports ( #107312 )
2026-07-14 01:51:09 -07:00
QiuYuang
9d1a75df2d
fix(googlechat): bound auth transporter fetches ( #106178 )
...
* fix(googlechat): bound auth transporter fetches
* fix(googlechat): compose auth fetch deadlines
Co-authored-by: 毛宇豪0668001457 <mao.yuhao@xydigit.com >
Co-authored-by: 0668000787 <ma.weibin@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: 毛宇豪0668001457 <mao.yuhao@xydigit.com >
Co-authored-by: 0668000787 <ma.weibin@xydigit.com >
2026-07-14 01:50:15 -07:00
Dallin Romney
54d31a1306
refactor(qa): share Matrix flows across drivers ( #101253 )
2026-07-14 01:48:30 -07:00
Peter Steinberger
1e62d1f001
refactor(file-transfer): trim internal exports ( #107307 )
2026-07-14 01:43:19 -07:00
Peter Steinberger
f8fb478e4c
refactor(ollama): trim internal exports ( #107296 )
2026-07-14 01:32:48 -07:00
Peter Steinberger
2444cc2f37
refactor(openshell): trim internal exports ( #107291 )
2026-07-14 01:20:03 -07:00
wahaha1223
b58e0875ed
fix(voice-call): show ngrok errors when startup output is fragmented ( #107122 )
...
* fix(voice-call): preserve split ngrok startup errors across stderr chunks
* fix(voice-call): bound split ngrok error tail
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 01:16:10 -07:00
Peter Steinberger
16ff48c729
refactor(time): trust pretty-ms defaults
2026-07-14 01:15:43 -07:00
Peter Steinberger
3d15bf513e
fix(onepassword): preserve pending tool authorization ( #107275 )
...
* fix(onepassword): preserve pending tool authorization
* refactor(onepassword): consume pending authorization in helper
* chore: defer release note generation
2026-07-14 01:12:04 -07:00
Peter Steinberger
bb6874fddf
feat(sessions): upstream liveness for adopted catalog sessions ( #107009 )
2026-07-14 01:09:05 -07:00
Peter Steinberger
473753001a
refactor(google-meet): trim internal exports ( #107284 )
2026-07-14 01:07:06 -07:00
Peter Steinberger
5bcee076a5
refactor(channels): deprecate the never-consumed group intro hint adapter ( #107252 )
...
* refactor(channels): deprecate the never-consumed group intro hint adapter
* chore(channels): compress the intro-hint deprecation note to satisfy the size ratchet
2026-07-14 01:06:13 -07:00
Peter Steinberger
202dea59bd
fix(workboard): grant dispatch workers required tools
2026-07-14 01:00:37 -07:00
Peter Steinberger
b940339c32
fix: use plain agent progress labels ( #107260 )
...
* fix(channels): simplify agent progress labels
* chore: keep changelog release-owned
* chore: refresh bundled channel metadata
2026-07-14 01:00:24 -07:00