Commit Graph

40305 Commits

Author SHA1 Message Date
Peter Steinberger
57f239fb5d test(gateway): split observer bookkeeping coverage 2026-07-27 05:43:19 -04:00
Peter Steinberger
51f228f6fe fix(ui): preserve agent-owned session navigation
Add agent ownership to observer digests, scope global observer delivery and reconciliation, and centralize application session selection across navigation and reconnects.

Co-authored-by: xbrxr03 <abrarhabib03@gmail.com>
2026-07-27 05:43:19 -04:00
Peter Steinberger
95bac0129d fix(gateway): stop listing IDENTITY.md as a core file editor tab (#114470) 2026-07-27 05:34:44 -04:00
Peter Steinberger
84a4ff30d5 refactor(gateway): centralize parameter validation and shared helpers (#114353)
* refactor(gateway): centralize parameter validation

* refactor(outbound): centralize runtime scaffolding stripping

* refactor(usage): remove session cost forwarding layers

* refactor(gateway): share attachment failure logging

* refactor(gateway): centralize startup tracing helpers

* fix(usage): keep refresh result type internal

* fix(outbound): preserve visible whitespace around runtime context
2026-07-27 05:34:12 -04:00
WilShi
dafecc756a fix(cli): surface deviceId in devices list table (#114370)
* fix(cli): surface deviceId in devices list table

* docs(changelog): add devices list deviceId fix (#114279)

* fix(cli): keep paired device IDs copyable

Co-authored-by: WilShi <1638083992@qq.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 05:24:34 -04:00
Pavan Kumar Gondhi
db97a748f2 fix: block additional exec wrapper carriers (#114132) 2026-07-27 14:52:48 +05:30
Peter Steinberger
c7842b2713 test(plugins): refresh process-stable metadata explicitly (#114469) 2026-07-27 05:20:04 -04:00
Peter Steinberger
04376ccd43 docs(agents): make sessions tool archive/pin capabilities discoverable (#114463) 2026-07-27 05:15:20 -04:00
Peter Steinberger
4b9c922458 fix(agents): harden compact tool search and execution (#114461) 2026-07-27 05:13:41 -04:00
ooiuuii
f9be52b5f9 fix(cron): clear future orphan run markers (#111743)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 05:09:00 -04:00
Peter Steinberger
b6c3ff1aa1 fix(providers): make Ollama and LM Studio onboarding reliable (#114405)
* fix(ollama): persist local auth only after model selection

* fix(ollama): preserve native max thinking effort

* fix(lmstudio): preserve model tool capabilities

* fix(lmstudio): preserve configured model compatibility

* test(ollama): prove isolated onboarding and persisted gateway turns

* fix(ollama): fail closed on unresolved secret references

* fix(ollama): keep local onboarding model catalogs installed-only

* fix(onboard): preflight local models before reset

* fix(lmstudio): normalize unsupported tool schema patterns

* Revert "test(ollama): prove isolated onboarding and persisted gateway turns"

This reverts commit 1d333d4c67.

* Revert "fix(ollama): preserve native max thinking effort"

This reverts commit 5d2600b098.

* fix(lmstudio): preserve typed model compatibility

* test(lmstudio): await provider catalog augmentation

* test(ollama): narrow optional discovery auth fixture

* test(lmstudio): narrow reset validator registration

* fix(onboard): preserve verified local model lean defaults

* test(ollama): split non-interactive onboarding auth regressions

* fix(onboard): exclude hosted Ollama models from lean defaults

* test(onboard): prove local reset preflight order
2026-07-27 05:07:29 -04:00
Peter Steinberger
ed2c01308c refactor(agents): consolidate lifecycle regression coverage (#114425) 2026-07-27 05:05:34 -04:00
Peter Steinberger
faafafb875 fix(cron): carry bounded current conversation context (#114455) 2026-07-27 05:03:34 -04:00
Peter Steinberger
78d7a8489c refactor(gateway): derive the agent core-files list from the canonical workspace set (#114436) 2026-07-27 05:02:57 -04:00
Peter Steinberger
914bd1946a fix(cli): isolate explicit profiles from inherited service state (#114446) 2026-07-27 04:59:20 -04:00
Peter Steinberger
6b48140a53 fix(cron): completed jobs stay stuck behind slower batch runs (#114441)
* fix(cron): finalize completed jobs without blocking sibling runs

Co-authored-by: Eduardo Piva <efpiva@gmail.com>

* fix(cron): keep completion drain helpers private

---------

Co-authored-by: Eduardo Piva <efpiva@gmail.com>
2026-07-27 04:58:34 -04:00
Peter Steinberger
2d5dfe4063 refactor(config): consolidate session and recovery regression tests (#114426) 2026-07-27 04:56:14 -04:00
ClawSweeper
afb1b014e2 fix(ui): show background tasks per chat session (#114433)
* fix(ui): scope background tasks to chat sessions

* refactor(ui): privatize session agent helper

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 01:53:03 -07:00
Peter Steinberger
bc54710daf fix: restore live Gateway model verification (#114451) 2026-07-27 04:50:52 -04:00
Peter Steinberger
ac6009eab1 fix(tui): keep shared sessions live and bound stream state (#114443)
Fix cross-client terminal history synchronization without letting stale snapshots erase in-flight responses. Bound orphaned stream assembly, preserve session and agent ownership, and cover real Gateway delivery, persistence races, reconnects, and stress bursts.

Closes #38829.

Credits prior issue investigation in #96252 and bounded-stream work in #109492.

Co-authored-by: Harjoth Khara <48686985+harjothkhara@users.noreply.github.com>
Co-authored-by: Wynne668 <290981215+ZengWen-DT@users.noreply.github.com>
2026-07-27 04:39:42 -04:00
Peter Steinberger
4029070c3d refactor(gateway): consolidate chat voice and reload test fixtures (#114420) 2026-07-27 04:38:00 -04:00
Peter Steinberger
2fa5281b14 fix(cron): bind jobs to durable session (#114421) 2026-07-27 04:34:02 -04:00
Peter Steinberger
4aa2ab2b25 perf(gateway): fold session touched-files incrementally via transcript delta (#114401)
* perf(gateway): fold session touched-files incrementally via transcript delta

* refactor(gateway): keep session touched-files fold on the canonical sqlite path

* test(gateway): split session files transcript-fold coverage

* test(gateway): drop unused session-files test-support exports
2026-07-27 04:32:57 -04:00
Peter Steinberger
9b171190f2 perf(sessions): cache branch summaries behind a transcript watermark (#114412) 2026-07-27 04:24:48 -04:00
Dallin Romney
ec391edea7 fix: clarify unstored exec approval defaults (#114417) 2026-07-27 16:07:11 +08:00
Peter Steinberger
669db2968f refactor(agents): retire TOOLS.md into an AGENTS.md section with a doctor migration (#113966)
* fix(agents): stop retired attestation hashes from faking a vanished workspace

* feat(agents): migrate TOOLS.md content into the AGENTS.md tools section

* refactor(agents): drop TOOLS.md from the workspace bootstrap set

* refactor(policy): read tool policy entries from AGENTS.md

* docs: describe local tool notes as an AGENTS.md section

* test(codex): drop TOOLS.md developer-instruction coverage with the removed path

* test(agents): cover the TOOLS.md doctor migration behaviors

* refactor(doctor): satisfy TOOLS.md migration lint

* test(agents): split workspace attestation survival coverage

* refactor(codex): simplify workspace context basenames

* refactor(doctor): keep TOOLS.md migration helpers module-local

* docs: regenerate docs map

* fix(doctor): keep migration claims fresh

* fix(doctor): preserve nested tool notes

* refactor(doctor): split tools migration helpers

* refactor(doctor): limit TOOLS.md migration to workspace root

* style(doctor): keep migration under line limit

* fix(doctor): recover interrupted AGENTS publish

* docs(hooks): describe root-only TOOLS.md migration accurately

* fix(doctor): preserve migrated tool guidance visibility

* test(agents): regenerate prompt snapshots after rebase

* fix(policy): block evaluation while TOOLS.md is unmigrated

* fix(doctor): check merged bootstrap budget per agent

* fix(doctor): keep budget helper internal

* refactor(doctor): keep migration budget helpers to their consumers
2026-07-27 03:56:30 -04:00
Peter Steinberger
3b519cecb8 refactor(plugins): consolidate security and install test fixtures (#114410) 2026-07-27 03:52:37 -04:00
Peter Steinberger
08b1ff73e2 refactor(channels): fix account resolution and setup isolation (#114395)
* refactor(channels): fix account resolution and setup isolation

* fix(channels): keep account resolvers safely destructurable
2026-07-27 03:49:37 -04:00
Peter Steinberger
e9990b818a feat(cli): add models auth logout (#114407) 2026-07-27 03:48:27 -04:00
Peter Steinberger
498a2caaf2 fix(models): keep dynamic model lists consistent across CLI and Gateway (#114393)
* fix(models): unify prepared catalogs and safe migration

* refactor(models): remove obsolete prepared catalog paths
2026-07-27 03:46:56 -04:00
Peter Steinberger
3c67fcc45d fix(release): stabilize beta validation and completion (#114396)
* test(release): fix rebased validation gates

* test(migrate-hermes): use canonical auth store fixture

* test(secrets): reset runtime state before migration isolation

* test(secrets): reload singleton graph for migration isolation

* test(secrets): isolate auth migration state

* fix(release): return completed validation run

* docs: refresh docs map after forward-port
2026-07-27 03:42:00 -04:00
Yuval Dinodia
0017566618 fix(acp): keep ACP turns alive when a backend rejects the requested thinking level (#113935)
* fix(acp): keep ACP turns alive when a backend rejects the requested thinking level

ACP sessions carrying a thinking level the backend cannot express died before
their first turn. Pre-turn control application forwarded the persisted thinking
option to the backend-advertised effort key, and a rejected value aborted the
whole turn with ACP_TURN_FAILED.

The skip path for thinking config rejections only matched the
ACP_BACKEND_UNSUPPORTED_CONTROL code, which OpenClaw mints for keys a backend
does not advertise. Backends that advertise the key but reject the value answer
with a JSON-RPC error instead, so the skip never fired and the optional control
became fatal. Thinking rejections now match the same rejection signals the
sibling timeout control already tolerates, including invalid-value answers.
Required controls and genuine runtime failures still fail the turn.

* fix(acp): narrow thinking rejection fallback

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 03:25:43 -04:00
Peter Steinberger
97467fe73b refactor(gateway): consolidate RPC test scenarios (#114404) 2026-07-27 03:25:22 -04:00
Peter Steinberger
0cc0a100ee refactor(cron): split oversized modules, retire max-lines suppressions, behavior-name regression suites (#114391)
* refactor(cron): split oversized modules

* test(cron): consolidate regression suites

* refactor(cron): keep delivery outbound loader module-private
2026-07-27 03:22:51 -04:00
Peter Steinberger
eec2c0cc26 refactor(providers): unify lifecycle-safe manifest registration (#114381)
* refactor(providers): canonicalize manifest-driven registration

* fix(zai): eliminate type-only SDK import side effects
2026-07-27 03:20:02 -04:00
Fede Kamelhar
cc027149e5 security fix(agents): close symlink-then-.. workspace boundary bypass in assertSandboxPath (#113405)
* fix(agents): close symlink-then-.. workspace boundary bypass in assertSandboxPath

resolveSandboxPath builds on path.resolve, which collapses ".." lexically
before any symlink is resolved. When a "<symlink>/.." sequence appears, the
lexical collapse lands on a harmless in-root path while the OS resolves the
same raw string (symlink first, then "..") to a location outside the
workspace, so assertSandboxPath approved inputs whose real resolution escaped
the boundary.

Add assertRawParentWithinRoot: it resolves the raw (non-collapsed) parent
chain via the OS realpath (fs.realpath.native; the JS realpath and
path.resolve both pre-collapse "..") and asserts it stays inside the
workspace root. It runs after assertNoPathAliasEscape so that guard's more
specific messages still win for cases it already catches, adding coverage only
for the residual gap it never sees.

Not currently reachable through shipped tools (read/write/edit route I/O
through fs-safe Root, which opens its own collapsed path; other callers use
the returned .resolved) -- this hardens the validator so the boundary no
longer depends on caller discipline. Regression test included.

* fix(agents): simplify raw sandbox path guard

* fix(agents): preserve symlinked sandbox roots

* fix(agents): validate raw final path aliases

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 03:15:59 -04:00
Peter Steinberger
3a4f337802 fix(gateway): connect first-boot loopback agents after readiness (#114380)
* fix(gateway): pair local CLI before runtime-token readiness

* docs(gateway): explain first-boot loopback CLI auth

* fix(gateway): keep startup pairing result internal

* chore(gateway): leave release note to release process
2026-07-27 03:15:12 -04:00
Peter Steinberger
7ad7cf8b0f refactor(sessions): unify canonical SQLite lifecycle and transcript projection (#114369)
* refactor(sessions): unify canonical SQLite lifecycle and transcript projection

* fix(sessions): ratchet eliminated transcript accessor debt
2026-07-27 02:59:08 -04:00
Peter Steinberger
b34c19632f refactor(daemon): split Windows task scheduler integration (#113783)
* refactor(daemon): split Windows task scheduler integration

* refactor(daemon): keep split helpers private

* refactor(daemon): remove superseded schtasks script module
2026-07-27 02:55:23 -04:00
Pavan Kumar Gondhi
33f44caa5d fix: restrict QQBot quoted context [AI] (#114136)
* fix: restrict qqbot quoted context

* fix: narrow qqbot bot quote exemption

* test: use valid qqbot ingress reasons

* fix: honor narrowed qqbot open dm quotes

* fix: honor narrowed qqbot open group quotes

* test: use valid qqbot blocked ingress decisions

* fix: honor qqbot quote visibility mode

* docs: mention qqbot context visibility

* fix: validate qqbot context visibility config

* fix: hide denied qqbot quote sender

* test: avoid unbound qqbot access mock

* test: allow auth migration isolation to finish

* Revert "test: allow auth migration isolation to finish"

This reverts commit f2b9a4f5e9.
2026-07-27 12:23:21 +05:30
Peter Steinberger
dda4883a4c fix(auto-reply): prevent duplicate rewritten-command replies (#114379)
* fix(auto-reply): dedupe settled block finals

* chore: leave release note to release flow
2026-07-27 02:49:23 -04:00
Pavan Kumar Gondhi
af7b0708aa fix: block unsafe workspace dotenv controls [AI] (#114133)
* fix: block unsafe workspace dotenv controls

* fix: narrow workspace dotenv control blocking

* fix: narrow dotenv token matching

* fix: scope dotenv access control keys

* fix: block bedrock bearer dotenv key

* fix: block bedrock credential dotenv keys

* test: split dotenv blocklist coverage

* fix: block aws sdk dotenv controls

* fix: block aws credential provider dotenv controls

* fix: block aws credential metadata dotenv controls
2026-07-27 12:15:31 +05:30
Peter Steinberger
a731397ea1 refactor: unify doctor repairs and configure setup (#114375) 2026-07-27 02:42:09 -04:00
Peter Steinberger
2242b968b3 fix(tui): prevent duplicate session rollover after stale terminal redraw (#114373)
* test(tui): make real session rollover deterministic

* test(tui): satisfy typed deferred lint
2026-07-27 02:40:43 -04:00
Peter Steinberger
fee6db765d fix(openai): prevent onboarding from offering unavailable account models (#114356)
* fix(openai): keep account models and onboarding release proof authoritative

* fix(openai): document configured model catalog authority
2026-07-27 02:23:50 -04:00
Peter Steinberger
604f379203 perf: collapse board.get store reads (#114363) 2026-07-27 02:21:12 -04:00
Peter Steinberger
390f46d042 fix(agents): preserve fallback route provenance (#114360)
Co-authored-by: 1052326311 <65798732+1052326311@users.noreply.github.com>
2026-07-27 02:20:56 -04:00
Peter Steinberger
2ce0362f12 perf(gateway): stabilize parallel channel status probes (#114362) 2026-07-27 02:15:56 -04:00
Peter Steinberger
8ad5139d7c refactor(tests): consolidate plugin update fixtures and version cases (#114344) 2026-07-27 02:15:49 -04:00
Peter Steinberger
7b71d5608e perf(gateway): reuse session catalog entry snapshots per request (#114358)
* perf(gateway): reuse session catalog entry snapshots

* chore(gateway): satisfy knip and typed-test lanes for catalog snapshot
2026-07-27 02:14:11 -04:00