Commit Graph

136 Commits

Author SHA1 Message Date
Vincent Koc b81eaf8a4e fix(agents): keep claude live streams valid 2026-04-27 01:53:37 -07:00
Peter Steinberger 729147dcb5 fix(cron): start isolated timeout after execution begins 2026-04-27 08:15:59 +01:00
Peter Steinberger 2aa375149f test: speed up agent hotspot tests 2026-04-26 10:28:04 +01:00
Ayaan Zaidi f9c8a5107c fix(cli): cap fresh session reseed size 2026-04-26 09:34:24 +05:30
Ayaan Zaidi 8559a84e4e fix(cli): bound fresh session reseed 2026-04-26 09:34:24 +05:30
Ayaan Zaidi 12e4841d96 fix(cli): preserve prompt hooks in history reseed 2026-04-26 09:34:24 +05:30
Ayaan Zaidi 3eff589ac0 test(cli): cover transcript compaction reseed 2026-04-26 09:34:24 +05:30
Ayaan Zaidi dfd5940c34 fix(cli): compact persisted CLI transcripts 2026-04-26 09:34:24 +05:30
Ayaan Zaidi 09e60e496b fix(agents): allow large Claude live JSONL lines 2026-04-26 08:06:06 +05:30
Peter Steinberger 0ca952cdd5 feat(tts): add per-agent voice overrides 2026-04-26 02:54:13 +01:00
Scott Glover 371b69b3e2 Expose cron jobId in plugin hook context 2026-04-26 02:06:48 +01:00
Peter Steinberger 12c16576cd fix: gate acp spawn affordances 2026-04-26 00:30:27 +01:00
Peter Steinberger 9d2254be06 test(agents): make Gemini MCP smoke local 2026-04-25 21:45:57 +01:00
Peter Steinberger 17a213f080 refactor(agents): split bundle MCP CLI adapters 2026-04-25 21:45:57 +01:00
Peter Steinberger dcfd5913fd refactor(agents): share bundle MCP config merging 2026-04-25 21:36:22 +01:00
Blockchain Oracle b40df76c18 fix(cli-runtime): translate MCP transports for CLI backends
Translate OpenClaw `mcp.servers.*.transport` entries into the downstream Claude/Gemini CLI `type` field before writing bundle MCP config.

Also keeps the plugin-sdk bundled-entry fast-path fixture unambiguously CommonJS on Node 24 after runtime-deps mirroring adds a `type: "module"` boundary.

Co-authored-by: Blockchain-Oracle <ajweb3dev@gmail.com>
2026-04-25 21:08:04 +01:00
skylee-01 f7b71abf48 fix(agents): pass Claude system prompt via file 2026-04-25 17:59:25 +05:30
Ayaan Zaidi bbd6dfbe92 fix: cover CLI session prompt hash reuse (#69236) (thanks @stainlu) 2026-04-25 15:58:19 +05:30
Peter Steinberger 9056d4f708 feat: add crestodian local planner fallback 2026-04-25 10:20:02 +01:00
Peter Steinberger 2011de69d3 feat: add Crestodian setup helper 2026-04-25 08:58:21 +01:00
Peter Steinberger 5086069c94 fix(cli-runtime): merge user mcp servers 2026-04-25 01:56:22 +01:00
Kei Shingu b86a04262d fix(cli-runtime): replace overlapping user mcp servers 2026-04-25 01:56:22 +01:00
kei shingu d8ae63e7a2 test(cli-runtime): add coverage for user mcp.servers merge in prepareCliBundleMcpConfig 2026-04-25 01:56:22 +01:00
kei shingu 61250e2bea fix(cli-runtime): merge user mcp.servers into claude-cli bundle config
prepareCliBundleMcpConfig was not including cfg.mcp.servers when building
the temporary mcp.json that gets passed to claude-cli via --mcp-config.
This meant user-defined MCP servers (e.g. mcp.servers.omi in openclaw.json)
were silently dropped, even though --strict-mcp-config prevents any other
path for those servers to reach the CLI session.

The Pi runtime path (loadEmbeddedPiMcpConfig) already merges cfg.mcp.servers
after the bundle layer. This commit applies the same merge to the CLI runtime
path, with identical precedence: bundle defaults < user mcp.servers <
additionalConfig (loopback). The loopback entry remains last so it cannot be
overridden by user config.

Fixes: user-configured MCP servers not appearing as mcp__<name>__* tools in
claude-cli sessions started by OpenClaw.
2026-04-25 01:56:22 +01:00
Peter Steinberger 6e985a421d fix(webchat): keep runtime context out of visible transcripts
Keep WebChat runtime context available to the model while persisting only the transcript-facing user prompt across gateway, CLI, queued follow-up, and embedded Pi paths.

Adds regression coverage for history sanitization, CLI transcript persistence, media-only auto-reply prompts, and embedded Pi prompt rewrite against a real SessionManager file.

Co-authored-by: 91wan <91wan@users.noreply.github.com>
2026-04-24 22:17:03 +01:00
Peter Steinberger 93e95a2057 perf: speed up cli prepare tests 2026-04-24 01:55:02 +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
Vincent Koc 51f9f94cc3 fix(hooks): harden cli transcript loading (#70786) 2026-04-23 14:25:27 -07:00
Peter Steinberger 10202f9279 fix(codex): approve bundled MCP loopback tools 2026-04-23 21:55:36 +01:00
Vincent Koc f40f8a60cc fix(agents): harden cli runner hook followups (#70747)
* fix(agents): harden cli runner hook followups

* fix(agents): harden cli runner hook followups

* fix(agents): harden cli runner hook followups

* fix(agents): harden cli runner hook followups

* fix(agents): harden cli runner hook followups

* fix(agents): harden cli runner hook followups
2026-04-23 12:32:30 -07:00
Peter Steinberger 1d980cca6f perf: trim cli prepare hook tests 2026-04-23 20:07:35 +01:00
Peter Steinberger 32a38f125e fix: keep codex cli images in workspace 2026-04-23 19:06:19 +01:00
Mariano 3e956a4982 fix: align claude-cli prompt hooks (#70625)
Merged via squash.

Prepared head SHA: 3de89da38f
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-04-23 16:34:16 +02:00
Peter Steinberger 53e822f407 fix: keep cli reply runs streaming 2026-04-23 00:49:43 +01:00
Zijun Lin e1ffe97984 fix: address review feedback — handle empty static prompt and remove stray blank lines
- Always pass extraSystemPromptStatic as string (even when empty) so the
  fallback in prepare.ts never accidentally hashes dynamic content
- Use explicit undefined check (params.extraSystemPromptStatic !== undefined)
  instead of ?? nullish coalescing to avoid edge case where empty static
  string falls through to hashing the full dynamic prompt
- Remove extra blank line
2026-04-22 19:21:51 +01:00
Zijun Lin d1c414305b fix(cli-session): only hash static extraSystemPrompt for session reuse
The extraSystemPrompt includes per-message dynamic content from
buildInboundMetaSystemPrompt() (timestamps, message IDs, sender metadata)
that changes on every inbound message. This causes the extraSystemPromptHash
to differ every turn, triggering a session reset with reason='system-prompt'
and discarding all CLI session context.

Fix: split extraSystemPrompt into dynamic (inbound meta) and static
(group context, group intro, group system prompt, exec override hints)
portions. Only hash the static portion for session reuse validation.

The full extraSystemPrompt (dynamic + static) is still sent to the CLI
as before — only the session stability hash uses the static subset.

Fixes #70100
2026-04-22 19:21:51 +01:00
Ayaan Zaidi 1ff461fe7b fix(cli): stabilize oauth session auth epochs 2026-04-22 17:03:33 +05:30
Ayaan Zaidi 81ca7bc40b fix: keep claude cli sessions warm (#69679)
* feat(cli): keep claude cli sessions warm

* test(cli): cover claude live session reuse

* fix(cli): harden claude live session reuse

* fix(cli): redact mcp session key logs

* fix(cli): bound claude live session turns

* fix(cli): reuse claude live sessions on resume

* refactor(cli): canonicalize claude live argv

* fix(cli): preserve claude live resume state

* fix(cli): close dead claude live sessions

* fix(cli): serialize claude live session creates

* fix(cli): count pending claude live sessions

* fix(cli): tighten claude live resume abort

* fix(cli): reject closed claude live sessions

* fix(cli): refresh claude live fingerprints

* fix(cli): stabilize MCP resume hash

* fix: preserve claude live inline resume (#69679)

---------

Co-authored-by: Frank Yang <frank.ekn@gmail.com>
2026-04-22 13:44:18 +05:30
Devin Robison 3cb1a56bfc fix(gateway): derive loopback owner context from token (#69796)
* fix(gateway): derive loopback owner context from token

* docs(changelog): note loopback owner token hardening

* refactor(gateway): clarify loopback runtime cleanup

* fix(gateway): compare both loopback bearer classes
2026-04-21 14:39:48 -06:00
Peter Steinberger f40bd56793 test: isolate agent hotspot scans 2026-04-19 01:16:55 +01:00
Peter Steinberger 0e9d63a417 test: share bundle mcp setup 2026-04-18 23:42:15 +01:00
Peter Steinberger 212c4af50d perf: skip disabled bundle MCP scans 2026-04-18 23:34:48 +01:00
Vincent Koc a018257487 fix(auth): harden codex oauth bridge security 2026-04-18 21:27:27 +01:00
Vincent Koc 78288e37ed fix(auth): close codex review gaps 2026-04-18 21:27:27 +01:00
Vincent Koc 859eb06662 refactor(auth): route codex runtimes through canonical oauth 2026-04-18 21:27:27 +01:00
Peter Steinberger a07b9fc840 test: trim runtime import surfaces 2026-04-18 19:51:22 +01:00
Peter Steinberger fa2f53993a test: trim skills and bundle mcp overhead 2026-04-18 17:42:02 +01:00
Onur 361750775d CI: stabilize live release lanes (#67838)
* CI: stabilize live release lanes

* CI: widen codex live exclusions

* Gateway: stop live config/auth lazy re-imports

* CI: mount writable live Docker homes

* Live: tighten retry and provider filter overrides

* CI: use API-key auth for codex live lanes

* CI: fix remaining live lanes

* CI: stop forwarding live OpenAI base URLs

* Gateway: fix live startup loader regression

* CI: stop expanding OpenAI keys in live Docker lanes

* CI: stop expanding installer secrets in Docker

* CI: tighten live secret boundaries

* Gateway: pin Codex harness base URL

* CI: fix reusable workflow runner label

* CI: avoid template expansion in live ref guard

* CI: tighten live trust gate

* Gateway: ignore empty Codex harness base URL

* CI: stabilize remaining live lanes

* CI: harden live retries and canvas auth test

* CI: extend cron live probe budget

* CI: keep codex harness lane on api-key auth

* CI: stage live Docker OpenAI auth via env files

* CI: bootstrap codex login for Docker API-key lanes

* CI: accept hosted-runner codex fallback responses

* CI: accept additional codex sandbox fallback text

* CI: accept hosted-runner live fallback variants

* CI: accept codex current-model fallback

* CI: broaden codex sandbox model fallbacks

* CI: cover extra codex sandbox wording

* CI: extend cli backend cron retry budget

* CI: match codex models fallbacks by predicate

* CI: accept configured-models live fallback

* CI: relax OpenAI websocket warmup timeout

* CI: accept extra codex model fallback wording

* CI: generalize codex model fallback matching

* CI: retry cron verify cancellation wording

* CI: accept interactive codex model entrypoint fallback

* Agents: stabilize Claude bundle skill command test

* CI: prestage live Docker auth homes

* Tests: accept current Codex models wording

* CI: stabilize remaining live lanes

* Tests: widen CLI backend live timeout

* Tests: accept current Codex model summary wording

* CI: disable codex-cli image probe in Docker lane

* Tests: respect CLI override for Codex Docker login

* Tests: accept current Codex session models header

* CI: stabilize remaining live validation lanes

* CI: preserve Gemini ACP coverage in auth fallback

* CI: fix final live validation blockers

* CI: restore Codex auth for CLI backend lane

* CI: drop local Codex config in live Docker lane

* Tests: tolerate Codex cron and model reply drift

* Tests: accept current Codex live replies

* Tests: retry more Codex cron retry wording

* Tests: accept environment-cancelled Codex cron retries

* Tests: retry blank Codex cron probe replies

* Tests: broaden Codex cron retry wording

* Tests: require explicit Codex cron retry replies

* Tests: accept current Codex models environment wording

* CI: restore trusted Codex config in live lane

* CI: bypass nested Codex sandbox in docker

* CI: instrument live codex cron lane

* CI: forward live CLI resume args

* Tests: accept interactive Codex model selection

* Tests: bound websocket warm-up live lane

* CI: close live lane review gaps

* Tests: lazy-load gateway live server

* Tests: avoid gateway live loader regression

* CI: scope reusable workflow secrets

* Tests: tighten codex models live assertion

* Tests: normalize OpenAI speech live text
2026-04-18 03:18:12 +02:00
Peter Steinberger 310b5e4f6a test: reduce core command hotspots 2026-04-17 16:05:10 +01:00
Rubén Cuevas 7e18c07e41 fix: dedupe repeated bootstrap truncation warnings (#67906) (thanks @rubencu)
* Agents: dedupe bootstrap truncation warnings

* Agents: normalize bootstrap warning cache bookkeeping

* fix(agents): scope bootstrap warning dedupe by workspace

* refactor(agents): simplify bootstrap warning wrapper

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-17 10:54:15 +05:30