Peter Steinberger
bb46b79d3c
refactor: internalize OpenClaw agent runtime ( #85341 )
...
* refactor: extract agent core package
Introduce packages/agent-core as the OpenClaw-owned home for reusable agent loop, harness, session, prompt, and runtime dependency contracts.
* refactor: extract shared llm runtime
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
* refactor: remove pi runtime internals
Rename remaining Pi-shaped agent surfaces to OpenClaw agent runtime names, delete obsolete Pi docs and package graph checks, and add the third-party notice for incorporated code.
* refactor: tighten agent session runtime
Make agent-core/runtime dependencies explicit, consolidate compaction and session transcript helpers, and move model/session helpers behind OpenClaw-owned contracts.
* refactor: remove static model and pi auth paths
Drop static model catalogs and Pi auth bridges, move model/provider facts to manifest-owned runtime contracts, and harden internal embedded-agent utilities.
* refactor: remove legacy provider compat paths
* docs: remove agent parity notes
* fix: skip provider wildcard metadata parsing
* refactor: share session extension sdk loading
* refactor: inline acpx proxy error formatter
* refactor: fold edit recovery into edit tool
* fix: accept extension batch separator
* test: align startup provider plugin expectations
* fix: restore provider-scoped release discovery
* test: align static asset packaging expectations
* fix: run static provider catalogs during scoped discovery
* fix: add provider entry catalogs for scoped live discovery
* fix: load lightweight provider catalog entries
* fix: refresh provider-scoped plugin metadata
* fix: keep provider catalog entries on release live path
* fix: keep static manifest models in release live checks
* fix: harden release model discovery
* fix: reduce OpenAI live cache probe reasoning
* fix: disable OpenAI cache probe reasoning
* ci: extend OpenAI gateway live timeout
* fix: extend live gateway model budget
* fix: stabilize release validation regressions
* fix: honor provider aliases in model rows
* fix: stabilize release validation lanes
* fix: stabilize release memory qa
* ci: stabilize release validation lanes
* ci: prefer ipv4 for live docker node calls
* fix: restore shared tool-call stream wrapper
* ci: remove legacy pi test shard alias
* fix: clean up embedded agent test drift
* fix: stabilize runtime alias status
* fix: clean up embedded agent ci drift
* fix: restore release ci invariants
* fix: clean up post-rebase runtime drift
* fix: restore release ci checks
* fix: restore release ci after rebase
* fix: remove stale pi runtime path
* test: align compaction runtime expectations
* test: update plugin prerelease expectations
* fix: handle claude live tool approvals
* fix: stabilize release validation gates
* fix: finish agent runtime import
* test: finish post-rebase agent runtime mocks
* fix: keep codex compaction native
* fix: stabilize codex app-server hook tests
* test: isolate codex diagnostic active run
* test: remove codex diagnostic completion race
# Conflicts:
# extensions/codex/src/app-server/run-attempt.test.ts
* ci: fix full release manifest performance run id
* refactor: narrow llm plugin sdk boundary
* chore: drop generated google boundary stamps
* fix: repair rebase fallout
* fix: clean up rebased runtime references
* fix: decode codex jwt payloads as base64url
* fix: preserve shipped pi runtime alias
* fix: add scoped sdk virtual modules
* fix: decode llm codex oauth jwt as base64url
* fix: avoid stale vertex adc negative cache
* fix: harden tool arg decoding and codeql path
* fix: keep vertex adc negative checks live
* refactor: consolidate codex jwt and edit helpers
* fix: await codex oauth node runtime imports
* fix: preserve sdk tool and notice contracts
* fix: preserve shipped compat config boundaries
* fix: align codex oauth callback host
* fix: terminate agent-core loop streams on failure
* fix: keep codex oauth callback alive during fallback
* ci: include session tools in critical codeql scans
* fix: keep Cloudflare Anthropic provider auth header
* docs: redirect legacy pi runtime pages
* fix: honor bundled web provider compat discovery
* fix: protect session output spill files
* fix: keep legacy agent dir env blocked
* fix: contain auto-discovered skill symlinks
* fix: harden agent core sdk proxy surfaces
* fix: restore approval reaction sdk compat
* fix: keep live docker runs bounded
* fix: keep codex oauth redirect host aligned
* fix: resolve post-rebase agent runtime drift
* fix: redact anthropic oauth parse failures
* fix: preserve responses strict tool shaping
* fix: repair agent runtime rebase cleanup
* docs: redirect retired parity pages
* fix: bound auto-discovered resources to roots
* fix: repair post-rebase agent test drift
* fix: preserve bundled provider allowlist migration
* fix: preserve manifest-owned provider aliases
* fix: declare photon image dependency
* fix: keep provider headers out of proxy body
* fix: preserve shipped env aliases
* fix: refresh control ui i18n generated state
* fix: quote read fallback paths
* fix: preview edits through configured backend
* test: satisfy core test typecheck
* fix: preserve ZAI usage auth fallback
* test: repair codex diagnostic test
* fix: repair agent runtime rebase drift
* test: finish embedded runner import rename
* fix: repair agent runtime rebase integrations
* test: align compaction oauth fallback expectations
* fix: allow sdk-auth session models
* fix: update doctor tool schema import
* fix: preserve bedrock plugin region
* fix: stream harmony-like prose immediately
* ci: include session runtime in codeql shards
* fix: repair latest rebase integrations
* fix: honor explicit codex websocket transport
* fix: keep openai-compatible credentials provider-scoped
* fix: refresh sdk api baseline after rebase
* fix: route cli runtime aliases through openclaw harness
* test: rename stale harness mock expectation
* test: rename embedded agent overflow calls
* test: clean embedded auth test wording
* test: use openclaw stream types in deepinfra cache test
* fix: refresh sdk api baseline on latest main
* fix: honor bundled discovery compat allowlists
* fix: refresh sdk api baseline after latest rebase
* fix: remove stale rebase imports
* test: rename stale model catalog mock
* test: mock renamed doctor runtime modules
* fix: map canonical kimi env auth
* fix: use internal model registry in bench script
* fix: migrate deepinfra provider catalog entry
* fix: enforce builtin tool suppression
* fix: route compaction auth and proxy payloads safely
* refactor: prune unused llm registry leftovers
* test: update codex hooks session import
* test: fix model picker ci coverage
* test: align model picker auth mock types
2026-05-27 19:24:04 +01:00
Peter Steinberger
de5971eedc
fix(onboard): preserve rerun config migrations
...
Fix non-interactive and wizard onboarding reruns so existing agent lists and bindings are preserved unless the user explicitly resets config.
Isolate legacy `plugins.installs` migration into its own write so the config size-drop allowance cannot mask unrelated config loss, while preserving new or repaired install records for the final plugin-index commit. Also keep shrinkwrap generation pinned to pnpm-locked transitive patch versions only when the dependency edge still allows that version, and isolate the tooling Vitest shard that mutates process state.
Fixes #84692 .
Replaces #84748 .
Co-authored-by: yetval <yetvald@gmail.com >
2026-05-27 18:05:07 +01:00
Peter Steinberger
140892ce3d
test: speed up test project routing
2026-05-27 04:41:30 +01:00
Peter Steinberger
8f1fb675aa
test: improve full-suite failure summaries
2026-05-27 00:21:12 +01:00
Vincent Koc
be2213e46e
fix(ci): preserve docker pull retry failures
2026-05-26 23:30:07 +02:00
Peter Steinberger
30e59b4090
test: speed up slow CI regressions
2026-05-26 13:13:19 +01:00
Mason Huang
f0bfb3fc33
test(tools): add unmocked image custom-provider auth regression ( #85733 )
...
Summary:
- The branch adds an unmocked image-tool custom-provider auth regression test, fixes split agents Vitest config routing, adds routing coverage, and records a changelog entry.
- PR surface: Tests +203, Docs +1, Other +8. Total +212 across 4 files.
- Reproducibility: not applicable. as a current-main failing issue: the production runtime bug was addressed by the linked predecessor, and this PR adds regression coverage plus test-routing verification for that path.
Automerge notes:
- PR branch already contained follow-up commit before automerge: test(tools): polish image auth regression and fix agents vitest routing
- PR branch already contained follow-up commit before automerge: test(tools): remove proof test filename after regression rename
- PR branch already contained follow-up commit before automerge: fix(test): remove duplicate agent shard constants
- PR branch already contained follow-up commit before automerge: test(tools): add unmocked image custom-provider auth regression
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8573…
Validation:
- ClawSweeper review passed for head cff5476aeb .
- Required merge gates passed before the squash merge.
Prepared head SHA: cff5476aeb
Review: https://github.com/openclaw/openclaw/pull/85733#issuecomment-4525628364
Co-authored-by: Mason Huang <masonxhuang@tencent.com >
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com >
2026-05-25 14:19:04 +00:00
Vincent Koc
968c87d798
fix(ui): move control ui chunking helper out of runtime source
2026-05-25 14:31:38 +02:00
Val Alexander
ab910f88ad
fix: make compaction reinjection opt-in
...
Summary:
- Make post-compaction AGENTS.md reinjection explicit opt-in for configured sections.
- Carry the run workspace into compaction-safeguard AGENTS.md reads.
- Improve collapsed Control UI tool rows while preserving raw expanded tool details.
Verification:
- CI green on PR head 96101664f0 .
- pnpm exec oxfmt --check --threads=1 <changed files>
- OPENCLAW_OXLINT_SKIP_PREPARE=1 node scripts/run-oxlint.mjs <changed ts/mjs files>
- node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core-test.tsbuildinfo
- git diff --check origin/main...HEAD && git diff --check
- node scripts/run-vitest.mjs src/agents/pi-hooks/compaction-safeguard.test.ts src/agents/pi-embedded-runner/extensions.test.ts -t "workspace"
- node scripts/run-vitest.mjs src/auto-reply/reply/agent-runner.misc.runreplyagent.test.ts -t "reads opted-in post-compaction context"
- node scripts/run-vitest.mjs test/scripts/test-projects.test.ts -t "allows explicit split Vitest config targets"
- node scripts/run-vitest.mjs ui/src/ui/chat/tool-cards.test.ts ui/src/ui/chat/tool-cards.node.test.ts ui/src/ui/chat/grouped-render.test.ts ui/src/styles/chat/tool-cards.test.ts
- AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode branch
Fixes #45488 .
Fixes #45649 .
Supersedes #67090 .
2026-05-25 00:59:59 -05:00
Dallin Romney
0a50cbdf34
Add TUI PTY integration coverage ( #85485 )
...
* test: add TUI PTY integration coverage
* test: stabilize TUI PTY CI
* test: speed up TUI PTY coverage
* test: bound TUI PTY local waits
* ci: keep TUI PTY gate fast
* test: route TUI PTY project in full suite
* ci: run TUI PTY on routing edits
2026-05-22 13:42:58 -07:00
Alex Knight
e2f82d4d30
test: add mocked Control UI E2E tests and playwright for local verification and development ( #85278 )
...
* test: add control ui mocked e2e
2026-05-22 19:36:38 +10:00
Peter Steinberger
691d62630f
test: keep slow tests under duration cap
2026-05-18 00:26:44 +01:00
Vincent Koc
b5b193076e
test: share repo file helpers
2026-05-17 02:29:55 +08:00
Vincent Koc
cb313d5378
test: share fs scan assertions
2026-05-17 01:35:39 +08:00
Vincent Koc
0e7cc1ca53
fix(test): avoid walking gateway suite targets
2026-05-16 08:47:05 +08:00
Vincent Koc
dd4613a268
fix(test): reduce changed-target import graph IO
2026-05-16 03:47:47 +08:00
Shakker
ef2be8a982
test: tighten script empty array assertions
2026-05-09 04:48:47 +01:00
Vincent Koc
c97998ce21
chore(channels): remove bluebubbles bundled surface
2026-05-07 12:52:48 -07:00
Peter Steinberger
4ec693a81a
test: interleave cold full-suite shards
2026-05-06 06:08:27 +01:00
Peter Steinberger
01dda73e9b
Revert "test: narrow changed-test routing for shared internals"
...
This reverts commit e28ad6a869 .
2026-05-05 21:47:12 +01:00
Peter Steinberger
e28ad6a869
test: narrow changed-test routing for shared internals
2026-05-05 20:12:28 +01:00
Vincent Koc
833a42c253
test(gateway): split full-suite gateway-server shard
2026-05-02 22:40:00 -07:00
clawsweeper[bot]
cb31616d88
fix(ui): clean up delete confirm popover listener ( #76318 )
...
Summary:
- The PR centralizes Control UI chat delete-confirm popover dismissal, adds listener-cleanup regression coverage and unit-UI test routing fixes, and records the fix in the changelog.
- Reproducibility: yes. Current-main source shows a high-confidence path: open the delete confirm, let `reques ... ncel, Delete, or same-button toggle; those paths remove the popover without removing the document listener.
Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ui): clean up delete confirm popover listener
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-7559…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-75590 with ma…
- PR branch already contained follow-up commit before automerge: fix(ui): repair delete confirm listener cleanup checks
Validation:
- ClawSweeper review passed for head 62240d8153 .
- Required merge gates passed before the squash merge.
Prepared head SHA: 62240d8153
Review: https://github.com/openclaw/openclaw/pull/76318#issuecomment-4364990281
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Ricardo-M-L <69202550+Ricardo-M-L@users.noreply.github.com >
2026-05-03 02:21:10 +00:00
Peter Steinberger
aafdc5945a
chore: delete stale memory host bridges
2026-05-02 18:15:26 +01:00
Peter Steinberger
6bc3458222
perf(test): keep commitment runtime tests focused
2026-05-01 03:12:55 +01:00
Peter Steinberger
6331fec05e
test(scripts): align changed sdk routing expectation
2026-04-30 02:06:47 +01:00
Fred blum
9b1bde2561
fix(voice-call): close webhook in-flight limiter fail-open on empty remote address ( #74453 )
...
* fix(voice-call): close in-flight limiter fail-open on empty remote address
The webhook in-flight limiter (createWebhookInFlightLimiter in
src/plugin-sdk/webhook-request-guards.ts) returns true unconditionally
when tryAcquire is called with an empty key — that is its by-contract
fail-open path used to mean 'caller is opting out of the limiter'.
The voice-call webhook handler reached that path silently: it computed
'req.socket.remoteAddress ?? ""' and passed the empty string straight
into tryAcquire. Whenever req.socket.remoteAddress was absent (closed
socket, edge proxy quirk), the limiter became a no-op and the request
proceeded directly to readBody without any concurrency cap.
Fix: when remoteAddress is missing, log a warning and fall back to a
constant non-empty key ('__voice_call_no_remote__') so all such
requests share one in-flight bucket instead of bypassing the limiter
entirely. The bucket size stays maxInFlightPerKey (default 8), which
is the right defense-in-depth posture against slow-body attacks
arriving with stripped IP info.
Scoped to voice-call only. Other consumers of the SDK helper
(bluebubbles via openclaw/plugin-sdk/webhook-ingress) are not changed
to avoid drive-by edits to plugins this PR does not own. The shared
SDK contract (empty key = bypass) is left as-is and documented
implicitly by the fix's comment block.
The existing 8-concurrent test in webhook.test.ts continues to assert
the limiter engages on the happy path; no new test added since the
private handleRequest path is not unit-test exposed and the change is
two-line auditable from the diff alone.
* test(voice-call): cover missing webhook remote address limiter
* test: align changed package sdk routing
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-04-30 01:02:14 +00:00
Peter Steinberger
67b16a4a6d
fix: centralize source reply delivery mode
2026-04-28 09:14:19 +01:00
Peter Steinberger
e1acb61317
refactor: expose SDK test helper subpaths
2026-04-28 03:28:17 +01:00
Peter Steinberger
f64e4fd8cf
test: split agents vitest shards
2026-04-28 02:58:24 +01:00
Peter Steinberger
152b9856eb
test(ci): update support boundary expectations
2026-04-28 02:38:31 +01:00
Peter Steinberger
d35ada2f54
refactor: relocate channel contract helpers
2026-04-28 02:14:08 +01:00
Peter Steinberger
8057561cee
refactor: promote plugin test helpers to sdk
2026-04-28 00:55:11 +01:00
Peter Steinberger
0df6e5a473
refactor: expose plugin test helpers via sdk
2026-04-27 23:45:26 +01:00
Peter Steinberger
fa0729e145
test: auto-discover vitest suites
2026-04-27 00:55:06 +01:00
Peter Steinberger
89ab39ca64
test: simplify changed test routing
2026-04-26 23:58:13 +01:00
Peter Steinberger
9eb0934492
test: tighten changed test routing
2026-04-26 10:25:04 +01:00
Pinghuachiu
7b943667a0
fix: expose image edit geometry flags in capability cli
...
Expose image edit geometry flags in the capability CLI and document the new infer options.\n\nThanks @Pinghuachiu.
2026-04-26 04:22:22 +01:00
Peter Steinberger
a6d9926d1d
fix: keep acp management commands local
2026-04-26 03:02:04 +01:00
Vincent Koc
526fd9d545
test: stabilize pty and agentic test lanes
2026-04-25 18:44:18 -07:00
Peter Steinberger
dd78b7f773
fix: harden OpenCode ACP bind dispatch
2026-04-25 13:38:58 +01:00
Vincent Koc
f8a41e5e9c
fix(test): serialize changed checks locally
2026-04-25 04:19:09 -07:00
Peter Steinberger
7a71a66571
perf: cache provider env var lookups
2026-04-25 08:35:57 +01:00
Peter Steinberger
e9b27ed2a6
perf: speed up auth choice tests
2026-04-25 08:31:40 +01:00
Peter Steinberger
e0beea97aa
perf: speed up focused tests
2026-04-25 08:26:28 +01:00
Peter Steinberger
188bce424b
perf: speed up google meet tests
2026-04-25 08:12:26 +01:00
Peter Steinberger
a2a49b430c
test(plugins): route tts contract helper changes narrowly
2026-04-25 06:05:00 +01:00
Val Alexander
ead8be96fd
Add tweakcn custom theme import
...
Adds a browser-local custom tweakcn theme slot while preserving the existing built-in themes.
Includes:
- tweakcn share-link import, validation, persistence, and custom theme rendering
- Custom option in Appearance and Quick Settings
- responsive/config toolbar and chat tool-card polish from follow-up review
- security hardening for bounded fetches, CSS token validation, redirect handling, and fail-closed unreadable payloads
Verification:
- OPENCLAW_LOCAL_CHECK=0 pnpm check:changed
- GitHub CI clean on 6ff13a1b33
2026-04-24 20:36:45 -05:00
Peter Steinberger
908335025f
test: route browser changed tests to browser lane
2026-04-23 22:22:49 +01:00
Peter Steinberger
6fc8913223
refactor(auto-reply): extract effective reply route resolution
2026-04-23 20:40:27 +01:00