Commit Graph

80678 Commits

Author SHA1 Message Date
Peter Steinberger 89a7e4e965 fix(gateway): abort failed partial HTTP responses (#126130) 2026-08-18 19:34:32 -07:00
Peter Steinberger 0eac4f7a3c test(ai): route parity fixtures to owner (#126131) 2026-08-18 19:33:48 -07:00
ClawSweeper 23da04ba8a fix(sessions): require durable final reply evidence (#126075)
* fix(sessions): require durable final reply evidence

* fix(sessions): enforce durable terminal reply evidence

---------

Co-authored-by: Jason (Json) <263060202+fuller-stack-dev@users.noreply.github.com>
2026-08-18 20:18:14 -06:00
Peter Steinberger 64776a0489 fix(sessions): preserve committed results across reconnects (#125904)
* fix(sessions): preserve committed operation results

Report post-commit create failures through the existing runError response and retain confirmed same-client Control UI mutations across reconnects while fencing replacement clients.

* test(ui): await new-session ownership state

* test(ui): clarify draft teardown durability

* fix(ui): preserve reconnect refresh failures

* test(ui): poll absent text targets safely

* test(sms): await ingress spool ownership

* test(ui): await cloud startup failure state

* test(ui): await canonical place selection

* test(ui): scope activity feed to route owner

* test(ui): stabilize route-owned activity states
2026-08-18 19:13:58 -07:00
Peter Steinberger 0718aedb9d test(cli): remove stale update sidecar fixture (#126126) 2026-08-18 19:13:09 -07:00
Peter Steinberger c97b8ffdfc refactor: consolidate meeting and media provider families (#126053)
* refactor(plugins): consolidate provider family helpers

* fix(plugin-sdk): keep meeting script helpers private

* fix(plugins): sync meeting boundary paths
2026-08-18 19:11:13 -07:00
Peter Steinberger 15fb00eb6b fix: surface paired-device runtime requirements (#126067)
* fix: surface paired-device runtime requirements

* test: cover session runtime placement metadata

* test(gateway): stabilize runtime catalog fixtures

* fix(gateway): reject incompatible device moves
2026-08-18 19:10:41 -07:00
Peter Steinberger cc19b83d75 fix(status): keep reports available without read scope (#126072) 2026-08-18 19:08:04 -07:00
Peter Steinberger 886cf1a0bf fix(cua-computer): resolve the ESM-only driver SDK during artifact verification (#126120)
@trycua/cua-driver ships an exports map with only the import condition, so
require-condition resolution throws PATH_NOT_EXPORTED even when the package
is installed. Every real Windows/Linux node host therefore failed driver
artifact verification with COMPUTER_DRIVER_PACKAGE_MISSING despite a correct
install. Fall back to import-condition resolution before concluding the
package is missing; the platform packages keep resolving through require.

Found during a live CUA node bring-up on an Ubuntu guest; the regression
test exercises real installed-package resolution on Linux/Windows CI.
2026-08-18 19:06:52 -07:00
Peter Steinberger 407c8cdb34 fix(mcp): preserve catalog and result integrity (#126083)
* fix(mcp): preserve catalog and result integrity

* fix(mcp): sanitize node result details

* test(mcp): stabilize result memory regression

* refactor(mcp): keep result limits private

* test(mcp): remove stale invoke import
2026-08-18 19:05:33 -07:00
Peter Steinberger cc273e6eea fix(channels): stop idle ingress retention writes (#126073)
* fix(channels): prune ingress retention on admission

* style(channels): keep ingress monitor within limit

* fix(channels): skip pruning ignored ingress
2026-08-18 19:05:30 -07:00
Peter Steinberger d1f327a4e4 fix(ui): refresh Browser when sidebar tab activates (#126058) 2026-08-18 19:05:20 -07:00
Peter Steinberger a8bc60a119 refactor(ui): generalize session placement startup (#126118) 2026-08-18 18:59:50 -07:00
ClawSweeper 22665ae71f fix(ui): fill expanded mobile side panel (#126111)
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-18 18:55:09 -07:00
Peter Steinberger 948a444d63 fix(ui): require exact active run ownership (#126116) 2026-08-18 18:54:58 -07:00
Peter Steinberger f335532ded fix: restart-recovered turns no longer show fatal errors (#126087)
* fix: let restart recovery own terminal settlement

Once durable restart recovery is armed, propagate the canonical restart abort before terminal payload mapping so the recovered continuation owns the visible outcome.

Fixes #126086

* fix(gateway): expose lifecycle context resolver

* fix(gateway): keep lifecycle resolver type acyclic

Own the live Gateway context resolver option beside lifecycle dispatch so current callers compile without closing the server type cycle.

* test(gateway): serialize connection liveness cases

The table cases share one hoisted handler mock; explicit sequential execution prevents cross-case 0/2 call interference in the concurrent CI shard.

* fix: preserve restart recovery claim through settlement

Mark the reply operation restart-aborted before propagating the canonical restart error so terminal cleanup cannot retire the durable recovery claim.
2026-08-18 18:54:23 -07:00
Peter Steinberger 8674f0c1e9 test(agents): remove transport contract test facades (#126110) 2026-08-18 18:52:13 -07:00
ClawSweeper 05817086cc fix(ui): keep memory header stable across tabs (#125568)
* fix(ui): keep memory hub header stable across tabs

* test(ui): tolerate subpixel layout rounding

* fix(ui): keep memory header padding stable

* test(ui): scope memory layout assertion

* test(ui): satisfy promise executor lint

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Colin Johnson <colin@solvely.net>
2026-08-18 18:45:36 -07:00
Peter Steinberger 16419cb475 fix: preserve managed checkouts with shared project references (#126004)
* fix: preserve shared managed project checkouts

* test(gateway): drain root work without agent wait

* fix(projects): complete canonical checkout lifecycle
2026-08-18 18:44:46 -07:00
Josh Avant 784676537c feat(ui): enable link favicons by default (#126109) 2026-08-18 18:41:54 -07:00
ClawSweeper a480d0347f feat(sessions): expose sidebar category controls (#126074)
* feat(sessions): expose sidebar category controls

* fix(sessions): make category controls explicit

* test(sessions): update list description fixture

---------

Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
2026-08-18 19:41:35 -06:00
Peter Steinberger fea2198319 fix(ui): keep New Session folder picker usable while menus close (#126032)
* fix(ui): track overlapping place popover hides

* test(ui): stabilize activity grouping across timezones
2026-08-18 18:29:49 -07:00
Peter Steinberger f4faa0a1b0 fix(status): show unavailable telemetry diagnostics (#126092) 2026-08-18 18:26:14 -07:00
Peter Steinberger 61eb7b932b fix(agents): keep guided auth atomic through creation (#126096)
* fix(agents): make guided auth creation atomic

* fix(auth): keep staged agent workspace explicit

* test(auth): use managed temp directory

* fix(gateway): finish detached lifecycle dispatch migration

* fix(auth): carry staged workspace through providers

* test(auth): align mocks with batch persistence
2026-08-18 18:18:53 -07:00
Peter Steinberger f3c076cacb test(release): remove release-check helper barrel (#126105) 2026-08-18 18:14:25 -07:00
Peter Steinberger 66c7d720bd fix(models): seed configured provider model entries from catalog metadata (#126068)
* fix(config): seed configured provider model entries from catalog metadata

applyModelDefaults replaced omitted input/reasoning/cost/maxTokens on
models.providers entries with generic defaults at config load, erasing the
fact that the operator never authored them. An override entry that pins only
sizing fields materialized as a text-only, non-reasoning, zero-cost model,
which silently dropped vision-gated tools (most visibly the computer tool)
for that model downstream.

Seed omitted fields from the owning plugin manifest catalog row (same
provider+model id, using the existing id-normalization policies) before
falling back to generic defaults. Authored fields always win; entries with
no catalog row behave exactly as before.

* fix(config): preserve tiered pricing when seeding model cost defaults

resolveModelCost keeps only flat per-token fields; carry an authored or
catalog tieredPricing table through explicitly so cost defaulting does not
silently discard it.
2026-08-18 18:12:16 -07:00
Peter Steinberger 54ebb307cd fix(mcp): retire terminal transports and process trees (#126101)
Close terminal SSE and stateful notification streams through the owning lifecycle, and reap stdio/QA process groups before exact authority is discarded.\n\nRefs #126098, #126099, #126100.
2026-08-18 18:10:45 -07:00
Samuel Judson 6ccc57b331 fix: add ssrf protection to Beam fetches (#123848)
* Add ssrf protection to Beam fetches.

* Additional robustness following initial comments.

* fix(beam): make redirect failures terminal

* chore(plugin-sdk): refresh surface budget

* docs(beam): define redirect restart behavior

* docs(beam): align redirect config help

* test(beam): cover warning before redirect block

* fix(beam): always report terminal redirect blocks

---------

Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-08-18 18:00:58 -07:00
Peter Steinberger 6d4950365b refactor(agents): consolidate session auth selection behind prepared-facts facade (#126084)
* fix(subagents): drop dead announce gateway-context resolver plumbing

#126062 left caller-supplied announce gateway-context resolvers behind after binding dispatch to the Gateway instance. Remove the dead plumbing that broke prod-types in gateway-scope lanes.

* refactor(agents): consolidate session auth selection behind prepared-facts facade

Completes #123894's redesign by deduplicating the four session-auth call-site preludes and deleting inference-runtime's duplicate route re-derivation.

Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>

---------

Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
2026-08-18 17:53:52 -07:00
Peter Steinberger 614b503704 test(telegram): remove forum cache reset seam (#125986) 2026-08-18 17:47:19 -07:00
Peter Steinberger 3eecab1bee refactor(plugins): adopt shared retry runtime (#126065) 2026-08-18 17:46:38 -07:00
Vyctor H. Brzezowski 421104253b feat(ui): proxy opt-in link favicons through gateway (#121906)
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-08-18 17:44:57 -07:00
Peter Steinberger 4fac990321 fix(test): run the shared Control UI lane on the cross-file cleanup runner (#126071)
* fix(test): run the shared Control UI lane on the cross-file cleanup runner

ui/vitest.config.ts drives CI's checks-ui job (pnpm --dir ui test). Its
unit project sets isolate:false but never wired
runner: nonIsolatedRunnerPath, so the per-file cleanup in
test/non-isolated-runner.ts — module-graph reset, repo-owned custom
element dropping, DOM body reset, timer and spy restoration — never ran
in the lane CI actually uses. Only the repo-root lane behind
scripts/run-vitest.mjs loaded it.

Files sharing a worker therefore kept the previous file's evaluated
modules, so whichever file imported a component first pinned it to the
real dependency and a later file's vi.mock factory never reached
production code, surfacing as "expected 0 to be 1" in whichever sibling
the size sequencer happened to pack alongside it. This is the class
PR #123512 diagnosed and fixed at the runner; the fix never reached this
lane, so the repo kept absorbing it one uiIsolatedTestFiles entry at a
time.

browser stays exempt (the runner imports node:fs and server modules that
cannot load in browser mode) and unit-node stays exempt (it carries the
Playwright-driven layout tests whose browser lives in module scope, which
per-file module resets churn). The config test asserted runner was
undefined for every project, pinning the broken wiring; it now asserts
the invariant and fails on the pre-fix config.

* fix(agents): stop passing an ignored resolver to instance-bound announce dispatch

check-prod-types is red on main: #126062 threaded resolveGatewayContext
into the announce dispatch call, but that call now goes through
dispatchGatewayLifecycleMethod, whose options type does not carry the
field.

The type checker is right that it does not belong there. That dispatcher
hands work to runtime.dispatchAgent, which resolves context from the
Gateway instance it is bound to and forwards a fixed option allowlist, so
a caller-supplied resolver was already being ignored. Dropping it is
behavior-preserving.

The delivery test asserted the resolver was forwarded, but production now
binds to the instance dispatcher while the test injects a mock, so that
assertion only proved the mock. It now asserts the resolver is
deliberately not forwarded.

Left for the owner of #126062: sendSubagentAnnounceDirectly and its
callers still accept and thread resolveGatewayContext, which is now
vestigial on this path. Deleting that chain or teaching the instance
runtime to honor the resolver is a design call on a just-landed change.
2026-08-18 17:42:00 -07:00
Peter Steinberger a3cbb62ca7 fix(copilot): finalize settled BYOK tool turns reliably (#126097)
* fix(copilot): suppress settled finalization replay

* fix(copilot): keep settled finalization replay-safe
2026-08-18 17:36:13 -07:00
Josh Avant 8d6cbee1b5 fix(gateway): avoid Tailscale crash loops after upgrades (#126069)
* fix(gateway): migrate legacy Tailscale routes on upgrade

* fix(gateway): preserve unattributable Tailscale routes
2026-08-18 17:14:49 -07:00
Peter Steinberger fe816d69ef fix(gateway): route detached announce by instance (#125946)
* test(qa): cover worker generation reload

* test(qa): anchor worker generation fixture

* test(qa): strengthen worker generation proof

* test(qa): stabilize terminal reply smoke waits

* test(qa): widen terminal reply CI budget

* test(qa): drop superseded timeout workaround

* fix(gateway): route detached announce by instance
2026-08-18 17:14:43 -07:00
Samuel Judson 10610d9f63 fix: denial gateway configuration for cron aliases (#123847)
* Fix denial gateway configuration for cron aliases.

* test(gateway): isolate chat image capability lookup

---------

Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-08-18 18:58:33 -05:00
Jason (Json) 19c916be13 fix(auth): keep session rotation on provider routes (#123894)
Keep automatic auth-profile rotation within the session current provider route so API-key sessions do not switch to subscription credentials across compaction or cooldown. Cross-route fallback remains owned by provider route planning.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-18 16:38:56 -07:00
Peter Steinberger 2cd87d3d27 fix(gateway): bind subagent completion dispatch to instance (#126062)
* fix(gateway): bind subagent completion dispatch to instance

* fix(gateway): keep completion binding cycle-free

* fix(gateway): consolidate resolver type imports
2026-08-18 16:37:31 -07:00
Peter Steinberger 8ccfd075fe fix(gateway): bind detached lifecycle dispatch (#126040) 2026-08-18 16:31:25 -07:00
Vyctor H. Brzezowski 1110cd09bd improve(ui): make online sidebar section collapsible (#125963)
* improve(ui): make online sidebar section collapsible

* improve(ui): show online avatars in compact state

* improve(ui): align online section heading

* fix(ui): satisfy sidebar CI gates

* fix(ui): keep online expanded on first visit
2026-08-18 20:28:38 -03:00
Peter Steinberger 4b8b2920b4 fix: fallback traces omit failed model candidates (#126048)
* fix(agents): preserve outer fallback execution traces

* fix(agents): align fallback trace contracts

* style(skills): format release validation instructions
2026-08-18 16:25:51 -07:00
Peter Steinberger e2643afb2a fix(codex): retain terminal facts in oversized trajectories (#126050)
* fix(codex): delegate trajectory bounding to host

* fix(trajectory): preserve compact terminal facts

* style: format release validation skill
2026-08-18 16:22:25 -07:00
Josh Avant 50720c3b8e fix(codex): preserve native approval scope (#125995) 2026-08-18 16:18:01 -07:00
Josh Lehman ffbbb64178 fix: plugin install rejects bare prerelease gateway minimums (#126020)
* fix(plugins): accept bare prerelease gateway minimums

* fix(plugins): honor prerelease host ordering
2026-08-18 16:12:10 -07:00
Ayaan Gazali 48c05d435e fix(skills): restore oxfmt formatting in the release validation skill (#126060)
`oxfmt --check` fails on main, which takes check-docs red on every PR. The
drift came in with #126055 in
.agents/skills/openclaw-release-validation/SKILL.md.

Formatting only, no content change.
2026-08-18 16:09:08 -07:00
Peter Steinberger 9924e2d7a7 feat(cli): prepare session-host onboarding (#125879)
* feat(cli): prepare session-host onboarding

* fix(cli): gate session-host installer capability
2026-08-18 16:08:48 -07:00
Josh Lehman a91f1202d9 fix(ui): keep Plugins hub navigation stable (#126061)
* fix(ui): keep Plugins hub navigation stable

* chore: format release validation skill
2026-08-18 16:08:41 -07:00
Peter Steinberger 11997bf211 fix(workshop): make collection restore ownership retryable (#126014) 2026-08-18 16:04:01 -07:00
ClawSweeper d39a24c687 fix(ui): identify current user in owner filters (#126052)
Pin the authenticated profile first and label it as Name (You) in the shared session owner menus.

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
2026-08-18 15:49:33 -07:00