Commit Graph

17653 Commits

Author SHA1 Message Date
Vincent Koc
69f10e72f2 fix(ollama): retry unreachable setup in place (#116210) 2026-07-30 12:23:56 +08:00
Yuval Dinodia
4e5bf66fb1 fix(whatsapp): silently drops inbound messages when more than 450 are waiting (#116179)
* fix(whatsapp): silently drops inbound messages when more than 450 are waiting

WhatsApp asked the shared ingress monitor to enforce a 450-entry cap and a
30-day TTL on pending durable ingress rows. Pending rows are undelivered work,
not history, and the monitor runs retention before its first claim, so an
account holding 451 accepted messages lost the oldest one to a hard DELETE
before it could ever be dispatched. Loss scaled linearly with backlog depth and
left no tombstone, no failure record, and no retained payload.

Drop pendingTtlMs and pendingMaxEntries from the WhatsApp retention config.
Completed and failed retention is unchanged so on-disk history stays bounded,
and the config now matches every other channel on the shared monitor, whose
defaults cover completed and failed only. The two values were carried over
mechanically from the pre-SQLite openKeyedStore replay-guard cache in
b0679d1f13 and inlined verbatim in #115824.

Add regression coverage driving the real monitor and the real SQLite ingress
queue over 451 accepted records.

* test(whatsapp): cover pending ingress retention

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 12:20:27 +08:00
Vincent Koc
58b4b94304 test(openai): verify superseded consult handoff 2026-07-30 12:11:06 +08:00
Vincent Koc
6b37d46b17 fix(openai): bound GPT-Live delegation work 2026-07-30 12:11:06 +08:00
xingzhou
cc48aef143 fix(beam): prevent mirror retries from stalling on slow responses (#116174)
* fix(beam): release mirror upload responses

* test(beam): cover response cancellation failures

* fix(buzz): repair typing indicator contracts

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 11:33:22 +08:00
Shakker
c49bfa7382 feat: add Buzz typing indicators 2026-07-30 03:59:34 +01:00
Vincent Koc
3672ab6fa1 fix(test): stop collecting Vydra test helpers (#116139) 2026-07-30 10:19:42 +08:00
Vincent Koc
b660662e01 fix(discord): preserve webhook deadline errors (#116155) 2026-07-30 10:17:47 +08:00
Vincent Koc
0370fce7ff fix(test): isolate Google embedding batch timeout (#116161) 2026-07-30 10:11:29 +08:00
Vincent Koc
18e107f494 fix(plugins): report request timeouts for stalled response bodies (#116166)
* fix(openai): preserve device-code request timeouts

* fix(msteams): preserve SharePoint upload timeouts

* fix(qqbot): preserve channel API request timeouts
2026-07-30 10:03:39 +08:00
joshavant
21db50efc7 refactor(whatsapp): keep inbound boundary transport-private 2026-07-29 20:34:55 -05:00
Vincent Koc
5c296b5a54 fix(whatsapp): preserve injected listener normalization 2026-07-29 20:34:55 -05:00
Vincent Koc
f970e5093b refactor(channels): add portable inbound boundary 2026-07-29 20:34:55 -05:00
Vincent Koc
636d7705c4 fix(feishu): preserve source time in message envelopes (#116156) 2026-07-30 09:27:01 +08:00
Peter Steinberger
ec46d30fbf fix(codex): preserve requester across approval bridge (#116152) 2026-07-29 18:16:51 -07:00
Vincent Koc
d9565bf677 fix(mattermost): honor configured envelope timezone (#116145) 2026-07-30 09:14:40 +08:00
Yuval Dinodia
772235cc55 fix(memory-core): stop MEMORY.md compaction from deleting user headings (#116057)
* fix(memory-core): stop MEMORY.md compaction from deleting user headings

parseMemoryBlocks segmented MEMORY.md only on "## ", so a user heading of
any other level did not close the promotion section above it. The section
ran on to the next "## " heading or EOF, and dropping it to fit the budget
deleted the user text it had swallowed, with no backup and no diagnostic.

Close the current block on any ATX heading, keeping the generator's own
"### Global" and "### Project: <key>" subheadings inside the promotion
body so multi-project sections stay droppable whole.

* fix(memory-core): identify generated promotion subsections by their entry marker

The first exception treated every "### Global" and "### Project: <key>"
heading under a promotion block as dreaming-owned, so a user who wrote one
of those headings themselves still lost it to compaction, which is the same
data-loss class this change set out to fix.

A generated subsection always leads with an openclaw-memory-promotion entry
marker comment, so require that marker as the next non-blank line before
treating the heading as part of the promotion body. User headings that
collide with the generated names now terminate the block and survive.

* fix(memory-core): recognize tab-delimited and empty ATX headings

The heading detector required a literal ASCII space after the opening #
sequence. CommonMark also allows a tab or end of line, so a user note
starting with a tab-delimited heading stayed inside the promotion block
above it and was deleted when compaction dropped that block.

Accept a space, a tab, or end of line after the # sequence. The generated
subsection pattern stays space-only because that is what buildPromotionSection
emits, so a tab-delimited heading is user-authored and is preserved.

* fix(memory-core): preserve Setext headings during compaction

Setext headings were still absorbed into the generated promotion block above them, so dropping that block could silently delete durable user notes. Move the heading paragraph into a preserved block when its underline is encountered, while keeping marker-backed generated content compactable.

* fix(memory-core): preserve indented ATX headings

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 09:13:57 +08:00
QiuYuang
87c71cf0ab fix(voice-call): reject malformed telnyx timestamps (#107565) 2026-07-30 09:12:10 +08:00
Brian Snyder
cce8a21492 fix(codex): accept finalizer prompt echoes (#116044)
Co-authored-by: BSnizND <199837910+BsnizND@users.noreply.github.com>
2026-07-30 09:03:01 +08:00
joshavant
545350488a fix(mattermost): preserve outbound delivery settlement 2026-07-29 19:56:34 -05:00
Jason (Json)
9991f49ebb fix(discord): keep activity receipts in adopted threads (#116119)
* fix(discord): keep active thread replies together

* fix(discord): preserve adopted thread progress receipts

* test(discord): prove adopted thread reply matching

* fix(discord): preserve receipt on draft finalization failure
2026-07-29 18:08:18 -06:00
metaforismo
c868c81e91 fix(feishu): preserve card actions through mention gating (#116105)
* fix(feishu): preserve card actions through mention gating

* test(feishu): use structured card action fixtures
2026-07-29 17:07:42 -07:00
Peter Steinberger
a19132e7eb fix(codex): prevent approval promotion from blocking unattended runs (#116117)
* fix(codex): honor hook approval ownership

* fix(codex): keep permission grants human-gated
2026-07-29 17:00:16 -07:00
yetval
cdab176484 fix(memory-wiki): isolate bridge pages for sandboxed callers
Sandboxed sub-agents could read another agent's bridge-compiled memory through the shared global vault via wiki_get, wiki_search, and the memory_get/memory_search corpus fallback. The wiki-corpus read path now filters pages through one visibility gate that fails closed for bridge-compiled pages a sandboxed caller does not own, including bridge pages that carry no ownership metadata.
2026-07-30 08:32:41 +09:00
Vincent Koc
9e041cd386 fix(hooks): preserve multi-account agent delivery (#116095)
* fix(hooks): preserve account routing for agent delivery

Refs #43866

Co-authored-by: Paul Desmond Parker <paul.parker@dcconnect.cn>

* test(gateway): prove hook account delivery handoff

---------

Co-authored-by: Paul Desmond Parker <paul.parker@dcconnect.cn>
2026-07-30 07:10:21 +08:00
Vincent Koc
8530edb057 fix(plugins): deliver subagent completion to current requester (#116091)
* fix(plugins): deliver subagent completion to requester

Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com>

* test(qa): register current-requester plugin fixture

* fix(plugins): scope requester authority per hook

---------

Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com>
2026-07-30 07:06:17 +08:00
EricKwan
e00ef16ee7 fix(xai): follow OAuth default model automatically (#115617)
* fix(xai): default OAuth login to Grok 4.5

* fix(xai): follow OAuth default model automatically

* fix(xai): send OAuth proxy request headers

* fix(xai): avoid provider API shadowing

* fix(qa): restore current main validation gates

---------

Co-authored-by: echeung <echeung@agentsonly.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
2026-07-29 23:05:29 +00:00
Shakker
cff7cbfdcb fix: preserve Buzz diff metadata encoding (#116096) 2026-07-29 23:07:22 +01:00
Shakker
574a5862bc fix: bound Buzz diff model context 2026-07-29 23:07:22 +01:00
Shakker
a1933a72a5 fix: keep Buzz message types internal 2026-07-29 23:07:22 +01:00
Shakker
9716ae37bd feat: accept Buzz rich and diff messages 2026-07-29 23:07:22 +01:00
Shakker
014e1a6c3a feat: preserve Markdown in Buzz messages 2026-07-29 23:07:22 +01:00
Peter Steinberger
d98e984ec2 fix(qa): isolate Matrix live validation state (#116071)
* fix(qa): isolate Matrix live scenario routing

* fix(qa): preserve Matrix mention filenames

* fix(qa): reset Matrix transport scenario state

* test(qa): isolate stateful Matrix scenario partitions

* test(qa): match numbered Matrix isolation

* test(qa): reject stale Matrix progress results

* fix(qa): bound Matrix scenario prompt ownership

* fix(qa): bound mock scenario ownership

* test(qa): satisfy Matrix validation gates

* refactor(qa): remove stale prompt helper

* fix(qa): preserve tool-result ownership after rebase
2026-07-29 17:23:03 -04:00
Peter Steinberger
b9377f6048 fix(codex): enforce native MCP tool access (#116054)
* fix(codex): enforce native MCP tool access

* chore: remove prerelease changelog entry

* chore: restore changelog to main

* refactor(codex): build MCP server patches from entries
2026-07-29 17:06:49 -04:00
Peter Steinberger
7380875375 fix(memory): keep degraded status actionable (#116074)
* fix(memory): diagnose degraded auth owners

* fix(memory): use shared sqlite opener
2026-07-29 16:58:57 -04:00
joshavant
d3afc2776e test(qa): stabilize Matrix tool progress scenarios 2026-07-29 15:46:18 -05:00
mids-neo
821b929c5b fix(whatsapp): emit sent events for native replies (#97728)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 04:28:11 +08:00
Masato Hoshino
1225aa822f fix(diffs): stop naming gated tools in model-visible guidance (#115919)
The Diffs plugin named the `message` tool from three model-visible surfaces:
the guidance it injects via before_prompt_build, the mode=file tool result,
and its SKILL.md. `disableMessageTool` removes that tool in eight production
paths (subagent spawn, system agent, worker runtime, both skills-workshop
reviews, companion-ask, restart sentinel, active-memory recall), so agents in
those sessions were told to call a tool absent from their tool list.

The same surfaces plus the `diffs` tool description named the separately
gated Canvas plugin — SKILL.md through `canvas present` / `canvas navigate`,
the others through "for canvas use".

All of them now describe the capability instead of naming the tool, per the
root AGENTS.md rule that descriptions never statically name tools from other
toolsets. The two pinned assertions keep their snapshots and now also assert
the invariant directly.

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 04:22:10 +08:00
Peter Steinberger
11de91ad03 fix(qa): forward-port beta 6 validation fixes (#116065)
* test(macos): avoid busy-spin timeout fixtures

* fix(qa): forward-port beta 6 validation fixes

* test(qa): complete Telegram run options fixture
2026-07-29 16:21:04 -04:00
Stellar鱼
42e23c11e0 feat(plugins): allow per-turn tool narrowing in prompt hooks (#114151)
* feat(plugins): allow per-turn tool narrowing in prompt hooks

* fix(hooks): keep prompt tool policy baseline internal

* fix(test): track active tools in embedded session fixture

* test(agents): preserve active tool fixture state

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 03:28:45 +08:00
sunlit-deng
066241a0d0 fix(azure-speech): keep valid voices from malformed catalogs (#115067)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 03:20:22 +08:00
Shakker
052212dc97 chore: refresh browser gateway runtime (#116043) 2026-07-29 20:05:56 +01:00
Shakker
ab3f52c367 fix: reset gateway event sequence on reconnect 2026-07-29 20:05:56 +01:00
Josh Lehman
6beaff450e fix(codex): avoid transcript mirror snapshot churn (#115070) 2026-07-29 11:59:14 -07:00
Vincent Koc
83aca8a59c fix(memory): return early for blank searches (#116034) 2026-07-30 02:48:50 +08:00
Peter Steinberger
3f4d65a672 feat(harness): report copilot code-mode engagement on the attempt result (#115913)
* feat(harness): report copilot code-mode engagement on the attempt result

* test(copilot): prove code-mode engagement through the production tool bridge

* docs: describe the normalized codeModeEngaged value for native harnesses
2026-07-29 14:44:15 -04:00
WhatsSkiLL
d4436e9a17 perf(codex): stream large CLI session JSONL scans (#115997)
* fix(codex): stream CLI session JSONL scans

* perf(codex): scan JSONL in bounded chunks

* perf(codex): keep small JSONL reads fast

* perf(codex): avoid rescanning long rollout records

* test(codex): prove streamed rollout recovery

* refactor(codex): isolate JSONL line scanning

* fix(codex): avoid env ratchet token in relay constant

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 02:35:41 +08:00
Wynne668
aef33cfef7 fix(openai): prevent GPT-Live errors from stalling (#115582)
* fix(openai): bound GPT-Live error responses

* fix(openai): bound realtime error responses

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 01:50:12 +08:00
Naka Masato
68dbf92281 fix(plugins): scope Codex relay with tool matchers (#109603)
* fix(plugins): scope Codex relay matchers

Co-authored-by: Masato Naka <masatonaka1989@gmail.com>

* fix(plugins): reject sparse tool hook matchers

* test(plugins): cover mixed relay matcher scopes

* fix(plugins): fail closed on invalid policy matchers

* test(plugins): prove composed relay policy scope

* fix(plugins): keep matcher scope internal

* fix(plugins): satisfy matcher static checks

* fix(plugins): enforce canonical tool hook matchers

* fix(codex): project native hook matcher aliases

* fix(plugins): scope Codex relay with tool matchers

* chore: keep release changelog maintainer-owned

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 01:39:08 +08:00
pick-cat
dc80799f03 fix(discord): bound webhook send body reads (#109076)
* fix(discord): bound webhook send body reads

Rebase onto latest main to clear unrelated CI flake. No code changes.

Co-Authored-By: nebulacoder-v8.0 <noreply@zte.com.cn>

* fix(discord): bound webhook send body reads

Keep the Discord REST deadline active through webhook response-body reads while preserving malformed-body fallbacks. Avoid logging token-bearing webhook URLs.

Co-authored-by: nebulacoder-v8.0 <noreply@zte.com.cn>

---------

Co-authored-by: nebulacoder-v8.0 <noreply@zte.com.cn>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 01:35:38 +08:00