Commit Graph

59485 Commits

Author SHA1 Message Date
yetval
b609e44654 fix(whatsapp): keep opening text chunk when first media fails on multi-chunk reply
When a WhatsApp auto-reply spans more than one chunk and is sent with an image
whose send fails, the first chunk was silently dropped. The first-media onError
fallback evaluated remainingText.shift() before the caption, so on a multi-chunk
reply the truthy second chunk discarded the caption that held the opening chunk.
Resurface the caption directly; the trailing loop already sends the rest.

Adds a regression test driving deliverWebReply with a two-chunk reply and a
failing first media send.
2026-06-17 02:10:39 +00:00
Vincent Koc
4d3e355a52 refactor(agents): hide context cache reset helper 2026-06-17 10:10:03 +08:00
Vincent Koc
599abac902 refactor(agents): hide compaction reconcile wrapper 2026-06-17 10:06:43 +08:00
Shakker
25ba8e3d35 fix: clean agent lint failures 2026-06-17 03:05:31 +01:00
Vincent Koc
70de1047b8 refactor(agents): hide message handler helpers 2026-06-17 10:04:26 +08:00
Vincent Koc
9dc92156d1 refactor(agents): hide assistant stream delivery types 2026-06-17 10:01:18 +08:00
Josh Lehman
cf64a9c517 clawdbot-d02.1.9.1.31: add sessions.create lifecycle seam (#93691) 2026-06-16 19:01:14 -07:00
Vincent Koc
8b06d80655 fix(e2e): reject unsafe Docker pack names 2026-06-17 03:58:17 +02:00
Vincent Koc
2f222cdc1c refactor(agents): hide execution contract resolver 2026-06-17 09:57:26 +08:00
Vincent Koc
e5ff835c01 refactor(agents): remove catalog browse timer test hooks 2026-06-17 09:55:06 +08:00
Vincent Koc
fbfaba09fd refactor(agents): hide mcp oauth redirect classifier 2026-06-17 09:51:51 +08:00
Vincent Koc
0c651fd082 refactor(agents): drop mcp fetch type re-export 2026-06-17 09:49:52 +08:00
Vincent Koc
66fde5a467 fix(e2e): keep live plugin pack paths local 2026-06-17 03:49:42 +02:00
Vincent Koc
e188350c74 refactor(agents): hide update plan gating helper 2026-06-17 09:47:29 +08:00
Vincent Koc
ce763e6ec9 refactor(agents): hide provider error metadata extractor 2026-06-17 09:45:11 +08:00
Vincent Koc
db02036f8d refactor(agents): hide stream context text transform 2026-06-17 09:43:00 +08:00
Vincent Koc
34dbb11e3e refactor(agents): hide plugin catalog file type 2026-06-17 09:41:08 +08:00
Vincent Koc
2333137d83 fix(release): keep npm preflight pack names local 2026-06-17 03:40:19 +02:00
Vincent Koc
256f224d67 refactor(agents): hide model registry loader options 2026-06-17 09:39:19 +08:00
Alix-007
f8e7d66ae6 fix(reasoning-tags): strip MiniMax mm: tags on silent-reply and streaming paths missed by #93767 (#93806)
* fix(reasoning-tags): accept MiniMax mm: prefix in silent-detection and stream gates

PR #93767 added MiniMax `mm:`-namespaced reasoning-tag support across the
shared sanitizer and Telegram lane coordinator, but two production reasoning-tag
recognizers were missed and still only matched the `antml:` namespace:

- src/auto-reply/tokens.ts: `taggedReasoningPrefixRe` / `openReasoningPrefixRe`
  drive `stripLeadingReasoningBlocks` and `isSilentReplyPayloadText`, which 14+
  call sites use to detect NO_REPLY silent payloads. A `<mm:think>…</mm:think>NO_REPLY`
  reply was not recognized as silent, leaking the wrapper into delivery.
- src/agents/embedded-agent-subscribe.handlers.messages.ts: `REASONING_TAG_RE`
  gates `shouldRecomputeFullStream`. A `<mm:think>` streaming chunk failed the
  test, so the visible stream was not recomputed and the hidden reasoning leaked.

Add the `mm:` alternative alongside `antml:` in all three regexes, matching the
exact `(?:antml:|mm:)?` form used by #93767. Identification-only change, no other
regex logic touched.

* test(agents): cover MiniMax reasoning regressions

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-17 09:38:53 +08:00
liuhao1024
4cd83d26be fix(browser): use openTab return value to prevent wsUrl race in ensureTabAvailable (fixes #63343) (#93797)
* fix(browser): use openTab return value to prevent wsUrl race in ensureTabAvailable

When ensureTabAvailable opens a new tab on empty list, the return value
from openTab was discarded. A subsequent listTabs() call may return tabs
without webSocketDebuggerUrl populated yet, causing the wsUrl filter to
eliminate the newly opened tab and throw BrowserTabNotFoundError.

Fix: capture openTab's return value and merge it into candidates if the
wsUrl filter excluded it. openTab's internal discovery loop already
resolves wsUrl, so the returned tab is always valid.

* fix(browser): harden tab selection discovery

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-17 09:38:47 +08:00
ZengWen-DT
5f90f08957 fix(feishu): paginate wiki node and space listing (#37626) (#93796)
* fix(feishu): paginate wiki node and space listing (fixes #37626)

client.wiki.spaceNode.list / wiki.space.list return at most one page (max
50 items); the tool ignored has_more/page_token and silently dropped every
node past the first page. Drain both endpoints via a bounded shared helper
that loops on has_more with a 100-page safety cap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(feishu): expose wiki pagination cursors

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-17 09:38:41 +08:00
Colin Johnson
8e77d5e144 fix(android): wait for node capability approval before onboarding (#93792)
* fix android node approval wait state

* docs: add android approval wait proof

* fix(android): address approval state review cleanup

* docs: move PR proof images out of repo

* test: trim android node approval proof

* fix(android): wait for node approval before onboarding

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-17 09:38:33 +08:00
Vincent Koc
ad0af79ddf refactor(agents): drop provider auth snapshot re-export 2026-06-17 09:37:13 +08:00
Vincent Koc
b3d37f4609 refactor(agents): remove unused image task status wrappers 2026-06-17 09:35:25 +08:00
Vincent Koc
4900881747 refactor(agents): hide google simple completion api id 2026-06-17 09:33:28 +08:00
weiqinl
1abf68f12e fix(ui): preserve WebChat visible messages across session switches (#93803)
* fix(ui): preserve WebChat visible messages across session switches

* fix(ui): scope WebChat session message cache

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-17 09:32:07 +08:00
Vincent Koc
4039f06f70 refactor(agents): remove unused command poll suggestion 2026-06-17 09:31:13 +08:00
Vincent Koc
c7549f5040 fix(release): keep Parallels pack names local 2026-06-17 03:29:45 +02:00
Vincent Koc
65b1638381 refactor(agents): hide subagent list helpers 2026-06-17 09:29:04 +08:00
Hrachya Shaginyan
6567f99625 strip UTF-8 BOM when reading SKILL.md in quick_validate (#93811)
The previous `read_text(encoding="utf-8")` call left the UTF-8 byte
order mark (EF BB BF, three bytes) in the content string if the file
was saved by a tool that emits a BOM. The first line check
(`lines[0].strip() != "---"`) then saw "\ufeff---" and rejected the
file as "Invalid frontmatter format", even though the document was
otherwise valid frontmatter.

Co-authored-by: Zo Bot <github-automation@zo.computer>
2026-06-17 09:28:43 +08:00
Yuval Dinodia
e896ca9634 fix(cron): preserve startup overflow catch-up deferrals in start() maintenance pass (#93810)
When more than maxMissedJobsPerRestart cron jobs are overdue after gateway
downtime, runMissedJobs defers the overflow jobs to a near-future staggered
catch-up slot. start()'s second maintenance pass then recomputed each overflow
cron deferral to its natural schedule slot, because it ran future-slot repair
with the default-enabled flag. For a daily 0 9 * * * job the now+stagger
catch-up was clobbered to the next 09:00, dropping the missed run for a full
period.

Scope the exemption instead of disabling repair wholesale: runMissedJobs now
returns the ids it deferred this startup, recomputeNextRunsForMaintenance gains
skipFutureRepairJobIds to exempt exactly those ids, and start() threads them
into its pass. Overflow catch-up deferrals survive until their staggered tick
while ordinary stale-future cron slots are still repaired on startup.
2026-06-17 09:28:24 +08:00
Vincent Koc
8ae4580df6 refactor(agents): remove unused responses image sanitizer export 2026-06-17 09:27:41 +08:00
Vincent Koc
06e2614cf4 refactor(agents): remove unused provider tls helper 2026-06-17 09:26:13 +08:00
Vincent Koc
43400f8d5b refactor(agents): remove duplicate live model error classifier 2026-06-17 09:24:43 +08:00
Vincent Koc
29a647e816 refactor(agents): remove unused openai model ref helper 2026-06-17 09:23:22 +08:00
Vincent Koc
5c62ed8db1 refactor(agents): hide model runtime policy types 2026-06-17 09:22:01 +08:00
Vincent Koc
5b077d549e fix(release): reject unsafe candidate pack names 2026-06-17 03:21:31 +02:00
Vincent Koc
b338a68e57 refactor(agents): hide model ref normalization types 2026-06-17 09:20:46 +08:00
Vincent Koc
4df8237a01 refactor(agents): drop unused session runtime override helper 2026-06-17 09:18:35 +08:00
Vincent Koc
a7ebcfded3 refactor(agents): narrow media factory plan type 2026-06-17 09:17:10 +08:00
Vincent Koc
6dec15b4ff refactor(agents): remove queued writer append alias 2026-06-17 09:13:58 +08:00
Vincent Koc
fafcdb5a74 refactor(agents): narrow openai tool projection types 2026-06-17 09:11:50 +08:00
Vincent Koc
af26d005c9 refactor(agents): narrow anthropic tool projection type 2026-06-17 09:10:05 +08:00
Vincent Koc
53655f39f1 refactor(agents): drop runtime metadata re-export 2026-06-17 09:08:07 +08:00
Vincent Koc
93216e1ca1 fix(sdk): refresh plugin api baseline hash 2026-06-17 03:07:56 +02:00
Vincent Koc
461f0cfc5b fix(release): keep bun smoke tarballs local 2026-06-17 03:07:31 +02:00
Vincent Koc
b832dd27e1 refactor(agents): hide client tool conflict prefix 2026-06-17 09:05:31 +08:00
Alix-007
88334627fe fix(status): show 0 (not ?) for fresh-session context tokens (#93798)
* fix(status): show 0/1.0m instead of ?/1.0m on a fresh session

On a brand-new /new session the persisted totalTokens is absent
(undefined), so /status rendered the context numerator as ? via
formatTokens(null, ...). A fresh session with no usage is a known
zero, not an unknown total, so normalize undefined-but-not-stale
totals to 0 before formatting while leaving the intentional
totalTokensFresh === false stale guard (which must keep ?) intact.

Fixes #93771

* fix(status): persist fresh-session zero usage

* fix(status): identify fresh empty sessions

* fix(status): persist fresh empty session usage

* fix(status): preserve fork and compaction token state

* fix(status): preserve queued compaction token state

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 09:05:02 +08:00
OfflynAI
9fd9aa5fcd fix(agents): defer session suspension across fallback (#93789)
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 09:04:48 +08:00