Commit Graph

19830 Commits

Author SHA1 Message Date
Peter Steinberger f65a6f81de feat(llama-cpp): raise default context size to 64K (#123701)
The managed llama-server default ctx-size was 8192, but the full OpenClaw
agent system prompt alone is ~31K tokens, so the first agent turn overflowed
the context window and forced immediate compaction (observed live on the Mac
app local-model onboarding). Raise the default to 65536 so a fresh local-model
install can run a real agent turn out of the box.

The default-download 16 GiB RAM floor already bounds weaker machines, and
Gemma 4 supports far more than 64K, so this only changes headroom, not the
offer gate. Docs updated to match.
2026-08-14 08:26:41 -07:00
Peter Steinberger fc5265d685 improve: tighten newest regression ownership (#123606)
* test: tighten newest regression ownership

* test(ui): stabilize request-driven e2e waits

* fix(ci): stabilize lifecycle-bound test observations

* test(ci): pin current Telegram job cap

* test(ui): wait for terminal selection owner

* test(mac): use shared unread wait policy
2026-08-14 08:08:45 -07:00
Dallin Romney 83d53044a4 fix(channels): route commentary through one progress owner (#121009)
* fix(slack): keep commentary progress on draft lane

* fix(channels): route commentary through one progress owner

Keep non-verbose commentary in Slack and Discord draft lanes while preserving one durable commentary payload when verbose progress makes those drafts yield. Freeze that owner decision for the turn so session changes apply on the next turn.

Co-authored-by: Dallin Romney <dallinromney@gmail.com>

Punchcard-Session: amber-workshop-workshop-36

* fix(channels): refresh queued commentary owner

Recompute the frozen draft-versus-durable commentary owner for every queued follow-up turn and carry that decision into final payload projection.

Punchcard-Session: amber-workshop-workshop-36

* fix(channels): clarify commentary owner opt-in

* fix(channels): preserve queued draft preambles

* fix(channels): require explicit queued progress ownership

* refactor(channels): record commentary progress owner

* fix(telegram): tolerate unscoped queued updates

* test(discord): use canonical draft fixture after rebase

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-14 22:15:53 +08:00
Peter Steinberger ecaeb8c9aa perf(test): reuse memory plugin module across mocks (#123678) 2026-08-14 07:13:51 -07:00
Peter Steinberger c3887db7c1 feat: compact xAI sessions server-side (AI-assisted) (#123622)
* feat: add xAI Responses compact endpoint

* docs: explain xAI server-side compaction

* refactor: persist server compaction via session manager

* refactor: simplify server compaction results

* fix: preserve server compaction result kind

* test: satisfy server compaction CI contracts

* fix(xai): prepare server compaction requests

* refactor(ai): extract prepared compaction request

* fix(xai): preserve compaction fallback semantics

* test(xai): use the stream function type owner

* fix(xai): enable compact endpoint for provider alias
2026-08-14 07:02:47 -07:00
Josh Avant 97a53a9b35 feat: audit admitted channel participant identity (#122863)
* feat: audit admitted channel participant identity

* fix: preserve Telegram identity through thread recovery

* fix: signal held gateway process groups

* fix: keep audit evidence passive in collect routing

* fix: validate copied channel participant evidence

* fix: bind channel participant evidence to host ingress

* fix: honor Telegram proof credential roles

* fix: restart held Telegram proof through gateway

* fix: repair channel identity CI regressions

* test(matrix): bind thread routing owner

* fix: preserve direct DM SDK compatibility

* fix: bind channel provenance at host runtime

* test(feishu): provide channel context builder

* fix: defer record-bound channel runtime resolution

* fix: keep channel admission evidence core-private

* fix(audit): bind channel admission to plugin lifecycle

* fix(audit): bind ingress provenance to final context

* refactor(audit): split admission scope keys

* test(queue): cover combined metadata carriers

* refactor(audit): keep lifecycle helpers private

* fix(queue): preserve combined turn authority

* test(channels): provide ingress context builders

* test(channels): align integrated CI fixtures

* test(clickclack): resolve model-loop ingress

* docs: preserve channel participant evidence invariant
2026-08-14 08:57:01 -05:00
Josh Lehman c23c188902 fix: explicit agent ownership no longer breaks system surfaces (#123339)
* fix: honor explicit agent ownership in system surfaces

* oc-000: fix explicit-owner runtime preparation
2026-08-14 06:52:21 -07:00
Peter Lee ed08d1352b fix(telegram): reject webhook and health route collisions (#119268)
Reject reserved /healthz webhook configurations before registration, preventing silent Telegram update loss. Warn through Doctor and document recovery.

Co-authored-by: Peter Lee <22994703+xialonglee@users.noreply.github.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-14 12:37:31 +00:00
iridescentWen 94cdb6c46e fix(telegram): preserve batched reply and quote context (#121907)
Preserve reply and selected-quote metadata from later Telegram debounce and fragment-batch messages while keeping reply-chain recovery bounded.

Co-authored-by: iridescentWen <whatmakesbetter@outlook.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-14 17:27:11 +05:30
Peter Steinberger 2af5eca07f feat(cua-computer): full v2 adapter with background window/element delivery (#123604)
* feat(cua-computer): add full v2 adapter

* chore(cua-computer): drop release-owned changelog edit
2026-08-14 03:59:19 -07:00
Ayaan Zaidi 72a8b9b5b4 fix(telegram): retry abandoned durable ingress updates (#123528)
Treat pre-adoption Telegram turn abandonment as retryable so durable ingress releases the claim instead of tombstoning an unprocessed update.
2026-08-14 10:55:37 +00:00
Ayaan Zaidi e826501fdb fix(telegram): resolve native command names from the loaded registry only (#123607)
Telegram native-command registration resolved provider names through the bundled channel-plugin fallback, which jiti-transpiles the entire plugin plus core graph from source when no registry entry is loaded (~190s silent CPU) — tripping the 300s no-output CI watchdog on the two Telegram test files that register at module scope. Telegram defines no resolveNativeCommandName hook, so the load resolved nothing. Thread the existing includeBundledChannelFallback option through the spec-listing helpers and use loaded-registry-only lookups in the Telegram plugin, matching the Discord sibling. Runtime names are byte-identical; both files drop from 200s to ~5s.
2026-08-14 10:47:20 +00:00
Peter Steinberger 1c2984b84c refactor(test): remove residual test seams (#123555)
* refactor(test): remove residual test seams

* fix(test): avoid Memory doctor provider bootstrap

* fix(test): bind Memory doctor inspector per instance

* refactor(memory): split vector doctor orchestration
2026-08-14 03:03:15 -07:00
Peter Steinberger d19c7553dd feat(computer-use): computer.act v2 action contract with capability-filtered tool (#123544)
* feat(computer-use): computer.act v2 action contract with capability-filtered tool

* fix(computer-use): break contract import cycle, bound model-visible elements, regen swift protocol

* test(computer-use): satisfy curly rule in schema-cap helpers

* fix(computer-use): satisfy type-aware lint on contract and tool

* test(gateway-protocol): keep connect-params suite under the line cap
2026-08-14 02:40:56 -07:00
Vatsal Garg d8a1ebbb49 fix(approvals): prevent cross-channel exec approval leak (#122517)
Reject unbound foreign-channel fallback at shared approval-account selection while preserving recorded bindings and explicit forwarding targets. Cover Telegram and Matrix routing contracts.

Co-authored-by: vatsalgargg <vatsalg80@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-14 13:11:03 +05:30
Peter Steinberger 73e2489a5e test: delete final plugin and UI duplicates (#123214)
* test: delete final plugin and UI duplicates

* test(ios): remove duplicate watch reply case

* test(nostr): isolate ambient private key

Co-authored-by: Josh Avant <830519+joshavant@users.noreply.github.com>

---------

Co-authored-by: Josh Avant <830519+joshavant@users.noreply.github.com>
2026-08-14 00:20:09 -07:00
Peter Steinberger 2ef92d0bbe feat: cookie sync from Mac to a remote Gateway browser profile (#123494)
* feat(browser): sync system cookies to a remote gateway profile

Add `openclaw browser cookie-sync`: decrypt allowlisted macOS Chrome-family
cookies locally and push them into a managed profile on a possibly-remote
Gateway over the existing operator channel. --watch re-syncs on cookie-DB
changes with a single Keychain prompt per session.

- New POST /cookies/set-many batch route (mirrors /cookies/set)
- Extract one canonical readSystemProfileCookies reused by import + sync
- Mandatory domain allowlist (never syncs an unrestricted cookie jar)
- Decryption stays host-local (macOS); no cookie values are logged

* feat(macos): cookie sync checkbox and configuration UI

Add an off-by-default 'Cookie sync' section (Settings > General): a toggle, an
editable domain allowlist editor, and a target-profile field, actionable only in
remote-gateway mode. CookieSyncManager supervises `openclaw browser cookie-sync
--watch` against the connected Gateway when enabled, resolving a LOCAL CLI (never
the SSH-redirect path, since decryption is host-local) and injecting gateway
URL + token/password via environment, never argv. A status row surfaces
running/stopped/error and the last sync summary.

* fix(macos): satisfy cookie sync lint gates

* chore(i18n): register cookie sync native source strings

Regenerate apps/.i18n/native-source.json baseline for the new macOS Cookie
sync settings strings (additive only). Satisfies the native:i18n:verify gate;
generated locale artifacts are refreshed separately by the locale-refresh job.
2026-08-13 23:47:26 -07:00
Peter Steinberger 312397ab4d feat(providers): add GLM 5.3 support (#123523) 2026-08-13 23:34:50 -07:00
Peter Steinberger 848a7e30b3 refactor(computer-use): one canonical wire contract + node-host provider seam (#123509)
* refactor(computer-use): add provider seam

* refactor(computer-use): retry provider open after failure; drop changelog entry
2026-08-13 23:32:32 -07:00
Peter Steinberger 129c06d811 fix: bind steering authority to model route 2026-08-13 23:28:53 -07:00
Peter Steinberger d183d06738 fix(codex): deny native tool feature pins 2026-08-13 23:28:53 -07:00
Peter Steinberger 54cf346abb fix: preserve pending input across authority changes 2026-08-13 23:28:53 -07:00
Peter Steinberger 1bb20fb16a fix(codex): bind steering to tool authority 2026-08-13 23:28:53 -07:00
Peter Steinberger 0fa354827f fix(copilot): bind active runs to host tool authority 2026-08-13 23:28:53 -07:00
Peter Steinberger b5809f5f44 fix: enforce native tool policy across harness lifecycles 2026-08-13 23:28:53 -07:00
Peter Steinberger ee258beba6 fix(reef): diagnose relay protocol skew (#123498) 2026-08-13 22:47:53 -07:00
Peter Steinberger d9646ad5d5 test(cua-computer): freeze computer-use provider parity matrix fixtures (W0-FIX) (#123469)
* test(cua-computer): freeze provider parity fixtures

* test(cua-computer): keep parity fixture type aliases file-local until a consumer exists

* test(cua-computer): split parity fixtures under the line cap and fix strict test types
2026-08-13 22:42:46 -07:00
Peter Steinberger db4379bd2f fix(codex): refresh token snapshot after compaction (#123478) 2026-08-13 22:38:04 -07:00
Peter Steinberger 25d4807b38 feat(anthropic): opt-in server-side compaction (compact-2026-01-12) (#123402)
* feat(anthropic): add server-side compaction replay

* docs(anthropic): document server compaction

* test(anthropic): harden compaction live probe

Fix the live fixture baseUrl (the SDK appends /v1 itself), fail fast on
errored turns instead of silently looping, assert request-side injection
before capture, and log per-turn stream outcomes for live debugging.

* test(anthropic): keep live settings type module-local

* refactor(agents): split transcript replay sanitizers

* test(anthropic): move compaction live probe into plugin tree

* refactor(anthropic): consolidate compaction replay duplication

* test(anthropic): align compaction threshold host coverage

* test(anthropic): fabricate checkpoints via capture tracker

Keeps captureAnthropicCompaction module-local; knip flags exports whose
only consumers are tests.
2026-08-13 21:28:19 -07:00
Peter Steinberger 7c5eaede1e feat(codex): pass explicit skill selections as structured turn input (#123441)
* feat(codex): pass explicit skill selections as structured turn input

Thread OpenClaw-resolved explicit $skill selections through the reply
pipeline to the Codex app-server harness and emit them as structured
UserInput::Skill turn items when the Codex catalog (skills/list) knows the
same SKILL.md path. Codex then injects the skill natively and blocks its
text scanner from double-selecting the same name, while unmatched names
stay scannable for Codex-native-only skills and the prompt instruction
block keeps owning skills Codex cannot see. Catalog misses and RPC errors
fail open to the instruction path; the turn never fails on skill lookup.

Part of #123367

* fix(plugins): defer llama-cpp ssrf-runtime load out of the setup closure

The doctor-contract closure guard forbids the SSRF barrel in the
doctor/legacy-setup closure (cold-loads DNS, proxy state, logging); the
static import landed with the managed llama-server switch (#123105) and
first fails when a PR selects the guard lane. Defer to a dynamic import at
download time per the guard's stated remedy.
2026-08-13 20:37:47 -07:00
Peter Steinberger 47d3661c58 fix(ci): balance QA smoke profile parts (#123434) 2026-08-13 20:08:51 -07:00
Bek eb1035e861 fix(codex): retain direct-child hook policy after parent yield (#122503) 2026-08-13 22:51:34 -04:00
Peter Steinberger 23c9c04572 fix(sessions): hide unowned host catalogs on multi-user gateways (#123421)
* fix(sessions): scope catalogs by caller identity

* fix(llama-cpp): keep doctor imports lightweight
2026-08-13 19:28:22 -07:00
Ayaan Zaidi 0d584aabfb fix(telegram): preserve bare URL query separators (#123230)
Preserve raw query separators in Telegram rich-message bare URLs by leaving parser-generated links to Telegram entity detection. Authored Markdown links remain typed, while file references remain code-formatted.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-14 02:19:53 +00:00
Kimi Yu d3ff5583d3 fix(slack): keep cached monitor identity and allowlists live (#123403)
* fix(slack): keep cached monitor context state live

* test(slack): type cached monitor context mock
2026-08-13 19:15:38 -07:00
Vito Cappello e43015146e fix(codex): preserve quiet native tool results (#119835)
* fix(codex): preserve quiet native tool results

* test(qa): cover quiet native tool result topic isolation

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-13 18:05:36 -07:00
Kimi Yu 358eecf8cb fix(slack): apply updated global settings to new messages (#123373) 2026-08-13 17:55:26 -07:00
Peter Steinberger 1adaf69a5f fix(ollama): use guided model selection in CLI setup (#123382) 2026-08-13 17:27:36 -07:00
Peter Steinberger 20be26cfe2 refactor(test): remove residual test-only seams (#123168)
* refactor(test): remove residual test-only seams

* fix(test): fresh-load Vitest ownership configs

* test(infra): repair boundary test routing

* test(infra): use landed Codex test owner
2026-08-13 17:16:55 -07:00
Peter Steinberger 1348387076 refactor(plugins): replace node-llama-cpp with managed llama-server (#123105)
Move llama.cpp chat and local embeddings onto a verified externally managed llama-server runtime. Remove the in-process native runtime, forked embedding workers, and node-llama-cpp dependency while preserving guided setup, local GGUF models, tool-capable agent runs, diagnostics, and operator docs.
2026-08-13 16:58:20 -07:00
Colin Johnson f66a2c6a29 fix(sessions): preserve fixed-store owner during migration (#123235)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-13 17:52:39 -06:00
Peter Steinberger 6995f98243 ci: split remaining GitHub-hosted tail lanes (#123364)
* ci: codify manual-only Node 22 compatibility

* ci: split remaining hosted tail lanes

* fix(qa-lab): carry the validated part index into the plan id type

* test(ci): repair hosted tail lane guards
2026-08-13 16:52:25 -07:00
Peter Steinberger c9621adf3e feat(google): add Gemini 3.7 Flash with LOW thinking floor (#123366)
* feat(google): add Gemini 3.7 Flash to the model catalog

* fix(google): floor Gemini 3.7 Flash thinking at LOW — MINIMAL retired upstream

* fix(google): satisfy no-map-spread in catalog row builder
2026-08-13 16:34:13 -07:00
Peter Steinberger dbea88bf57 fix(browser): clear relay deadline on socket close (#123343) 2026-08-13 15:44:15 -07:00
Peter Steinberger 66bfb5dce1 fix(ollama): migrate legacy api-key marker configs (#123341) 2026-08-13 15:39:48 -07:00
Peter Steinberger e04dfd26e2 fix(codex): stop quoted context from triggering explicit skill mentions (#123345)
Codex byte-scans every turn text input for $name skill mentions and
[@name](plugin://...) links (codex-rs/skills/src/mentions.rs), so historical
$skill tokens inside OpenClaw's projected <conversation_context> block and
inbound quoted-reply/room-backlog context counted as current explicit
invocations and injected skill bodies the user never requested.

Neutralize mention sigils with same-length fullwidth lookalikes (the
escapeCodexChatText technique) in projected history and inbound context;
only the raw current request stays selectable.

Fixes #122812
2026-08-13 15:33:23 -07:00
Peter Steinberger eefe8bdc16 fix(codex): preserve explicit migration ownership (#123331)
Discover legacy shared session roots without requiring an implicit default agent. Preserve ambiguous bindings while keeping agent-scoped owners exact.

Closes #123326
2026-08-13 15:14:33 -07:00
Peter Steinberger 877a9c4aa8 test(duckduckgo): move regressions to search boundary (#123188) 2026-08-13 15:07:09 -07:00
Peter Steinberger 902eddf16b fix: keep global channel events agent-scoped (#123316)
Slack and Discord routed system events now retain route ownership when they enter literal-global queues, so sibling agents cannot consume them. Genuinely unbound routing remains an explicit error instead of falling back to a default agent.
2026-08-13 14:45:19 -07:00
Peter Steinberger 3cdbe3a511 fix(ollama): verify guided setup with runtime model (#123190) 2026-08-13 14:27:34 -07:00