Commit Graph

21188 Commits

Author SHA1 Message Date
Peter Steinberger
8c2235e873 fix(plugins): mirror sdk alias for external bundled deps 2026-04-24 03:33:42 +01:00
Peter Steinberger
99354fc1c9 fix(plugins): clean bundled runtime install stage 2026-04-24 03:33:42 +01:00
simonemacario
080ac622c1 fix(plugins): stage bundled-plugin runtime-dep install outside the plugin root
When a packaged bundled plugin's `pluginRoot` is used directly as the npm
execution cwd, `npm install <specs>` resolves the plugin's own
`package.json` as the project manifest and fails with
`EUNSUPPORTEDPROTOCOL: Unsupported URL Type "workspace:": workspace:*`
whenever that manifest declares a `workspace:` runtime dep (e.g.
`"@openclaw/plugin-sdk": "workspace:*"`). This takes out every plugin
with any runtime deps at gateway startup.

`ensureBundledPluginRuntimeDeps` already filters `workspace:` specs from
the CLI arguments, but npm's own resolver reads the cwd manifest
regardless, so the filter alone is not enough. The existing isolated
execution-root + `replaceNodeModulesDir` machinery handles this exact
problem for source-checkout + cache-hit installs. This change activates
the same staging path for the packaged case: when `installRoot ===
pluginRoot` and we are not in the source-checkout cache path, stage the
install inside `<pluginRoot>/.openclaw-install-stage` (which has a
minimal generated `package.json`) and move the produced `node_modules/`
back to the plugin root as before.

- Add regression test `stages plugin-root install when the plugin's own
  package.json declares workspace:* deps` covering the Docker scenario
  (mixed `workspace:*` + concrete runtime dep, e.g. anthropic-style
  `@openclaw/plugin-sdk` + `@anthropic-ai/sdk`).
- Update existing plugin-root-install expectations (`installs
  plugin-local runtime deps when one is missing`, `skips workspace-only
  runtime deps before npm install`, `installs deps that are only present
  in the package root`, `does not trust runtime deps that only resolve
  from the package root`, `does not treat sibling extension runtime deps
  as satisfying a plugin`) to assert the new `installExecutionRoot`.

Reported in #70844; same root cause as #70701, #70756, #70773, #70818,
#70839 which see the downstream "Cannot find package 'openclaw' from
plugin-runtime-deps" symptom because their
`resolveBundledRuntimeDependencyInstallRoot` resolves to an external
stage dir (clean manifest) so the install succeeds but the resulting
node_modules tree cannot satisfy the filtered-out workspace packages at
ESM import time.

## AI assistance

This PR was AI-assisted with Claude Code.

Testing degree: fully tested for the touched `bundled-runtime-deps`
install staging surface.

- `pnpm exec vitest run --config test/vitest/vitest.plugins.config.ts src/plugins/bundled-runtime-deps.test.ts` (31/31)
- `pnpm exec vitest run --config test/vitest/vitest.plugins.config.ts src/plugins/` (43/43 across 8 files)
- `pnpm exec tsgo --noEmit -p tsconfig.core.json`, `pnpm exec tsgo --noEmit -p tsconfig.core.test.json` (clean)
- `pnpm exec oxlint src/plugins/bundled-runtime-deps.ts src/plugins/bundled-runtime-deps.test.ts` (0 warnings, 0 errors)
- `node scripts/check-src-extension-import-boundary.mjs --json` and `node scripts/check-sdk-package-extension-import-boundary.mjs --json` (both `[]`)

I understand the code path changed here: packaged bundled plugins now
stage their runtime-dep install one directory below `pluginRoot` so npm
never reads the plugin's `workspace:*`-containing manifest during
install; after install completes, the produced `node_modules/` is moved
back to `pluginRoot` via the existing `replaceNodeModulesDir` helper.

Signed-off-by: Simone Macario <simone@sharly.ai>
2026-04-24 03:33:42 +01:00
Peter Steinberger
c5620ddf9e fix(release): preserve plugin-local runtime deps in postpublish verify 2026-04-24 03:27:35 +01:00
Peter Steinberger
5ab5dc3900 fix(release): harden packed runtime smoke 2026-04-24 02:31:57 +01:00
Peter Steinberger
8da230a1b3 chore(release): refresh bundled channel metadata 2026-04-24 02:09:57 +01:00
Peter Steinberger
e776922a15 chore(release): prepare 2026.4.23 beta 1 2026-04-24 01:56:25 +01:00
Peter Steinberger
93e95a2057 perf: speed up cli prepare tests 2026-04-24 01:55:02 +01:00
Peter Steinberger
b164bb3717 refactor: centralize realtime voice resolution 2026-04-24 01:50:43 +01:00
Peter Steinberger
57e139100b refactor: share realtime voice bridge sessions 2026-04-24 01:50:43 +01:00
Peter Steinberger
958afeb397 refactor: share provider selection runtime helper 2026-04-24 01:50:43 +01:00
Peter Steinberger
3a2f0e7a1a ci: split install smoke fast path 2026-04-24 01:50:42 +01:00
Peter Steinberger
79066f5cab fix(openai): synthesize codex gpt-5.5 oauth model 2026-04-24 01:49:00 +01:00
Gabriel Kripalani
0f026addaa feat: add OpenRouter image generation (#67668)
Adds OpenRouter image generation support for image_generate. Fixes #55066. Thanks @notamicrodose.
2026-04-24 01:39:19 +01:00
Peter Steinberger
d4d307e07a test: cover OpenAI GPT xhigh reasoning 2026-04-24 01:30:44 +01:00
Peter Steinberger
f04a3dced0 build: update Pi model dependencies 2026-04-24 01:24:46 +01:00
Peter Steinberger
cd8822cc5f fix: preserve OpenAI-compatible image parts 2026-04-24 00:45:42 +01:00
Peter Steinberger
178a314a4c fix: restore OpenRouter vision prompts 2026-04-24 00:42:45 +01:00
Peter Steinberger
a3aa13df9b fix: prevent embedded runs from lowering undici timeouts 2026-04-24 00:34:47 +01:00
Patrick Erichsen
ef88cabe39 fix(control ui): accept paired device token for assistant media auth (#70741)
* fix control ui assistant media auth

* test control ui device token read routes

* defer assistant attachment blob downloads

* fix grouped render rebase merge

* evict stale assistant attachment blob urls

* fix assistant media device token query auth
2026-04-23 16:31:11 -07:00
Otto Deng
de3f3b8f93 feat(openai): pass image output options (#70503)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Otto Deng <ottodeng@users.noreply.github.com>
2026-04-24 00:17:12 +01:00
Peter Steinberger
f0a7a85e7a feat(agents): add generation tool timeouts 2026-04-24 00:05:38 +01:00
Tak Hoffman
07049c8eba fix(models): support Codex model add metadata (#70820) 2026-04-23 18:02:04 -05:00
Peter Steinberger
6259f6addc fix: harden provider and gateway test seams 2026-04-23 23:48:04 +01:00
Vincent Koc
1daa552d5f refactor(qr): share PNG data URL helpers (#70784) 2026-04-23 15:41:45 -07:00
Peter Steinberger
467fcb1791 test(openai): add docker image auth e2e 2026-04-23 23:13:19 +01:00
Peter Steinberger
f523bbfcd1 fix: align claude cli permissions with exec policy
Derive Claude CLI bypass mode from OpenClaw exec YOLO policy, preserve raw Claude permission-mode overrides, update docs/changelog, and cover global/per-agent policy behavior.
2026-04-23 23:11:34 +01:00
Peter Steinberger
9632283d5d test: update browser changed-run expectation 2026-04-23 22:35:33 +01:00
Vincent Koc
f718ba6601 fix(agents): preserve Codex model capacity guidance 2026-04-23 14:29:34 -07:00
Peter Steinberger
f0300253c1 fix: add agent hook history helpers 2026-04-23 22:29:26 +01:00
Vincent Koc
51f9f94cc3 fix(hooks): harden cli transcript loading (#70786) 2026-04-23 14:25:27 -07:00
Devin Robison
bceda6089a fix(gateway): fail closed on runtime config edits (#70726)
* fix(gateway): fail closed on runtime config edits

* changelog + telegram topic requireMention depth

Append a user-facing Unreleased/Fixes entry describing the fail-closed
gateway config-mutation allowlist, and extend the allowlist so Telegram
topic-level paths like
channels.telegram.groups.<group>.topics.<topic>.requireMention stay
agent-tunable instead of being rejected as protected after this change.
2026-04-23 15:23:44 -06:00
Peter Steinberger
02a8c13501 fix(codex): stop materializing auth bridges 2026-04-23 22:23:21 +01:00
aalekh-sarvam
d40dd9088e feat(memory): configurable local embedding contextSize (default 4096) (#70544)
node-llama-cpp defaults contextSize to "auto", which on large embedding
models like Qwen3-Embedding-8B (trained context 40,960) inflates gateway
VRAM from ~8.8 GB to ~32 GB and causes OOM on single-GPU hosts that share
the gateway with an LLM runtime.

Expose memorySearch.local.contextSize in openclaw.json (number | "auto"),
default to 4096 which comfortably covers typical memory-search chunks
(128–512 tokens) while keeping non-weight VRAM bounded.

Closes #69667.
2026-04-23 14:21:53 -07:00
Peter Steinberger
2f14461976 test(openai): cover automatic image auth readiness 2026-04-23 22:14:55 +01:00
Peter Steinberger
58bde71908 fix: collapse qmd startup memory log 2026-04-23 22:12:01 +01:00
Vincent Koc
f1ad5e27e0 fix(agents): surface OpenAI model capacity errors 2026-04-23 14:04:35 -07:00
EVA
137dbc71f0 feat: expose harness selection decisions (#70760)
Codex harness selection now keeps the decision helper internal, logs debug-only selection reasons and candidates, and documents `/status` as the primary user-facing signal.

Thanks @100yenadmin.

Co-authored-by: Eva <eva@100yen.org>
2026-04-23 21:57:09 +01:00
Peter Steinberger
10202f9279 fix(codex): approve bundled MCP loopback tools 2026-04-23 21:55:36 +01:00
Peter Steinberger
5314042990 fix(gateway): normalize MCP object schemas 2026-04-23 21:55:36 +01:00
Devin Robison
873dce178d fix(gateway): block webchat session compaction mutations (#70716)
* fix(gateway): block webchat session compaction mutations

* docs(changelog): note webchat compaction guard (#70716)
2026-04-23 14:50:35 -06:00
Peter Steinberger
a5ea24757c fix: enforce silent group replies after reactions 2026-04-23 21:42:17 +01:00
Peter Steinberger
f5042adf27 feat: add forked subagent context 2026-04-23 21:28:58 +01:00
Peter Steinberger
abedf9c1f4 fix(acpx): remove codex auth file fallback 2026-04-23 21:26:46 +01:00
Peter Steinberger
f6336c5521 fix(openai): retire removed Codex Spark model 2026-04-23 21:16:46 +01:00
Vincent Koc
ea25d7ed5b fix(qr): replace qrcode-terminal with qrcode-tui
Replace legacy qrcode-terminal usage with shared qrcode-tui media helpers, bound QR PNG rendering options, and raise bundled plugin host floors for the new SDK runtime surface.
2026-04-23 13:06:14 -07:00
Peter Steinberger
058e6f588a fix(openai): align Codex fallback with GPT-5.5 2026-04-23 21:03:26 +01:00
Peter Steinberger
648422a6c1 fix(openai): send image edits as multipart uploads (#70657) 2026-04-23 20:48:55 +01:00
Peter Steinberger
ff56a9d41b test(openai): prefer canonical GPT refs 2026-04-23 20:47:39 +01:00
Peter Steinberger
384eb6bc66 feat(openai): use canonical GPT refs for Codex OAuth 2026-04-23 20:47:38 +01:00