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
7aaca4a8a6
chore(release): prepare 2026.5.27
2026-05-27 16:53:50 +01:00
Pavan Kumar Gondhi
0314d67d87
Harden hostname normalization for repeated trailing dots [AI] ( #87305 )
...
* fix: canonicalize trailing hostname dots
* test: reuse shared hostname normalization
* docs: add changelog entry for PR merge
2026-05-27 21:08:29 +05:30
Pavan Kumar Gondhi
8e41c118fa
fix: block side-effecting command wrappers [AI] ( #87292 )
...
* fix: block side-effecting command wrappers
* docs: add changelog entry for PR merge
2026-05-27 20:56:53 +05:30
Agustin Rivera
0d0bddf032
fix(gateway): require admin for device role approvals ( #87146 )
...
* fix(gateway): require admin for device role approvals
* fix(gateway): add trusted-proxy approval proof
2026-05-27 08:08:51 -07:00
Pavan Kumar Gondhi
91590132f6
Block unsafe Node runtime env overrides [AI] ( #87308 )
...
* fix: block unsafe node runtime env overrides
* fix: block node env path redirects
* docs: add changelog entry for PR merge
2026-05-27 20:34:12 +05:30
Mariano
c9d4f7e35c
Deprecate memory-specific embedding provider registration ( #85072 )
...
Merged via squash.
Prepared head SHA: 661eb99066
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-05-27 15:24:17 +02:00
Bob
4d89e00c50
feat(embeddings): add OpenAI-compatible core provider ( #85269 )
...
Merged via squash.
Prepared head SHA: dc9a5d5397
Co-authored-by: dutifulbob <261991368+dutifulbob@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-05-27 14:37:17 +02:00
Mariano
f3fe48e8b7
Make Telegram sendMessage actions durable ( #87261 )
...
Route Telegram sendMessage action replies through durable outbound delivery so completed agent responses remain retryable when the gateway send path times out.
Verified with focused Telegram/outbound tests, extension test typecheck, prepare build/check/full test gates, and green CI rerun for head 20b45687e1 .
2026-05-27 14:34:47 +02:00
Vincent Koc
a02fe525f1
fix(doctor): validate bundled MCP tool schemas
2026-05-27 13:15:15 +02:00
Cathryn Lavery
730ac1a68d
fix(agents/harness): validate forced plugin harness support before pinning ( #74341 )
...
Validates forced plugin harness support for the requested provider/model before pinning Codex or any other plugin harness. This prevents an explicitly forced Codex runtime from accepting unsupported OpenAI-like providers through a hardcoded bypass while preserving implicit PI fallback and CLI runtime alias passthrough.
Regression coverage covers forced Codex rejection for unsupported openai/openai-codex support, Codex provider support declarations, CLI attempt routing, pi-embedded auth/profile forwarding fakes, Testbox scenario probes, and live Docker Codex plugin E2E.
Thanks @cathrynlavery.
2026-05-27 09:59:04 +01:00
Shubhankar Tripathy
717003aaff
docs(providers/openai): clarify OpenAI Realtime Platform credits
...
Clarify that OpenAI Realtime voice is billed through OpenAI Platform credits, not Codex/ChatGPT subscription quota, for Voice Call and Control UI Talk.
Document the direct Platform API key path, the `openai-codex` OAuth client-secret path, the quota symptom, and the Platform billing fix. Keep the changelog note crediting @lonexreb.
Closes #76498 .
Co-authored-by: lonexreb <reach2shubhankar@gmail.com >
2026-05-27 08:51:26 +01:00
Vincent Koc
761c802c2a
fix(e2e): bound tool search gateway proof
2026-05-27 09:23:57 +02:00
Vincent Koc
9b2860324b
fix(e2e): bound Telegram credential setup
2026-05-27 08:49:56 +02:00
Vincent Koc
aa40174f0a
fix(e2e): bound MCP channel connect
2026-05-27 08:33:49 +02:00
Vincent Koc
4b40197eae
fix(e2e): bound Telegram proof Bot API calls
2026-05-27 07:58:34 +02:00
Agustin Rivera
2c88547254
fix(prompt): route untrusted group prompts outside system prompt [AI] ( #87144 )
...
* fix(prompt): route untrusted group prompts outside system prompt
* fix(prompt): align untrusted group prompt helpers
2026-05-26 22:47:54 -07:00
Peter Steinberger
e74a039035
docs(changelog): refresh 2026.5.26 notes
2026-05-27 06:42:53 +01:00
Vincent Koc
96bd939995
fix(e2e): bound kitchen sink RPC probes
2026-05-27 07:33:25 +02:00
Agustin Rivera
ae972fe1fe
fix(gateway): enable default auth rate limiting ( #87148 )
...
* fix(gateway): enable default auth rate limiting
* fix(gateway): update auth rate limit changelog
2026-05-26 22:29:33 -07:00
Vincent Koc
fdf58c1998
fix(e2e): backstop Parallels update jobs
2026-05-27 07:20:19 +02:00
Peter Steinberger
15c0dfa61b
docs(changelog): refresh 2026.5.26 notes
2026-05-27 05:59:20 +01:00
Agustin Rivera
119d2359f3
fix(memory): reject prompt-like memory stores ( #87142 )
...
* fix(memory): reject prompt-like memory stores
* fix(changelog): mention memory store rejection
2026-05-26 21:37:29 -07:00
Peter Steinberger
d606881807
docs(changelog): omit advisory id from release notes
2026-05-27 04:16:17 +01:00
Peter Steinberger
26c0c19352
docs(changelog): refresh 2026.5.26 notes
2026-05-27 04:15:52 +01:00
Agustin Rivera
c1151ea899
fix(events): sanitize queued system markers ( #87094 )
...
* fix(events): sanitize queued system markers
* fix(changelog): record system event sanitization
2026-05-26 20:07:39 -07:00
Agustin Rivera
06047005ef
fix(browser): validate current tab before snapshots ( #78526 )
...
* fix(browser): validate current tab before snapshots
* fix(browser): reject snapshot selector before SSRF guard
* fix(test): stabilize plugin activation normalization
* fix(ci): fetch opengrep base history
* fix(snapshot): enforce snapshot ssrf policy
* docs(changelog): add unreleased entry for snapshot SSRF fix
* Revert "docs(changelog): add unreleased entry for snapshot SSRF fix"
This reverts commit 4f3031ff65 .
* fix(changelog): record snapshot ssrf entry
2026-05-26 19:11:01 -07:00
Michael Appel
10546e57dd
clickclack: enforce inbound sender allowlist [AI] ( #83741 )
...
* fix: enforce clickclack sender allowlist
* addressing codex review
* test(clickclack): drop removed senderIsOwner from inbound test fixture
2026-05-26 18:41:12 -07:00
Agustin Rivera
42b8898e8e
fix(filefetch): wrap fetched text as external content ( #87062 )
...
* fix(filefetch): wrap fetched text as external content
* fix(release): add file transfer changelog entry
2026-05-26 18:29:48 -07:00
Vincent Koc
6509da7555
fix(gateway): bound e2e HTTP helper responses
2026-05-27 03:21:03 +02:00
Vincent Koc
2b5fba1519
fix(cli): bound startup memory probes
2026-05-27 03:06:46 +02:00
Vincent Koc
bfddd45e25
fix(gateway): fail hot cpu scenario checks
2026-05-27 02:55:45 +02:00
Vincent Koc
80749b3bdf
fix(gateway): harden runtime smoke checks
2026-05-27 02:49:22 +02:00
Vincent Koc
b65411740e
fix(e2e): resolve mac update smoke commands from PATH
2026-05-27 02:10:32 +02:00
Vincent Koc
3e701449ff
fix(e2e): keep mac smoke commands bounded without timeout
2026-05-27 01:37:57 +02:00
Vincent Koc
728b61a0a4
fix(mac): use corepack pnpm for app packaging
2026-05-27 00:53:09 +02:00
Vincent Koc
2f7bfdbd10
fix(crabbox): scope env-wrapped macOS bootstrap
2026-05-27 00:12:31 +02:00
Peter Steinberger
b414020bef
docs(changelog): note rastermill exif fix
2026-05-26 21:58:29 +01:00
Peter Steinberger
a6973ab9b4
docs(changelog): regroup 2026.5.26 release notes
2026-05-26 21:57:49 +01:00
Peter Steinberger
e6edccad3a
build: update rastermill dependency
2026-05-26 21:55:57 +01:00
Vincent Koc
38edae7df7
fix(e2e): bound docker package preparation
2026-05-26 22:32:25 +02:00
Vincent Koc
639e7ff997
fix(mac): harden restart and dSYM packaging
2026-05-26 22:01:35 +02:00
Peter Steinberger
983b33867e
docs(changelog): prepare 2026.5.26 notes
2026-05-26 20:52:04 +01:00
Peter Steinberger
29a1dc2249
docs(changelog): note reply latency fixes
2026-05-26 20:51:00 +01:00
rendrag-git
e9dd1c43c4
feat(discord): bucket large model picker menus
...
Summary:
- Add alpha-bucket selects when the Discord provider/model picker exceeds select-menu limits.
- Split bucket/runtime lookup helpers and keep compact recents runtime decoding provider-scoped.
Verification:
- node scripts/run-vitest.mjs --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/model-picker.test.ts extensions/discord/src/monitor/native-command.model-picker.test.ts
- node scripts/run-tsgo.mjs
- git diff --check origin/main...HEAD
- autoreview --mode local: no accepted/actionable findings
- CI run 26468173320, OpenGrep run 26468171525, CodeQL Critical Quality run 26468171885
Co-authored-by: rendrag-git <253747599+rendrag-git@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-26 19:52:50 +01:00
Vincent Koc
8c6537b8c1
fix(ci): kill wedged bun smoke commands
2026-05-26 20:04:12 +02:00
Peter Steinberger
8c575bd3c8
docs: update changelog for landed sweep fixes
2026-05-26 18:41:00 +01:00
Vincent Koc
c867ecb136
fix(ci): kill wedged checkout fetches
2026-05-26 19:38:34 +02:00
Michael Appel
84b9704ccc
Validate wide-area DNS zone domains [AI] ( #84136 )
...
* fix: validate wide-area dns domains
* addressing codex review
* fix(dns-cli): throw explicit DNS-name error on invalid --domain
resolveWideAreaDiscoveryDomain catches the validation error from
normalizeWideAreaDomain and returns null, so dns setup --domain foo/bar
fell through to the "No wide-area domain configured" branch instead of
surfacing the invalid-domain diagnostic. Validate explicit CLI/config
input directly so the user-facing setup command reports the actual
problem; preserve the resolver's silent env-fallback semantics for the
background callers that depend on graceful degradation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
* test(gateway): lock in graceful degrade on invalid wide-area config
Drive startGatewayDiscovery through the real resolveWideAreaDiscoveryDomain
with wideAreaDiscoveryDomain: "foo/bar" so the test exercises the actual
swallow-and-return-null path. Asserts the operator-facing warning is
logged, writeWideAreaGatewayZone is never called, and startup completes
without throwing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
* test(gateway): type resolveWideAreaDiscoveryDomain mock to match real signature
vi.fn(() => "openclaw.internal.") inferred the mock as `() => string`, so
mockImplementationOnce(realResolver) tripped tsgo:core:test with TS2345.
Apply the same vi.fn<typeof ...>(...) pattern the file already uses for
writeWideAreaGatewayZone.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
* fix(changelog): note dns validation fix
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
Co-authored-by: Agustin Rivera <agustin@rivera-web.com >
2026-05-26 09:43:58 -07:00
Peter Steinberger
12b81d8978
docs: update changelog for landed fixes
2026-05-26 17:22:19 +01:00