























@@ -21,15 +21,20 @@ on:
2121 - plugin-sdk-package-contract
2222 - plugin-sdk-reply-runtime
2323 - provider-runtime-boundary
24+ - raw-socket-boundary
2425 - session-diagnostics-boundary
2526pull_request:
2627types: [opened, synchronize, reopened, ready_for_review]
2728paths:
2829 - ".github/codeql/**"
2930 - ".github/workflows/codeql-critical-quality.yml"
31+ - "extensions/*.ts"
32+ - "extensions/**/*.ts"
3033 - "packages/plugin-package-contract/**"
3134 - "packages/plugin-sdk/**"
3235 - "packages/memory-host-sdk/**"
36+ - "src/*.ts"
37+ - "src/**/*.ts"
3338 - "src/config/**"
3439 - "extensions/bluebubbles/src/**"
3540 - "extensions/discord/src/**"
@@ -159,6 +164,7 @@ jobs:
159164plugin_sdk_package: ${{ steps.detect.outputs.plugin_sdk_package }}
160165plugin_sdk_reply: ${{ steps.detect.outputs.plugin_sdk_reply }}
161166provider: ${{ steps.detect.outputs.provider }}
167+raw_socket: ${{ steps.detect.outputs.raw_socket }}
162168session_diagnostics: ${{ steps.detect.outputs.session_diagnostics }}
163169steps:
164170 - name: Detect PR shard paths
@@ -182,6 +188,7 @@ jobs:
182188 plugin_sdk_package=false
183189 plugin_sdk_reply=false
184190 provider=false
191+ raw_socket=false
185192 session_diagnostics=false
186193187194 if [[ "${EVENT_NAME}" != "pull_request" ]]; then
@@ -196,6 +203,7 @@ jobs:
196203 plugin_sdk_package=true
197204 plugin_sdk_reply=true
198205 provider=true
206+ raw_socket=true
199207 session_diagnostics=true
200208 else
201209 while IFS= read -r file; do
@@ -212,8 +220,12 @@ jobs:
212220 plugin_sdk_package=true
213221 plugin_sdk_reply=true
214222 provider=true
223+ raw_socket=true
215224 session_diagnostics=true
216225 ;;
226+ src/*.ts|src/**/*.ts|extensions/*.ts|extensions/**/*.ts)
227+ raw_socket=true
228+ ;;
217229 src/acp/control-plane/*|src/agents/cli-runner/*|src/agents/command/*|src/agents/pi-embedded-runner/*|src/agents/tools/*|src/agents/*completion*.ts|src/agents/*transport*.ts|src/agents/model-*.ts|src/agents/openclaw-tools*.ts|src/agents/provider-*.ts|src/agents/session*.ts|src/agents/tool-call*.ts|src/auto-reply/reply/agent-runner*.ts|src/auto-reply/reply/commands*.ts|src/auto-reply/reply/directive-handling*.ts|src/auto-reply/reply/dispatch-*.ts|src/auto-reply/reply/get-reply-run*.ts|src/auto-reply/reply/provider-dispatcher*.ts|src/auto-reply/reply/queue*.ts|src/auto-reply/reply/reply-run-registry*.ts|src/auto-reply/reply/session*.ts)
218230 agent=true
219231 ;;
@@ -296,6 +308,7 @@ jobs:
296308 echo "plugin_sdk_package=${plugin_sdk_package}"
297309 echo "plugin_sdk_reply=${plugin_sdk_reply}"
298310 echo "provider=${provider}"
311+ echo "raw_socket=${raw_socket}"
299312 echo "session_diagnostics=${session_diagnostics}"
300313 } >> "${GITHUB_OUTPUT}"
301314@@ -391,6 +404,62 @@ jobs:
391404with:
392405category: "/codeql-critical-quality/channel-runtime-boundary"
393406407+raw-socket-boundary:
408+name: Critical Quality (raw-socket-boundary)
409+needs: quality-shards
410+if: ${{ needs.quality-shards.outputs.raw_socket == 'true' && (github.event_name != 'pull_request' || !github.event.pull_request.draft) && (github.event_name == 'pull_request' || github.event_name != 'workflow_dispatch' || inputs.profile == 'all' || inputs.profile == 'raw-socket-boundary') }}
411+runs-on: blacksmith-4vcpu-ubuntu-2404
412+timeout-minutes: 25
413+steps:
414+ - name: Checkout
415+uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
416+with:
417+submodules: false
418+419+ - name: Initialize CodeQL
420+uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
421+with:
422+languages: javascript-typescript
423+config-file: ./.github/codeql/codeql-raw-socket-boundary-critical-quality.yml
424+425+ - name: Analyze
426+id: analyze
427+uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
428+with:
429+output: sarif-results
430+category: "/codeql-critical-quality/raw-socket-boundary"
431+432+ - name: Fail on raw socket findings
433+env:
434+SARIF_OUTPUT: sarif-results
435+run: |
436+ set -euo pipefail
437+ shopt -s nullglob
438+439+ files=("$SARIF_OUTPUT"/*.sarif)
440+ if [ "${#files[@]}" -eq 0 ]; then
441+ echo "No SARIF files found in $SARIF_OUTPUT" >&2
442+ exit 1
443+ fi
444+445+ findings="$(jq -s '[.[].runs[]?.results[]?] | length' "${files[@]}")"
446+ if [ "$findings" = "0" ]; then
447+ exit 0
448+ fi
449+450+ echo "Found ${findings} unclassified raw socket client callsite(s):" >&2
451+ jq -r '
452+ .runs[]?.results[]?
453+ | .locations[0].physicalLocation as $location
454+ | "- "
455+ + ($location.artifactLocation.uri // "unknown")
456+ + ":"
457+ + (($location.region.startLine // 0) | tostring)
458+ + " "
459+ + (.message.text // .ruleId)
460+ ' "${files[@]}" >&2
461+ exit 1
462+394463 agent-runtime-boundary:
395464name: Critical Quality (agent-runtime-boundary)
396465needs: quality-shards
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。