Peter Steinberger
fa0fcef9f6
fix(sessions): require provenance for fresh context-size facts ( #120497 )
2026-08-07 23:06:30 -07:00
Peter Steinberger
48639663b0
chore(release): prepare 2026.8.1 ( #120375 )
2026-08-07 18:44:12 -07:00
Peter Steinberger
fa9626c4e1
refactor(steering): make active-run admission exact and atomic ( #120285 )
...
* refactor(steering): make admission exact and atomic
* fix(steering): bind targets by run identity
* fix(steering): inject before reply dispatch
* fix(steering): preserve backend injection modes
* fix(steering): target session suggestions
* fix(steering): preserve sibling delivery contracts
* style(steering): satisfy exact-head lint
* fix(steering): preserve targetless protocol compatibility
* fix(steering): preserve exact targets through replies
2026-08-07 16:58:04 -07:00
joshavant
026f4045b7
Revert "fix(protocol): preserve gateway session attribution across node runs"
...
This reverts commit 735f176b01 .
2026-08-07 18:40:17 -05:00
joshavant
75eeacd445
Revert "docs(protocol): record node attribution envelope"
...
This reverts commit ec023a4336 .
2026-08-07 18:40:17 -05:00
joshavant
d4c9a4d8f1
Revert "feat(audit): preserve exact agent execution provenance"
...
This reverts commit 79b8775bc9 .
2026-08-07 18:40:17 -05:00
Peter Steinberger
8bf62e7007
refactor(ui): derive gateway types from protocol and consolidate navigation/error helpers ( #120348 )
...
* refactor(protocol): derive shared gateway types
* refactor(ui): consolidate navigation click handling
* refactor(ui): centralize UI state and error helpers
2026-08-07 15:25:07 -07:00
Peter Steinberger
5a795f4dda
fix(qa): require a fresh reply and real tool use after switching models ( #119662 )
...
* fix(qa): require a fresh reply after switching models
* fix(qa): prove successful tool use after model switching
* fix(qa): wait for the new persisted model-switch tool result
* fix(qa): authenticate canonical model-switch attempt evidence
* fix(ai): preserve effective response model evidence
Punchcard-Session: golden-valley-workshop-br
* fix(agent): publish run-owned terminal receipts
Punchcard-Session: golden-valley-workshop-br
* fix(qa): require run-owned model-switch evidence
Punchcard-Session: golden-valley-workshop-br
* fix(agent): record explicit tool completion outcomes
Punchcard-Session: golden-valley-workshop-br
* fix(agent): exclude unavailable approvals from receipts
Punchcard-Session: golden-valley-workshop-br
* fix(agent): derive receipt visibility from terminal reply
Punchcard-Session: golden-valley-workshop-br
* fix(qa): bind model-switch continuity to terminal reply
Punchcard-Session: golden-valley-workshop-br
* fix(qa): project Crabline Telegram visible text
Punchcard-Session: golden-valley-workshop-br
* fix(qa): record run-owned delivery evidence
Punchcard-Session: golden-valley-workshop-br
* fix(qa): bind primary model-switch delivery
Punchcard-Session: golden-valley-workshop-br
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-08 03:05:32 +08:00
Peter Steinberger
74500f334e
fix(ai): truncated Anthropic streams error; proxies exempt from message_stop contract ( #120030 )
...
* fix(ai): enforce message_stop only for direct Anthropic models
The Anthropic SSE transport threw 'stream ended before message_stop' only when
a refusal buffer happened to be non-empty, so a truncated first-party stream
could pass silently while compatible proxy providers that legitimately omit
message_stop failed intermittently. The invariant now keys off the transport
contract owner: direct Anthropic models always require message_stop; proxy
providers are exempt.
* test(ai): cover proxy streams ending without message_stop
ClawSweeper P1: the proxy exemption had no focused test, so the lenient
branch could regress silently. A non-anthropic provider through a custom
endpoint now proves stopReason=stop with no error when the stream ends
without message_stop.
2026-08-07 01:49:46 -07:00
Vincent Koc
79b8775bc9
feat(audit): preserve exact agent execution provenance
2026-08-07 15:27:14 +08:00
Dallin Romney
2a0bbd23f5
feat: expose session classification facts ( #106832 )
...
* feat: expose session presentation metadata
* fix: restrict session titles to safe display metadata
* fix: preserve saved session display names
* fix(protocol): tolerate future session presentation values
* fix(gateway): keep direct peer names out of presentation
* fix(protocol): connect session presentation to native rows
* fix(gateway): canonicalize session presentation metadata
* fix(gateway): satisfy session presentation CI checks
* feat(gateway): flatten session classification facts
* fix: repair session classification generated models
* fix(gateway): canonicalize session classification keys
* fix(gateway): classify spawned delivery sessions
* fix(android): retain session classification facts
* test(android): make scripted gateway calls concurrency-safe
* test(live-updater): isolate fixture git commands
2026-08-07 14:56:56 +08:00
metaforismo
2e0fe80c80
fix(venice): replay Gemini tool signatures by turn occurrence ( #119783 )
...
* fix(venice): replay Gemini tool-call signatures
* fix(venice): preserve Gemini signatures in transcripts
* fix(venice): handle mixed Gemini tool history
* fix(venice): downgrade unsigned Gemini tool history
* fix(venice): scope Gemini tool replay by turn
* fix(venice): narrow replay occurrence guards
---------
Co-authored-by: Wen-Yong Lim <cheng@Wen-4-Mac-mini.local >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-08-06 20:27:16 -07:00
Vincent Koc
ec023a4336
docs(protocol): record node attribution envelope
2026-08-07 08:06:01 +08:00
Vincent Koc
735f176b01
fix(protocol): preserve gateway session attribution across node runs
2026-08-07 08:06:01 +08:00
Peter Steinberger
c663c39763
refactor(test): table-drive exact-duplicate test blocks, batch 2 ( #120071 )
...
* refactor(test): table-drive tooling test cases
* refactor(test): table-drive agent test cases
* refactor(test): table-drive core test cases
* refactor(test): table-drive plugin test cases
* refactor(test): table-drive package test cases
* chore(test): prune max-lines baseline
* fix(test): preserve table row literal types
2026-08-06 17:00:28 -07:00
Peter Steinberger
d9ffbb3ed6
fix(memory): report persisted vector index state on unprobed status path ( #120048 )
2026-08-06 15:57:49 -07:00
Onur Solmaz
1f10ef8050
fix(agents): recover once from critical tool loops ( #118647 )
...
* feat(agents): add bounded tool-loop recovery
* feat(agents): wire loop detection into batch recovery
* test(agents): cover bounded tool-loop recovery
* fix(agents): enforce loop thresholds within tool batches
* fix(agents): retain rejected loop batch evidence
* test(agents): update embedded session recovery fixture
* fix(agents): surface terminal loop recovery failures
* fix(agents): preserve loop recovery across retries
* fix(agents): isolate rejected loop evidence
* fix(agents): terminate native critical tool loops
* fix(agents): canonicalize tool loop actions
* fix(agents): preserve tool loop recovery guidance
* fix(agents): preserve code mode tool identity
* fix(agents): preserve prebatch loop evidence
* fix(agents): order native loop termination
* fix(agents): clean up rebased tool validation
* fix(agents): interrupt codex side turns on critical tool loops
* fix(agents): tighten loop recovery batch lifecycle
* fix(agents): drop unconsumed loop detector type export
* fix(agents): drop unconsumed loop relay exports
* test(agents): add agent subscribe to embedded session doubles
* fix(agents): scope critical loop recovery to embedded runs
2026-08-06 14:09:10 +08:00
大村愛弥
793f602f80
fix: remove bodyless 400/413 from overflow patterns to prevent false compaction ( #119596 )
...
* fix: remove bodyless 400/413 from overflow patterns to prevent false compaction
PR #67024 fixed the failover classification path (errors.ts) to not
classify bodyless 400/422 as 'format' errors. However, the compaction
trigger path (isContextOverflow in overflow.ts) still has the pattern
/^4(?:00|13)\s*(?:status code)?\s*\(no body\)/i in OVERFLOW_PATTERNS.
This means a bodyless 400 from any provider triggers compaction via
checkCompaction() -> isContextOverflow(), even though PR #67024
ensured the failover reason is null (not 'format'). The two paths are
independent: failover classification and compaction triggering use
separate functions.
A bodyless 400 cannot be a context overflow — real overflow errors
from all major providers include a descriptive body. A bare 400 with
no body is a transient/malformed error that should surface to the
user, not trigger a compaction loop.
Remove the Cerebras-specific pattern from OVERFLOW_PATTERNS. If
Cerebras returns bodyless 400/413 for actual overflow, it should be
handled with a more specific pattern or NON_OVERFLOW_PATTERNS exclusion.
AI-assisted.
* fix(ai): avoid compacting on bodyless 400 errors
---------
Co-authored-by: lykeion-dev <lykeion-dev@users.noreply.github.com >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-08-05 20:53:02 -07:00
Alix-007
2436a13d83
fix(memory): prevent remote errors from exposing credentials ( #119666 )
...
* fix(memory): redact credentials from remote errors
* fix(memory): redact full bearer token68 values
* fix(memory): redact bearer schemes case-insensitively
* fix(memory): redact short quoted bearer values
2026-08-05 20:40:18 -07:00
Peter Steinberger
ad80956428
fix(skills): keep installed verdicts scoped to publisher ( #119672 )
...
* fix(skills): preserve owner-qualified security verdicts
* fix(skills): keep verdict helper internal
* fix(skills): bound legacy verdict fallbacks
2026-08-05 14:57:56 -07:00
Peter Steinberger
d7a444b08a
refactor(agent-core): unify session projection and compaction summaries ( #119639 )
2026-08-05 07:49:12 -07:00
Xiaoshuai Zhang
72fd25d47d
fix(gateway): connect bootstrap clients to self-signed WSS ( #80204 )
...
* fix(gateway): propagate TLS pins to bootstrap clients
Co-authored-by: Xiaoshuai Zhang <dev@jetd.one >
Punchcard-Session: cobalt-brook-meadow-m9
* fix(gateway): keep TLS loader type private
Punchcard-Session: cobalt-brook-meadow-m9
* fix(gateway): preserve TLS pin transport policy
Punchcard-Session: cobalt-brook-meadow-m9
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Xiaoshuai Zhang <dev@jetd.one >
2026-08-05 13:19:27 +08:00
Josh Avant
618fba92bf
feat(audit): add execution identity inspection ( #117034 )
...
* feat(audit): add opt-in execution identity inspection
* fix(audit): gate recovery identity retention
* fix(audit): keep recovery identity type private
* test(audit): type internal recovery fixture
* test(audit): split recovery identity coverage
* docs(audit): define operator read trust boundary
* test(qa): register identity scenario child
* fix(audit): enforce shared identity retention bounds
* fix(audit): seal public ingress identity boundary
* fix(audit): keep ingress guard lint-clean
* fix(gateway): preserve advertised method order
* chore(protocol): sync advertised method order
* fix(protocol): encode audit selector invariants
* test(audit): prove exact execution guard
* fix(audit): keep identity storage lazy
2026-08-04 20:05:15 -05:00
Vincent Koc
a54bec799c
fix(agents): observe native provider prompt egress ( #119219 )
...
* fix(agents): observe final provider prompt egress
* fix(agents): observe native provider prompt egress
* test(agents): type native prompt observer models
2026-08-04 22:46:07 +08:00
Vincent Koc
6d88ec5248
fix(agents): recover from invalid compaction summaries ( #119137 )
2026-08-04 19:43:25 +08:00
Vincent Koc
1fb4f3c709
merge: sync llama.cpp transport fix with main
...
* 'main' of https://github.com/openclaw/openclaw :
test(qa): cover sandboxed exec behavior (#119053 )
test(qa): prove shared-channel memory recall (#119111 )
fix(telegram): keep request deadlines through response bodies
test(qa): cover gateway plugin approvals (#119128 )
fix(ai): keep OpenAI tool call id truncation UTF-16 safe (#110471 )
fix: preserve live updater failure diagnostics (#119096 )
fix: recover new-session models through Gateway startup (#119120 )
test(qa): cover instruction profile artifacts (#119078 )
fix(telegram): record automatic delivery message ids
test(qa): cover memory promotion safety (#119093 )
test(qa): prove overflow compaction pruning (#119033 )
fix(tool-search): preserve deferred MCP failures (#118363 )
fix(macos): keep setup activation within app checks
test(setup): type provider kind fixture
fix(setup): complete prepared model activation
fix(protocol): regenerate Swift wizard models
fix(ollama): activate the model selected during setup
fix(setup): preserve the prepared model handoff
2026-08-04 14:51:35 +08:00
Vincent Koc
6ce6dd3f21
merge: activate exact prepared local model
...
* commit '70d75c6fa3d022fb0de55640c4aca11baecd8175':
fix(macos): keep setup activation within app checks
test(setup): type provider kind fixture
fix(setup): complete prepared model activation
fix(protocol): regenerate Swift wizard models
fix(ollama): activate the model selected during setup
fix(setup): preserve the prepared model handoff
2026-08-04 14:40:48 +08:00
pick-cat
01e7fca716
fix(ai): keep OpenAI tool call id truncation UTF-16 safe ( #110471 )
2026-08-04 14:03:44 +08:00
Vincent Koc
9c854cb1a0
fix(ai): preserve Google simple completion sanitation
2026-08-04 13:58:58 +08:00
Vincent Koc
9501a8264b
fix(ai): prefer provider-owned completion streams
2026-08-04 11:11:55 +08:00
Vincent Koc
dea04651b9
fix(setup): preserve the prepared model handoff
2026-08-04 09:39:02 +08:00
Vincent Koc
e928762b9d
test(qa): close external app SDK proof gaps ( #118978 )
...
* test(qa): close external app SDK proof gaps
* test(qa): close external app SDK proof gaps
2026-08-04 09:00:22 +08:00
Peter Steinberger
c83dcc2bc0
fix(security): harden network tool output at canonical owner boundaries ( #118984 )
...
* fix(security): bound external tool content at its canonical owner boundary
* fix(plugin-sdk): document supported security boundary and restore facade parity
2026-08-03 15:34:33 -07:00
Vincent Koc
554a6f3bbf
feat(sms): add Twilio MMS support ( #118664 )
...
* feat(sms): add Twilio MMS support
* fix(sms): harden hosted media bearer handling
* fix(sms): discard staged media before dispatch
* fix(sms): close staged media cleanup races
* fix(sms): finalize MMS metadata and race proof
* fix(media): bind local reads to authorized descriptors
* fix(sms): close MMS review gaps
* fix(media): make inbound root matching type-safe
* fix(media): route bounded reads through fs-safe facade
* test(media): satisfy async lint contracts
2026-08-04 05:46:37 +08:00
zengLingbiao
780d6bf7b8
fix(ai): reject binary Codex websocket frames ( #111138 )
...
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-04 02:11:08 +08:00
Jesse Merhi
68be0e3378
feat: enable rich setup controls in custodian chat ( #114631 )
...
* feat(protocol): carry the awaited wizard step on the chat result
* fix(system-agent): strip sensitive wizard prefill from chat results
* fix(wizard): keep setup secrets server-side
* test(wizard): preserve prompt mock typing
* fix(ui): add reveal toggle to wizard secrets
* refactor(ui): adopt Carapace sensitive input
* fix(ui): hide revealed sensitive input mask
* test(twitch): cover environment-only setup
* feat(custodian): render rich wizard steps
* fix(custodian): validate wizard text replies
* feat(custodian): submit typed wizard answers
* refactor(gateway): isolate custodian chat turns
* fix(gateway): accept session engine adapter
* fix(ui): narrow wizard control values
* refactor: simplify rich wizard answer flow
* fix(custodian): recover evicted wizard sessions
* docs: note custodian rich setup controls
* test(gateway): split wizard answer coverage
2026-08-03 22:18:27 +10:00
Peter Steinberger
ecc49b5a87
refactor(tts): absorb speech core package ( #118513 )
...
* refactor(tts): absorb speech core package
* fix(tts): preserve runtime SDK exports
* refactor(tts): remove private package exports
* test(tts): align canonical runtime mocks
* test(tts): complete canonical settings mocks
* chore(plugin-sdk): regenerate API baseline for #118513
2026-08-03 02:25:48 -07:00
Peter Steinberger
0cad02313a
test(tool-call-repair): consolidate stream fixtures ( #118563 )
2026-08-03 00:50:11 -07:00
joshavant
d0439b9ce0
fix: distinguish dismissed task delivery
2026-08-03 02:48:34 -05:00
joshavant
6ca16f7f3d
fix: redrive retained text completions
2026-08-03 02:48:34 -05:00
joshavant
d9393bd3cb
fix: make subagent completion delivery durable
2026-08-03 02:48:34 -05:00
Peter Steinberger
1140e56a37
test(ai): deduplicate legacy function-call fixtures ( #118445 )
2026-08-02 21:24:46 -07:00
Peter Steinberger
88e588090f
refactor(gateway): compact validator registry imports ( #118379 )
2026-08-02 19:55:52 -07:00
Peter Steinberger
357087b9c7
refactor(gateway): lifecycle-owned ambient state via factory-registered drains ( #118271 )
...
* refactor(runtime): own ambient state lifecycle cleanup
* chore(plugin-sdk): refresh additive API baseline
* fix(runtime): restore agent wait listener lifecycle
Keep agent-job data process-shared while preserving module-local event subscription ownership. Ratchet the public wildcard budget down after replacing text-runtime's wildcard singleton export with named exports.
2026-08-02 18:06:46 -07:00
Peter Steinberger
c43ba8e3fc
fix(cli): speed up hook status reads through the Gateway ( #118288 )
...
* perf(cli): reuse gateway hook status (#118222 )
* chore(protocol): register hooks.status schema module in generated surfaces
2026-08-02 17:21:28 -07:00
Peter Steinberger
88d6a2c8d6
perf(gateway): reduce sessions.list read amplification under streaming load ( #118207 )
...
* perf(gateway): reduce sessions list read amplification
* test(gateway): stabilize title batch perf proof
* fix(gateway): satisfy sessions list CI contracts
* perf(gateway): reuse warm batch title fields
* fix(gateway): satisfy strict title cache types
* test(gateway): use transcript write scope in cache test
* fix(gateway): fence session list cache on active runs
* refactor(infra): extract agent run registry
* fix(infra): keep run-registry context types module-local
2026-08-02 16:08:07 -07:00
Peter Steinberger
30c79e4db1
fix(inference): prevent lost cancellation, stuck compaction, and runaway tools ( #118146 )
...
* fix(inference): preserve cancellations, compaction, and tool-loop safety
* fix(inference): satisfy Codex and mock-provider type checks
* fix(codex): secure tool-free recovery and restricted turns
* fix(codex): satisfy host-prompt provenance lint
2026-08-02 14:42:01 -07:00
Peter Steinberger
3f3ceb2def
feat(gateway): track event-loop degradation persistence and add concurrency benchmark ( #118193 )
...
* feat(gateway): persist event loop degradation metrics
* fix(gateway): bound concurrency benchmark turn waits
2026-08-02 14:21:44 -07:00
Peter Steinberger
70876c9790
perf(gateway): remove streaming hot-path rescans ( #118192 )
2026-08-02 14:07:24 -07:00
Peter Steinberger
b695c6589a
test(memory): consolidate host process fixtures ( #118160 )
2026-08-02 13:19:01 -07:00