惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News and Events Feed by Topic
Last Week in AI
Last Week in AI
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
O
OpenAI News
The Last Watchdog
The Last Watchdog
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Forbes - Security
Forbes - Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
有赞技术团队
有赞技术团队
Jina AI
Jina AI
GbyAI
GbyAI
V
Vulnerabilities – Threatpost
L
LangChain Blog
Vercel News
Vercel News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
AI
AI
博客园 - 聂微东
W
WeLiveSecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Scott Helme
Scott Helme
罗磊的独立博客
Martin Fowler
Martin Fowler
S
Security Affairs
T
Tor Project blog
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
美团技术团队
C
Cisco Blogs
PCI Perspectives
PCI Perspectives
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
I
Intezer
B
Blog
WordPress大学
WordPress大学
I
InfoQ
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
V2EX
P
Privacy & Cybersecurity Law Blog
雷峰网
雷峰网

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4 test: trim doctor command hotspots · openclaw/openclaw@c66f16a test: isolate agent auth and spawn hotspots · openclaw/openclaw@9285935 test: stabilize MCP startup disposal race · openclaw/openclaw@dd9d2eb test: merge browser contract server suites · openclaw/openclaw@5817a76 test: narrow ollama provider discovery setup · openclaw/openclaw@a0d9598 build: declare qa-lab aimock runtime dependency · openclaw/openclaw@24431e5 test: speed up safe-bins exec harness · openclaw/openclaw@ee856ab test: preserve tool helpers in embedded runner mocks · openclaw/openclaw@acd86a0 refactor: move memory embeddings into provider plugins · openclaw/openclaw@77e6e4c test: reuse system-run temp fixtures · openclaw/openclaw@7e9ff0f test: trim hotspot wait overhead · openclaw/openclaw@12a59b0 Check: avoid duplicate boundary prep · openclaw/openclaw@baf11b8 test: reduce hotspot fixture overhead · openclaw/openclaw@3a59edd feat(ui): overhaul settings and slash command UX (#67819) thanks @Bun… · openclaw/openclaw@2cfb660 QA Matrix: exit cleanly on failure · openclaw/openclaw@42805d2 QA Matrix: isolate scenario coverage · openclaw/openclaw@7e659e1 Matrix: refresh crypto bootstrap state · openclaw/openclaw@94081d8 QA Lab: add provider registry · openclaw/openclaw@bb7e982 Matrix: add plugin changelog · openclaw/openclaw@4acab55 test: trim more hotspot overhead · openclaw/openclaw@f485311 test: trim remaining hotspot tests · openclaw/openclaw@6ba8626 test: narrow hotspot mocks · openclaw/openclaw@dbc8179 test: isolate gemini embedding request helpers · openclaw/openclaw@cd330f5 test: trim memory and mcp hotspots · openclaw/openclaw@fd48dfa test: slim provider registry mocks · openclaw/openclaw@2e08c77 test: harden Parallels update smoke · openclaw/openclaw@1a98090 feat: default Anthropic to Opus 4.7 · openclaw/openclaw@628b454 fix: harden node-host shell payload mutability checks · openclaw/openclaw@75c551e fix: land node-host approval binding for native binaries (#66731) (th… · openclaw/openclaw@29919bb CI: add daily schedule to CodeQL workflow (#67645) · openclaw/openclaw@69d25f5 fix(gateway): capture config hash after plugin auto-enable to prevent… · openclaw/openclaw@8c11210 fix: repair sanitized replay tool results before send (#67620) (thank… · openclaw/openclaw@c3c7a99 fix: restrict HTML timeout short-circuit to transient statuses · openclaw/openclaw@de129a6 fix: keep TUI watchdog bound to active run (#67401) (thanks @xantorres) · openclaw/openclaw@3525273 Gateway/skills: dedupe skills prefix-match + drop dead fallback on log · openclaw/openclaw@d7f489f Extensions/lmstudio: back off inference preload after consecutive fai… · openclaw/openclaw@b555214 TUI/streaming: add watchdog that resets the activity indicator after … · openclaw/openclaw@f44ab20 Agents/tool-loop: enable unknown-tool stream guard by default · openclaw/openclaw@36ed367 Gateway/skills: invalidate session skills snapshot on config write · openclaw/openclaw@b23d59a fix: classify HTML provider error pages correctly (#67642) (thanks @s… · openclaw/openclaw@e588e90 fix(skills): remove unused model-usage import (#67641) · openclaw/openclaw@55f05df docs(changelog): credit codex fix superseded PRs · openclaw/openclaw@e485f24 fix(openai-codex): normalize stale transport metadata in resolution a… · openclaw/openclaw@90801ba CI: pin Docker-related GitHub Actions (#67632) · openclaw/openclaw@f697b01 Android: modernize WebView and discovery API usage (#67627) · openclaw/openclaw@44a6e50 fix(deps): bump hono to 4.12.14 and @hono/node-server to 1.19.14 (GHS… · openclaw/openclaw@fbccc18 fix(deps): bump dompurify to 3.4.0 (#67614) · openclaw/openclaw@2c2dc00 CI: add explicit permissions to all workflow jobs (fixes code-scannin… · openclaw/openclaw@01b7516 fix: register bundled TTS providers and route overrides correctly (#6… · openclaw/openclaw@6ea3cdd fix: align host tilde paths with OS home (#62804) (thanks @stainlu) · openclaw/openclaw@ecfaf64 fix: flush creds queue before reconnect socket open (#67464) (thanks … · openclaw/openclaw@405c63f fix: strip standalone <function> tool call tags from visible text (#6… · openclaw/openclaw@78df859 fix(agents): preserve cli session metadata before transcript persist … · openclaw/openclaw@898fd04 docs(changelog): move cli transcript entry · openclaw/openclaw@c1817c6 fix(agents): normalize cli transcript api field · openclaw/openclaw@3a3fae0 docs(changelog): note cli transcript persistence · openclaw/openclaw@6c343f1 fix(agents): persist cli transcript turns · openclaw/openclaw@b8ef507 fix(msteams): harden security-sensitive flows (#65841) · openclaw/openclaw@c56b56e [Dashboard] Fix exec approval modal overflow for long command content… · openclaw/openclaw@053c5b0 Docs: remove QA changelog entry · openclaw/openclaw@7fd5771 QA: fix private runtime source loading (#67428) · openclaw/openclaw@d5933af docs(gateway): correct protocol.md schema path, hello-ok example, aut… · openclaw/openclaw@489404d CI: pin Node 22 runners to 22.18.0 · openclaw/openclaw@4ffa621 models.authStatus: normalize provider ids + tighten env-backed escape… · openclaw/openclaw@f2fdb9d Update CHANGELOG.md · openclaw/openclaw@7694a92 test(parallels): clean up npm update guard jobs · openclaw/openclaw@045ea7b Plugins: prefer scanDir override paths · openclaw/openclaw@b2974da fix(dreaming): default storage.mode to "separate" so phase blocks sto… · openclaw/openclaw@8c392f0 fix(memory-core): skip dreaming transcript ingestion via session stor… · openclaw/openclaw@a1b01f0 fix: dedupe replayed exec.finished node events (#67281) · openclaw/openclaw@5dcf526
ci: fix targeted live model provider run · openclaw/openclaw@6c1cffa
steipete · 2026-04-27 · via Recent Commits to openclaw:main

@@ -190,7 +190,6 @@ jobs:

190190

outputs:

191191

selected_sha: ${{ steps.validate.outputs.selected_sha }}

192192

trusted_reason: ${{ steps.validate.outputs.trusted_reason }}

193-

live_model_matrix: ${{ steps.live_model_matrix.outputs.matrix }}

194193

steps:

195194

- name: Checkout selected ref

196195

uses: actions/checkout@v6

@@ -235,89 +234,6 @@ jobs:

235234

echo "Trust reason: \`$trusted_reason\`"

236235

} >> "$GITHUB_STEP_SUMMARY"

237236238-

- name: Resolve live model provider matrix

239-

id: live_model_matrix

240-

env:

241-

INPUT_LIVE_MODEL_PROVIDERS: ${{ inputs.live_model_providers }}

242-

shell: bash

243-

run: |

244-

set -euo pipefail

245-246-

all_providers=(anthropic google minimax openai opencode-go openrouter xai zai fireworks)

247-248-

provider_label() {

249-

case "$1" in

250-

anthropic) echo "Anthropic" ;;

251-

google) echo "Google" ;;

252-

minimax) echo "MiniMax" ;;

253-

openai) echo "OpenAI" ;;

254-

opencode-go) echo "OpenCode" ;;

255-

openrouter) echo "OpenRouter" ;;

256-

xai) echo "xAI" ;;

257-

zai) echo "Z.ai" ;;

258-

fireworks) echo "Fireworks" ;;

259-

*) return 1 ;;

260-

esac

261-

}

262-263-

normalize_provider() {

264-

local value="${1,,}"

265-

case "$value" in

266-

z.ai|z-ai) echo "zai" ;;

267-

opencode|opencode-go) echo "opencode-go" ;;

268-

open-router|openrouter) echo "openrouter" ;;

269-

*) echo "$value" ;;

270-

esac

271-

}

272-273-

is_known_provider() {

274-

local value="$1"

275-

local provider

276-

for provider in "${all_providers[@]}"; do

277-

[[ "$provider" == "$value" ]] && return 0

278-

done

279-

return 1

280-

}

281-282-

selected=()

283-

declare -A seen=()

284-

raw="${INPUT_LIVE_MODEL_PROVIDERS:-}"

285-

normalized_all="${raw,,}"

286-

normalized_all="${normalized_all//[[:space:],]/}"

287-

if [[ -z "$normalized_all" || "$normalized_all" == "all" ]]; then

288-

selected=("${all_providers[@]}")

289-

else

290-

while IFS= read -r entry; do

291-

[[ -z "$entry" ]] && continue

292-

provider="$(normalize_provider "$entry")"

293-

if ! is_known_provider "$provider"; then

294-

echo "Unknown live model provider '${entry}'. Expected one of: ${all_providers[*]}" >&2

295-

exit 1

296-

fi

297-

if [[ -z "${seen[$provider]:-}" ]]; then

298-

selected+=("$provider")

299-

seen[$provider]=1

300-

fi

301-

done < <(printf '%s\n' "$raw" | tr ',' '\n' | tr '[:space:]' '\n')

302-

fi

303-304-

if [[ "${#selected[@]}" -eq 0 ]]; then

305-

echo "No live model providers selected." >&2

306-

exit 1

307-

fi

308-309-

matrix_entries="[]"

310-

for provider in "${selected[@]}"; do

311-

label="$(provider_label "$provider")"

312-

matrix_entries="$(jq -c --arg label "$label" --arg provider "$provider" '. + [{provider_label: $label, providers: $provider}]' <<<"$matrix_entries")"

313-

done

314-

matrix="$(jq -c --argjson include "$matrix_entries" '{include: $include}')"

315-

echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

316-

{

317-

echo

318-

echo "Live model providers: \`$(IFS=,; echo "${selected[*]}")\`"

319-

} >> "$GITHUB_STEP_SUMMARY"

320-321237

validate_release_live_cache:

322238

needs: validate_selected_ref

323239

if: inputs.include_live_suites && !inputs.live_models_only

@@ -931,12 +847,31 @@ jobs:

931847

validate_live_models_docker:

932848

name: Docker live models (${{ matrix.provider_label }})

933849

needs: validate_selected_ref

934-

if: inputs.include_live_suites

850+

if: inputs.include_live_suites && inputs.live_model_providers == ''

935851

runs-on: ubuntu-24.04

936852

timeout-minutes: 75

937853

strategy:

938854

fail-fast: false

939-

matrix: ${{ fromJSON(needs.validate_selected_ref.outputs.live_model_matrix) }}

855+

matrix:

856+

include:

857+

- provider_label: Anthropic

858+

providers: anthropic

859+

- provider_label: Google

860+

providers: google

861+

- provider_label: MiniMax

862+

providers: minimax

863+

- provider_label: OpenAI

864+

providers: openai

865+

- provider_label: OpenCode

866+

providers: opencode-go

867+

- provider_label: OpenRouter

868+

providers: openrouter

869+

- provider_label: xAI

870+

providers: xai

871+

- provider_label: Z.ai

872+

providers: zai

873+

- provider_label: Fireworks

874+

providers: fireworks

940875

env:

941876

OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

942877

OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}

@@ -1026,6 +961,163 @@ jobs:

1026961

- name: Run Docker live model sweep

1027962

run: pnpm test:docker:live-models

1028963964+

validate_live_models_docker_targeted:

965+

name: Docker live models (selected providers)

966+

needs: validate_selected_ref

967+

if: inputs.include_live_suites && inputs.live_model_providers != ''

968+

runs-on: ubuntu-24.04

969+

timeout-minutes: 75

970+

env:

971+

OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

972+

OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}

973+

ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

974+

ANTHROPIC_API_TOKEN: ${{ secrets.ANTHROPIC_API_TOKEN }}

975+

ANTHROPIC_API_KEY_OLD: ${{ secrets.ANTHROPIC_API_KEY_OLD }}

976+

BYTEPLUS_API_KEY: ${{ secrets.BYTEPLUS_API_KEY }}

977+

CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY }}

978+

DASHSCOPE_API_KEY: ${{ secrets.DASHSCOPE_API_KEY }}

979+

GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}

980+

KIMI_API_KEY: ${{ secrets.KIMI_API_KEY }}

981+

MODELSTUDIO_API_KEY: ${{ secrets.MODELSTUDIO_API_KEY }}

982+

MOONSHOT_API_KEY: ${{ secrets.MOONSHOT_API_KEY }}

983+

MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}

984+

MINIMAX_API_KEY: ${{ secrets.MINIMAX_API_KEY }}

985+

OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}

986+

OPENCODE_ZEN_API_KEY: ${{ secrets.OPENCODE_ZEN_API_KEY }}

987+

GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}

988+

GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}

989+

OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}

990+

QWEN_API_KEY: ${{ secrets.QWEN_API_KEY }}

991+

XAI_API_KEY: ${{ secrets.XAI_API_KEY }}

992+

ZAI_API_KEY: ${{ secrets.ZAI_API_KEY }}

993+

Z_AI_API_KEY: ${{ secrets.Z_AI_API_KEY }}

994+

CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

995+

OPENCLAW_CODEX_AUTH_JSON: ${{ secrets.OPENCLAW_CODEX_AUTH_JSON }}

996+

OPENCLAW_CODEX_CONFIG_TOML: ${{ secrets.OPENCLAW_CODEX_CONFIG_TOML }}

997+

OPENCLAW_CLAUDE_JSON: ${{ secrets.OPENCLAW_CLAUDE_JSON }}

998+

OPENCLAW_CLAUDE_CREDENTIALS_JSON: ${{ secrets.OPENCLAW_CLAUDE_CREDENTIALS_JSON }}

999+

OPENCLAW_CLAUDE_SETTINGS_JSON: ${{ secrets.OPENCLAW_CLAUDE_SETTINGS_JSON }}

1000+

OPENCLAW_CLAUDE_SETTINGS_LOCAL_JSON: ${{ secrets.OPENCLAW_CLAUDE_SETTINGS_LOCAL_JSON }}

1001+

OPENCLAW_GEMINI_SETTINGS_JSON: ${{ secrets.OPENCLAW_GEMINI_SETTINGS_JSON }}

1002+

FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}

1003+

REQUESTED_LIVE_MODEL_PROVIDERS: ${{ inputs.live_model_providers }}

1004+

OPENCLAW_VITEST_MAX_WORKERS: "2"

1005+

steps:

1006+

- name: Checkout selected ref

1007+

uses: actions/checkout@v6

1008+

with:

1009+

ref: ${{ needs.validate_selected_ref.outputs.selected_sha }}

1010+

fetch-depth: 1

1011+1012+

- name: Setup Node environment

1013+

uses: ./.github/actions/setup-node-env

1014+

with:

1015+

node-version: ${{ env.NODE_VERSION }}

1016+

pnpm-version: ${{ env.PNPM_VERSION }}

1017+

install-bun: "true"

1018+1019+

- name: Normalize provider allowlist

1020+

shell: bash

1021+

run: |

1022+

set -euo pipefail

1023+1024+

all_providers=(anthropic google minimax openai opencode-go openrouter xai zai fireworks)

1025+1026+

normalize_provider() {

1027+

local value="${1,,}"

1028+

case "$value" in

1029+

z.ai|z-ai) echo "zai" ;;

1030+

opencode|opencode-go) echo "opencode-go" ;;

1031+

open-router|openrouter) echo "openrouter" ;;

1032+

*) echo "$value" ;;

1033+

esac

1034+

}

1035+1036+

is_known_provider() {

1037+

local value="$1"

1038+

local provider

1039+

for provider in "${all_providers[@]}"; do

1040+

[[ "$provider" == "$value" ]] && return 0

1041+

done

1042+

return 1

1043+

}

1044+1045+

selected=()

1046+

declare -A seen=()

1047+

raw="${REQUESTED_LIVE_MODEL_PROVIDERS:-}"

1048+

normalized_all="${raw,,}"

1049+

normalized_all="${normalized_all//[[:space:],]/}"

1050+

if [[ -z "$normalized_all" || "$normalized_all" == "all" ]]; then

1051+

selected=("${all_providers[@]}")

1052+

else

1053+

while IFS= read -r entry; do

1054+

[[ -z "$entry" ]] && continue

1055+

provider="$(normalize_provider "$entry")"

1056+

if ! is_known_provider "$provider"; then

1057+

echo "Unknown live model provider '${entry}'. Expected one of: ${all_providers[*]}" >&2

1058+

exit 1

1059+

fi

1060+

if [[ -z "${seen[$provider]:-}" ]]; then

1061+

selected+=("$provider")

1062+

seen[$provider]=1

1063+

fi

1064+

done < <(printf '%s\n' "$raw" | tr ',' '\n' | tr '[:space:]' '\n')

1065+

fi

1066+1067+

if [[ "${#selected[@]}" -eq 0 ]]; then

1068+

echo "No live model providers selected." >&2

1069+

exit 1

1070+

fi

1071+1072+

providers_csv="$(IFS=,; echo "${selected[*]}")"

1073+

echo "OPENCLAW_LIVE_PROVIDERS=$providers_csv" >> "$GITHUB_ENV"

1074+

{

1075+

echo "Live model providers: \`$providers_csv\`"

1076+

} >> "$GITHUB_STEP_SUMMARY"

1077+1078+

- name: Hydrate live auth/profile inputs

1079+

run: bash scripts/ci-hydrate-live-auth.sh

1080+1081+

- name: Validate provider credentials

1082+

shell: bash

1083+

run: |

1084+

set -euo pipefail

1085+1086+

require_any() {

1087+

local label="$1"

1088+

shift

1089+

local key

1090+

for key in "$@"; do

1091+

if [[ -n "${!key:-}" ]]; then

1092+

return 0

1093+

fi

1094+

done

1095+

echo "Missing credential for ${label}: expected one of $*" >&2

1096+

exit 1

1097+

}

1098+1099+

IFS=',' read -r -a providers <<<"${OPENCLAW_LIVE_PROVIDERS}"

1100+

for provider in "${providers[@]}"; do

1101+

case "$provider" in

1102+

anthropic) require_any Anthropic ANTHROPIC_API_KEY ANTHROPIC_API_KEY_OLD ANTHROPIC_API_TOKEN ;;

1103+

google) require_any Google GEMINI_API_KEY GOOGLE_API_KEY ;;

1104+

minimax) require_any MiniMax MINIMAX_API_KEY ;;

1105+

openai) require_any OpenAI OPENAI_API_KEY ;;

1106+

opencode-go) require_any OpenCode OPENCODE_API_KEY OPENCODE_ZEN_API_KEY ;;

1107+

openrouter) require_any OpenRouter OPENROUTER_API_KEY ;;

1108+

xai) require_any xAI XAI_API_KEY ;;

1109+

zai) require_any Z.ai ZAI_API_KEY Z_AI_API_KEY ;;

1110+

fireworks) require_any Fireworks FIREWORKS_API_KEY ;;

1111+

*)

1112+

echo "Unhandled live model provider shard: ${provider}" >&2

1113+

exit 1

1114+

;;

1115+

esac

1116+

done

1117+1118+

- name: Run Docker live model sweep

1119+

run: pnpm test:docker:live-models

1120+10291121

validate_live_provider_suites:

10301122

needs: validate_selected_ref

10311123

if: inputs.include_live_suites && !inputs.live_models_only