Commit Graph

19693 Commits

Author SHA1 Message Date
Peter Steinberger f92e9367e8 fix(build): rebuild incomplete managed-update cache hits (#125954)
* fix(build): invalidate incomplete cache hits

* test(qa): align empty completion lifecycle
2026-08-18 23:25:04 -07:00
Peter Steinberger 3205e9282d fix(codex): keep progress card directly visible (#126189) 2026-08-18 23:20:27 -07:00
Peter Steinberger 2e6457b8e6 fix(codex): restore GPT-5.6 reasoning effort options (#126182)
* fix(codex): preserve model effort capabilities

Keep public model identities separate from app-server execution routing, and retain provider-owned complete effort metadata when account discovery is partial.

Fixes #126005

* refactor(codex): avoid redundant thread rotation

* fix(codex): preserve model fallbacks without leaking wire ids
2026-08-18 22:56:20 -07:00
Peter Steinberger 0d14434d0e feat(secrets): add explicit protected and agent-readable access (#126088)
* feat(secrets): add explicit agent access modes

Distinguish protected write-only secrets from agent-readable Gateway environment values, expose policy-bound Gateway exec aliases to Codex, and activate Node environment proxy support for destination-bound egress.\n\nCloses #125975

* fix(gateway): bind lifecycle dispatch to owning instance

* test(ui): preserve mock gateway recovery state

* fix(codex): avoid unavailable gateway process guidance

* fix(harness): keep run correlation host-owned

* fix(gateway): bind restart delivery to instance

* test(codex): construct tools through test host capability
2026-08-18 22:51:15 -07:00
Peter Steinberger 3550b174e9 fix(crabbox): derive machine classes from catalog (#126184) 2026-08-18 22:35:13 -07:00
Peter Steinberger a6b77ffc07 fix(msteams): preserve replies after durable ingress replay (#126169)
* fix(msteams): preserve replies across ingress replay

Recovered Teams channel and group-chat responses now preserve reply and quote context across durable ingress replay. Discovery metadata also advertises the existing group and reaction capabilities.

* chore(msteams): document replay assertion safety

* test(msteams): normalize replay delivery errors
2026-08-18 22:22:13 -07:00
Peter Steinberger e38a06439e refactor: trim locale and QA fixture debt (#126139)
* refactor: trim locale and QA fixture debt

* fix(qa): preserve shared flow portability

* chore(qa): document shared flow branch

* fix(docs): align plugin SDK subpath catalog

* fix(ci): align shared docs and flow contracts
2026-08-18 22:17:19 -07:00
Peter Steinberger 2456c77459 improve(gateway): avoid repeated logging and delivery scans (#126147)
* perf(gateway): remove repeated logging and delivery scans

Exact session-delivery retries no longer scan the full queue. Logging and diagnostics reuse lifecycle-owned settings and listener interest so uninterested projections are skipped, while outbound WebSocket summaries are built only after recipient admission.

* fix(infra): break diagnostic listener import cycle

Keep event-type validation at the diagnostic dispatcher while the process-wide listener presence counter remains a leaf module.

* test(cli): use logging override owner

Exercise late one-shot JSON diagnostics through the canonical logger override setter so lifecycle-cached console settings are invalidated as they are in production.

* test(auth): use logging override owner

Configure the locked-update warning test through the canonical logger override setter so lifecycle-cached console settings are invalidated before assertion.

* test(gateway): normalize redacted media fixture

Compare durable inbound media facts against the public redaction contract so random identifiers that resemble sensitive text do not make the Gateway suite flaky.
2026-08-18 22:13:22 -07:00
Peter Steinberger baefd067bb fix(deps): keep package runtime dependencies single-owned (#126119)
* fix(deps): consolidate shared runtime helpers

* test(concurrency): support current test lib target

* fix(time): preserve year-scale plugin durations

* fix(agents): preserve empty subagent completions
2026-08-18 22:12:45 -07:00
Peter Steinberger ffdd0641c8 fix(workboard): retry managed worktree cleanup after hook failures (#126162)
* fix(workboard): retry managed worktree cleanup

* fix(workboard): keep workspace mutation type local
2026-08-18 22:05:16 -07:00
Peter Steinberger dcdfd737e5 fix(workboard): recover interrupted worker launches (#126170)
* fix(workboard): recover interrupted worker launches

Persist prepared, accepted, and failed launch phases so Gateway restart reconciliation cannot leave cards permanently running between launch preparation and worker acceptance.

* fix(workboard): require durable terminal evidence

Do not synthesize terminal-session acceptance timing during restart reconciliation; stale same-key terminal rows without updatedAt now fail the prepared launch instead of being adopted.
2026-08-18 22:01:14 -07:00
Peter Steinberger 85cec65a19 fix(signal): preserve partial final delivery after later send failures (#126160)
* fix(signal): preserve partial final delivery

* test(signal): keep ingress boundary on sdk seams

* test(delivery): cover accepted partial target adoption
2026-08-18 21:55:09 -07:00
Peter Steinberger dc37ed8f63 fix(agents): record empty subagent completion delivery (#126179)
* fix(agents): preserve delivery after incomplete completion

* test(qa): distinguish failed delivered completions
2026-08-18 21:46:38 -07:00
Peter Steinberger 5564671c4f fix(gateway): bound audit and Codex backlogs (#126154)
* fix(gateway): bound audit and Codex backlogs

Live Gateway SQLite lock failures and process heap pressure exposed two
independent queue owners. Route best-effort audit persistence through the
canonical shared-state connection with bounded contention retries, and remove
the per-notification Codex yield so the keyed turn queue can drain directly.

Follow-up to #126033 and #126073.

* fix(gateway): annotate raw SQLite cold-open probe

* test(codex): register notification burst shard
2026-08-18 21:44:09 -07:00
Peter Steinberger 4ffa2a4418 fix(gateway): avoid readiness flaps during Reef reconnects (#126151)
* fix(gateway): avoid readiness flaps during Reef reconnects

* docs: preserve plugin SDK private-local contract wording
2026-08-18 21:29:43 -07:00
Peter Steinberger 601f65b2fd fix(clickclack): advertise media delivery capability (#126168) 2026-08-18 21:11:59 -07:00
Peter Steinberger 6c26bc7e2b fix(workboard): preserve concurrent edits during rollback (#126161) 2026-08-18 21:08:49 -07:00
ClawSweeper 7e69b1d5ab fix(ui): make Guardian review activity subtle (#125395)
* fix(ui): make guardian reviews subtle

* fix(ui): correlate Guardian warning cleanup

* fix(ui): retain ambiguous Guardian warnings

* fix(codex): preserve Guardian review state

Keep command-owned review state durable across reconnect and persisted history, with conservative bounded outcomes and producer-owned routine warning correlation. Verify native user-home app-server auth instead of injecting stored profiles.

* refactor(ui): split workspace conflict rendering

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-18 20:28:23 -07:00
Peter Steinberger feda957fc5 fix(gateway): bind channel completion dispatch (#126113)
* fix(gateway): bind channel completion dispatch

* fix(plugin-sdk): scope harness completion dispatch

* test(agents): cover scoped completion dispatch
2026-08-18 19:48:24 -07: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 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 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 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 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
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 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
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
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
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
Peter Steinberger 1d9cda833f feat(ui): show machine CPU and RAM in the cloud picker (#125696)
The cloud machine picker described each class in prose ("Cheap smoke checks
and small repos"), which was the widest thing in the row, got ellipsized, and
did not say what the operator actually picks on. Machine options now carry the
class shape and the picker renders "32 vCPU · 64 GB" instead.

Crabbox reports per-provider class shapes from `providers --json`; the plugin
reads that catalog once per lifecycle and attaches cpu/memoryGb to each option.
A missing binary, failed command, unparseable output, absent classes, or an
unmatched provider all degrade to label-only rows, so an older Crabbox keeps
working.

`description` was never released, so it is removed rather than deprecated, and
listMachineOptions becomes async for the catalog read. Deletes the duplicate
machine-option projector in the environments server method.
2026-08-18 15:38:15 -07:00
Peter Steinberger 6b68ffd3ab fix(canvas): present widgets atomically (#126039) 2026-08-18 15:08:17 -07:00
Peter Steinberger b34eb16071 fix(copilot): restore OpenClaw guidance to agent turns (#125997)
* fix(copilot): add OpenClaw prompt guidance

Copilot append-mode system messages included credential safety, workspace bootstrap, and extra context but omitted OpenClaw delegation and reply-delivery policy.

Build guidance from the final policy-filtered tool surface so visible delegated work, Skill Workshop, and source replies follow the same behavior as Codex.

* fix(copilot): break prompt guidance import cycle

The CI architecture gate detected a cycle through attempt-config and prompt-guidance. Isolate raw-run mode detection in a leaf module.
2026-08-18 15:01:15 -07:00
Peter Steinberger 491dc7f8b1 fix(codex): report native project docs truthfully (#126010) 2026-08-18 14:42:56 -07:00
Onur Solmaz 5cabd2b72e Revert "fix(providers): report request acceptance consistently (#125807)" (#126021)
This reverts commit f5e9622fc9.
2026-08-19 00:16:09 +03:00
Onur Solmaz f5e9622fc9 fix(providers): report request acceptance consistently (#125807)
* fix(providers): report request acceptance consistently

* fix(providers): retain response hook compatibility

* fix(providers): keep legacy response hook path

* fix(providers): distinguish rejected response attempts

* fix(providers): keep acceptance evidence truthful

* fix(google): preserve provider acceptance errors

* test(google): satisfy acceptance callback lint

* fix(google): exclude acceptance hooks from retry deadline

* fix(openai): report Codex websocket acceptance

* fix(openai): commit websocket state before acceptance hook

* fix(google): abort pending acceptance callbacks

* fix(providers): abort pending acceptance callbacks

* fix(mistral): report observed HTTP response

* fix(mistral): report rejected HTTP responses

* fix(providers): derive acceptance from HTTP status

* fix(providers): preserve acceptance lifecycle cleanup

* fix(anthropic): report observed HTTP response

* fix(anthropic): report rejected HTTP responses

* fix(plugin-sdk): expose provider lifecycle

* fix(providers): stop after lifecycle abort

* fix(mistral): cancel unread acceptance failures
2026-08-18 23:50:57 +03:00
Peter Steinberger 549e6349f8 fix(workboard): prevent orphaned runs and overwritten cards (#125951)
* fix(workboard): make ownership updates atomic

Persist launch intent before worker acceptance, reconcile accepted identities,
fence cross-host card mutations, and deduplicate session capture in SQLite.

Closes #125932

* test(workboard): keep race fixtures plugin-local

Use a plugin-local synchronization helper and update the sessions-page capture
expectation for the new store-owned RPC.

* fix(workboard): fence lifecycle and restore races

Apply terminal lifecycle state only while the matched association is current,
and converge concurrent archived session restores on the active winner.
2026-08-18 13:50:17 -07:00
Peter Steinberger 99acca309c fix(crabbox): surface invalid cloud worker profiles (#125991) 2026-08-18 13:47:51 -07:00
Peter Steinberger 6f8e5d9078 test(slack): remove cache reset seams (#125971) 2026-08-18 12:47:14 -07:00
Peter Steinberger d5aff660a2 fix(codex): keep large AGENTS.md instructions visible (#125966)
* fix(codex): raise native project doc budget

Default OpenClaw Codex threads to a bounded 128 KiB aggregate project-document budget so large AGENTS.md chains remain visible. Preserve explicit ordinary-thread overrides and keep restricted or lightweight turns at zero.

* test(codex): refresh project doc config expectations
2026-08-18 12:39:52 -07:00
Peter Steinberger d1f58c4be4 fix(ollama): stop response handling after abort (#125961)
Recheck the request signal after an async response hook settles so a concurrent abort cannot reach response body handling. Related to #125802 and #125834.

Co-authored-by: Onur Solmaz <2453968+osolmaz@users.noreply.github.com>
2026-08-18 12:31:46 -07:00
Peter Steinberger 934a32cd81 test(providers): remove JSON reader facades (#125956) 2026-08-18 12:18:30 -07:00
Josh Avant 72783bcdc2 fix(voice-call): preserve caller ownership context (#125953) 2026-08-18 12:10:13 -07:00
Peter Steinberger 5301fb5e7f fix(codex): preserve harness trajectories (#125941) 2026-08-18 11:47:09 -07:00
Peter Steinberger b1d53fcdda fix(browser): repair session lifecycle ownership (#125933)
Preserve browser availability and profile ownership across node and extension routes, close session-owned node tabs, honor screenshot refs, and hide unavailable tab-bound actions.
2026-08-18 11:20:04 -07:00
Peter Steinberger 3a96fbd64d feat(canvas): present widgets on native device panels (#125818)
* feat(canvas): present widgets on native panels

* refactor(agents): inline gateway caller selection

* fix(canvas): restrict widget panels to macOS

* refactor(agents): reuse resolved spawn workspace
2026-08-18 11:05:41 -07:00
Peter Steinberger 62b2141118 fix: keep turns active when sessions_yield has no child (#125850)
* fix(agents): reject sessions_yield without child completion

* fix(agents): preserve native child yield claims

* chore(agents): keep tool registry within lint limit

* fix(agents): preserve subagent self-yield
2026-08-18 10:53:37 -07:00
Peter Steinberger fd8326c5bf fix(codex): reap sandbox process trees before termination (#125908) 2026-08-18 10:48:10 -07:00
Peter Steinberger fd216cb550 fix: prevent plugin metadata rescans from stalling Gateway (#125596)
* fix(plugins): preserve gateway metadata ownership

Generic runtime contexts no longer displace the Gateway lifecycle snapshot, preventing repeated synchronous plugin inventory validation on session hot paths.

* fix(gateway): reuse lifecycle plugin generation for turns

* test(agents): align static runtime lifecycle expectations

* test(gateway): refresh minimal runtime fixtures

* test(runtime): pass lifecycle metadata explicitly

* fix(skills): reuse gateway metadata for commands

* test(gateway): prepare reply runtime for agent RPCs

* style(agents): format rebased runtime preparation

* test(gateway): prepare runtime for direct agent RPCs

* test(gateway): provide direct agent runtime fixture

* test(gateway): prepare chat send reply runtime

* test(qa): await descendant process exit
2026-08-18 10:47:16 -07:00