Commit Graph

6462 Commits

Author SHA1 Message Date
Peter Steinberger
2a77b0b1d5 refactor(fleet): remove internal exports (#107438) 2026-07-14 04:56:37 -07:00
Peter Steinberger
6bea5ec113 refactor(talk): remove consult test dependency seam (#107432) 2026-07-14 04:49:11 -07:00
Peter Steinberger
c4a2db93d9 refactor(status): privatize channel feature rendering (#107428) 2026-07-14 04:40:29 -07:00
Ayaan Zaidi
7d99de8e32 refactor(mcp): split session runtime modules for the LOC ratchet
Mechanical: manager, combined facade, install path, lifecycle, config
loading, and resolver types move to focused modules; the runtime facade
re-exports its prior surface so importers are unchanged. Deletes dead
tools-barrel re-exports flagged by check-dependencies. No behavior
change.
2026-07-14 17:09:53 +05:30
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
Ayaan Zaidi
834561ad67 feat(mcp): resolve MCP server connections per trusted requester
Plugins can register api.registerMcpServerConnectionResolver({serverName,
resolve}) to bind an MCP server's transport (url/headers) to the trusted
sender of each message. Server identity stays static; only the connection
is per-requester. Runtimes are cached per (sessionId, channel, accountId,
senderId); runs without a trusted requester fail closed (cron, subagent,
heartbeat). Resolved credentials never enter fingerprints or logs. Static
servers keep the existing session-scoped lifecycle byte-for-byte.

Enables per-user hosted MCP sessions (e.g. per-user OAuth email/calendar)
in multi-sender channels like Slack.

Refs #106229
2026-07-14 17:09:53 +05:30
Peter Steinberger
1b02289fcf refactor(flows): trim internal export surface (#107420) 2026-07-14 04:32:33 -07:00
Peter Steinberger
2cc49503a6 refactor(hooks): trim internal export surface (#107412) 2026-07-14 04:22:46 -07:00
Peter Steinberger
3b946e09da refactor(logging): trim internal export surface (#107407) 2026-07-14 04:12:23 -07:00
Peter Steinberger
236a6b815c refactor(diffs): trim internal export surface (#107400) 2026-07-14 04:02:26 -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
Ayaan Zaidi
319a796079 fix(gateway): never leave the restart admission fence closed without a restart
A failed, refused, superseded, or thrown restart emission could leave the
reversible restart-signal admission fence closed forever: concurrent emitters
could overwrite the live rollback lease with a dead stand-in, the fenced body
had no try/finally, and the outer catch swallowed errors precisely because the
stuck fence made isGatewayRestartDraining() true. The gateway then rejected
every new task with GatewayDrainingError - silently - until an operator
restarted the process.

beginGatewayRestartSignalAdmission now returns null instead of stand-in
leases (single fence owner), emitPreparedGatewayRestart reopens the fence on
every non-delivery path via try/finally while preserving it whenever a queued
SIGUSR1 is unconsumed, refused-signal cleanup force-clears orphaned fences,
and admission close/reopen transitions are logged with their reason. The
self-contained SQLite restart-intent persistence moves to restart-intent.ts
to keep restart.ts within the LOC ratchet.

Fixes #107322
2026-07-14 16:14:48 +05:30
Peter Steinberger
26fe6e8ea3 refactor(audit): trim internal input types (#107390) 2026-07-14 03:43:49 -07:00
Peter Steinberger
50e777bc25 refactor(tasks): trim internal export surface (#107385) 2026-07-14 03:33:52 -07:00
Peter Steinberger
5bc101bab2 fix(deadcode): remove stale UI baseline rows (#107383) 2026-07-14 03:31:48 -07:00
Peter Steinberger
5f75c05192 fix(deadcode): baseline new-session UI exports from #107358
check-dependencies failed on main and every PR because #107358 landed
four unused UI exports without a baseline update.
2026-07-14 03:25:29 -07:00
Peter Steinberger
20f145f9c1 fix(mac): enable terminal actions for paired-node sessions (#107361)
* fix(mac): enable paired-node terminal sessions

* fix(ci): align node worker bridge checks
2026-07-14 03:22:28 -07:00
Peter Steinberger
d8f705c0a2 refactor(skills): trim internal exports (#107353)
* refactor(skills): trim internal exports

* test(skills): derive mismatch fixture type
2026-07-14 02:58:34 -07:00
Peter Steinberger
103d9ceb5e refactor(secrets): trim internal exports (#107342) 2026-07-14 02:38:46 -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
31a845875d refactor(qa-matrix): trim internal exports (#107331) 2026-07-14 02:18:24 -07:00
Peter Steinberger
4893523d69 refactor(oc-path): trim internal exports (#107321) 2026-07-14 02:03:58 -07:00
Peter Steinberger
d169dc4a12 feat(ui): hover preview of latest tasks on the running-tasks status row (#107297)
* feat(ui): add hover preview popover to running-tasks status row

* chore(ui-mock): exercise finished tasks and status-preview overflow in background-tasks mock

* refactor(ui): move status row into chat-background-tasks-status module (LOC ratchet)

* test(ui): add statusRowId to background-tasks props fixtures

* chore(i18n): record statusPreviewMore fallback baseline

* chore(i18n): sync locale bundles for statusPreviewMore
2026-07-14 01:57:30 -07:00
Peter Steinberger
cbfad474a6 refactor(zalo): trim internal exports (#107312) 2026-07-14 01:51:09 -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
Peter Steinberger
f20089c569 fix: route heavy changed checks remotely (#107282) 2026-07-14 01:15:58 -07:00
Peter Steinberger
16ff48c729 refactor(time): trust pretty-ms defaults 2026-07-14 01:15:43 -07:00
Peter Steinberger
47d37804a8 improve(ui): catch i18n catalog drift locally (#107253)
* ci(ui): verify i18n catalogs locally

* fix(ui): preserve scoped i18n sync errors

* refactor(ui): share i18n raw-copy verifier

* test(ui): cover i18n lint gate

* fix(ui): route lint threads to oxlint
2026-07-14 01:12:36 -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
f4b7a19624 fix: avoid remote boxes for focused validation (#107166)
* fix: avoid remote boxes for focused validation

* fix: preserve explicit remote proof routing

* fix: delegate when local diff refs are unavailable
2026-07-14 00:53:17 -07:00
Peter Steinberger
a951cd2df2 chore(docs-i18n): generalize max reasoning note 2026-07-14 03:51:18 -04:00
Peter Steinberger
4dff4e95b1 refactor(node-host): trim internal exports (#107270) 2026-07-14 00:49:54 -07:00
Peter Steinberger
1d4188138e fix(docs-i18n): centralize translation safeguards 2026-07-14 03:47:37 -04:00
Peter Steinberger
63f497a428 fix(build): refresh cached CLI help per build 2026-07-14 00:21:36 -07:00
Peter Steinberger
ced9a4ae22 refactor(zalouser): trim internal exports (#107247) 2026-07-14 00:20:48 -07:00
Peter Steinberger
69a578034f test: isolate provider auth parity suite (#107167) 2026-07-14 00:16:49 -07:00
Peter Steinberger
84500db379 refactor(plugin-sdk): isolate HTML entity runtime 2026-07-14 00:16:37 -07:00
Peter Steinberger
e91d0fc8b7 refactor(tui): remove dead exports (#107241) 2026-07-14 00:07:41 -07:00
Peter Steinberger
b58a75d726 refactor(html): share entity decoding 2026-07-14 00:00:05 -07:00
Peter Steinberger
ab95871dd5 refactor(tlon): remove dead exports (#107233) 2026-07-13 23:59:46 -07:00
Peter Steinberger
69eb20871d chore(codex): update Codex CLI to 0.144.4 (#107208)
* chore(codex): update Codex CLI to 0.144.4

* fix(codex): validate interrupt params through request map
2026-07-13 23:58:19 -07:00
Peter Steinberger
75cd0efb04 refactor(line): remove dead exports (#107231) 2026-07-13 23:54:12 -07:00
Peter Steinberger
a2b4c4e17d refactor(signal): trim dead exports (#107217) 2026-07-13 23:43:46 -07:00
Peter Steinberger
ec72fda21c refactor(scripts): use dependency metadata parsers 2026-07-13 23:33:30 -07:00
Peter Steinberger
cbb5e97dd4 refactor(whatsapp): trim internal exports (#107206) 2026-07-13 23:23:11 -07:00