Commit Graph

55 Commits

Author SHA1 Message Date
Peter Steinberger 8e242622e1 fix: stabilize rebased test gates 2026-04-10 12:14:36 +01:00
Peter Steinberger 444cdd055d fix: stabilize main test gates 2026-04-10 12:14:36 +01:00
Peter Steinberger f8dbd7dd69 test: align qqbot account speech config expectation 2026-04-10 10:45:11 +01:00
Mingkuan 005b629b6d fix(qqbot): allow extension fields in channel config schema (#64075)
* fix(qqbot): allow extension fields in channel config schema

Use passthrough() on QQBotConfigSchema, QQBotAccountSchema, and
QQBotStreamingSchema so third-party builds that share the qqbot
channel id can add custom fields without triggering
"must NOT have additional properties" validation errors.

tts and stt sub-schemas remain strict to preserve typo detection
for those sensitive fields.

* Update extensions/qqbot/openclaw.plugin.json

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* chore(qqbot): update changelog for config schema passthrough

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-10 17:01:00 +08:00
Vincent Koc dfdc281f55 fix(cycles): split small runtime seams 2026-04-10 09:00:19 +01:00
Altay 8cf02e7c47 fix(ci): clear check-additional follow-up regressions (#63934)
* fix(ci): route messaging temp files through openclaw tmp dir

* fix(ci): clear qa-lab follow-up guardrails

* fix(ci): own-check ACP fallback resolvers

* fix(ci): preserve memory-core write error causes

* fix(ci): narrow qa-channel boundary alias

* fix(test): type memory-core dreaming api stubs
2026-04-09 23:47:59 +01:00
Sliverp 65b781f9ae fix(qqbot): add stream config (#63746) 2026-04-09 21:23:33 +08:00
Pavan Kumar Gondhi 604777e441 fix(qqbot): enforce media storage boundary for all outbound local file paths [AI] (#63271)
* fix: address issue

* fix: address review-pr skill feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* docs: add changelog entry for PR merge
2026-04-09 17:56:37 +05:30
Davanum Srinivas 08ae021d1f fix(qqbot): guard image-size probe against SSRF (#63495)
* fix(qqbot): replace raw fetch in image-size probe with SSRF-guarded fetchRemoteMedia

Replace the bare fetch() in getImageSizeFromUrl() with fetchRemoteMedia()
from the plugin SDK, closing the blind SSRF via markdown image dimension
probing (GHSA-2767-2q9v-9326).

fetchRemoteMedia options: maxBytes 65536, maxRedirects 0, generic
public-network-only SSRF policy (no hostname allowlist, blocks
private/reserved/loopback/link-local/metadata IPs after DNS resolution).

Also fixes the repo-root resolution in scripts/lib/ts-guard-utils.mjs
which caused lint:tmp:no-raw-channel-fetch to miss extension files
entirely. The guard now walks up to .git instead of hardcoding two parent
traversals, and the allowlist is refreshed with all pre-existing raw
fetch callsites that became visible.

* fix(qqbot): guard image-size probe against SSRF (#63495) (thanks @dims)

---------

Co-authored-by: sliverp <870080352@qq.com>
2026-04-09 16:48:04 +08:00
Peter Steinberger 8f17b8e964 fix(qqbot): parse entity encoded self-closing media tags 2026-04-08 11:51:32 +01:00
Peter Steinberger 93b574581f fix(qqbot): allow URL slashes in media tag attributes 2026-04-08 11:48:26 +01:00
游乐场 210ee4cfd2 fix(qqbot): support HTML entities in media tags (&lt; &gt;) (#60493)
* fix(qqbot): 支持媒体标签中的 HTML 实体(&lt; &gt;)

* fix(qqbot): support HTML entities in media tags

* test(qqbot): add unit tests for media tag regex with HTML entities

* test(qqbot): export regex constants to enable unit tests

* fix(qqbot): reset regex lastIndex in tests to avoid state pollution

* test(qqbot): add .js extension to import in media-tags.test.ts

* fix(qqbot): support HTML entities in media tags (#60493) (thanks @ylc0919)

---------

Co-authored-by: sliverp <870080352@qq.com>
2026-04-08 18:35:14 +08:00
Peter Steinberger 8d79b87dc7 style: apply formatter output 2026-04-08 09:58:22 +01:00
Peter Steinberger 95e397a266 refactor: dedupe repeated test helpers 2026-04-08 09:58:22 +01:00
Peter Steinberger aec24f4599 refactor: dedupe messaging trimmed readers 2026-04-08 01:36:39 +01:00
Agustin Rivera a31cb15561 Guard missed base64 decode paths (#62007)
* fix(media): guard missed base64 decode paths

Co-authored-by: zsxsoft <git@zsxsoft.com>

* fix(media): wire maxBytes into image-generate-tool and consolidate base64 guard helpers

* docs(changelog): add base64 decode guard entry

* fix(image-generate): validate configured media cap

---------

Co-authored-by: zsxsoft <git@zsxsoft.com>
Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-07 15:25:19 -06:00
Peter Steinberger 775b78e186 refactor: dedupe provider lowercase helpers 2026-04-07 22:24:32 +01:00
Peter Steinberger ba68537d9d refactor: dedupe line qqbot slack lowercase helpers 2026-04-07 20:58:01 +01:00
Peter Steinberger 96724e5a4b Messaging: align adapter compile surfaces 2026-04-07 16:46:21 +01:00
Peter Steinberger a96790fde7 test: speed up setup and core extension tests 2026-04-07 16:13:57 +01:00
Peter Steinberger 62a5480808 refactor: dedupe irc qqbot telegram lowercase helpers 2026-04-07 15:12:31 +01:00
Peter Steinberger 7a2a594044 test: fix setup and config typing drift 2026-04-07 12:48:05 +01:00
Peter Steinberger 991d4e2006 test: speed up setup plugin tests 2026-04-07 12:42:56 +01:00
Peter Steinberger 8d05bdda43 refactor: dedupe setup token readers 2026-04-07 06:07:13 +01:00
Peter Steinberger e169fcd263 refactor: dedupe qa and diff error formatting 2026-04-07 05:06:54 +01:00
Peter Steinberger ab6aa28049 refactor: dedupe qqbot error formatting 2026-04-07 02:03:33 +01:00
Peter Steinberger 61f7d53731 refactor: dedupe shared string readers 2026-04-07 02:03:33 +01:00
Peter Steinberger f178a9dc41 refactor: dedupe extension string record helpers 2026-04-07 02:03:33 +01:00
Peter Steinberger 13d1fc077b refactor: dedupe qqbot config record helper 2026-04-07 00:21:11 +01:00
Devin Robison 37d7c716f4 fix: the bundled qq bot extension extensions qqbot pe (#329) (#62082) 2026-04-06 13:50:33 -06:00
Peter Steinberger 637bc8e458 refactor: dedupe qqbot result logging helper 2026-04-06 19:57:57 +01:00
Peter Steinberger 413a5ef75a refactor: dedupe qqbot photo send helper 2026-04-06 19:57:56 +01:00
Peter Steinberger a2be2abc28 refactor: dedupe qqbot chunk send loops 2026-04-06 19:36:01 +01:00
Peter Steinberger 3826af6c40 refactor: dedupe qqbot media target helpers 2026-04-06 19:24:43 +01:00
Peter Steinberger 800ac580b1 refactor: dedupe qqbot text dispatch helper 2026-04-06 19:24:43 +01:00
Peter Steinberger 58d7df7985 fix(ci): restore contracts and type gates 2026-04-06 19:10:31 +01:00
Peter Steinberger 6243ca50e0 refactor: dedupe qqbot channel config helpers 2026-04-06 18:40:05 +01:00
Peter Steinberger a86fa3b211 refactor(deadcode): drop orphaned extension helpers 2026-04-06 17:18:03 +01:00
Vincent Koc 6e443a20c8 fix(qqbot): remove dead tts config aliases 2026-04-06 15:32:05 +01:00
Vincent Koc f92ef361ae fix(check): finish extension type cleanup 2026-04-06 15:30:17 +01:00
Peter Steinberger 8d095147b4 fix: restore check gate 2026-04-06 15:20:03 +01:00
Vincent Koc 9502642f47 fix(plugins): clean xai and qqbot lint 2026-04-06 15:14:20 +01:00
Peter Steinberger af62a2c2e4 style: fix extension lint violations 2026-04-06 14:53:55 +01:00
Peter Steinberger b57372d665 refactor: route capability runtime through channel stores 2026-04-05 09:07:33 +01:00
Peter Steinberger fd75d214f2 style(extensions): format channel integration updates 2026-04-04 06:02:37 +01:00
Tak Hoffman 5c4551458f fix: honor qqbot setup default account 2026-04-03 13:10:49 -05:00
Tak Hoffman acfa09679c fix: honor qqbot default account config 2026-04-03 12:42:18 -05:00
Tak Hoffman e6a9408c3b fix: honor qqbot setup account status 2026-04-03 12:42:17 -05:00
Jacob Tomlinson 2c45b06afd fix(qqbot): restrict structured payload local paths (#58453)
* fix(qqbot): restrict structured payload local paths

* fix(qqbot): narrow structured payload file access

* test(qqbot): cover payload path traversal guards

* fix(qqbot): reduce structured payload log exposure

* fix(qqbot): preserve inline image payload URLs
2026-04-02 10:20:52 +01:00
Mingkuan c15cfeb21c fix(qqbot): lazy-load silk-wasm to avoid hard failure when package is missing (#58829)
* fix(qqbot): lazy-load silk-wasm to avoid hard failure when package is missing

Replace the static top-level import with a cached dynamic import helper.
If silk-wasm is unavailable the plugin loads normally; voice encode/decode
degrades gracefully instead of crashing the module at load time.

* fix(qqbot): store in-flight Promise in loadSilkWasm to prevent duplicate imports

Concurrent cold-start calls to loadSilkWasm() before the first import()
resolves would each fire a separate dynamic import. Storing the Promise
instead of the resolved value (matching the detectFfmpeg pattern in
platform.ts) ensures all concurrent callers await the same import,
keeping the codebase consistent and avoiding redundant parallel loads.

* QQBot: add changelog for silk-wasm lazy load

* QQBot: move changelog entry for PR #58829

---------

Co-authored-by: sliverp <870080352@qq.com>
Co-authored-by: Sliverp <38134380+sliverp@users.noreply.github.com>
2026-04-02 14:46:53 +08:00