Skip to content

Commit 0b47dc1

Browse files
authored
Merge branch 'main' into fix/issue-94202
2 parents 7d51963 + 60d6a8a commit 0b47dc1

309 files changed

Lines changed: 3855 additions & 4443 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/codeql/codeql-network-ssrf-boundary-critical-security.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ paths:
2020
- src/agents/tools/web-shared.ts
2121
- src/plugin-sdk/ssrf-policy.ts
2222
- src/web-fetch
23-
- src/web/provider-runtime-shared.ts
23+
- packages/web-content-core/src/provider-runtime-shared.ts
2424
- packages/memory-host-sdk/src/host/ssrf-policy.ts
2525
- packages/net-policy/src
2626

.github/codeql/codeql-web-media-runtime-boundary-critical-quality.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ query-filters:
1616
paths:
1717
- src/web-fetch
1818
- src/web-search
19-
- src/web/provider-runtime-shared.ts
19+
- packages/web-content-core/src/provider-runtime-shared.ts
2020
- src/media
2121
- src/media-understanding
2222
- src/image-generation

.github/workflows/windows-testbox-probe.yml

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ on:
3737
required: false
3838
default: false
3939
type: boolean
40+
run_windows_ci:
41+
description: "Run the focused Windows-native CI test shard after probing"
42+
required: false
43+
default: false
44+
type: boolean
4045

4146
permissions:
4247
contents: read
@@ -168,7 +173,85 @@ jobs:
168173
169174
exit 0
170175
176+
- name: Try to exclude workspace from Windows Defender (best-effort)
177+
if: ${{ inputs.run_windows_ci }}
178+
shell: pwsh
179+
run: |
180+
$cmd = Get-Command Add-MpPreference -ErrorAction SilentlyContinue
181+
if (-not $cmd) {
182+
Write-Host "Add-MpPreference not available, skipping Defender exclusions."
183+
exit 0
184+
}
185+
186+
try {
187+
Add-MpPreference -ExclusionPath "$env:GITHUB_WORKSPACE" -ErrorAction Stop
188+
Add-MpPreference -ExclusionProcess "node.exe" -ErrorAction Stop
189+
Write-Host "Defender exclusions applied."
190+
} catch {
191+
Write-Warning "Failed to apply Defender exclusions, continuing. $($_.Exception.Message)"
192+
}
193+
194+
- name: Setup Node.js
195+
if: ${{ inputs.run_windows_ci }}
196+
shell: bash
197+
env:
198+
REQUESTED_NODE_VERSION: "22.x"
199+
run: |
200+
set -euo pipefail
201+
source .github/actions/setup-pnpm-store-cache/ensure-node.sh
202+
openclaw_ensure_node "$REQUESTED_NODE_VERSION"
203+
204+
- name: Setup pnpm
205+
if: ${{ inputs.run_windows_ci }}
206+
uses: ./.github/actions/setup-pnpm-store-cache
207+
with:
208+
node-version: 22.x
209+
210+
- name: Runtime versions
211+
if: ${{ inputs.run_windows_ci }}
212+
shell: bash
213+
run: |
214+
node -v
215+
npm -v
216+
pnpm -v
217+
218+
- name: Capture node path
219+
if: ${{ inputs.run_windows_ci }}
220+
shell: bash
221+
run: |
222+
node_bin="$(dirname "$(node -p 'process.execPath')")"
223+
if command -v cygpath >/dev/null 2>&1; then
224+
node_bin="$(cygpath -u "$node_bin")"
225+
fi
226+
echo "NODE_BIN=$node_bin" >> "$GITHUB_ENV"
227+
228+
- name: Install dependencies
229+
if: ${{ inputs.run_windows_ci }}
230+
shell: bash
231+
env:
232+
CI: true
233+
run: |
234+
export PATH="$NODE_BIN:$PATH"
235+
which node
236+
node -v
237+
pnpm -v
238+
pnpm install --frozen-lockfile --prefer-offline --ignore-scripts=false --config.engine-strict=false --config.enable-pre-post-scripts=true --config.side-effects-cache=true || pnpm install --frozen-lockfile --prefer-offline --ignore-scripts=false --config.engine-strict=false --config.enable-pre-post-scripts=true --config.side-effects-cache=true
239+
240+
- name: Run Windows CI tests
241+
if: ${{ inputs.run_windows_ci }}
242+
shell: bash
243+
env:
244+
CI: true
245+
NODE_OPTIONS: --max-old-space-size=8192
246+
OPENCLAW_TEST_SKIP_FULL_EXTENSIONS_SHARD: 1
247+
OPENCLAW_VITEST_MAX_WORKERS: 1
248+
run: |
249+
set -euo pipefail
250+
export PATH="$NODE_BIN:$PATH"
251+
pnpm test:windows:ci
252+
171253
- name: Keep runner alive for SSH inspection
254+
if: ${{ always() && !cancelled() }}
172255
env:
173256
KEEPALIVE_MINUTES: ${{ inputs.keepalive_minutes }}
174257
run: |
@@ -185,7 +268,7 @@ jobs:
185268
}
186269
187270
- name: Enforce WSL2 requirement
188-
if: ${{ inputs.require_wsl2 }}
271+
if: ${{ always() && !cancelled() && inputs.require_wsl2 }}
189272
run: |
190273
if ($env:OPENCLAW_WSL2_PROBE_OK -ne "true") {
191274
Write-Error "WSL2 probe failed or WSL2 is unavailable on this Windows runner."
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
c84eab270f19d11a807ce71e783d35ee95a7620295dbffcca7fff31dacfcc882 plugin-sdk-api-baseline.json
2-
55656396a5f1941af61603402c43e23e0ffc90003e7efa7c1857c4541a0f1bb4 plugin-sdk-api-baseline.jsonl
1+
194d38783bc97cf2c47804d2380e8606022558d3309c62d18379077d7b6ec11d plugin-sdk-api-baseline.json
2+
612407270d5b049bf0e1fb94ab8bcc50c676eb4005e5fbf476135c73eb32ab29 plugin-sdk-api-baseline.jsonl

docs/channels/slack.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ Notes:
529529
- `socketMode` is ignored in HTTP Request URL mode.
530530
- Base `channels.slack.socketMode` settings apply to all Slack accounts unless overridden. Per-account overrides use `channels.slack.accounts.<accountId>.socketMode`; because this is an object override, include every socket tuning field you want for that account.
531531
- Only `clientPingTimeout` has an OpenClaw default (`15000`). `serverPingTimeout` and `pingPongLoggingEnabled` are passed to the Slack SDK only when configured.
532-
- Socket Mode restart backoff starts around 2 seconds and caps around 30 seconds. Consecutive recoverable start/start-wait failures stop after 12 attempts; after a successful connection, later recoverable disconnects start a fresh retry cycle. Non-recoverable Slack auth errors such as `invalid_auth`, revoked tokens, or missing scopes fail fast instead of retrying forever.
532+
- Socket Mode restart backoff starts around 2 seconds and caps around 30 seconds. Recoverable start, start-wait, and disconnect failures retry until the channel stops. Permanent account and credential errors such as invalid auth, revoked tokens, or missing scopes fail fast instead of retrying forever.
533533

534534
## Manifest and scope checklist
535535

docs/cli/infer.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ Use `image` for generation, edit, and description.
189189
openclaw infer image generate --prompt "friendly lobster illustration" --json
190190
openclaw infer image generate --prompt "cinematic product photo of headphones" --json
191191
openclaw infer image generate --model openai/gpt-image-1.5 --output-format png --background transparent --prompt "simple red circle sticker on a transparent background" --json
192+
openclaw infer image generate --model openai/gpt-image-2 --quality low --openai-moderation low --prompt "low-cost draft poster" --json
192193
openclaw infer image generate --prompt "slow image backend" --timeout-ms 180000 --json
193194
openclaw infer image edit --file ./logo.png --model openai/gpt-image-1.5 --output-format png --background transparent --prompt "keep the logo, remove the background" --json
194195
openclaw infer image edit --file ./poster.png --prompt "make this a vertical story ad" --size 2160x3840 --aspect-ratio 9:16 --resolution 4K --json
@@ -209,6 +210,9 @@ Notes:
209210
`--model openai/gpt-image-1.5` for transparent-background OpenAI PNG output;
210211
`--openai-background` remains available as an OpenAI-specific alias. Providers
211212
that do not declare background support report the hint as an ignored override.
213+
- Use `--quality low|medium|high|auto` for providers that support image quality
214+
hints, including OpenAI. OpenAI also accepts `--openai-moderation low|auto` for
215+
the provider-specific moderation hint.
212216
- Use `image providers --json` to verify which bundled image providers are
213217
discoverable, configured, selected, and which generation/edit capabilities
214218
each provider exposes.

docs/docs.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,7 @@
13871387
"clawhub/http-api",
13881388
"clawhub/acceptable-usage",
13891389
"clawhub/moderation",
1390+
"clawhub/namespace-claims",
13901391
"clawhub/security",
13911392
"clawhub/security-audits",
13921393
"clawhub/content-rights",

docs/plugins/reference/qa-lab.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ OpenClaw QA lab plugin with private debugger UI and scenario runner.
1616

1717
## Surface
1818

19-
plugin
19+
contracts: webSearchProviders

docs/providers/openai.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,9 @@ openclaw infer image generate \
506506
Use the same `--output-format` and `--background` flags with
507507
`openclaw infer image edit` when starting from an input file.
508508
`--openai-background` remains available as an OpenAI-specific alias.
509+
Use `--quality low|medium|high|auto` when you need to control OpenAI Images
510+
quality and cost. Use `--openai-moderation low|auto` to pass OpenAI's
511+
provider-specific moderation hint from either `image generate` or `image edit`.
509512

510513
For ChatGPT/Codex OAuth installs, keep the same `openai/gpt-image-2` ref. When an
511514
`openai` OAuth profile is configured, OpenClaw resolves that stored OAuth

docs/tools/image-generation.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,23 @@ openclaw infer image generate \
494494
--json
495495
```
496496

497+
</Tab>
498+
<Tab title="Generate (OpenAI low quality)">
499+
```text
500+
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Low-cost draft poster for a quiet productivity app" quality=low openai='{"moderation":"low"}'
501+
```
502+
503+
Equivalent CLI:
504+
505+
```bash
506+
openclaw infer image generate \
507+
--model openai/gpt-image-2 \
508+
--quality low \
509+
--openai-moderation low \
510+
--prompt "Low-cost draft poster for a quiet productivity app" \
511+
--json
512+
```
513+
497514
</Tab>
498515
<Tab title="Generate (two square)">
499516
```text
@@ -517,11 +534,11 @@ openclaw infer image generate \
517534
</Tab>
518535
</Tabs>
519536

520-
The same `--output-format` and `--background` flags are available on
521-
`openclaw infer image edit`; `--openai-background` remains as an
522-
OpenAI-specific alias. Bundled providers other than OpenAI do not declare
523-
explicit background control today, so `background: "transparent"` is reported
524-
as ignored for them.
537+
The same `--output-format`, `--background`, `--quality`, and
538+
`--openai-moderation` flags are available on `openclaw infer image edit`;
539+
`--openai-background` remains as an OpenAI-specific alias. Bundled providers
540+
other than OpenAI do not declare explicit background control today, so
541+
`background: "transparent"` is reported as ignored for them.
525542

526543
## Related
527544

0 commit comments

Comments
 (0)