Commit Graph

78555 Commits

Author SHA1 Message Date
Peter Steinberger 673246c42a fix(google-meet): stop failed voice gateway connections (#120822) 2026-08-08 19:20:19 -07:00
Peter Steinberger 121ce7faed fix(worker): preserve long Responses sessions across cloud handoff (#120803)
* fix(worker): preserve Responses replay across handoff

Long OpenAI Responses cloud-worker sessions retain authoritative compaction replay through windowing and fail visibly when it cannot be preserved.

* test(worker): align replay fixture with frame limit
2026-08-08 19:11:29 -07:00
SunnyShu 7417801580 fix(sessions): archive cron-run transcripts pruned by tasks maintenance (#119511)
* [AI] fix(sessions): archive cron-run transcripts pruned by tasks maintenance

openclaw tasks maintenance --apply pruned stale cron-run session entries and
hard-deleted their SQLite transcript rows without writing the compressed
.deleted archive every other removal path writes (cron reaper, cleanup
service, heartbeat, doctor). The removal list built in
pruneSessionRegistryStore never set archiveRemovedTranscript, so the
downstream projection archived nothing while the rows were reclaimed
unconditionally.

Set archiveRemovedTranscript: true on the removal, matching the cron session
reaper. The existing archive machinery then writes and verifies the
.deleted.<ts>.zst cold copy before rows are reclaimed, so operators keep the
automation transcript under the archive retention policy.

Fixes #119269

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [AI] test(sessions): recognize plain transcript archives in maintenance regression

ClawSweeper P2 on #119485: the archive-discovery helper only matched
.deleted.*.zst, but encodeSessionArchiveContent emits a plain JSONL
deleted archive when zstd is unavailable (e.g. Bun). Use the shared
isRetainedSessionTranscriptArchiveName classifier so the apply regression
accepts both supported archive encodings.

Related to #119269

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(sessions): strengthen maintenance archive proof

Co-authored-by: SunnyShu0925 <shu.zongyu@xydigit.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 19:07:11 -07:00
Peter Steinberger fe85bba59e fix(windows): normalize child environment key casing (#120802) 2026-08-08 19:03:48 -07:00
Peter Steinberger fbdbe9c162 fix(mistral): reset transcription state after reconnect (#120813) 2026-08-08 18:59:23 -07:00
Vincent Koc 54c06674d4 fix(release): accept stale historical record counts (#120738) 2026-08-09 09:54:58 +08:00
sunlit-deng 6287c88c3b fix(googlechat): reject invalid UTF-8 in API JSON responses (#120239)
… regression

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-08 20:54:17 -05:00
Peter Steinberger 62b418d551 fix(agents): retain images within tool-result context limits (#120808) 2026-08-08 18:44:53 -07:00
Vincent Koc e14b36cdbf fix(qa): update Control UI scenario code references (#120801) 2026-08-09 09:42:38 +08:00
Peter Steinberger d52827a8c0 fix(google-meet): redial after completed voice calls (#120807) 2026-08-08 18:40:50 -07:00
Peter Steinberger a663063d4d fix(browser): reclaim stalled extension relay connections (#120806) 2026-08-08 18:37:05 -07:00
Peter Steinberger c8cd98cf52 refactor(gateway): centralize connect failure classification (#120505)
* refactor(gateway): centralize connect failure classification

* fix(gateway): project connect failure into status JSON

* fix(protocol): restore remote-auth context in pairing remediation

* fix(gateway): classify generic probe failures by close reason

* fix(gateway): keep transport closes unreachable

* fix(gateway): preserve rate-limit diagnostics

* fix(gateway): preserve typed rate-limit failures
2026-08-08 18:34:01 -07:00
Peter Steinberger 75dbe52e3e refactor: one code path behind doctor legacy-state migrations (#120716)
* refactor(doctor): prefer manifest route-state owners

* refactor(doctor): unify config repair declarations

* refactor(doctor): unify legacy state migrations

* fix(doctor): satisfy migration pipeline guards

* fix(plugin-sdk): keep doctor adapter inside boundary
2026-08-08 18:23:15 -07:00
Peter Steinberger ba7561d25d fix(telegram): acquire polling queue before starting worker (#120800) 2026-08-08 18:20:04 -07:00
sunlit-deng 89c792bf64 fix(google): reject malformed video operation JSON (#115465)
* fix(google): reject malformed video operation JSON

* fix(google): reuse shared provider JSON reader for video operations

Route successful Google video operation responses through the canonical
readProviderJsonResponse so fatal UTF-8 decoding and malformed-JSON wrapping
stay on the shared provider contract. Keep the lenient non-OK detail path.
2026-08-09 04:15:39 +03:00
sinner 224d8a9428 fix(cron): reject blank agent and session flags (#119879)
Reject empty or whitespace-only `--agent` and `--session-key` values for cron edit, including value/clear mutex cases, while preserving clear and omitted behavior.

Fixes #119878.

Verification:
- Focused cron CLI tests: 218/218
- Exact-head CI: https://github.com/openclaw/openclaw/actions/runs/31279619271
- Workflow Sanity: https://github.com/openclaw/openclaw/actions/runs/31279619244

Co-authored-by: zyw02 <59604424+zyw02@users.noreply.github.com>
Co-authored-by: Altay <altay@hey.com>
2026-08-09 04:06:07 +03:00
Peter Steinberger 5cf9c9cda6 ci: extend watchdog for cold migration proofs (#120700) 2026-08-08 18:03:16 -07:00
Peter Steinberger a26959b927 fix(test): gate long-context live shard by opt-in (#120798) 2026-08-08 18:01:31 -07:00
Harjoth Khara af9b872604 fix(agents): apply per-agent contextTokens cap to embedded run context budget (#120343)
* fix(agents): honor per-agent context budgets

Apply the selected agent contextTokens ceiling to embedded-run prechecks, effective model sizing, compaction, safeguard sizing, and result metadata. Prepared attempts now carry one canonical budget into extension setup instead of re-resolving mutable policy.

Caller-requested compaction budgets remain bounded by both the selected agent cap and the model window. Native model-owned harnesses continue to own their context and compaction policy.

Refs: #118678

Co-authored-by: harjoth <harjoth.khara@gmail.com>

* test(agents): type compaction model fixtures

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 17:56:46 -07:00
Peter Steinberger 8fbb729ad3 fix(cloud-workers): preserve accepted workspace after SSH loss (#120717)
* fix(cloud-workers): serialize accepted workspace rollback

Prevent rollback and recovery from racing a remote accepted-workspace apply after SSH loses its exit status. Settle the same transaction nonce under a durable phase lock before deciding whether publication succeeded.

Refs #120655

* refactor(gateway): keep workspace apply classifier private

* refactor(gateway): split accepted workspace lock script

* refactor(gateway): isolate accepted workspace lock

Keep the byte-identical remote lock fragment with the accepted-workspace transaction instead of the manifest implementation.

* test(gateway): fix settle manifest timing assertion

* fix(cloud-workers): preserve indeterminate workspace publication

Keep remote and local rollback journals pending when accepted-workspace settlement cannot be observed. Recovery now owns restoring both sides, while definitive apply and commit failures still roll back immediately.

Refs #120655
2026-08-08 17:56:31 -07:00
Peter Steinberger 23f36d27ee fix(discord): deduplicate directory peers across guilds (#120797) 2026-08-08 17:55:16 -07:00
Peter Steinberger 8cb53c7b55 perf(doctor): keep bundled doctor contract closures dependency-light (#120698)
* perf(doctor): keep bundled doctor contract closures dependency-light

Doctor contract enumeration cold-loads each plugin's doctor-contract-api
closure via jiti, so a static value import of openclaw/plugin-sdk/runtime-doctor
pulled the state-db/kysely graph (~4.3s per closure) into
listPluginDoctorLegacyConfigRules / listPluginDoctorStateMigrationEntries.

- migrate all light doctor-contract closures (66 files) to the
  dependency-light openclaw/plugin-sdk/runtime-doctor-migrations subpath
- voice-call: load detect/repairOpenClawStateDatabaseSchema* lazily inside
  the migration bodies; keep only a type-only static runtime-doctor import
- matrix: split pure credential record shapes/normalizers into
  credentials-state.ts so the doctor closure no longer imports the sync
  plugin-state store through credentials-read
- guard: doctor-contract-closure-guard.test.ts now forbids static value
  imports of runtime-doctor in closures alongside agent-runtime

* fix(matrix): keep credential revocation record type module-local

Knip production scan flags the export as consumer-less; the type is only
referenced by the exported union and revocation guard signature.
2026-08-08 17:51:31 -07:00
Peter Steinberger 970a82624a fix(elevenlabs): preserve repeated committed speech segments (#120792) 2026-08-08 17:38:29 -07:00
Peter Steinberger 993a415d24 fix(ai): fence Responses replay metadata (#120777) 2026-08-08 17:35:34 -07:00
Peter Steinberger 56cdad5055 fix(ai): invalidate stale compaction replay (#120786) 2026-08-08 17:29:17 -07:00
Peter Steinberger 2a7782674e fix(telegram): clean up every failed webhook startup phase (#120788) 2026-08-08 17:27:19 -07:00
Josh Avant a345ede685 fix(codex): preserve configured MCP tools in scheduled turns (#120366) 2026-08-08 19:25:39 -05:00
Peter Steinberger b4cedfd40e fix(ui): show dev checkout commit lag in Updates (#120769)
* fix(ui): report dev checkout update status

Show tracked-upstream commit lag and verified install/commit timestamps in Settings > Updates. Verify the post-restart Git revision before reporting success, and surface same-revision updates as an explicit no-op unless plugin convergence changed the install.

* test(ui): expect authoritative update reconciliation
2026-08-08 17:21:42 -07:00
ooiuuii 173f57ad21 fix(agents): repair XML-polluted tool names (#113814)
* fix(agents): repair XML-polluted tool names

* fix: compose structured tool name repairs

---------

Co-authored-by: Altay <altay@hey.com>
2026-08-09 03:21:09 +03:00
Peter Steinberger 5439732124 fix(discord): remove only the bot own reactions (#120785) 2026-08-08 17:21:03 -07:00
Peter Steinberger 915c25d713 fix(macos): complete ChatGPT subscription setup (#120782)
Fresh Dev installs now preflight disk space and stream honest stages, while Codex activation probes the refreshed request-scoped registry.

Closes #120779
Closes #120780
2026-08-08 17:16:00 -07:00
Peter Steinberger 1758008a91 fix(plugins): surface safe administrator install warnings (#120783) 2026-08-08 17:13:12 -07:00
Vincent Koc 9f2c2bd4c0 fix(release): keep upgrade survivor sessions fresh (#120778) 2026-08-09 08:05:36 +08:00
Peter Steinberger bb019e4a53 fix(providers): preserve realtime tool-result delivery ownership (#120776)
Co-authored-by: Wan Yong <wan.yong@xydigit.com>
2026-08-08 17:03:43 -07:00
clawsweeper[bot] 61b4194868 fix(plugins): retain incognito scope for embedded session ownership (#120215)
* fix(plugins): retain incognito scope for embedded session ownership

* fix(plugins): scope embedded ownership at run boundary

Keep the shared multi-identity gateway checker fail-closed while carrying the exact embedded session key agent and incognito store into its ID/file scan. Add real SQLite proof for accepted and foreign locked identities in one incognito store.

* style(plugins): format SQLite ownership regression

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 16:59:29 -07:00
Peter Steinberger fc1948dab5 fix(elevenlabs): surface realtime provider error events (#120772) 2026-08-08 16:58:30 -07:00
Peter Steinberger 56e00e078c fix(agents): preserve exact steering delivery ownership (#120770) 2026-08-08 16:55:00 -07:00
Peter Steinberger 4050fb02e0 fix(telegram): prevent session-count routing slowdown (#120774) 2026-08-08 16:54:25 -07:00
Peter Steinberger 692c9452aa fix(agents): preserve authoritative background process outcomes (#120754) 2026-08-08 16:49:36 -07:00
Peter Steinberger 5400311be1 test(process): make Linux adapter wiring portable (#120741)
Co-authored-by: Peter Steinberger <steipete@openai.com>
2026-08-08 16:48:07 -07:00
zengLingbiao 2289d9658a fix(diagnostics-prometheus): send Content-Length on metrics HEAD responses (#120212)
* fix(diagnostics-prometheus): send Content-Length on metrics HEAD responses

* fix(diagnostics-prometheus): harden HEAD metadata proof

Punchcard-Session: ember-willow-timber-gk

Co-authored-by: zenglingbiao <zeng.lingbiao@xydigit.com>

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 16:45:04 -07:00
Peter Steinberger 6972ef80b7 fix(telegram): classify hosted media size errors consistently (#120757) 2026-08-08 16:44:44 -07:00
qingminlong 019dd0e086 fix(scripts): treat whitespace-only force-kill delay as unset (#120284)
Punchcard-Session: calm-harbor-willow-ty

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 16:39:32 -07:00
Peter Steinberger d40c21b036 fix(gateway): isolate remote probe device auth (#120707)
* fix(gateway): scope remote probe device auth

* test(gateway): narrow probe socket capture

* fix(gateway): suppress stored auth for SSH probes
2026-08-08 16:39:29 -07:00
wanyongstar 2bc314475c fix(infra): report actual backup tar attempt count in failure message (#119197)
Punchcard-Session: quiet-orchard-orchard-9t

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 16:29:33 -07:00
Peter Steinberger 58aab7464f fix(gateway): limit response attachments to the active turn (#120742) 2026-08-08 16:24:59 -07:00
Peter Steinberger b55e1e3a55 fix(imessage): preserve native attachment message identities (#120739) 2026-08-08 16:21:18 -07:00
Peter Steinberger 45dd558d92 fix(codex): prevent session handoffs and native tasks from losing thread ownership (#120740)
* fix(codex): preserve thread ownership across session lifecycles

* test(codex): keep canonical context-engine session fixtures

* fix(codex): fence replacement thread rollback by ownership

* fix(codex): fence thread handoffs by physical client ownership

* fix(codex): derive conversation privacy from its source session

* fix(codex): claim active native subagents at their lifecycle owner

* fix(codex): preserve conversation ownership when detach fails

* fix(codex): fence stale native child close notifications

* fix(codex): preserve active child ownership during rollback

* test(codex): keep lifecycle fixtures aligned with public contracts

* fix(codex): preserve rollback failure causes across ownership recovery

* fix(codex): retain aggregate rollback causes through lint analysis

* fix(codex): release native children when idle retention fails
2026-08-08 16:20:16 -07:00
Masato Hoshino 3f1f30d939 fix(proxy-capture): bound how long a capture read waits for the next byte (#119706)
Debug capture clones every response and reads the clone under a byte cap, but
with no bound on how long it waits between chunks. A remote that sends headers
and one chunk and then goes silent leaves that read outstanding forever — and
because clone() tees the body, a branch settles its cancellation only once both
branches cancel or the source reaches EOF. So the caller's own cancellation,
and the guarded transport release that follows it, end up waiting on a
diagnostic read of a body nobody wants.

Read through the shared idle-bounded reader instead. On timeout it issues the
branch cancel fire-and-forget and throws, which is what lets the tee settle;
capture then records the exchange as metadata with bodyCapture "stalled",
alongside the existing too-large and unavailable cases. A stalled remote must
not turn a diagnostic read into a failure of the request being observed.

That helper also rejects when the read itself fails, and only the deadline is
capture's decision to make: a reset or aborted stream is the exchange failing
and still has to reach the error handler, so capture supplies its own timeout
error and rethrows anything else.

The response wrapper's cancel-then-release ordering is deliberate, pinned by
its own test, and stays untouched.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-08 16:19:18 -07:00
Vincent Koc 115e5a6f25 fix(release): isolate prepublish plugin startup probe (#120749) 2026-08-09 07:15:46 +08:00