Commit Graph

32953 Commits

Author SHA1 Message Date
chiyouYCH
2055e75f9f fix(memory-core): prevent dreaming-narrative session leaks (#66358) (#67023)
Merged via squash.

Prepared head SHA: 51f72b200c
Co-authored-by: chiyouYCH <26790612+chiyouYCH@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-20 15:41:11 -07:00
Peter Steinberger
a06f4d0808 test: use synthetic outbound message fixtures 2026-04-20 23:38:56 +01:00
Peter Steinberger
d0b69a2064 test: use synthetic message channel fixtures 2026-04-20 23:37:28 +01:00
Peter Steinberger
04cdc33731 test: fix unit coverage scope 2026-04-20 23:36:33 +01:00
Peter Steinberger
a216b4ebc3 test: merge system run path binding cases 2026-04-20 23:34:59 +01:00
Peter Steinberger
0094f76314 refactor: share plugin config issue formatting 2026-04-20 23:34:19 +01:00
Peter Steinberger
6464cf4756 refactor: share plugin package version lookup 2026-04-20 23:34:19 +01:00
Peter Steinberger
4fb2e2309e refactor: share timeout abort helper with matrix 2026-04-20 23:34:19 +01:00
Peter Steinberger
8b7418b127 refactor: share channel doctor alias normalization 2026-04-20 23:34:19 +01:00
Peter Steinberger
e2abd4bc62 test(ci): fix msteams and heartbeat red lanes 2026-04-20 23:33:49 +01:00
Peter Steinberger
1151d69bb8 test: use synthetic outbound routing fixtures 2026-04-20 23:33:25 +01:00
Peter Steinberger
68954f9c6c test: extract chat item builder coverage 2026-04-20 23:33:21 +01:00
Peter Steinberger
31d545260e test: merge acp manager retry cases 2026-04-20 23:33:21 +01:00
Peter Steinberger
f6c9912e37 test: use synthetic outbound binding fixtures 2026-04-20 23:29:43 +01:00
Peter Steinberger
7e8b58cb25 test: use synthetic outbound utility fixtures 2026-04-20 23:27:18 +01:00
Peter Steinberger
b07c40a5a8 test: merge system run denial matrices 2026-04-20 23:26:37 +01:00
Peter Steinberger
11eae6b2d8 test: use synthetic message action fixtures 2026-04-20 23:25:08 +01:00
Peter Steinberger
c1be9ac0a7 test: move chat tool disclosure coverage 2026-04-20 23:22:26 +01:00
Peter Steinberger
c561e4c11b test: use synthetic outbound core fixtures 2026-04-20 23:20:51 +01:00
Peter Steinberger
f1a544ef6d perf: avoid sort-for-single selection 2026-04-20 23:20:31 +01:00
Peter Steinberger
2d010306e4 test: split grouped chat rendering coverage 2026-04-20 23:17:21 +01:00
Peter Steinberger
3eb48ec3e7 refactor(telegram): split polling liveness tracking 2026-04-20 23:16:55 +01:00
Peter Steinberger
431e33b567 test: share channel directory id assertions 2026-04-20 23:15:58 +01:00
Peter Steinberger
da5a6b68bd refactor: share ssrf base url policy 2026-04-20 23:15:58 +01:00
Peter Steinberger
85450b3da9 test: share msteams message handler mocks 2026-04-20 23:15:58 +01:00
Peter Steinberger
3f8ac729f2 test: share msteams runtime setup 2026-04-20 23:15:58 +01:00
Peter Steinberger
72571f0d38 test: decouple outbound target tests from bundled plugins 2026-04-20 23:14:50 +01:00
Peter Steinberger
e0c01bf956 perf: trim hot path allocations 2026-04-20 23:13:20 +01:00
Peter Steinberger
9f9235b692 test(channels): shard registry-backed contracts 2026-04-20 23:10:46 +01:00
ly85206559
35cb59e3b5 fix(agents): reapply compaction settings after resource loader reload (#65602) (#67146)
Merged via squash.

Prepared head SHA: 4978f7b8b5
Co-authored-by: ly85206559 <12526624+ly85206559@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-20 15:10:24 -07:00
Peter Steinberger
d7c7905a52 refactor: share provider polling helper 2026-04-20 23:04:10 +01:00
Peter Steinberger
eb94d3af94 test: share provider stream capture helper 2026-04-20 23:04:10 +01:00
Peter Steinberger
614d0348a5 test: share msteams sso handler setup 2026-04-20 23:04:10 +01:00
Peter Steinberger
8f4920e2eb refactor: share line sdk types 2026-04-20 23:04:10 +01:00
Peter Steinberger
60fea81cf1 fix(telegram): harden polling transport liveness (#69476)
* fix(telegram): release undici dispatchers via TelegramTransport.close()

TelegramTransport now exposes an explicit close() that destroys every
owned undici dispatcher (default Agent plus lazily-created IPv4 and
IP-pinned fallback Agents) and the TCP sockets they hold. Dispatcher
constructors are also given bounded keep-alive defaults
(keepAliveTimeout, keepAliveMaxTimeout, connections, pipelining) as a
defence-in-depth layer so the pool cannot grow unbounded even if a
caller forgets to call close().

Without this, every transport that went through a fallback retry left
its fallback Agents anchored forever in a closure; long-running polling
sessions accumulated hundreds of ESTABLISHED keep-alive sockets to
api.telegram.org, saturating the per-IP quota on upstream forward
proxies and making the currently-active outbound node time out while
every other node still tested healthy.

Mock dispatchers in fetch.test.ts gain destroy() spies so the close()
chain is assertable. Call sites that built caller-owned transports from
globalThis.fetch (delivery.resolve-media, test helpers) return an async
no-op close(), matching the new required surface.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(telegram): dispose polling transport on shutdown and dirty rebuild

Every recoverable network error and stall-watchdog trip sets
TelegramPollingTransportState.#transportDirty so the next polling
cycle rebuilds the transport inside acquireForNextCycle(). Previously
the rebuild simply overwrote the field, leaving the old transport's
keep-alive sockets anchored in the now-unreferenced dispatcher — the
polling loop has no natural GC point for these resources, and Node's
object GC never touches OS-level sockets.

acquireForNextCycle() now closes the previous transport (fire-and-
forget so the polling cycle is not blocked by a slow destroy) before
swapping in the rebuilt one. dispose() is a new method that the owning
TelegramPollingSession calls from the finally block of runUntilAbort(),
so a single transport is always tied to a single polling session
lifetime. After dispose(), acquireForNextCycle() returns undefined to
prevent zombie rebuilds.

Under high sustained polling traffic over long-lived sessions, this is
what stops the per-gateway connection count to api.telegram.org from
growing indefinitely and saturating upstream proxy quotas.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(changelog): note Telegram undici dispatcher lifecycle fix

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(telegram): disable HTTP/2 for all Telegram polling dispatchers

Undici 8 enables HTTP/2 ALPN by default, but Telegram's long-polling
connections stall on Windows due to IPv6 + H2 multiplexing issues. The
core fetch-guard already sets allowH2:false for guarded paths, but the
Telegram extension creates its own Agent/ProxyAgent/EnvHttpProxyAgent
instances directly from undici without this flag.

Apply allowH2:false to all dispatcher constructors in the Telegram
transport layer, matching the approach used in src/infra/net/undici-runtime.ts.

Fixes #66885

* fix: avoid false telegram polling stall restarts

* fix(telegram): publish polling health liveness

---------

Co-authored-by: Ethan Chen <ethanbit@qq.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Magicray1217 <magicray1217@users.noreply.github.com>
Co-authored-by: aoao <aoao@openclaw>
2026-04-20 23:03:57 +01:00
Peter Steinberger
250c756fb4 test: share directive reply mock payloads 2026-04-20 22:51:16 +01:00
Peter Steinberger
ca2c9fef8c test: share gateway live client helpers 2026-04-20 22:51:16 +01:00
Peter Steinberger
c55e1f7566 test: share gateway broadcaster fixtures 2026-04-20 22:51:16 +01:00
Peter Steinberger
40eae3cbb7 refactor: share ui select option helper 2026-04-20 22:51:16 +01:00
Peter Steinberger
412d6cf21b test(ui): tighten app tool stream event helper type 2026-04-20 22:50:45 +01:00
Peter Steinberger
b7e5d9a96e test: decouple outbound tests from bundled plugins 2026-04-20 22:44:38 +01:00
Peter Steinberger
27c52f8062 ci: keep channel contract shards alive 2026-04-20 22:42:57 +01:00
Peter Steinberger
2003ab736a test: share app render settings fixture 2026-04-20 22:39:51 +01:00
Peter Steinberger
171077037a test: share tool stream event helpers 2026-04-20 22:39:07 +01:00
Peter Steinberger
b33ce7a371 refactor: share skills dialog opener 2026-04-20 22:37:50 +01:00
Peter Steinberger
e0621bd7b9 test: share nodes device render helper 2026-04-20 22:37:11 +01:00
Peter Steinberger
9dcbf911a0 refactor: share ui approval event handling 2026-04-20 22:36:23 +01:00
Peter Steinberger
1f951f36fd test: remove unused agent runtime support 2026-04-20 22:36:22 +01:00
Peter Steinberger
3e6758f55a test: share provider usage runtime mocks 2026-04-20 22:36:22 +01:00
Peter Steinberger
c63fb08f81 test: share approval native runtime stubs 2026-04-20 22:36:22 +01:00