Josh Avant
de9f2dc227
Gateway: harden OpenResponses file-context escaping ( #50782 )
2026-03-19 22:02:13 -05:00
Peter Steinberger
46f49eb6eb
refactor: shrink plugin sdk public surface
2026-03-18 23:31:08 +00:00
Vincent Koc
b4f16bad32
Plugin SDK: export windows spawn and temp path
2026-03-18 09:46:24 -07:00
Peter Steinberger
f6928617b7
test: stabilize gate regressions
2026-03-18 15:36:32 +00:00
Peter Steinberger
861fcb1575
fix: restore rebased full gate
2026-03-18 15:34:27 +00:00
Josh Lehman
1399ca5fcb
fix(plugins): forward plugin subagent overrides ( #48277 )
...
Merged via squash.
Prepared head SHA: ffa45893e0ea72bc21b48d0ea227253ba207eec0
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-17 07:20:27 -07:00
Peter Steinberger
5fb7a1363f
fix: stabilize full gate
2026-03-17 07:06:25 +00:00
Peter Steinberger
aa2d5aaa0c
feat(plugins): add image generation capability
2026-03-16 22:58:55 -07:00
Peter Steinberger
d2445b5fcd
feat(plugins): share capability capture helpers
2026-03-16 22:21:18 -07:00
Peter Steinberger
50c3321d2e
feat(media): route image tool through media providers
2026-03-16 22:00:39 -07:00
Peter Steinberger
c081dc52b7
feat(plugins): move media understanding into vendor plugins
2026-03-16 20:58:34 -07:00
Peter Steinberger
3e010e280a
feat(plugins): add media understanding provider registration
2026-03-16 20:42:00 -07:00
Gustavo Madeira Santana
8ad8069854
Tests: fix green check typing regressions
2026-03-16 12:54:01 +00:00
Gustavo Madeira Santana
5e4851ae2b
Tests: align media auth fixture with selection checks
2026-03-16 11:52:49 +00:00
Gustavo Madeira Santana
6e65066616
Media: avoid slow auth misses in auto-detect
2026-03-16 10:45:56 +00:00
Aditya Chaudhary
f5cd7c390d
added a fix for memory leak on 2gb ram ( #46522 )
2026-03-15 09:01:31 -07:00
Peter Steinberger
59102a1ff7
fix: add gemini 3.1 flash-lite support
2026-03-08 05:12:48 +00:00
Peter Steinberger
6181fe22c7
fix(ci): refresh detect-secrets allowlists and baseline
2026-03-07 21:30:04 +00:00
Tars
dab0e97c22
fix(models): support minimax-portal coding plan vlm routing for image tool (openclaw#33953)
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: tars90percent <252094836+tars90percent@users.noreply.github.com>
2026-03-07 14:30:53 -06:00
Vincent Koc
e4d80ed556
CI: restore main detect-secrets scan ( #38438 )
...
* Tests: stabilize detect-secrets fixtures
* Tests: fix rebased detect-secrets false positives
* Docs: keep snippets valid under detect-secrets
* Tests: finalize detect-secrets false-positive fixes
* Tests: reduce detect-secrets false positives
* Tests: keep detect-secrets pragmas inline
* Tests: remediate next detect-secrets batch
* Tests: tighten detect-secrets allowlists
* Tests: stabilize detect-secrets formatter drift
2026-03-07 10:06:35 -08:00
Josh Avant
8e20dd22d8
Secrets: harden SecretRef-safe models.json persistence ( #38955 )
2026-03-07 11:28:39 -06:00
Vincent Koc
42e3d8d693
Secrets: add inline allowlist review set ( #38314 )
...
* Secrets: add inline allowlist review set
* Secrets: narrow detect-secrets file exclusions
* Secrets: exclude Docker fingerprint false positive
* Secrets: allowlist test and docs false positives
* Secrets: refresh baseline after allowlist updates
* Secrets: fix gateway chat fixture pragma
* Secrets: format pre-commit config
* Android: keep talk mode fixture JSON valid
* Feishu: rely on client timeout injection
* Secrets: allowlist provider auth test fixtures
* Secrets: allowlist onboard search fixtures
* Secrets: allowlist onboard mode fixture
* Secrets: allowlist gateway auth mode fixture
* Secrets: allowlist APNS wake test key
* Secrets: allowlist gateway reload fixtures
* Secrets: allowlist moonshot video fixture
* Secrets: allowlist auto audio fixture
* Secrets: allowlist tiny audio fixture
* Secrets: allowlist embeddings fixtures
* Secrets: allowlist resolve fixtures
* Secrets: allowlist target registry pattern fixtures
* Secrets: allowlist gateway chat env fixture
* Secrets: refresh baseline after fixture allowlists
* Secrets: reapply gateway chat env allowlist
* Secrets: reapply gateway chat env allowlist
* Secrets: stabilize gateway chat env allowlist
* Secrets: allowlist runtime snapshot save fixture
* Secrets: allowlist oauth profile fixtures
* Secrets: allowlist compaction identifier fixture
* Secrets: allowlist model auth fixture
* Secrets: allowlist model status fixtures
* Secrets: allowlist custom onboarding fixture
* Secrets: allowlist mattermost token summary fixtures
* Secrets: allowlist gateway auth suite fixtures
* Secrets: allowlist channel summary fixture
* Secrets: allowlist provider usage auth fixtures
* Secrets: allowlist media proxy fixture
* Secrets: allowlist secrets audit fixtures
* Secrets: refresh baseline after final fixture allowlists
* Feishu: prefer explicit client timeout
* Feishu: test direct timeout precedence
2026-03-06 19:35:26 -05:00
Gustavo Madeira Santana
6842877b2e
build: prevent mixed static/dynamic pi-model-discovery imports
2026-03-03 21:27:14 -05:00
Gustavo Madeira Santana
21e8d88c1d
build: fix ineffective dynamic imports with lazy boundaries ( #33690 )
...
Merged via squash.
Prepared head SHA: 38b3c23d6f8f2b4c8a36a88ee65b508102f1ec36
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-03 20:14:41 -05:00
Tak Hoffman
dbccc73d7a
security(line): synthesize strict LINE auth boundary hardening
...
LINE auth boundary hardening synthesis for inbound webhook authn/z/authz:
- account-scoped pairing-store access
- strict DM/group allowlist boundary separation
- fail-closed webhook auth/runtime behavior
- replay and duplicate handling with in-flight continuity for concurrent redeliveries
Source PRs: #26701 , #26683 , #25978 , #17593 , #16619 , #31990 , #26047 , #30584 , #18777
Related continuity context: #21955
Co-authored-by: bmendonca3 <208517100+bmendonca3@users.noreply.github.com>
Co-authored-by: davidahmann <46606159+davidahmann@users.noreply.github.com>
Co-authored-by: harshang03 <58983401+harshang03@users.noreply.github.com>
Co-authored-by: haosenwang1018 <167664334+haosenwang1018@users.noreply.github.com>
Co-authored-by: liuxiaopai-ai <73659136+liuxiaopai-ai@users.noreply.github.com>
Co-authored-by: coygeek <65363919+coygeek@users.noreply.github.com>
Co-authored-by: lailoo <20536249+lailoo@users.noreply.github.com>
2026-03-03 00:21:15 -06:00
Peter Steinberger
6fc3f504d6
refactor(tests): dedupe media transcript echo config setup
2026-03-03 01:54:28 +00:00
Peter Steinberger
e930517154
fix(ci): resolve docs lint and test typing regressions
2026-03-03 00:55:01 +00:00
Peter Steinberger
6a42d09129
refactor: dedupe gateway config and infra flows
2026-03-03 00:15:14 +00:00
Lucenx9
79e114a82f
test(media): ensure WhatsApp scope rule is exercised in MIME regression
2026-03-02 23:31:19 +00:00
Lucenx9
7c7c22d66f
test(media): use direct chatType in WhatsApp MIME regression case
2026-03-02 23:31:19 +00:00
Lucenx9
ec688d809f
fix(media): normalize MIME kind detection for audio transcription
2026-03-02 23:31:19 +00:00
Peter Steinberger
d89c25d69e
fix: support parakeet-mlx output-dir transcript parsing ( #9177 ) (thanks @mac-110)
2026-03-02 22:22:17 +00:00
Peter Steinberger
6545317a2c
refactor(media): split audio helpers and attachment cache
2026-03-02 22:01:24 +00:00
Peter Steinberger
e5597a8dd4
refactor(media): dedupe tiny-audio test setup and normalize guards formatting
2026-03-02 21:50:54 +00:00
Peter Steinberger
8e259b8310
fix: keep audio transcript echo off-by-default and tiny-audio-safe ( #32150 )
2026-03-02 21:48:08 +00:00
AytuncYildizli
1b61269eec
feat(audio): auto-echo transcription to chat before agent processing
...
When echoTranscript is enabled in tools.media.audio config, the
transcription text is sent back to the originating chat immediately
after successful audio transcription — before the agent processes it.
This lets users verify what was heard from their voice note.
Changes:
- config/types.tools.ts: add echoTranscript (bool) and echoFormat
(string template) to MediaUnderstandingConfig
- media-understanding/apply.ts: sendTranscriptEcho() helper that
resolves channel/to from ctx, guards on isDeliverableMessageChannel,
and calls deliverOutboundPayloads best-effort
- config/schema.help.ts: help text for both new fields
- config/schema.labels.ts: labels for both new fields
- media-understanding/apply.echo-transcript.test.ts: 10 vitest cases
covering disabled/enabled/custom-format/no-audio/failed-transcription/
non-deliverable-channel/missing-from/OriginatingTo/delivery-failure
Default echoFormat: '📝 "{transcript}"'
Closes #32102
2026-03-02 21:47:09 +00:00
Peter Steinberger
a183656f8f
fix: apply missed media/runtime follow-ups from merged PRs
2026-03-02 21:45:39 +00:00
Peter Steinberger
f2b37f0aa9
refactor(media): dedupe runner proxy and video test fixtures
2026-03-02 21:44:52 +00:00
benthecarman
faa4ffec03
Add runtime.stt.transcribeAudioFile for plugin STT access
...
Expose audio transcription through the PluginRuntime so external
plugins (e.g. marmot) can use openclaw's media-understanding provider
framework without importing unexported internal modules.
The new transcribeAudioFile() wraps runCapability({capability: "audio"})
and reads provider/model/apiKey from tools.media.audio in the config,
matching the pattern used by the Discord VC implementation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 21:43:01 +00:00
Glucksberg
f7b0378ccb
fix(test): update media-understanding tests for whisper skip empty audio
...
Increase test audio file sizes to meet MIN_AUDIO_FILE_BYTES (1024) threshold
introduced by the skip-empty-audio feature. Fix localPathRoots in skip-tiny-audio
tests so temp files pass path validation. Remove undefined loadApply() call
in apply.test.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:41:09 +00:00
Glucksberg
5f19112217
fix(test): use strict assertion instead of optional chaining
2026-03-02 21:41:09 +00:00
Glucksberg
8039ef7dba
test: add URL-only audio skip test for tiny remote attachments
2026-03-02 21:41:09 +00:00
Glucksberg
43f94e3ab8
fix: strengthen test assertions - assert array lengths before indexing
2026-03-02 21:41:09 +00:00
Glucksberg
8b70ba6ab8
fix( #8127 ): auto-skip tiny/empty audio files in whisper transcription
...
Add a minimum file size guard (MIN_AUDIO_FILE_BYTES = 1024) before
sending audio to transcription APIs. Files below this threshold are
almost certainly empty or corrupt and would cause unhelpful errors
from Whisper/Deepgram/Groq providers.
Changes:
- Add 'tooSmall' skip reason to MediaUnderstandingSkipError
- Add MIN_AUDIO_FILE_BYTES constant (1024 bytes) to defaults
- Guard both provider and CLI audio paths in runner.ts
- Add comprehensive tests for tiny, empty, and valid audio files
- Update existing test fixtures to use audio files above threshold
2026-03-02 21:41:09 +00:00
Clawrence
9c9ab891c2
fix(media-understanding): guard malformed attachments arrays
2026-03-02 21:39:57 +00:00
Marcus Castro
8c1e9949b3
fix: pass proxy-aware fetchFn to media understanding providers
...
runProviderEntry now calls resolveProxyFetchFromEnv() and passes the
result as fetchFn to transcribeAudio/describeVideo, so media provider
API calls respect HTTPS_PROXY/HTTP_PROXY behind corporate proxies.
2026-03-02 21:37:36 +00:00
openjay
76d6514ff5
fix: add "audio" to openai provider capabilities
...
The openai provider implements transcribeAudio via
transcribeOpenAiCompatibleAudio (Whisper API), but its capabilities
array only declared ["image"]. This caused the media-understanding
runner to skip the openai provider when processing inbound audio
messages, resulting in raw audio files being passed to agents
instead of transcribed text.
Fix: Add "audio" to the capabilities array so the runner correctly
selects the openai provider for audio transcription.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-03-02 21:33:54 +00:00
Peter Steinberger
34daed1d1e
refactor(core): dedupe infra, media, pairing, and plugin helpers
2026-03-02 21:32:11 +00:00
Peter Steinberger
8768487aee
refactor(shared): dedupe protocol schema typing and session/media helpers
2026-03-02 19:57:33 +00:00
Peter Steinberger
099b11fc7d
test(perf): align media auto-detect no-key mock with scenario
2026-03-02 12:20:51 +00:00