Commit Graph

5216 Commits

Author SHA1 Message Date
Vincent Koc c4292bc8b2 fix(diagnostics): report exporter health in doctor and status (#119816)
* fix(diagnostics): report exporter health transitions

* fix(diagnostics): retire exporter health on shutdown

* test(diagnostics): enforce OTLP protobuf content type

* test(diagnostics): satisfy exporter test type contracts

* fix(diagnostics): redact endpoint-like exporter codes

* fix(diagnostics): coordinate exporter route health

* test(diagnostics): satisfy exporter health static gates

* fix(diagnostics): keep exporter health internal
2026-08-06 20:50:18 +08:00
Peter Steinberger d8147f81b7 test(models): align list mocks with prepared runtime (#119876) 2026-08-06 01:35:26 -07:00
Peter Steinberger 245dbacbe0 fix: agent exec loads installed harnesses locally (#119855)
* fix(agents): bind local plugin harness registry (#119852)

* test(agents): isolate local registry in command suites
2026-08-06 00:26:02 -07:00
joshavant 9702134882 fix: settle Gemini CLI auth preparation failures 2026-08-06 01:48:09 -05:00
joshavant f461701d00 fix: quarantine expired CLI auth profiles 2026-08-06 01:48:09 -05:00
Vincent Koc 63cadcf11b fix(backup): skip transient gateway lock databases (#119782)
Reported by @AgentSolomon in #119757.

Fixes #119757

Punchcard-Session: amber-meadow-timber-8r
2026-08-06 11:26:47 +08:00
Peter Steinberger 88b7baca7b test(doctor): align fast-path repair contracts (#119812) 2026-08-05 19:55:27 -07:00
Shakker c56ad42525 fix: grant host-authorized control ui owner access 2026-08-06 02:21:45 +01:00
Peter Steinberger 9546d2af58 fix(doctor): capitalize Gateway in plugin restart guidance (#119659)
* fix(doctor): capitalize Gateway restart guidance

* test(doctor): keep plugin refusal coverage focused
2026-08-05 08:14:18 -07:00
Vincent Koc 80da61668e improve(doctor): avoid repeated plugin metadata scans (#119482)
* perf(doctor): reuse plugin metadata snapshot

Punchcard-Session: coral-workshop-workshop-3f

* test(doctor): update legacy issue mock

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): refresh metadata after repairs

* test(doctor): type legacy issue mock arguments

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): invalidate scoped plugin metadata

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): keep snapshot scope type private

Punchcard-Session: coral-workshop-workshop-3f

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-05 19:06:08 +08:00
sunlit-deng 07ad8114b0 fix: make plugin verification restart guidance install-neutral (#119508) 2026-08-05 15:15:34 +08:00
Peter Steinberger dca3ed16de fix: adopt Tailscale names and avatars into user profiles (#119479)
* fix(gateway): adopt Tailscale profile identities

* fix(gateway): normalize Tailscale identity subjects

* fix(gateway): preserve Tailscale identity provenance

* fix(gateway): detach Tailscale avatar adoption
2026-08-04 23:09:06 -07:00
wangyan2026 20bd49db89 fix(pairing): normalize account key in legacy allowFrom filename parsing (#110415)
* [AI] fix(pairing): normalize account key in legacy allowFrom filename parsing

parseAllowFromFilename extracted the account segment from filenames
without normalizing it via safeAccountKey, so non-canonical spellings
(e.g. HY_RIN_Bot vs hy_rin_bot) could never match configured accounts.
This left the file unresolved, producing a startup migration warning
that blocks gateway readiness on every restart.

Normalize accountKey via safeAccountKey before comparing so that raw
and canonical spellings resolve to the same account. Wrap in try/catch
so pathological filename segments skip safely instead of throwing.
Guard non-canonical DEFAULT segments: when safeAccountKey maps a
non-literal-default segment (e.g. "DEFAULT") to the canonical key
"default", skip the filter so the file remains unresolved instead of
being attributed to the implicit bundled default account and deleted.
Keep the implicit bundled-default fallback on the literal canonical
suffix (accountKey === DEFAULT_ACCOUNT_ID). Ambiguity detection
remains unchanged.

Related to #110187

* fix(pairing): constrain legacy filename recovery

Co-authored-by: WangYan <wang.yan29@xydigit.com>

* fix(pairing): preserve case-colliding legacy files

Co-authored-by: WangYan <wang.yan29@xydigit.com>

* fix(pairing): match legacy files to raw account ids

Co-authored-by: WangYan <wang.yan29@xydigit.com>

* fix(pairing): keep default suffix literal

Co-authored-by: WangYan <wang.yan29@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-04 22:59:30 -07:00
Vincent Koc 9371dddcdb fix(config): preserve plugin metadata for missing config (#119421)
Restore plugin metadata for valid missing-config snapshot reads while preserving scan-free plain reads and fail-closed invalid snapshots.
2026-08-05 11:22:42 +08:00
Vincent Koc 1ee0564b09 fix(discord): avoid doctor runtime loading (#119391)
* fix(discord): publish doctor capability metadata

Punchcard-Session: amber-workshop-river-yr

* fix(doctor): read packaged channel metadata

Punchcard-Session: amber-workshop-river-yr
2026-08-05 11:05:35 +08:00
Peter Steinberger 5ffd2dfbc3 refactor(status): consolidate scan projections and lazy loaders (#119412) 2026-08-04 19:41:40 -07:00
mikasa 722dfb3d64 fix(status): status --all slows down with missing plugins (#119203)
* fix(status): avoid repeated discovery for missing channels

* fix(status): batch missing plugin repair hints

* fix(status): type missing plugin channel ids

* fix(status): preserve required channel ids

* fix(status): keep batch hint type internal

* fix(status): preserve batch repair laziness

---------

Co-authored-by: daily-fix[bot] <daily-fix[bot]@users.noreply.github.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-04 19:41:31 -07:00
mushuiyu886 c6be75957f fix(cli): align TaskFlow controller columns for wide text (#118801) 2026-08-04 19:31:55 -07:00
Peter Steinberger 195b0ea3fa fix: make startup migration restart guidance install-neutral (#119406) 2026-08-04 19:28:27 -07:00
Josh Avant 618fba92bf feat(audit): add execution identity inspection (#117034)
* feat(audit): add opt-in execution identity inspection

* fix(audit): gate recovery identity retention

* fix(audit): keep recovery identity type private

* test(audit): type internal recovery fixture

* test(audit): split recovery identity coverage

* docs(audit): define operator read trust boundary

* test(qa): register identity scenario child

* fix(audit): enforce shared identity retention bounds

* fix(audit): seal public ingress identity boundary

* fix(audit): keep ingress guard lint-clean

* fix(gateway): preserve advertised method order

* chore(protocol): sync advertised method order

* fix(protocol): encode audit selector invariants

* test(audit): prove exact execution guard

* fix(audit): keep identity storage lazy
2026-08-04 20:05:15 -05:00
Arthur Lacoste f207e14d92 fix(telegram): keep commands responsive during Codex login
Release Telegram’s chat lane after structured Codex device-code delivery while account-owned authentication completes safely in the background.

Co-authored-by: Arthur Lacoste <arthurlacoste@users.noreply.github.com>
2026-08-05 05:59:13 +05:30
Vincent Koc ef11eae39b fix(plugins): preserve install index state across failures (#119228)
* fix(plugins): preserve install index policy config

* fix(plugins): restore complete install index state

* fix(plugins): fence install index rollback

* fix(plugins): fence generic install index rollback

* fix(plugins): keep lifecycle lease context private

* test(cli): align plugin index rollback mocks

* test(plugins): enforce index rollback receipts

* fix(plugins): serialize install rollback with config commit

* test(plugins): keep legacy index writer mock private
2026-08-05 01:04:17 +08:00
Bek 50a30b7373 fix(codex): migrate redundant native service tiers (#118738) 2026-08-04 11:36:03 -04:00
Vincent Koc e4aab26d01 fix(cli): avoid repeated migration scans during local agent turns (#119051)
* fix(cli): avoid repeated state migration scans

* fix(build): preserve source runtime provenance

* fix(cli): persist state checkpoint before plugin convergence

* fix(cli): invalidate migration checkpoints on input changes

* fix(plugins): refresh changed doctor contracts

* fix(plugins): preserve warm Doctor contract indexes

* test(plugins): align manifest registry fixtures

* test(cli): isolate ACP process state

* fix(doctor): persist refreshed plugin indexes

* fix(doctor): verify persisted plugin index from disk

* fix(doctor): fence plugin index persistence

* fix(doctor): retain validated migration lease

* fix(plugins): canonicalize persisted build metadata

* fix(plugins): preserve config policy during install repair
2026-08-04 20:28:16 +08:00
Vincent Koc c3f148f6b7 fix(plugins): preserve metadata reloads during models status (#119183)
* fix(plugins): preserve newer metadata publications

* test(plugins): type metadata snapshot fixture
2026-08-04 19:24:30 +08:00
joshavant 8393b37779 fix(setup): keep compatible Claude wrappers selectable 2026-08-04 02:08:23 -05:00
joshavant d636f5f8e0 fix(agents): gate Claude live session protocol 2026-08-04 02:08:23 -05:00
Vincent Koc 7a5f108293 fix: unblock macOS release validation (#119110)
* fix(test): guard split-memory tests on case-insensitive filesystems

* fix(sandbox): canonicalize aliased mount roots

* fix(claws): canonicalize aliased manifest paths

* test: isolate release validation from host state
2026-08-04 15:05:31 +08:00
Jason (Json) afa4977b2c fix(gateway): honor external status target context (#119015)
* fix(gateway): preserve external status target context

* fix(gateway): keep status service authority scoped
2026-08-03 19:37:39 -06:00
Michael Christenson II 7f7a709b1d fix: Ollama missing from onboarding when its service is reachable (#118020) 2026-08-03 17:49:31 -06:00
Peter Steinberger 3d65ea2a1b fix(googlechat): align doctor policy ownership with canonical account configuration (#118972)
* fix(googlechat): align doctor policy ownership with canonical account configuration

* test(googlechat): align generated channel metadata and typed doctor fixtures
2026-08-03 15:23:16 -07:00
kiranmagic7 682f60ce56 fix(config): reject unsupported diagnostics otel grpc (#93087) 2026-08-03 16:28:08 -04:00
Harjoth Khara bcc27f6726 perf(cli): carry prepared plugin metadata through cold read paths (#118460)
* perf(cli): carry prepared plugin metadata through cold read paths

* perf(plugins): thread prepared metadata into auto-enable detection

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-03 12:23:00 -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 206a784961 fix(doctor): invalidate SQLite session caches after durable repairs (#118766) 2026-08-03 10:26:48 -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 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
Peter Steinberger 395c772ba7 fix(doctor): honor explicit plugin-only migration authority (#118700) 2026-08-03 07:34:49 -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 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 188957a18a fix(gateway): require explicit credentials for probe URL overrides (#118614) 2026-08-03 02:52:29 -07:00
Peter Steinberger 63651a1878 fix: keep command tests independent of ambient Gateway tokens (#118577)
* test(commands): isolate missing gateway token environment

* test(commands): isolate doctor gateway token environment
2026-08-03 01:48:51 -07:00
joshavant d9393bd3cb fix: make subagent completion delivery durable 2026-08-03 02:48:34 -05:00
Peter Steinberger 3aca283d44 test: avoid plugin scans in doctor preflight tests (#118546)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 23:54:26 -07:00
joshavant 92a6655ee3 fix(agents): preserve terminal reply outcomes 2026-08-03 01:41:38 -05:00
Peter Steinberger 389732759c test: deduplicate Codex doctor expectations (#118487) 2026-08-02 22:10:38 -07:00
Peter Steinberger 3350cd58b4 perf(gateway): speed up first dashboard session list (#118434)
* perf(gateway): speed up first session RPC

* chore: leave release notes to generation

* fix(gateway): inject prepared catalog reader

* fix(gateway): allow lightweight catalog contexts

* test(gateway): align session handler test seams

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 21:52:38 -07:00
Peter Steinberger 14006a439d refactor(doctor): consolidate memory health test fixtures (#118091)
* test(doctor): dedupe memory search fixtures

* test(doctor): preserve provider warning cardinality
2026-08-02 20:55:30 -07:00
Alex Knight d7def97638 fix(cli): one-shot agent --local runs never export OTel diagnostics (#100845)
Diagnostics exporters are plugin services that only ever start inside the
Gateway process, so embedded `openclaw agent --local` turns emitted
diagnostic events in the CLI process with no subscriber: zero spans,
metrics, or logs reached the OTLP collector while identical Gateway-
dispatched turns exported fine.

The CLI now starts the `diagnostics-otel` service around embedded agent
runs via a scoped, non-activating plugin load that honors the same
plugin-enablement config as the Gateway, and flushes before exit: drain
the async diagnostic-event queue, then shut the SDK down (force flush).
Each step is bounded separately (5s drain, 10s flush) so an unreachable
collector cannot hold the CLI open, and a stalled drain cannot consume
the flush window and discard telemetry that was already buffered.

When OTel is configured but the plugin is absent, the run now says so
instead of exporting nothing with nothing explaining why.

`diagnostics-prometheus` stays Gateway-only: it is a pull-based scrape
server that is useless in a short-lived process and would race the
Gateway for its port. No new config surface; configs without OTel enabled
short-circuit before any plugin load.

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-08-03 13:29:46 +10:00
Peter Steinberger 5b5c0934cd test(doctor): consolidate transcript label fixtures (#118290) 2026-08-02 20:29:23 -07:00