Commit Graph

42062 Commits

Author SHA1 Message Date
Peter Steinberger a67c52611e fix(deps): bump brace-expansion override to 5.0.9 for HIGH advisory 1130705 (#118804)
* fix(deps): bump brace-expansion override to 5.0.9 for advisory 1130705

* test(mcp): isolate oversized catalog proof from wall-clock timeouts
2026-08-03 11:01:02 -07:00
Peter Steinberger 2efac6c999 feat(cli): add session archive and delete commands (#118791)
* feat(cli): add session lifecycle commands

* fix(deps): update brace-expansion security pin

* chore: defer session lifecycle release note
2026-08-03 11:00:17 -07:00
Peter Steinberger 8eaf917efb fix(google): honor Cloud SDK credential location and Vertex billing project (#118745) 2026-08-03 10:47:13 -07:00
Peter Steinberger 7b8bcaaa05 fix(gateway): expire time-dependent session list projections (#118768) 2026-08-03 10:29:41 -07:00
Peter Steinberger 9acbbd805c fix(cron): preserve scheduling across historical timezone transitions (#118712)
* fix(cron): normalize timezone transitions and historical DST schedules

* fix(cron): validate timezone transitions in scheduler retry paths
2026-08-03 10:28:17 -07:00
Peter Steinberger 206a784961 fix(doctor): invalidate SQLite session caches after durable repairs (#118766) 2026-08-03 10:26:48 -07:00
Peter Steinberger 8406cfeac1 fix(agents): isolate network-backed dynamic tool results and errors (#118729)
* fix(agents): isolate network-backed dynamic tool results and failures

* test(agents): retain literal text result types in dynamic tool fixtures
2026-08-03 10:19:27 -07:00
Peter Steinberger 94f431417b test(agents): avoid provider fixture fallback delays (#118770)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 10:04:03 -07:00
Shakker b8f5aa8ec8 fix: keep skip-ui onboarding on guided flow (#118737)
Keep `openclaw onboard --skip-ui` and `openclaw setup --skip-ui` on guided onboarding while suppressing browser and terminal handoffs.

Refs #118388 and #118038.
Prepared head SHA: 4e284c4523
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-08-03 18:03:01 +01:00
Peter Steinberger 95e17d6c99 fix(memory): isolate LanceDB embedding credentials per agent lifecycle (#118767) 2026-08-03 10:00:08 -07:00
Peter Steinberger 768e1f9a2d fix(exec): recheck legacy approvals after doctor (#118769) 2026-08-03 09:55:41 -07:00
Peter Steinberger 36a2b5b00b fix(media): preserve bare relative attachments in ordered reply segments (#118746) 2026-08-03 09:41:36 -07:00
Peter Steinberger dc1412c145 fix(gateway): reject explicit empty attachments across all entrypoints (#118742) 2026-08-03 09:40:29 -07:00
Dinesh H Suthar 430fca67ff fix(reply): preserve streamed Telegram replies on failure
Preserve already-visible Telegram partial replies when a later run failure occurs. Finalize the same draft with the terminal notice while keeping the reply operation in run_failed state.

Co-authored-by: Dinesh Suthar <dineshsld20@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-04 01:38:59 +09:00
Peter Steinberger 29113f7786 test(agents): prepare shared runner discovery facts (#118756)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 09:35:59 -07:00
Peter Steinberger 6c1ba3145d fix(plugins): enforce configured bundled-plugin execution policy (#118701)
* fix(plugins): enforce configured bundled-plugin execution policy

* fix(plugins): avoid heavy channel policy dependency in manifest eligibility

* fix(config): remove plugin eligibility architecture import cycle
2026-08-03 09:32:25 -07:00
Peter Steinberger d6e704621b test(reply): lazy-load real CLI runner fixture (#118752)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 09:22:12 -07:00
Peter Steinberger 9c73c2f570 fix(gateway): clear stale terminal state when channel recovery starts (#118728)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-03 08:41:23 -07:00
tzy-17 53d442eb51 fix(test): bound shared git inventory lookup (#111171)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-03 23:36:49 +08:00
Peter Steinberger 7fafaf50f4 fix(onboard): keep referenced provider secrets out of plaintext (#118702)
* fix(onboard): keep referenced provider secrets out of plaintext

* fix(onboard): retain public credential owner type usage

* docs(onboarding): explain preserved credential profiles in reference mode
2026-08-03 08:34:47 -07:00
Vincent Koc 7fabb55648 fix(channels): generate catalog from package manifests (#118097) 2026-08-03 23:17:09 +08:00
Peter Steinberger e3861e0bed fix(cli): publish completion caches atomically (#118715)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-03 08:00:59 -07:00
Peter Steinberger 67e1b27833 fix(security): sanitize JSON-escaped forged content boundaries (#118698) 2026-08-03 07:36:31 -07:00
Peter Steinberger 395c772ba7 fix(doctor): honor explicit plugin-only migration authority (#118700) 2026-08-03 07:34:49 -07:00
SunnyShu a1a73cf421 fix(security): detect child_process calls through aliases and computed members (#116304)
* [AI] fix(security): detect child_process calls through aliases and computed members

The advisory source scanner's dangerous-exec rule missed three
child_process invocation forms that each should produce a critical
finding, plus a fourth namespace-alias computed-exec form:

- ESM import alias:    import { spawn as launch } from "node:child_process"; launch(...)
- CJS destructure alias: const { exec: run } = require("child_process"); run(...)
- computed member:     import cp from "node:child_process"; cp["spawn"](...)
- namespace alias computed exec: const proc = require("child_process"); proc["exec"](...)

The rule pattern only matched bare command names and used a source-wide
child_process context gate with a literal receiver-name allowlist in
isBenignMemberExecMatch, so aliased bindings and computed calls on proven
namespace aliases escaped detection.

Add a provenance-aware collectChildProcessBindings pass that derives
renamed method bindings and whole-namespace bindings ONLY from actual
child_process imports/requires (so unrelated aliases such as a locally
imported launch() do not false-positive). Extend the dangerous-exec
pattern with a computed-member branch and make isBenignMemberExecMatch
consult namespace-alias provenance instead of a hard-coded receiver
allowlist, so computed exec on a proven child_process namespace alias
fires while the RegExp.exec exclusion is preserved.

Fixes #116255

Co-Authored-By: Maas <noreply@anthropic.com>

* style(security): apply oxfmt to scanner.ts

Fixes CI oxfmt --check failure on PR #116304 (oxfmt wrapped a long if
condition across multiple lines). No logic changes.

* fix(security): scope computed exec methods to proven child_process receiver

The dangerous-exec scanner's computed-member matcher accepted any
obj["spawn"]()/obj["execSync"]() call whenever child_process appeared
anywhere in the file, while receiver provenance was checked only for
exec. That turned unrelated APIs into critical findings, which could
incorrectly fail Skill Workshop proposals and distort deep-audit output.

Require a proven child_process namespace receiver for EVERY watched
computed execution method (exec/execSync/spawn/spawnSync/execFile/
execFileSync), preserving the long-standing RegExp.exec exclusion only
for the direct dot-member exec case. Add regression coverage for
unrelated computed spawn/execSync calls and a proven computed execSync
positive.

Addresses ClawSweeper P1 on PR #116304.

* [AI] fix(security): recognize direct and computed calls through collected namespace aliases

Address ClawSweeper P1/P2: consult provenance namespaceAliases for direct
dot-member exec calls (e.g. proc.exec for const proc = require(...)) and
collect ESM namespace imports (import * as proc from "node:child_process").

Co-Authored-By: Codex <noreply@anthropic.com>

* [AI] fix(security): report every proven alias execution call on a line

ClawSweeper P1: the alias attribution path emitted only the first proven
child_process alias call per source line, violating the scanner's
per-occurrence reporting. Match all alias call positions and emit a finding
for each (skipping positions the literal pattern already reported), with a
regression test for two calls on one line.

Co-Authored-By: Codex <noreply@anthropic.com>

---------

Co-authored-by: Maas <noreply@anthropic.com>
2026-08-03 10:29:52 -04:00
Peter Steinberger 4c74fd8996 test(gateway): avoid async facade mock race (#118708)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 07:26:51 -07:00
Peter Steinberger 63638751c1 fix(gateway): preserve final speech during transcription shutdown (#118693) 2026-08-03 07:25:04 -07:00
Peter Steinberger 25f174c8a0 fix(gateway): resume durable outbound delivery retries (#118694) 2026-08-03 07:23:46 -07:00
Peter Steinberger 8d263b4844 fix(plugins): reject external public-artifact hardlinks (#118689) 2026-08-03 07:22:40 -07:00
Peter Steinberger ffcca757eb fix(media): fall back when providers return empty output (#118660)
* fix(media): fall back when providers return empty output

* test(media): type the synthetic attachment cache fixture

* test(media): avoid object spread in fallback test cases
2026-08-03 07:13:19 -07:00
Peter Steinberger cad499d7ca test(state): reuse current agent database fixture (#118677)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 06:43:24 -07:00
Onur Solmaz f7434f94cf fix(agents): avoid false compaction after mid-turn precheck (#117963)
* fix(agents): avoid false compaction after mid-turn precheck

* fix(agents): preserve retry budget for tool progress
2026-08-03 15:38:07 +02:00
juyaohuidt 096c929ecf fix(doctor): audit every agent workspace (#111840)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: juyaohuidt <266015826+xydt-juyaohui@users.noreply.github.com>
2026-08-03 21:04:56 +08:00
Florian e1b1d4ba7c fix(config): stop plugin schemas rejecting the channel key core writes (#117992)
* fix(config): stop plugin schemas rejecting the channel key core writes

A published channel plugin declares a closed config schema listing only the keys
it knew about when that version shipped. Core's doctor migration writes
heartbeatVisibility into channels.<id> and its accounts for every channel, so a
plugin predating that key turns config core itself produced into a gateway that
refuses to start with 78/CONFIG — and doctor --fix reports it without repairing
it, leaving no in-product recovery. This took the live gateway down after the
last deploy: @openclaw/signal 2026.7.2-beta.3 ships a 44-property closed schema
with no heartbeatVisibility, while core reads all three precedence layers
(src/infra/heartbeat-visibility.ts) and documents them
(docs/gateway/heartbeat.md).

Channel schemas built from core's shape may omit common fields on purpose —
buildCommonChannelAccountShape takes an `omit` list — so widening every common
key would silently accept config that can never take effect. The fix stays on
the keys core writes: core wrote it, so core accepts it. Everything else is
untouched, including unknown-key rejection, which is covered by a test and
verified end to end.

Applied once when the channel schema map is built, so the AJV cache key still
maps to exactly one schema per channel, and unchanged schemas are returned by
identity.

Verified against the real failure: with the live plugin set loaded, the config
that crashed the gateway now validates at both channel and per-account level,
while an unknown key on the same channel is still rejected.

* fix(config): normalize external channel schemas at metadata owner

* fix(config): normalize core-owned channel visibility schemas

* style(config): format channel metadata regression coverage

* refactor(config): simplify channel schema normalization coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-03 05:38:17 -07:00
Jesse Merhi 68be0e3378 feat: enable rich setup controls in custodian chat (#114631)
* feat(protocol): carry the awaited wizard step on the chat result

* fix(system-agent): strip sensitive wizard prefill from chat results

* fix(wizard): keep setup secrets server-side

* test(wizard): preserve prompt mock typing

* fix(ui): add reveal toggle to wizard secrets

* refactor(ui): adopt Carapace sensitive input

* fix(ui): hide revealed sensitive input mask

* test(twitch): cover environment-only setup

* feat(custodian): render rich wizard steps

* fix(custodian): validate wizard text replies

* feat(custodian): submit typed wizard answers

* refactor(gateway): isolate custodian chat turns

* fix(gateway): accept session engine adapter

* fix(ui): narrow wizard control values

* refactor: simplify rich wizard answer flow

* fix(custodian): recover evicted wizard sessions

* docs: note custodian rich setup controls

* test(gateway): split wizard answer coverage
2026-08-03 22:18:27 +10:00
Peter Steinberger dfb1378043 chore(tui): stabilize queued-turn admission in Gateway PTY test (#118638)
* test(tui): wait for queued turn admission before releasing parent

* test(tui): clarify queued admission event ordering
2026-08-03 05:04:05 -07:00
Goutam Adwant a5160c1294 fix(xai): classify exhausted credits as billing (#118615) 2026-08-03 04:57:28 -07:00
Peter Steinberger a30adedc9b fix(cli): preserve gateway request errors in health JSON (#118645)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-03 04:52:42 -07:00
Peter Steinberger 6addeae3ff test(agents): reuse attempt execution SQLite fixtures (#118646)
* test(agents): reuse attempt execution sqlite fixtures

* test(agents): track attempt fixture temp roots

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 04:52:39 -07:00
Peter Steinberger 1af8bdd9ee test(system-agent): reuse setup fixtures (#118636)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 04:18:57 -07:00
Peter Steinberger 3c085c1872 test(gateway): isolate session patch provider policy (#118633)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 04:17:03 -07:00
Peter Steinberger a6f9da8bdb refactor: centralize cron, doctor, and TUI ownership (#118515)
* refactor(cron): centralize queued run activation

* refactor(doctor): share session SQLite report scaffolding

* refactor(tui): unify slash command registry

* fix(tui): satisfy command registry lint

* fix(tui): align shared command usage help

* fix(btw): preserve outbound usage placeholder
2026-08-03 04:08:54 -07:00
Peter Steinberger 0e1a3220ea fix(agents): prevent hosted tools during conversation compaction (#118618) 2026-08-03 03:40:22 -07:00
Peter Steinberger 6d8c1ed30d fix(voice-call): prevent unrelated session recall in fast context (#118498)
* fix(talk): authorize fast session context

* test(plugins): preserve memory runtime mock types

* fix(plugins): preserve memory authorizer binding

* fix(memory): forward search authorization in lazy runtime

* test(memory): verify lazy authorizer host binding

* docs(plugins): define memory search authorization contract
2026-08-03 03:38:02 -07:00
Peter Steinberger a9da10ea9e fix(gateway): bind response history to verified proxy identity (#118607) 2026-08-03 03:20:38 -07:00
Peter Steinberger 9c22a4349d chore: speed up gateway CLI test startup (#118620)
* test(cli): avoid unrelated startup graphs

* test(cli): preserve startup coverage

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 03:17:25 -07:00
qingminlong 3f3e59b54d fix(cron): defer auto-disable notifications until persistence (#118384)
* fix(cron): defer auto-disable notifications until persistence

* fix(cron): emit disable notifications only after durable roster commits

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-03 03:07:46 -07:00
Peter Steinberger f9df87ce68 fix(agents): preserve successful sessions_yield handoffs (#118584)
* fix(agents): preserve successful sessions_yield handoffs

* fix(agents): require visible replies after yielded subagents

* fix(agents): reject progress notices as yielded final replies
2026-08-03 03:04:30 -07:00
Peter Steinberger cc940b5ff5 test(agents): reuse managed worktree fixtures (#118619)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-03 02:59:47 -07:00
Peter Steinberger deb682abfe refactor(plugins): consolidate extension runtime helpers (#118509)
* refactor(plugins): consolidate extension runtime helpers

* fix(ci): satisfy extension type and lint checks

* chore(plugin-sdk): regenerate API baseline for #118509
2026-08-03 02:56:43 -07:00