BEACON

← candidates

npm openclaw @2026.11.1

score
0.6 med
flagged 2026-11-06 01:11
signals by category
content 2 topology 3

maintainers added: —

package profile →

Signals fired

signalweightrationale
content
script_count_spike 0.5 scripts count 493 -> 604
size_spike 0.5 unpackedSize 87477902 -> 274712249 (3.1×)
topology
dist_tag_anomaly 0.5 dist-tags.latest=2026.11.1 but max published is 2026.11.5-beta.1
shared_repo_different_publisher 0.9 repo 'git+https://github.com/openclaw/openclaw.git' also claimed by 10 package(s) under different publishers: ['npm/@aka_openclaw_plugin/mychat', 'npm/@openclaw/line', 'npm/@openclaw/pixverse-provider'] ...
dependency_added_unknown 0.6 2 new non-watchlisted dep(s): ['@openclaw/proc-safe', '@trycua/cua-driver']

Prior profile (what it deviated from)

{
  "had_install_script": true,
  "maintainers": [
    "steipete",
    "vincentkoc"
  ],
  "versions": 241
}

Evidence (package doc at flag time)

{
  "dependencies_count": 68,
  "dist": {
    "integrity": "sha512-2pSbt/taBKM/ofPXsiOEmVefgUdVHYRZOmcWNDyx67WUfeGFXqtfqLvtwYOiH4NcLolDSLMUgsno2oYhTVXptw==",
    "tarball": "https://registry.npmjs.org/openclaw/-/openclaw-2026.11.1.tgz",
    "unpackedSize": 274712249
  },
  "dist-tags": {
    "beta": "2026.11.5-beta.1",
    "extended-stable": "2026.9.36",
    "latest": "2026.11.1"
  },
  "latest_version": "2026.11.1",
  "maintainers": [
    {
      "email": "steipete@gmail.com",
      "name": "steipete"
    },
    {
      "email": "vincentkoc@ieee.org",
      "name": "vincentkoc"
    }
  ],
  "num_versions": 293,
  "repository": {
    "type": "git",
    "url": "git+https://github.com/openclaw/openclaw.git"
  },
  "scripts": {
    "android:assemble": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:assemblePlayDebug :wear:assembleDebug :wear-shared:assembleDebug",
    "android:assemble:third-party": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:assembleThirdPartyDebug",
    "android:bundle:release": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android play_store_archive'",
    "android:format": "cd apps/android && ./gradlew :app:ktlintFormat :benchmark:ktlintFormat :wear:ktlintFormat :wear-shared:ktlintFormat",
    "android:i18n:check": "node scripts/android-app-i18n.ts check",
    "android:i18n:gen": "node scripts/android-app-i18n.ts generate",
    "android:install": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:installPlayDebug",
    "android:install:third-party": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:installThirdPartyDebug",
    "android:lint": "cd apps/android && ./gradlew :app:ktlintCheck :benchmark:ktlintCheck :wear:ktlintCheck :wear-shared:ktlintCheck",
    "android:lint:android": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:lintPlayDebug :app:lintThirdPartyDebug :wear:lintDebug :wear-shared:lintDebug",
    "android:release": "bash scripts/android-release.sh",
    "android:release:archive": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android play_store_archive'",
    "android:release:auth:check": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android auth_check'",
    "android:release:metadata": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android metadata'",
    "android:release:preflight": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android release_preflight'",
    "android:release:signing:check": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android signing_check'",
    "android:release:signing:plan": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android signing_plan'",
    "android:release:signing:sync:pull": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android signing_sync_pull'",
    "android:release:signing:sync:push": "bash -lc 'source ./scripts/lib/android-fastlane.sh && cd apps/android && run_android_fastlane android signing_sync_push'",
    "android:release:upload": "node scripts/mobile-release.mjs run --platform android",
    "android:release:validate": "node --import ./scripts/tsx.mjs scripts/android-release-e2e.ts",
    "android:run": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:runPlayDebug",
    "android:run:third-party": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:runThirdPartyDebug",
    "android:screenshots": "bash scripts/android-screenshots.sh",
    "android:test": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:testPlayDebugUnitTest :wear:testDebugUnitTest :wear-shared:testDebugUnitTest",
    "android:test:integration": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
    "android:test:third-party": "node --import ./scripts/tsx.mjs scripts/run-android-gradle.mts :app:testThirdPartyDebugUnitTest",
    "android:version": "node --import ./scripts/tsx.mjs scripts/android-version.ts --json",
    "android:version:check": "node --import ./scripts/tsx.mjs scripts/android-sync-versioning.ts --check",
    "android:version:pin": "node --import ./scripts/tsx.mjs scripts/android-pin-version.ts",
    "android:version:sync": "node --import ./scripts/tsx.mjs scripts/android-sync-versioning.ts --write",
    "apple:i18n:check": "node --import ./scripts/tsx.mjs scripts/apple-app-i18n.ts check",
    "audit:seams": "node --import ./scripts/tsx.mjs scripts/audit-seams.mts",
    "bench:agent-database-holds": "node --import ./scripts/tsx.mjs scripts/bench-agent-database-holds.ts",
    "bench:plugins:invocation": "node --import ./scripts/tsx.mjs scripts/bench-plugin-invocation.ts",
    "bench:plugins:stream": "node --expose-gc --import ./scripts/tsx.mjs scripts/bench-plugin-stream.ts",
    "bench:usage-refresh-memory": "node --import ./scripts/tsx.mjs scripts/bench-usage-refresh-memory.ts",
    "build": "node --import ./scripts/tsx.mjs scripts/build-all.mts",
    "build:ci-artifacts": "node --import ./scripts/tsx.mjs scripts/build-all.mts ciArtifacts",
    "build:docker": "pnpm plugins:assets:build && node --import ./scripts/tsx.mjs scripts/tsdown-build.mts && node --import ./scripts/tsx.mjs scripts/check-cli-bootstrap-imports.mts && node scripts/runtime-postbuild.mjs && node --import ./scripts/tsx.mjs scripts/build-stamp.mts && node --import ./scripts/tsx.mjs scripts/runtime-postbuild-stamp.mts && pnpm plugins:assets:copy && node --import ./scripts/tsx.mjs scripts/write-build-info.ts && node --import ./scripts/tsx.mjs scripts/write-cli-startup-metadata.ts",
    "build:package": "node --import ./scripts/tsx.mjs scripts/build-all.mts package",
    "build:plugin-sdk:dts": "node --import ./scripts/tsx.mjs scripts/write-plugin-sdk-entry-dts.ts",
    "build:plugin-sdk:strict-smoke": "node --import ./scripts/tsx.mjs scripts/build-all.mts pluginSdkStrictSmoke",
    "build:runtime": "node --import ./scripts/tsx.mjs scripts/build-all.mts runtime",
    "build:strict-smoke": "node --import ./scripts/tsx.mjs scripts/build-all.mts strictSmoke",
    "canvas:a2ui:bundle": "node --import ./scripts/tsx.mjs scripts/bundle-a2ui.mts",
    "changed:lanes": "node scripts/changed-lanes.mjs",
    "changelog:check": "node scripts/release-changelog.mjs check && node scripts/render-release-changelog.mjs --check",
    "changelog:from-docs": "node scripts/render-release-changelog.mjs",
    "changelog:split": "node scripts/release-changelog.mjs split",
    "channels:catalog:check": "node scripts/write-official-channel-catalog.mjs --check",
    "channels:catalog:gen": "node scripts/write-official-channel-catalog.mjs --write",
    "check": "node --import ./scripts/tsx.mjs scripts/check.mts",
    "check:architecture": "pnpm check:import-cycles && pnpm check:madge-import-cycles && pnpm check:deprecated-api-usage && pnpm check:wrapper-shadowing && pnpm check:deprecated-jsdoc && pnpm db:kysely:check && pnpm db:postgres:check && pnpm lint:kysely && pnpm check:database-first-legacy-stores",
    "check:assertion-safety": "node --import ./scripts/tsx.mjs scripts/check-assertion-safety-ratchet.mts",
    "check:base-config-schema": "node --import ./scripts/tsx.mjs scripts/generate-base-config-schema.ts --check",
    "check:browser-inspect-script:swift": "node --import ./scripts/tsx.mjs scripts/generate-browser-inspect-script-swift.mts --check",
    "check:bundled-channel-config-metadata": "node --import ./scripts/tsx.mjs scripts/generate-bundled-channel-config-metadata.ts --check",
    "check:changed": "node scripts/check-changed.mjs",
    "check:changelog-attributions": "node --import ./scripts/tsx.mjs scripts/check-changelog-attributions.mts",
    "check:coercion-helpers": "node --import ./scripts/tsx.mjs scripts/check-coercion-helper-declarations.mts",
    "check:control-ui-lit-ratchet": "node --import ./scripts/tsx.mjs scripts/check-control-ui-lit-ratchet.mts",
    "check:database-dialect-ratchet": "node --import ./scripts/tsx.mjs scripts/check-database-dialect-ratchet.mts",
    "check:database-first-legacy-stores": "node --import ./scripts/tsx.mjs scripts/check-database-first-legacy-stores.mts",
    "check:database-worker-ratchet": "node --max-old-space-size=4096 --import ./scripts/tsx.mjs scripts/check-database-worker-ratchet.mts",
    "check:deprecated-api-usage": "node --import ./scripts/tsx.mjs scripts/check-deprecated-api-usage.mts",
    "check:deprecated-jsdoc": "node --import ./scripts/tsx.mjs scripts/check-deprecated-jsdoc.mts",
    "check:docs": "bash scripts/ci-collect-checks.sh 'pnpm format:docs:check' 'pnpm check:docs:content'",
    "check:docs:content": "bash scripts/ci-collect-checks.sh 'pnpm lint:docs' 'pnpm lint:templates' 'pnpm docs:check-mdx' 'pnpm docs:check-i18n-glossary' 'pnpm docs:check-links' 'pnpm docs:check-config-examples' 'pnpm changelog:check'",
    "check:doctor-deprecation-registry": "node --import ./scripts/tsx.mjs scripts/check-doctor-deprecation-registry.ts",
    "check:env-var-count": "node --import ./scripts/tsx.mjs scripts/check-env-var-count.mts",
    "check:host-env-policy:swift": "node --import ./scripts/tsx.mjs scripts/generate-host-env-security-policy-swift.mts --check",
    "check:import-cycles": "node --import ./scripts/tsx.mjs scripts/check-import-cycles.ts",
    "check:line-cap-ratchet": "node --import ./scripts/tsx.mjs scripts/check-line-cap-ratchet.mts",
    "check:madge-import-cycles": "node --import ./scripts/tsx.mjs scripts/check-madge-import-cycles.ts",
    "check:max-lines-ratchet": "node --import ./scripts/tsx.mjs scripts/check-max-lines-ratchet.mts",
    "check:media-download-helpers": "node --import ./scripts/tsx.mjs scripts/check-media-download-helper-roundtrip.mts",
    "check:no-conflict-markers": "node scripts/check-no-conflict-markers.mjs",
    "check:no-runtime-action-load-config": "node --import ./scripts/tsx.mjs scripts/check-no-runtime-action-load-config.mts",
    "check:opengrep-rule-metadata": "node security/opengrep/check-rule-metadata.mjs",
    "check:protocol-coverage": "node scripts/check-protocol-event-coverage.mjs",
    "check:runtime-sidecar-loaders": "node --import ./scripts/tsx.mjs scripts/check-runtime-sidecar-loaders.mts",
    "check:script-erasability": "node --disable-warning=ExperimentalWarning scripts/check-script-erasability.mjs",
    "check:static-import-sccs": "pnpm check:madge-import-cycles",
    "check:temp-path-guardrails": "node --import ./scripts/tsx.mjs scripts/check-temp-path-guardrails.ts",
    "check:test-mock-exports": "node --import ./scripts/tsx.mjs scripts/check-test-mock-exports.mts",
    "check:test-timeout-race-ratchet": "node --import ./scripts/tsx.mjs scripts/check-test-timeout-race-ratchet.mts",
    "check:test-types": "pnpm tsgo:test",
    "check:timed": "node --import ./scripts/tsx.mjs scripts/check-timed.mts",
    "check:timed:all-types": "node --import ./scripts/tsx.mjs scripts/check-timed.mts --include-test-types",
    "check:timed:architecture": "node --import ./scripts/tsx.mjs scripts/check-timed.mts --include-architecture",
    "check:workflows": "node --import ./scripts/tsx.mjs scripts/check-workflows.mts",
    "check:wrapper-shadowing": "node --import ./scripts/tsx.mjs scripts/check-wrapper-shadowing.mts",
    "ci:full-release": "node scripts/full-release-validation-at-sha.mjs",
    "ci:git-owner:check": "node scripts/generate-ci-git-owner.mts --check",
    "ci:git-owner:gen": "node scripts/generate-ci-git-owner.mts",
    "ci:timings": "node scripts/ci-run-timings.mjs --latest-main",
    "ci:timings:recent": "node scripts/ci-run-timings.mjs --recent 10",
    "ci:timings:refit": "node --import ./scripts/tsx.mjs scripts/ci-refit-test-timings.mts",
    "ci:timings:trend": "node scripts/ci-run-timings.mjs --trend-hours 72 --compare-hours 12",
    "clean:dist": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
    "codex-app-server:protocol:check": "node --import ./scripts/tsx.mjs scripts/check-codex-app-server-protocol.ts",
    "codex-app-server:protocol:sync": "node --import ./scripts/tsx.mjs scripts/sync-codex-app-server-protocol.ts",
    "codex-supervisor:mcp": "node --import ./scripts/tsx.mjs src/mcp/codex-supervision-tools-serve.ts",
    "codex:mcp": "node --import ./scripts/tsx.mjs src/mcp/codex-supervision-tools-serve.ts",
    "config:channels:check": "node --import ./scripts/tsx.mjs scripts/generate-bundled-channel-config-metadata.ts --check",
    "config:channels:gen": "node --import ./scripts/tsx.mjs scripts/generate-bundled-channel-config-metadata.ts --write",
    "config:docs:check": "node --import ./scripts/tsx.mjs scripts/generate-config-doc-baseline.ts --check",
    "config:docs:gen": "node --import ./scripts/tsx.mjs scripts/generate-config-doc-baseline.ts --write",
    "config:schema:check": "node --import ./scripts/tsx.mjs scripts/generate-base-config-schema.ts --check",
    "config:schema:gen": "node --import ./scripts/tsx.mjs scripts/generate-base-config-schema.ts --write",
    "crabbox:hydrate": "node dist/crabbox-wrapper.js actions hydrate",
    "crabbox:run": "node dist/crabbox-wrapper.js run",
    "crabbox:stop": "node dist/crabbox-wrapper.js stop",
    "crabbox:warmup": "node dist/crabbox-wrapper.js warmup",
    "db:kysely:check": "node scripts/run-vitest.mjs test/scripts/generate-kysely-types.test.ts && node scripts/generate-kysely-types.mts --verify",
    "db:kysely:gen": "node scripts/generate-kysely-types.mts",
    "db:postgres:check": "node scripts/run-vitest.mjs test/scripts/generate-postgres-schema.test.ts && node --import ./scripts/tsx.mjs scripts/generate-postgres-schema.mts --target canonical --verify && node --import ./scripts/tsx.mjs scripts/generate-postgres-schema.mts --target workboard --verify",
    "db:postgres:gen": "node --import ./scripts/tsx.mjs scripts/generate-postgres-schema.mts",
    "db:worker-inventory:check": "node --max-old-space-size=4096 scripts/database-worker-inventory.mjs --check",
    "db:worker-inventory:gen": "node --max-old-space-size=4096 scripts/database-worker-inventory.mjs --write",
    "deadcode:dependencies": "pnpm deadcode:full",
    "deadcode:exports": "node --import ./scripts/tsx.mjs scripts/check-deadcode-exports.mts",
    "deadcode:full": "pnpm dlx --package knip@6.32.2 knip --config config/knip.config.ts --production --no-progress --reporter compact --no-config-hints --exclude duplicates && pnpm dlx --package knip@6.32.2 knip --config config/knip.all-exports.config.ts --no-progress --reporter compact --no-config-hints --exports --exclude duplicates",
    "deadcode:knip": "pnpm dlx --package knip@6.32.2 knip --config config/knip.config.ts --production --no-progress --reporter compact --files --dependencies",
    "deadcode:report": "pnpm deadcode:full && pnpm deadcode:exports",
    "deadcode:unused-files": "node --import ./scripts/tsx.mjs scripts/check-deadcode-unused-files.mts",
    "deps:changes:report": "node --import ./scripts/tsx.mjs scripts/dependency-changes-report.mts",
    "deps:npm-lock:check": "node scripts/generate-npm-package-lock.mjs --all",
    "deps:npm-lock:check:changed": "node scripts/generate-npm-package-lock.mjs --changed",
    "deps:npm-lock:report": "node --import ./scripts/tsx.mjs scripts/npm-package-locks-report.mts",
    "deps:ownership-surface:check": "node --import ./scripts/tsx.mjs scripts/dependency-ownership-surface-report.mts --check",
    "deps:ownership-surface:report": "node --import ./scripts/tsx.mjs scripts/dependency-ownership-surface-report.mts",
    "deps:patches:check": "node --import ./scripts/tsx.mjs scripts/check-package-patches.mts",
    "deps:pins:check": "node --import ./scripts/tsx.mjs scripts/check-dependency-pins.mts",
    "deps:root-ownership": "node --import ./scripts/tsx.mjs scripts/root-dependency-ownership-audit.mts",
    "deps:root-ownership:check": "node --import ./scripts/tsx.mjs scripts/root-dependency-ownership-audit.mts --check",
    "deps:transitive-risk:report": "node --import ./scripts/tsx.mjs scripts/transitive-manifest-risk-report.mts",
    "deps:vuln:gate": "node --import ./scripts/tsx.mjs scripts/dependency-vulnerability-gate.mts",
    "dev": "node scripts/run-node.mjs",
    "dev:ui:mock": "node --import ./scripts/tsx.mjs scripts/control-ui-mock-dev.ts",
    "docs:check-config-examples": "node scripts/check-docs-config-examples.mjs",
    "docs:check-i18n-glossary": "node --import ./scripts/tsx.mjs scripts/check-docs-i18n-glossary.mts",
    "docs:check-links": "node scripts/docs-link-audit.mjs",
    "docs:check-links:anchors": "node scripts/docs-link-audit.mjs --anchors",
    "docs:check-mdx": "node scripts/check-docs-mdx.mjs docs README.md",
    "docs:dev": "node scripts/docs-dev.mjs",
    "docs:list": "node scripts/docs-list.js",
    "docs:map:gen": "node scripts/docs-list.js --headings",
    "docs:spellcheck": "bash scripts/docs-spellcheck.sh",
    "docs:spellcheck:fix": "bash scripts/docs-spellcheck.sh --write",
    "dup:check": "node scripts/check-duplicates.mjs",
    "dup:check:coverage": "node scripts/check-duplicates.mjs --coverage",
    "dup:check:json": "node scripts/check-duplicates.mjs --json",
    "format": "oxfmt --write --threads=1",
    "format:all": "pnpm format && pnpm format:swift",
    "format:check": "oxfmt --check",
    "format:diff": "oxfmt --write --threads=1 && git --no-pager diff",
    "format:docs": "node --import ./scripts/tsx.mjs scripts/format-docs.mts",
    "format:docs:check": "node --import ./scripts/tsx.mjs scripts/format-docs.mts --check",
    "format:fix": "oxfmt --write --threads=1",
    "format:swift": "./scripts/format-swift.sh",
    "frv": "node scripts/frv.mjs",
    "gateway:dev": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_SKIP_CHANNELS=1 -- node scripts/run-node.mjs --dev gateway",
    "gateway:dev:reset": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_SKIP_CHANNELS=1 -- node scripts/run-node.mjs --dev gateway --reset",
    "gateway:watch": "node --import ./scripts/tsx.mjs scripts/gateway-watch-tmux.mts gateway --force",
    "gateway:watch:raw": "node scripts/watch-node.mjs gateway --force",
    "gen:browser-inspect-script:swift": "node --import ./scripts/tsx.mjs scripts/generate-browser-inspect-script-swift.mts --write",
    "gen:host-env-policy:swift": "node --import ./scripts/tsx.mjs scripts/generate-host-env-security-policy-swift.mts --write",
    "ghsa:patch": "node --import ./scripts/tsx.mjs scripts/ghsa-patch.mts",
    "ios:app-review-notes:pdf": "xcrun swift scripts/ios-app-review-notes-pdf.swift apps/ios/APP-REVIEW-NOTES-APPLE.md apps/ios/build/app-review/APP-REVIEW-NOTES.pdf",
    "ios:build": "/bin/bash -c 'export PATH=\"$PATH:/opt/homebrew/bin:/usr/local/bin\"; ./scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && node scripts/ios-write-swift-filelist.mjs && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-generic/platform=iOS Simulator}\" -configuration Debug build'",
    "ios:filelist:gen": "node scripts/ios-write-swift-filelist.mjs",
    "ios:gen": "/bin/bash -c 'export PATH=\"$PATH:/opt/homebrew/bin:/usr/local/bin\"; ./scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && node scripts/ios-write-swift-filelist.mjs && cd apps/ios && xcodegen generate'",
    "ios:open": "/bin/bash -c 'export PATH=\"$PATH:/opt/homebrew/bin:/usr/local/bin\"; ./scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && node scripts/ios-write-swift-filelist.mjs && cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj'",
    "ios:release:archive": "/bin/bash scripts/ios-release-archive.sh",
    "ios:release:cut": "/bin/bash scripts/ios-release-cut.sh",
    "ios:release:plan": "/bin/bash scripts/ios-release-plan.sh",
    "ios:release:prepare": "/bin/bash scripts/ios-release-prepare.sh",
    "ios:release:signing:check": "/bin/bash -lc 'source ./scripts/lib/ios-fastlane.sh && cd apps/ios && run_ios_fastlane ios signing_check'",
    "ios:release:signing:plan": "/bin/bash -lc 'source ./scripts/lib/ios-fastlane.sh && cd apps/ios && run_ios_fastlane ios signing_plan'",
    "ios:release:signing:setup": "/bin/bash -lc 'source ./scripts/lib/ios-fastlane.sh && cd apps/ios && run_ios_fastlane ios signing_setup'",
    "ios:release:signing:sync:pull": "/bin/bash -lc 'source ./scripts/lib/ios-fastlane.sh && cd apps/ios && run_ios_fastlane ios signing_sync_pull'",
    "ios:release:signing:sync:push": "/bin/bash -lc 'source ./scripts/lib/ios-fastlane.sh && cd apps/ios && run_ios_fastlane ios signing_sync_push'",
    "ios:release:upload": "node scripts/mobile-release.mjs run --platform ios",
    "ios:run": "/bin/bash scripts/ios-run.sh",
    "ios:screenshots": "/bin/bash scripts/ios-screenshots.sh",
    "ios:version": "node --import ./scripts/tsx.mjs scripts/ios-version.ts --json",
    "ios:version:check": "node --import ./scripts/tsx.mjs scripts/ios-sync-versioning.ts --check",
    "ios:version:sync": "node --import ./scripts/tsx.mjs scripts/ios-sync-versioning.ts --write",
    "leak:embedded-run": "node --import ./scripts/tsx.mjs --expose-gc scripts/embedded-run-abort-leak.ts",
    "leak:embedded-run:liveness": "node --import ./scripts/tsx.mjs --expose-gc scripts/embedded-run-liveness-leak.ts",
    "lint": "node --import ./scripts/tsx.mjs scripts/run-lint.mts",
    "lint:agent:ingress-owner": "node --import ./scripts/tsx.mjs scripts/check-ingress-agent-owner-context.mts",
    "lint:all": "node scripts/run-oxlint.mjs",
    "lint:apps": "pnpm lint:swift",
    "lint:auth:no-pairing-store-group": "node --import ./scripts/tsx.mjs scripts/check-no-pairing-store-group-auth.mts",
    "lint:auth:pairing-account-scope": "node --import ./scripts/tsx.mjs scripts/check-pairing-account-scope.mts",
    "lint:core": "node --import ./scripts/tsx.mjs scripts/run-oxlint-shards.mts --only=core",
    "lint:docker-e2e": "node --import ./scripts/tsx.mjs scripts/check-docker-e2e-boundaries.mts",
    "lint:docs": "pnpm dlx --config.resolution-mode=highest markdownlint-cli2 --config config/markdownlint-cli2.jsonc",
    "lint:docs:fix": "pnpm dlx --config.resolution-mode=highest markdownlint-cli2 --config config/markdownlint-cli2.jsonc --fix",
    "lint:extensions": "node scripts/run-oxlint.mjs --tsconfig extensions/tsconfig.json extensions",
    "lint:extensions:no-deprecated-channel-access": "node --import ./scripts/tsx.mjs scripts/check-no-deprecated-channel-access.ts",
    "lint:extensions:no-guarded-wildcard-reexports": "node --import ./scripts/tsx.mjs scripts/check-extension-wildcard-reexports.mts",
    "lint:extensions:no-normalization-core-bypass": "node --import ./scripts/tsx.mjs scripts/check-extension-plugin-sdk-boundary.mts --mode=normalization-core-bypass",
    "lint:extensions:no-plugin-sdk-wildcard-reexports": "node --import ./scripts/tsx.mjs scripts/check-plugin-sdk-wildcard-reexports.mts",
    "lint:extensions:no-relative-outside-package": "node --import ./scripts/tsx.mjs scripts/check-extension-plugin-sdk-boundary.mts --mode=relative-outside-package",
    "lint:extensions:no-src-outside-plugin-sdk": "node --import ./scripts/tsx.mjs scripts/check-extension-plugin-sdk-boundary.mts --mode=src-outside-plugin-sdk",
    "lint:extensions:telegram-grammy-types": "node --import ./scripts/tsx.mjs scripts/check-telegram-grammy-types-imports.mts",
    "lint:fix": "node scripts/run-oxlint.mjs --fix && pnpm format",
    "lint:kysely": "node --import ./scripts/tsx.mjs scripts/check-kysely-guardrails.mts",
    "lint:no-chained-type-assertions": "node scripts/run-oxlint.mjs --openclaw-focused-config --config config/oxlint/boundary-guards.json src extensions packages ui/src cli-root-options.mjs docker-entrypoint.mjs gateway-prewarm.mjs gateway-run-argv.mjs gateway-shutdown-budget.mjs node-compile-cache.mjs node-host-launcher.mjs node-runtime-env.mjs node-runtime-recovery.mjs node-runtime-update.mjs node-sqlite.mjs node-version.mjs openclaw.mjs worker-heap-flag.mjs scripts/openclaw-immutable-launcher.mjs scripts/freebsd-service-inspect.mjs",
    "lint:no-widen-then-assert": "node scripts/run-oxlint.mjs --openclaw-focused-config --config config/oxlint/boundary-guards.json src extensions packages ui/src cli-root-options.mjs docker-entrypoint.mjs gateway-prewarm.mjs gateway-run-argv.mjs gateway-shutdown-budget.mjs node-compile-cache.mjs node-host-launcher.mjs node-runtime-env.mjs node-runtime-recovery.mjs node-runtime-update.mjs node-sqlite.mjs node-version.mjs openclaw.mjs worker-heap-flag.mjs scripts/openclaw-immutable-launcher.mjs scripts/freebsd-service-inspect.mjs",
    "lint:plugins:no-extension-imports": "node --import ./scripts/tsx.mjs scripts/check-plugin-extension-import-boundary.mts",
    "lint:plugins:no-extension-src-imports": "node --import ./scripts/tsx.mjs scripts/check-no-extension-src-imports.ts",
    "lint:plugins:no-extension-test-core-imports": "node --import ./scripts/tsx.mjs scripts/check-no-extension-test-core-imports.ts",
    "lint:plugins:no-monolithic-plugin-sdk-entry-imports": "node --import ./scripts/tsx.mjs scripts/check-no-monolithic-plugin-sdk-entry-imports.ts",
    "lint:plugins:no-register-http-handler": "node scripts/run-oxlint.mjs --openclaw-focused-config --config config/oxlint/boundary-guards.json src extensions",
    "lint:plugins:plugin-sdk-subpaths-exported": "node --import ./scripts/tsx.mjs scripts/check-plugin-sdk-subpath-exports.mts",
    "lint:scripts": "pnpm lint:docker-e2e && pnpm lint:tmp:no-raw-http2-imports && node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.scripts.json scripts",
    "lint:swift": "./scripts/lint-swift.sh",
    "lint:templates": "pnpm dlx --config.resolution-mode=highest markdownlint-cli2 --config config/markdownlint-templates.jsonc",
    "lint:templates:fix": "pnpm dlx --config.resolution-mode=highest markdownlint-cli2 --config config/markdownlint-templates.jsonc --fix",
    "lint:tmp:channel-agnostic-boundaries": "node --import ./scripts/tsx.mjs scripts/check-channel-agnostic-boundaries.mts",
    "lint:tmp:dynamic-import-warts": "node --import ./scripts/tsx.mjs scripts/check-dynamic-import-warts.mts",
    "lint:tmp:export-name-collisions": "node --import ./scripts/tsx.mjs scripts/check-export-name-collisions.mts",
    "lint:tmp:no-random-messaging": "node --import ./scripts/tsx.mjs scripts/check-no-random-messaging-tmp.mts",
    "lint:tmp:no-raw-channel-fetch": "node --import ./scripts/tsx.mjs scripts/check-no-raw-channel-fetch.mts",
    "lint:tmp:no-raw-http2-imports": "node --import ./scripts/tsx.mjs scripts/check-no-raw-http2-imports.mts",
    "lint:tmp:session-accessor-boundary": "node --import ./scripts/tsx.mjs scripts/check-session-accessor-boundary.mts",
    "lint:tmp:session-accessor-boundary:gen": "node --import ./scripts/tsx.mjs scripts/check-session-accessor-boundary.mts --update-debt-baseline",
    "lint:tmp:session-transcript-reader-boundary": "node --import ./scripts/tsx.mjs scripts/check-session-transcript-reader-boundary.mts",
    "lint:tmp:sqlite-transaction-boundary": "node --import ./scripts/tsx.mjs scripts/check-sqlite-transaction-boundary.mts",
    "lint:tmp:tsgo-core-boundary": "node --import ./scripts/tsx.mjs scripts/check-tsgo-core-boundary.mts",
    "lint:ui:i18n": "pnpm ui:i18n:verify",
    "lint:ui:lit": "lit-analyzer \"ui/src/**/*.ts\" --quiet",
    "lint:ui:no-raw-window-open": "node scripts/run-oxlint.mjs --openclaw-focused-config --config config/oxlint/boundary-guards.json ui/src",
    "lint:ui:styles": "stylelint --config config/stylelint.config.mjs \"ui/src/**/*.css\" \"ui/src/**/*.{ts,tsx}\" \"ui/public/themes/*.css\"",
    "lint:web-fetch-provider-boundaries": "node --import ./scripts/tsx.mjs scripts/check-web-fetch-provider-boundaries.mts",
    "lint:webhook:no-low-level-body-read": "node --import ./scripts/tsx.mjs scripts/check-webhook-auth-body-order.mts",
    "mac:open": "open dist/OpenClaw.app",
    "mac:package": "/bin/bash scripts/package-mac-app.sh",
    "mac:restart": "/bin/bash scripts/restart-mac.sh",
    "maturity:check": "node --import ./scripts/tsx.mjs scripts/qa/render-maturity-docs.ts --check",
    "maturity:render": "node --import ./scripts/tsx.mjs scripts/qa/render-maturity-docs.ts",
    "mobile:release:notes": "node --import ./scripts/tsx.mjs scripts/mobile-release-notes.ts",
    "mobile:release:preflight": "node --import ./scripts/tsx.mjs scripts/mobile-release-ref.ts preflight",
    "mobile:release:record": "node --import ./scripts/tsx.mjs scripts/mobile-release-ref.ts record",
    "mobile:release:resolve": "node --import ./scripts/tsx.mjs scripts/mobile-release-ref.ts resolve",
    "native-catalogs:check": "node scripts/generate-native-session-catalogs.mjs --check",
    "native-catalogs:gen": "node scripts/generate-native-session-catalogs.mjs",
    "native:i18n:baseline": "node --import ./scripts/tsx.mjs scripts/native-app-i18n.ts baseline --write",
    "native:i18n:check": "node --import ./scripts/tsx.mjs scripts/native-app-i18n.ts check",
    "native:i18n:sync": "node --import ./scripts/tsx.mjs scripts/native-app-i18n.ts sync --write",
    "native:i18n:verify": "node --import ./scripts/tsx.mjs scripts/native-app-i18n.ts verify",
    "openclaw": "node scripts/run-node.mjs",
    "openclaw:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
    "perf:kova:summary": "node --import ./scripts/tsx.mjs scripts/kova-ci-summary.mts",
    "perf:redaction": "node --import ./scripts/tsx.mjs scripts/bench-redaction-prefilters.ts",
    "perf:source:summary": "node --import ./scripts/tsx.mjs scripts/openclaw-performance-source-summary.mts",
    "perf:web-fetch": "node --import ./scripts/tsx.mjs scripts/bench-web-fetch.ts",
    "perf:write-diff": "node --import ./scripts/tsx.mjs scripts/bench-write-diff.ts",
    "plugin-sdk:api:diff": "node --max-old-space-size=8192 --import ./scripts/tsx.mjs scripts/plugin-sdk-api-diff.mts",
    "plugin-sdk:check-exports": "node --import ./scripts/tsx.mjs scripts/sync-plugin-sdk-exports.mts --check",
    "plugin-sdk:shipped-surface:gen": "node --max-old-space-size=8192 --import ./scripts/tsx.mjs scripts/plugin-sdk-shipped-surface.mts",
    "plugin-sdk:surface": "node --max-old-space-size=8192 --import ./scripts/tsx.mjs scripts/plugin-sdk-surface-report.mts",
    "plugin-sdk:surface:check": "node --max-old-space-size=8192 --import ./scripts/tsx.mjs scripts/plugin-sdk-surface-report.mts --check",
    "plugin-sdk:sync-exports": "node --import ./scripts/tsx.mjs scripts/sync-plugin-sdk-exports.mts",
    "plugin-sdk:usage": "node --max-old-space-size=8192 --import ./scripts/tsx.mjs scripts/analyze-plugin-sdk-usage.ts",
    "plugins:assets:build": "node --import ./scripts/tsx.mjs scripts/bundled-plugin-assets.mts --phase build",
    "plugins:assets:check": "node --import ./scripts/tsx.mjs scripts/bundled-plugin-assets.mts --phase build --check",
    "plugins:assets:copy": "node --import ./scripts/tsx.mjs scripts/bundled-plugin-assets.mts --phase copy",
    "plugins:boundary-report": "node --import ./scripts/tsx.mjs scripts/plugin-boundary-report.ts",
    "plugins:boundary-report:ci": "node --import ./scripts/tsx.mjs scripts/plugin-boundary-report.ts --summary --fail-on-eligible-compat",
    "plugins:boundary-report:json": "node --import ./scripts/tsx.mjs scripts/plugin-boundary-report.ts --json",
    "plugins:boundary-report:summary": "node --import ./scripts/tsx.mjs scripts/plugin-boundary-report.ts --summary",
    "plugins:inventory:check": "node --import ./scripts/tsx.mjs scripts/generate-plugin-inventory-doc.mts --check",
    "plugins:inventory:gen": "node --import ./scripts/tsx.mjs scripts/generate-plugin-inventory-doc.mts --write",
    "plugins:inventory:json": "node scripts/generate-plugin-inventory-doc.mts --json",
    "plugins:sync": "node --import ./scripts/tsx.mjs scripts/sync-plugin-versions.ts",
    "plugins:sync:check": "node --import ./scripts/tsx.mjs scripts/sync-plugin-versions.ts --check",
    "pnpm:devPreinstall": "node scripts/check-install-dependency-ownership.mjs",
    "policy:config-coverage": "node --import ./scripts/tsx.mjs scripts/check-policy-config-coverage.ts",
    "postinstall": "node scripts/postinstall-bundled-plugins.mjs",
    "preinstall": "node scripts/preinstall-package-manager-warning.mjs",
    "prepush:ci": "bash scripts/prepush-ci.sh",
    "probe:anthropic:prompt": "node --import ./scripts/tsx.mjs scripts/anthropic-prompt-probe.ts",
    "prompt:snapshots:check": "node --import ./scripts/tsx.mjs scripts/generate-prompt-snapshots.ts --check",
    "prompt:snapshots:gen": "node --import ./scripts/tsx.mjs scripts/generate-prompt-snapshots.ts --write",
    "prompt:snapshots:sync-codex-model": "node --import ./scripts/tsx.mjs scripts/sync-codex-model-prompt-fixture.ts",
    "protocol-registry:check": "node --import ./scripts/tsx.mjs scripts/check-protocol-registry.mts",
    "protocol:check": "pnpm protocol-registry:check && pnpm protocol:gen && node scripts/prepare-native-protocol.mjs --check && node --import ./scripts/tsx.mjs scripts/check-protocol-since.mts",
    "protocol:check:kotlin": "node scripts/prepare-native-protocol.mjs --language kotlin --check",
    "protocol:check:swift": "node scripts/prepare-native-protocol.mjs --language swift --check",
    "protocol:gen": "node --import ./scripts/tsx.mjs scripts/protocol-gen.ts",
    "protocol:gen:kotlin": "node scripts/prepare-native-protocol.mjs --language kotlin",
    "protocol:gen:swift": "node scripts/prepare-native-protocol.mjs --language swift",
    "proxy:coverage": "node scripts/run-node.mjs proxy coverage",
    "proxy:gateway": "node scripts/run-node.mjs proxy run -- node scripts/run-node.mjs gateway",
    "proxy:install-ca": "node --import ./scripts/tsx.mjs scripts/proxy-install-ca.mts",
    "proxy:run": "node scripts/run-node.mjs proxy run",
    "proxy:start": "node scripts/run-node.mjs proxy start",
    "qa:code-mode-models": "node --import ./scripts/tsx.mjs scripts/code-mode-model-matrix.ts",
    "qa:e2e": "node --import ./scripts/tsx.mjs scripts/qa-e2e.ts",
    "qa:lab:build": "node scripts/run-node-package-bin.mts vite build --config extensions/qa-lab/web/vite.config.ts",
    "qa:lab:ui": "pnpm openclaw qa ui",
    "qa:lab:up": "node --import ./scripts/tsx.mjs scripts/qa-lab-up.ts",
    "qa:lab:up:fast": "node --import ./scripts/tsx.mjs scripts/qa-lab-up.ts --use-prebuilt-image --bind-ui-dist --skip-ui-build",
    "qa:lab:watch": "node scripts/run-node-package-bin.mts vite build --watch --config extensions/qa-lab/web/vite.config.ts",
    "qa:observability:collector-smoke": "pnpm qa:otel:collector-smoke && pnpm qa:prometheus:smoke",
    "qa:observability:smoke": "pnpm qa:otel:smoke && pnpm qa:prometheus:smoke",
    "qa:otel:collector-smoke": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/runtime/qa-otel-smoke-runtime.ts --collector docker",
    "qa:otel:smoke": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/runtime/qa-otel-smoke-runtime.ts",
    "qa:prometheus:smoke": "node scripts/run-node.mjs qa suite --provider-mode mock-openai --scenario docker-prometheus-smoke --concurrency 1 --fast",
    "release-metadata:check": "node --import ./scripts/tsx.mjs scripts/check-release-metadata-only.mts",
    "release:approve": "node --import ./scripts/tsx.mjs scripts/release-approve.mts",
    "release:backport-companions": "node scripts/release-backport-companions.mjs",
    "release:backport-probe": "node scripts/release-backport-probe.mjs",
    "release:beta": "node --import ./scripts/tsx.mjs scripts/release-candidate-checklist.mts",
    "release:beta-smoke": "node --import ./scripts/tsx.mjs scripts/release-beta-smoke.ts",
    "release:candidate": "node --import ./scripts/tsx.mjs scripts/release-candidate-checklist.mts",
    "release:check": "pnpm build:package && pnpm release:generated:check && node --import ./scripts/tsx.mjs scripts/release-check.ts",
    "release:clawhub-recovery": "node scripts/plugin-clawhub-recovery.mjs",
    "release:fast-pretag-check": "bash scripts/release-fast-pretag-check.sh",
    "release:generated:check": "node scripts/release-preflight.mjs --check",
    "release:openclaw:npm:check": "node --import ./scripts/tsx.mjs scripts/openclaw-npm-release-check.ts",
    "release:openclaw:npm:verify-published": "node --import ./scripts/tsx.mjs scripts/openclaw-npm-postpublish-verify.ts",
    "release:plugins:clawhub:check": "node --import ./scripts/tsx.mjs scripts/plugin-clawhub-release-check.ts",
    "release:plugins:clawhub:plan": "node --import ./scripts/tsx.mjs scripts/plugin-clawhub-release-plan.ts",
    "release:plugins:npm:check": "node --import ./scripts/tsx.mjs scripts/plugin-npm-release-check.ts",
    "release:plugins:npm:plan": "node --import ./scripts/tsx.mjs scripts/plugin-npm-release-plan.ts",
    "release:prep": "node scripts/release-preflight.mjs --fix",
    "release:prep:version": "node scripts/release-preflight.mjs --fix --scope version",
    "release:prepare": "node --import ./scripts/tsx.mjs scripts/release-prepare.ts",
    "release:prepush": "node --import ./scripts/tsx.mjs scripts/release-prepush.mts",
    "release:publish-preflight": "node --import ./scripts/tsx.mjs scripts/release-publish-preflight.mts",
    "release:push": "node --import ./scripts/tsx.mjs scripts/release-prepush.mts --push",
    "release:stable": "node --import ./scripts/tsx.mjs scripts/release-stable.mts",
    "release:verify-beta": "node --import ./scripts/tsx.mjs scripts/release-verify-beta.ts",
    "release:version": "node --import ./scripts/tsx.mjs scripts/release-version.ts",
    "runtime-sidecars:check": "node --import ./scripts/tsx.mjs scripts/generate-runtime-sidecar-paths-baseline.ts --check",
    "runtime-sidecars:gen": "node --import ./scripts/tsx.mjs scripts/generate-runtime-sidecar-paths-baseline.ts --write",
    "sqlite:sessions-schema:check": "node --import ./scripts/tsx.mjs scripts/generate-sqlite-session-schema-baseline.ts --check",
    "sqlite:sessions-schema:gen": "node --import ./scripts/tsx.mjs scripts/generate-sqlite-session-schema-baseline.ts --write",
    "start": "node openclaw.mjs",
    "test": "node scripts/test-projects.mts",
    "test:agents:concurrency": "node --import ./scripts/tsx.mjs scripts/bench-agent-concurrency.ts",
    "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
    "test:auth:compat": "node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts src/gateway/server.auth.compat-baseline.test.ts src/gateway/client.test.ts src/gateway/reconnect-gating.test.ts && node scripts/run-vitest.mjs run packages/gateway-protocol/src/connect-error-details.test.ts",
    "test:build:singleton": "node --import ./scripts/tsx.mjs scripts/test-built-plugin-singleton.mts",
    "test:build:status-message-runtime": "node --import ./scripts/tsx.mjs scripts/test-built-status-message-runtime.mts",
    "test:bundled": "node scripts/run-vitest.mjs run --config test/vitest/vitest.bundled.config.ts",
    "test:changed": "node scripts/test-projects.mts --changed origin/main",
    "test:changed:max": "node scripts/test-projects-max.mts --changed origin/main",
    "test:channels": "node scripts/run-vitest.mjs run --config test/vitest/vitest.channels.config.ts",
    "test:ci-failed": "node --import ./scripts/tsx.mjs scripts/ci-failed-tests.mts",
    "test:cli-response:contract": "node --import ./scripts/tsx.mjs scripts/build-all.mts cliStartup && node --import ./scripts/tsx.mjs scripts/test-cli-startup-bench-budget.mts --preset response --runs 1 --warmup 0 --timeout-ms 10000 --skip-baseline",
    "test:contracts": "pnpm test:contracts:channels && pnpm test:contracts:plugins",
    "test:contracts:channels": "node scripts/test-projects.mts --maxWorkers=1 test/vitest/vitest.contracts-channel-surface.config.ts test/vitest/vitest.contracts-channel-config.config.ts test/vitest/vitest.contracts-channel-registry.config.ts test/vitest/vitest.contracts-channel-session.config.ts",
    "test:contracts:plugins": "node scripts/test-projects.mts --maxWorkers=1 src/plugins/contracts",
    "test:coverage": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage",
    "test:coverage:changed": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage --changed origin/main",
    "test:docker:agent-bundle-mcp-tools": "bash scripts/e2e/agent-bundle-mcp-tools-docker.sh",
    "test:docker:agents-delete-shared-workspace": "bash scripts/e2e/agents-delete-shared-workspace-docker.sh",
    "test:docker:all": "node scripts/test-docker-all.mjs",
    "test:docker:browser-cdp-snapshot": "bash scripts/e2e/browser-cdp-snapshot-docker.sh",
    "test:docker:bundled-plugin-install-uninstall": "bash scripts/e2e/bundled-plugin-install-uninstall-docker.sh",
    "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
    "test:docker:cli-installer-distribution": "bash scripts/e2e/cli-installer-distribution-docker.sh",
    "test:docker:codex-media-path": "bash scripts/e2e/codex-media-path-docker.sh",
    "test:docker:codex-on-demand": "bash scripts/e2e/codex-on-demand-docker.sh",
    "test:docker:compose-setup": "bash scripts/e2e/compose-setup.sh",
    "test:docker:config-reload": "bash scripts/e2e/config-reload-source-docker.sh",
    "test:docker:container-image-upgrade": "bash scripts/e2e/container-image-upgrade-docker.sh",
    "test:docker:cron-cli": "bash scripts/e2e/cron-cli-docker.sh",
    "test:docker:cron-mcp-cleanup": "bash scripts/e2e/cron-mcp-cleanup-docker.sh",
    "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
    "test:docker:dreaming-cron-doctor": "env OPENCLAW_UPGRADE_SURVIVOR_PUBLISHED_BASELINE=1 OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=openclaw@2026.9.6 OPENCLAW_UPGRADE_SURVIVOR_CANDIDATE=current OPENCLAW_UPGRADE_SURVIVOR_SCENARIO=dreaming-cron-doctor OPENCLAW_UPGRADE_SURVIVOR_UPDATE_RESTART_MODE=manual OPENCLAW_UPGRADE_SURVIVOR_ROOT_MANAGED_VPS=0 OPENCLAW_UPGRADE_SURVIVOR_LIVE_MODELS= OPENCLAW_UPGRADE_SURVIVOR_LIVE_OPENAI=0 bash scripts/e2e/upgrade-survivor-docker.sh",
    "test:docker:e2e-build": "bash scripts/e2e/build-image.sh",
    "test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
    "test:docker:kitchen-sink-plugin": "bash scripts/e2e/kitchen-sink-plugin-docker.sh",
    "test:docker:kitchen-sink-rpc": "bash scripts/e2e/kitchen-sink-rpc-docker.sh",
    "test:docker:live-acp-bind": "bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-acp-bind:claude": "OPENCLAW_LIVE_ACP_BIND_AGENT=claude bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-acp-bind:codex": "OPENCLAW_LIVE_ACP_BIND_AGENT=codex bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-acp-bind:droid": "OPENCLAW_LIVE_ACP_BIND_AGENT=droid OPENCLAW_LIVE_ACP_BIND_REQUIRE_TRANSCRIPT=1 bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-acp-bind:gemini": "OPENCLAW_LIVE_ACP_BIND_AGENT=gemini bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-acp-bind:opencode": "OPENCLAW_LIVE_ACP_BIND_AGENT=opencode OPENCLAW_LIVE_ACP_BIND_REQUIRE_TRANSCRIPT=1 bash scripts/test-live-acp-bind-docker.sh",
    "test:docker:live-anthropic-cache": "bash scripts/e2e/anthropic-cache-live-docker.sh",
    "test:docker:live-build": "bash scripts/test-live-build-docker.sh",
    "test:docker:live-cli-backend": "bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:claude": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=claude-cli/claude-sonnet-4-6 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:claude-subscription": "OPENCLAW_LIVE_CLI_BACKEND_AUTH=subscription OPENCLAW_LIVE_CLI_BACKEND_MODEL=claude-cli/claude-sonnet-4-6 OPENCLAW_LIVE_CLI_BACKEND_DISABLE_MCP_CONFIG=1 OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0 OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1 OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=0 OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=0 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:claude:cache": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=claude-cli/claude-sonnet-4-6 OPENCLAW_LIVE_CLI_BACKEND_AUTH=api-key OPENCLAW_LIVE_CLI_BACKEND_CACHE_PROBE=1 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:claude:mcp": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=claude-cli/claude-sonnet-4-6 OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:claude:resume": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=claude-cli/claude-sonnet-4-6 OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:gemini": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=google-gemini-cli/gemini-3-flash-preview bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:gemini:mcp": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=google-gemini-cli/gemini-3-flash-preview OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-cli-backend:gemini:resume": "OPENCLAW_LIVE_CLI_BACKEND_MODEL=google-gemini-cli/gemini-3-flash-preview OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1 bash scripts/test-live-cli-backend-docker.sh",
    "test:docker:live-codex-bind": "OPENCLAW_LIVE_CODEX_BIND=1 OPENCLAW_LIVE_CODEX_TEST_FILES=src/gateway/gateway-codex-bind.live.test.ts bash scripts/test-live-codex-harness-docker.sh",
    "test:docker:live-codex-harness": "bash scripts/test-live-codex-harness-docker.sh",
    "test:docker:live-codex-media-path": "OPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key OPENCLAW_LIVE_CODEX_HARNESS_CHAT_IMAGE_PROBE=1 OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0 bash scripts/test-live-codex-harness-docker.sh",
    "test:docker:live-codex-npm-plugin": "bash scripts/e2e/codex-npm-plugin-live-docker.sh",
    "test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
    "test:docker:live-gateway:claude": "OPENCLAW_LIVE_GATEWAY_PROVIDERS=claude-cli OPENCLAW_LIVE_GATEWAY_MODELS=claude-cli/claude-sonnet-4-6 bash scripts/test-live-gateway-models-docker.sh",
    "test:docker:live-gateway:gemini": "OPENCLAW_LIVE_GATEWAY_PROVIDERS=google-gemini-cli OPENCLAW_LIVE_GATEWAY_MODELS=google-gemini-cli/gemini-3.1-pro-preview bash scripts/test-live-gateway-models-docker.sh",
    "test:docker:live-mcp-code-mode-gateway": "bash scripts/e2e/mcp-code-mode-gateway-live-docker.sh",
    "test:docker:live-models": "bash scripts/test-live-models-docker.sh",
    "test:docker:live-models:claude": "OPENCLAW_LIVE_PROVIDERS=claude-cli OPENCLAW_LIVE_MODELS=claude-cli/claude-sonnet-4-6 bash scripts/test-live-models-docker.sh",
    "test:docker:live-models:gemini": "OPENCLAW_LIVE_PROVIDERS=google-gemini-cli OPENCLAW_LIVE_MODELS=google-gemini-cli/gemini-3.1-pro-preview bash scripts/test-live-models-docker.sh",
    "test:docker:live-muse": "bash scripts/e2e/muse-live-docker.sh",
    "test:docker:live-plugin-tool": "bash scripts/e2e/live-plugin-tool-docker.sh",
    "test:docker:live-subagent-announce": "bash scripts/test-live-subagent-announce-docker.sh",
    "test:docker:live:all": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_DOCKER_ALL_LIVE_MODE=only -- node scripts/test-docker-all.mjs",
    "test:docker:local:all": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_DOCKER_ALL_LIVE_MODE=skip -- node scripts/test-docker-all.mjs",
    "test:docker:mcp-channels": "bash scripts/e2e/mcp-channels-docker.sh",
    "test:docker:mcp-code-mode-gateway": "bash scripts/e2e/mcp-code-mode-gateway-docker.sh",
    "test:docker:multi-node-update": "bash scripts/e2e/multi-node-update-docker.sh",
    "test:docker:muse-runtime": "bash scripts/e2e/muse-runtime-docker.sh",
    "test:docker:npm-onboard-channel-agent": "bash scripts/e2e/npm-onboard-channel-agent-docker.sh",
    "test:docker:npm-onboard-discord-channel-agent": "OPENCLAW_NPM_ONBOARD_CHANNEL=discord bash scripts/e2e/npm-onboard-channel-agent-docker.sh",
    "test:docker:npm-onboard-slack-channel-agent": "OPENCLAW_NPM_ONBOARD_CHANNEL=slack bash scripts/e2e/npm-onboard-channel-agent-docker.sh",
    "test:docker:npm-telegram-live": "bash scripts/e2e/npm-telegram-live-docker.sh",
    "test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
    "test:docker:openai-chat-tools": "bash scripts/e2e/openai-chat-tools-docker.sh",
    "test:docker:openai-image-auth": "bash scripts/e2e/openai-image-auth-docker.sh",
    "test:docker:openai-web-search-minimal": "bash scripts/e2e/openai-web-search-minimal-docker.sh",
    "test:docker:openwebui": "bash scripts/e2e/openwebui-docker.sh",
    "test:docker:package-install": "bash scripts/e2e/docker-package-install.sh",
    "test:docker:plugin-binding-command-escape": "bash scripts/e2e/plugin-binding-command-escape-docker.sh",
    "test:docker:plugin-lifecycle-matrix": "bash scripts/e2e/plugin-lifecycle-matrix-docker.sh",
    "test:docker:plugin-update": "bash scripts/e2e/plugin-update-unchanged-docker.sh",
    "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
    "test:docker:published-driver-lifecycle": "node scripts/e2e/published-driver-lifecycle-docker.mjs",
    "test:docker:published-driver-scoped-restore": "env OPENCLAW_PUBLISHED_DRIVER_SCOPED_RESTORE=1 bash scripts/e2e/published-driver-update-docker.sh",
    "test:docker:published-driver-update": "bash scripts/e2e/published-driver-update-docker.sh",
    "test:docker:published-upgrade-survivor": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_DOCKER_ALL_LANES=published-upgrade-survivor -- node scripts/test-docker-all.mjs",
    "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
    "test:docker:release-media-memory": "bash scripts/e2e/release-media-memory-docker.sh",
    "test:docker:release-plugin-marketplace": "bash scripts/e2e/release-plugin-marketplace-docker.sh",
    "test:docker:release-typed-onboarding": "bash scripts/e2e/release-typed-onboarding-docker.sh",
    "test:docker:release-upgrade-user-journey": "bash scripts/e2e/release-upgrade-user-journey-docker.sh",
    "test:docker:release-user-journey": "bash scripts/e2e/release-user-journey-docker.sh",
    "test:docker:rerun": "node --import ./scripts/tsx.mjs scripts/docker-e2e-rerun.mts",
    "test:docker:root-managed-vps-upgrade": "env OPENCLAW_UPGRADE_SURVIVOR_PUBLISHED_BASELINE=1 OPENCLAW_UPGRADE_SURVIVOR_ROOT_MANAGED_VPS=1 OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=${OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC:-openclaw@latest} OPENCLAW_UPGRADE_SURVIVOR_DOCKER_RUN_TIMEOUT=${OPENCLAW_UPGRADE_SURVIVOR_DOCKER_RUN_TIMEOUT:-1500s} bash scripts/e2e/upgrade-survivor-docker.sh",
    "test:docker:sandbox-browser-sidecar": "bash scripts/e2e/sandbox-browser-sidecar-docker.sh",
    "test:docker:selected-plugins": "bash scripts/e2e/docker-selected-plugins.sh",
    "test:docker:session-runtime-context": "bash scripts/e2e/session-runtime-context-docker.sh",
    "test:docker:skill-install": "bash scripts/e2e/skill-install-docker.sh",
    "test:docker:system-agent-first-run": "bash scripts/e2e/system-agent-first-run-docker.sh",
    "test:docker:system-agent-rescue": "bash scripts/e2e/system-agent-rescue-docker.sh",
    "test:docker:timings": "node --import ./scripts/tsx.mjs scripts/docker-e2e-timings.mts",
    "test:docker:update-channel-switch": "bash scripts/e2e/update-channel-switch-docker.sh",
    "test:docker:update-corrupt-plugin": "bash scripts/e2e/update-corrupt-plugin-docker.sh",
    "test:docker:update-first-hop-compat": "bash scripts/e2e/update-first-hop-compat-docker.sh",
    "test:docker:update-migration": "env OPENCLAW_UPGRADE_SURVIVOR_PUBLISHED_BASELINE=1 OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=${OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC:-openclaw@latest} OPENCLAW_UPGRADE_SURVIVOR_SCENARIO=${OPENCLAW_UPGRADE_SURVIVOR_SCENARIO:-plugin-deps-cleanup} bash scripts/e2e/upgrade-survivor-docker.sh",
    "test:docker:update-restart-auth": "env OPENCLAW_UPGRADE_SURVIVOR_UPDATE_RESTART_MODE=auto-auth OPENCLAW_UPGRADE_SURVIVOR_DOCKER_RUN_TIMEOUT=${OPENCLAW_UPGRADE_SURVIVOR_DOCKER_RUN_TIMEOUT:-1500s} bash scripts/e2e/upgrade-survivor-docker.sh",
    "test:docker:upgrade-survivor": "bash scripts/e2e/upgrade-survivor-docker.sh",
    "test:e2e": "pnpm test:e2e:gateway && pnpm test:e2e:agent-plugin-gateway && pnpm test:ui:e2e",
    "test:e2e:agent-plugin-gateway": "node --import ./scripts/tsx.mjs scripts/agent-plugin-gateway-e2e.ts",
    "test:e2e:browser-extension": "node --import ./scripts/tsx.mjs scripts/build-all.mts qaRuntime && node --import ./scripts/tsx.mjs scripts/run-with-env.mts PLAYWRIGHT_BROWSERS_PATH=.artifacts/playwright-browsers -- node --import ./scripts/tsx.mjs scripts/ensure-playwright-chromium.mts --require-playwright-chromium && node --import ./scripts/tsx.mjs scripts/run-with-env.mts PLAYWRIGHT_BROWSERS_PATH=.artifacts/playwright-browsers OPENCLAW_BROWSER_EXTENSION_E2E=1 OPENCLAW_E2E_WORKERS=1 -- node scripts/run-vitest.mjs extensions/browser/chrome-extension/bootstrap.chromium.test.ts",
    "test:e2e:browser-mcp": "node --import ./scripts/tsx.mjs scripts/ensure-playwright-chromium.mts --require-playwright-chromium && node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_BROWSER_MCP_E2E=1 OPENCLAW_BROWSER_WAIT_E2E=1 OPENCLAW_VITEST_MAX_WORKERS=1 -- node scripts/run-vitest.mjs extensions/browser/src/browser/chrome-mcp.chromium.test.ts extensions/browser/src/browser/chrome-mcp-labels.chromium.test.ts extensions/browser/src/browser/routes/agent.act.wait-visibility.chromium.test.ts test/scripts/check-openclaw-package-tarball.bundled-mcp.test.ts",
    "test:e2e:gateway": "node scripts/run-vitest.mjs run --config test/vitest/vitest.e2e.config.ts",
    "test:e2e:node-auto-update": "node scripts/e2e/lib/node-auto-update/scenario.mjs",
    "test:e2e:openshell": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_E2E_OPENSHELL=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.e2e.config.ts extensions/openshell/src/backend.e2e.test.ts",
    "test:env-mutations:report": "node --import ./scripts/tsx.mjs scripts/test-env-mutation-report.ts",
    "test:extension": "node --import ./scripts/tsx.mjs scripts/test-extension.mts",
    "test:extensions": "node scripts/test-projects.mts extensions",
    "test:extensions:batch": "node scripts/test-extension-batch.mts",
    "test:extensions:memory": "node --import ./scripts/tsx.mjs scripts/profile-extension-memory.mts",
    "test:extensions:package-boundary": "node --import ./scripts/tsx.mjs scripts/check-extension-package-tsc-boundary.mts",
    "test:extensions:package-boundary:canary": "node --import ./scripts/tsx.mjs scripts/check-extension-package-tsc-boundary.mts --mode=canary",
    "test:extensions:package-boundary:compile": "node --import ./scripts/tsx.mjs scripts/check-extension-package-tsc-boundary.mts --mode=compile",
    "test:fast": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts",
    "test:force": "node --import ./scripts/tsx.mjs scripts/test-force.ts",
    "test:freebsd:service-inspect": "node scripts/test-freebsd-service-inspect.mjs",
    "test:gateway": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_GATEWAY_PROJECT_SHARDS=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts",
    "test:gateway:concurrency": "node scripts/bench-gateway-concurrency.ts",
    "test:gateway:cpu-scenarios": "node --import ./scripts/tsx.mjs scripts/check-gateway-cpu-scenarios.mts",
    "test:gateway:memory-fd-repro": "node --import ./scripts/tsx.mjs scripts/check-memory-fd-repro.mts",
    "test:gateway:watch-regression": "node --import ./scripts/tsx.mjs scripts/check-gateway-watch-regression.mts",
    "test:gateway:worker-commit": "node --import ./scripts/tsx.mjs scripts/bench-worker-transcript-commit.ts",
    "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:anthropic": "OPENCLAW_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:openai": "OPENCLAW_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:smoke": "bash scripts/test-install-sh-docker.sh",
    "test:live": "node --import ./scripts/tsx.mjs scripts/test-live.mts",
    "test:live:cache": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 -- node --import ./scripts/tsx.mjs scripts/test-live.mts src/agents/live-cache-regression.live.test.ts",
    "test:live:codex-harness": "node --import ./scripts/tsx.mjs scripts/test-live.mts --codex-harness -- src/gateway/gateway-codex-harness.live.test.ts",
    "test:live:gateway-profiles": "node --import ./scripts/tsx.mjs scripts/test-live.mts -- src/gateway/gateway-models.profiles.live.test.ts",
    "test:live:media": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/media/hosted-media-provider-live.ts",
    "test:live:media:image": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/media/hosted-media-provider-live.ts image",
    "test:live:media:music": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/media/hosted-media-provider-live.ts music",
    "test:live:media:video": "node --import ./scripts/tsx.mjs test/e2e/qa-lab/media/hosted-media-provider-live.ts video",
    "test:live:models-profiles": "node --import ./scripts/tsx.mjs scripts/test-live.mts -- src/agents/models.profiles.live.test.ts",
    "test:live:system-agent-rescue-channel": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_LIVE_SYSTEM_AGENT_RESCUE_CHANNEL=1 -- node --import ./scripts/tsx.mjs scripts/test-live.mts -- src/system-agent/rescue-channel.live.test.ts",
    "test:macos:ci": "pnpm test:macos:ci:1 && pnpm test:macos:ci:2 && pnpm test:macos:ci:3",
    "test:macos:ci:1": "node scripts/test-projects.mts test/scripts/mac-elevation-host.test.ts",
    "test:macos:ci:2": "node scripts/test-projects.mts test/scripts/vitest-process-group.test.ts test/scripts/package-mac-app.test.ts test/scripts/generate-gateway-protocol-plugin.test.ts test/scripts/stage-cloudflared-macos.test.ts test/scripts/stage-openclaw-bun.test.ts test/scripts/build-mac-sqlite.test.ts test/scripts/restart-mac.test.ts test/scripts/mac-runtime.test.ts test/scripts/package-mac-dist.test.ts test/scripts/codesign-mac-app.test.ts test/scripts/notarize-mac-artifact.test.ts test/scripts/mac-elevation-artifact.test.ts",
    "test:macos:ci:3": "node scripts/test-projects.mts test/scripts/ci-platform-checkout.test.ts test/scripts/macos-native-test-launch.test.ts src/daemon/launchd.test.ts src/daemon/runtime-paths.test.ts src/daemon/runtime-binary.test.ts src/gateway/worker-environments/workspace-rsync-path.test.ts src/infra/brew.test.ts src/infra/stable-node-path.test.ts src/process/supervisor/adapters/child.service-lifecycle.test.ts test/scripts/verify-mac-runtime-fs.test.ts test/scripts/create-dmg.test.ts src/skills/runtime/discovery.integration.test.ts src/skills/runtime/refresh.workspace.test.ts",
    "test:max": "node scripts/test-projects-max.mts",
    "test:parallels:linux": "/bin/bash scripts/e2e/parallels-linux-smoke.sh",
    "test:parallels:macos": "/bin/bash scripts/e2e/parallels-macos-smoke.sh",
    "test:parallels:npm-update": "/bin/bash scripts/e2e/parallels-npm-update-smoke.sh",
    "test:parallels:windows": "/bin/bash scripts/e2e/parallels-windows-smoke.sh",
    "test:parallels:windows:prepare": "/bin/bash scripts/e2e/parallels-windows-prepare.sh",
    "test:perf:budget": "node --import ./scripts/tsx.mjs scripts/test-perf-budget.mts",
    "test:perf:changed:bench": "node --import ./scripts/tsx.mjs scripts/bench-test-changed.mts",
    "test:perf:groups": "node --import ./scripts/tsx.mjs scripts/test-group-report.mts",
    "test:perf:groups:compare": "node --import ./scripts/tsx.mjs scripts/test-group-report.mts --compare",
    "test:perf:hotspots": "node --import ./scripts/tsx.mjs scripts/test-hotspots.mts",
    "test:perf:imports": "node scripts/test-projects-imports.mts",
    "test:perf:imports:changed": "node scripts/test-projects-imports.mts --changed origin/main",
    "test:perf:profile:main": "node --import ./scripts/tsx.mjs scripts/run-vitest-profile.mts main",
    "test:perf:profile:runner": "node --import ./scripts/tsx.mjs scripts/run-vitest-profile.mts runner",
    "test:plugins:gateway-gauntlet": "node --import ./scripts/tsx.mjs scripts/check-plugin-gateway-gauntlet.mts",
    "test:plugins:init-provider-scaffold": "node --import ./scripts/tsx.mjs scripts/validate-plugin-init-provider-scaffold.ts",
    "test:plugins:kitchen-sink-live": "bash -lc 'if [ -x \"$HOME/.local/bin/openclaw-testbox-env\" ]; then exec \"$HOME/.local/bin/openclaw-testbox-env\" pnpm openclaw qa suite --provider-mode live-frontier --scenario kitchen-sink-live-openai; fi; exec pnpm openclaw qa suite --provider-mode live-frontier --scenario kitchen-sink-live-openai'",
    "test:plugins:kitchen-sink-rpc": "node --import ./scripts/tsx.mjs scripts/e2e/kitchen-sink-rpc-walk.mts",
    "test:plugins:kitchen-sink-rpc:bun": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_ENTRY=./openclaw.mjs -- bun scripts/e2e/kitchen-sink-rpc-walk.mts",
    "test:restart:gateway": "node --import ./scripts/tsx.mjs scripts/bench-gateway-restart.ts",
    "test:sectriage": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_GATEWAY_PROJECT_SHARDS=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts && node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --exclude src/process/exec.test.ts",
    "test:serial": "node scripts/test-projects-serial.mts",
    "test:sessions:history:bench": "node --import ./scripts/tsx.mjs scripts/bench-session-history.ts",
    "test:sessions:hydration-memory": "node --import ./scripts/tsx.mjs scripts/bench-session-manager-hydration-memory.ts",
    "test:sessions:paths:bench": "node --import ./scripts/tsx.mjs scripts/bench-session-paths.ts",
    "test:sessions:write-hold": "node --import ./scripts/tsx.mjs scripts/bench-session-manager-write-hold.ts",
    "test:skip-inventory:report": "node --import ./scripts/tsx.mjs scripts/test-skip-inventory.ts",
    "test:sqlite:perf": "node --import ./scripts/tsx.mjs scripts/bench-sqlite-state.ts --profile default --output .artifacts/sqlite-perf/default.json",
    "test:sqlite:perf:large": "node --import ./scripts/tsx.mjs scripts/bench-sqlite-state.ts --profile large --output .artifacts/sqlite-perf/large.json",
    "test:sqlite:perf:smoke": "node --import ./scripts/tsx.mjs scripts/bench-sqlite-state.ts --profile smoke --output .artifacts/sqlite-perf/smoke.json",
    "test:stability:gateway": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_VITEST_MAX_WORKERS=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts src/gateway/gateway-stability.test.ts && node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_VITEST_MAX_WORKERS=1 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.logging.config.ts src/logging/diagnostic-stability-bundle.test.ts && node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_VITEST_MAX_WORKERS=1 -- node scripts/run-vitest.mjs run src/infra/fatal-error-hooks.test.ts",
    "test:startup:bench": "node --import ./scripts/tsx.mjs scripts/bench-cli-startup.ts",
    "test:startup:bench:check": "node --import ./scripts/tsx.mjs scripts/test-cli-startup-bench-budget.mts",
    "test:startup:bench:save": "node --import ./scripts/tsx.mjs scripts/bench-cli-startup.ts --preset all --runs 5 --warmup 1 --output .artifacts/cli-startup-bench-all.json",
    "test:startup:bench:smoke": "node --import ./scripts/tsx.mjs scripts/ensure-cli-startup-build.mts && node --import ./scripts/tsx.mjs scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --runs 1 --warmup 0 --output .artifacts/cli-startup-bench-smoke.json",
    "test:startup:bench:update": "node --import ./scripts/tsx.mjs scripts/test-update-cli-startup-bench.mts",
    "test:startup:gateway": "node --import ./scripts/tsx.mjs scripts/bench-gateway-startup.ts",
    "test:startup:memory": "node --import ./scripts/tsx.mjs scripts/ensure-cli-startup-build.mts && node scripts/check-cli-startup-memory.mjs",
    "test:type-suppression-inventory:report": "node --import ./scripts/tsx.mjs scripts/type-suppression-inventory.ts",
    "test:ui": "pnpm lint:ui:no-raw-window-open && node --import ./scripts/tsx.mjs scripts/ensure-playwright-chromium.mts && pnpm --dir ui test",
    "test:ui:e2e": "node --import ./scripts/tsx.mjs scripts/ensure-playwright-chromium.mts && node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner",
    "test:unit": "pnpm test:unit:fast && node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts",
    "test:unit:fast": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit-fast.config.ts",
    "test:unit:fast:audit": "node --import ./scripts/tsx.mjs scripts/test-unit-fast-audit.mts",
    "test:voicecall:closedloop": "node --import ./scripts/tsx.mjs scripts/test-voicecall-closedloop.mts",
    "test:watch": "node scripts/test-projects.mts --watch",
    "test:windows:ci": "pnpm test:windows:ci:1 && pnpm test:windows:ci:2",
    "test:windows:ci:1": "node scripts/test-projects.mts extensions/acpx/src/runtime-argv.process.test.ts src/state/openclaw-state-ownership.test.ts src/snapshot/local-repository.windows.test.ts src/state/openclaw-database-paths.windows.test.ts src/infra/update-candidate-state.namespaced-paths.test.ts src/infra/update-candidate-state.budget.test.ts src/infra/update-candidate-state.cleanup.test.ts src/infra/update-candidate-state.online-backup.process.test.ts src/node-host/invoke-system-run-allowlist.test.ts src/node-host/invoke-agent-cli-claude.test.ts src/node-host/node-worker-transfer-client.test.ts packages/terminal-core/src/display-string.test.ts src/config/sessions/session-accessor.sqlite-archive.worker.test.ts src/cron/isolated-agent/session.preparation.storage-env.test.ts src/commands/doctor-gateway-auth-token.windows.test.ts src/commands/doctor-lint.state-isolation.test.ts src/flows/doctor-health-contributions.windows-cloud-state.test.ts src/infra/state-migrations.audit-logs.windows.test.ts src/infra/state-migrations.workspace-setup.windows.test.ts src/commands/backup-verify.test.ts src/commands/agents.commands.list.test.ts src/gateway/gateway-cron-process-identity.windows.test.ts src/node-host/node-worker-bundle-installer.test.ts test/scripts/check-openclaw-package-tarball.test.ts test/scripts/check-openclaw-package-tarball.bundled-mcp.test.ts test/scripts/direct-run-entrypoints.test.ts test/scripts/format-generated-module.test.ts test/scripts/openclaw-cross-os-installer.windows.test.ts test/scripts/openclaw-cross-os-release-workflow.test.ts test/scripts/pnpm-runner.test.ts test/scripts/run-with-env.test.ts test/scripts/ui.test.ts test/helpers/temp-dir.test.ts test/scripts/vitest-process-cache.test.ts test/scripts/vitest-process-group.test.ts test/scripts/vitest-worker-artifacts.test.ts src/agents/tools/media-tool-file-url.windows.test.ts extensions/memory-core/src/memory-extra-file-path.windows.test.ts src/daemon/schtasks.startup-fallback.test.ts src/daemon/schtasks.startup-launch.test.ts src/daemon/schtasks.settlement.test.ts src/daemon/schtasks-runtime-probe.windows.test.ts src/cli/update-cli/update-command-readiness.windows.test.ts src/infra/update-candidate-canary.cleanup.test.ts src/daemon/schtasks.env-case.real.test.ts test/e2e/qa-lab/runtime/package-openclaw-for-docker.e2e.test.ts extensions/lobster/src/lobster-runner.test.ts src/gateway/worker-environments/workspace-quiescence.windows.test.ts src/infra/git-exec.test.ts src/gateway/worker-environments/workspace-result-ref-mutation.test.ts extensions/memory-wiki/src/obsidian.discovery.test.ts src/infra/sqlite-private-directory.windows.test.ts src/skills/runtime/discovery.integration.test.ts src/skills/runtime/refresh.workspace.test.ts src/infra/sqlite-snapshot.test.ts src/infra/sqlite-snapshot-staging.cancellation.test.ts src/infra/sqlite-snapshot-retirement.test.ts src/infra/ports.test.ts src/infra/diagnostic-process-siblings.env.test.ts src/infra/windows-diagnostic-env.test.ts src/infra/windows-encoding.test.ts src/infra/windows-process-start.test.ts src/infra/windows-process-start.native.test.ts src/infra/advertised-lan-host.windows.test.ts src/infra/update-managed-service-handoff-database-publication.test.ts src/infra/update-managed-service-handoff-command.test.ts src/infra/update-managed-service-handoff-lifecycle.test.ts src/infra/executable-path.test.ts src/config/io.write-effects.windows.test.ts src/infra/fs-safe.test.ts src/infra/fs-safe-remove.test.ts src/infra/state-migrations.legacy-session-store.test.ts src/infra/windows-install-roots.test.ts src/infra/openclaw-cli-shim.windows.test.ts src/media/local-media-path.windows.test.ts src/media/web-media.file-url.windows.test.ts src/cli/completion-runtime.windows.test.ts src/cli/update-cli/update-command-migrated-windows.test.ts src/cli/daemon-cli/status.print.test.ts src/cli/mcp-cli.path-case.windows.test.ts src/config/io.snapshot.test.ts src/commands/doctor-config-preflight.state-migration.test.ts src/infra/windows-process-census.test.ts src/infra/windows-process-census.native.test.ts src/infra/openclaw-process-census.test.ts src/plugins/plugin-generation-artifact.native-reference.test.ts src/plugins/plugin-source-capture-path.test.ts src/cli/update-cli/update-repair-handoff.test.ts src/infra/update-managed-service-handoff-recovery.test.ts src/infra/update-managed-service-handoff-recovery-database.test.ts src/infra/update-managed-service-handoff-cleanup-repair.test.ts src/config/sessions/session-creation-publication.windows-path.test.ts src/config/sessions/session-accessor.sqlite-creation-worker.test.ts src/infra/sqlite-worker-identity.test.ts",
    "test:windows:ci:2": "node scripts/test-projects.mts src/shared/pid-alive.env.test.ts src/agents/cli-executable-identity.test.ts src/plugin-sdk/windows-spawn.test.ts src/infra/fs-safe-pinned-write-errno.test.ts src/infra/package-update-swap.windows.test.ts src/plugin-sdk/fs-safe-compat.test.ts src/infra/ssh-client.windows.test.ts src/infra/exec-allowlist-pattern.test.ts src/infra/process-env.test.ts src/agents/sessions/windows-git-bash-path.test.ts test/scripts/npm-runner.test.ts test/scripts/ts-topology.test.ts test/scripts/vitest-worker-artifacts.transforms.test.ts test/scripts/ci-platform-checkout.test.ts test/scripts/install-ps1.test.ts test/scripts/windows-blacksmith-testbox.test.ts test/scripts/write-plugin-sdk-entry-dts.test.ts test/scripts/write-unified-entry-dts.test.ts test/scripts/tsdown-declaration-resolution.test.ts src/test-utils/openclaw-test-state.test.ts test/helpers/openclaw-test-instance.test.ts test/scripts/managed-child-process.windows.test.ts test/scripts/managed-windows-job.test.ts src/agents/mcp-stdio-transport.windows.test.ts test/scripts/worker-deploy-build-plugin.test.ts test/scripts/managed-handoff-build-config.test.ts src/process/owned-stdio.real.test.ts src/process/owned-stdio.windows.test.ts test/scripts/managed-child-process.output.test.ts src/utils.test.ts src/process/exec.windows.test.ts src/process/exec.windows.integration.test.ts src/agents/sessions/exec.real.test.ts src/process/windows-command.test.ts src/process/terminal-pty.test.ts src/process/supervisor/supervisor.anchored-shell.real.test.ts src/tui/tui.resolve-codex-bin.test.ts src/media-understanding/attachments.file-url.windows.test.ts src/cli/runtime-cleanup-scope.windows.process.test.ts src/auto-reply/usage-bar/template.windows.test.ts src/auto-reply/reply.triggers.trigger-handling.stages-inbound-media-into-sandbox-workspace.test.ts src/agents/provider-local-service.env-case.test.ts src/agents/provider-local-service.shutdown.test.ts src/agents/provider-local-service.settlement.test.ts src/agents/bash-tools.exec.script-preflight.test.ts src/agents/agent-tools.read.windows.test.ts src/agents/agent-tools.read.workspace-mutations.test.ts src/agents/apply-patch.test.ts src/agents/sandbox/fs-paths.test.ts src/agents/sessions/tools/render-utils.test.ts src/agents/sessions/tools/path-utils.test.ts extensions/msteams/src/media-helpers.test.ts extensions/msteams/src/messenger.test.ts extensions/mxc/test/mxc-backend.test.ts extensions/mxc/test/fs-bridge.test.ts extensions/mxc/test/path-comparison.test.ts extensions/mxc/test/sandbox-policy-loader.test.ts src/shared/runtime-import.test.ts src/shared/worker-bundle-archive.test.ts src/daemon/schtasks-state-probe.windows.test.ts src/daemon/service-audit-schtasks.windows.test.ts src/plugin-sdk/node-host.test.ts src/agents/worktrees/git.test.ts src/agents/worktrees/filesystem-refs.test.ts src/agents/worktrees/service.removal-recovery.windows.test.ts extensions/browser/src/browser/chrome.executable-probe.windows.test.ts src/process/supervisor/service-child-group-ownership.test.ts",
    "test:windows:schtasks:integration": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts CI_WINDOWS_SCHTASKS_INTEGRATION=1 OPENCLAW_E2E_SKIP_BUILD=1 OPENCLAW_E2E_VERBOSE=1 OPENCLAW_VITEST_MAX_WORKERS=1 -- node scripts/run-vitest.mjs src/daemon/schtasks.integration.e2e.test.ts",
    "tool-display:check": "node --import ./scripts/tsx.mjs scripts/tool-display.ts --check",
    "tool-display:write": "node --import ./scripts/tsx.mjs scripts/tool-display.ts --write",
    "ts-topology": "node --import ./scripts/tsx.mjs scripts/ts-topology.ts",
    "tsgo": "pnpm tsgo:core",
    "tsgo:all": "pnpm tsgo:core:all && pnpm tsgo:extensions:all && pnpm tsgo:scripts && pnpm tsgo:test:root",
    "tsgo:core": "node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core.tsbuildinfo",
    "tsgo:core:all": "pnpm tsgo:core && pnpm tsgo:ui && pnpm tsgo:core:test",
    "tsgo:core:test": "node scripts/run-tsgo-core-test-shards.mjs",
    "tsgo:extensions": "node scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions.tsbuildinfo",
    "tsgo:extensions:all": "node scripts/run-tsgo.mjs -b tsconfig.extensions.projects.json",
    "tsgo:extensions:test": "node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo",
    "tsgo:prod": "bash scripts/ci-collect-checks.sh 'pnpm tsgo:core' 'pnpm tsgo:ui' 'pnpm tsgo:extensions'",
    "tsgo:profile": "node --import ./scripts/tsx.mjs scripts/profile-tsgo.mts",
    "tsgo:scripts": "node scripts/run-tsgo.mjs -p tsconfig.scripts.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/scripts.tsbuildinfo",
    "tsgo:test": "bash scripts/ci-collect-checks.sh 'pnpm tsgo:core:test' 'pnpm tsgo:extensions:test' 'pnpm tsgo:test:root'",
    "tsgo:test:extensions": "pnpm tsgo:extensions:test",
    "tsgo:test:packages": "node scripts/run-tsgo-core-test-shards.mjs packages",
    "tsgo:test:root": "node scripts/run-tsgo-core-test-shards.mjs root",
    "tsgo:test:src": "node scripts/run-tsgo-core-test-shards.mjs src",
    "tsgo:test:ui": "node scripts/run-tsgo-core-test-shards.mjs ui",
    "tsgo:ui": "node scripts/run-tsgo.mjs -p tsconfig.ui.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/ui.tsbuildinfo",
    "tui": "node scripts/run-node.mjs tui",
    "tui:dev": "node --import ./scripts/tsx.mjs scripts/run-with-env.mts OPENCLAW_PROFILE=dev -- node scripts/run-node.mjs --dev tui",
    "tui:pty:test:watch": "node --import ./scripts/tsx.mjs scripts/dev/tui-pty-test-watch.ts",
    "tui:pty:test:watch:all": "node --import ./scripts/tsx.mjs scripts/dev/tui-pty-test-watch.ts --mode all",
    "tui:pty:test:watch:fake": "node --import ./scripts/tsx.mjs scripts/dev/tui-pty-test-watch.ts --mode fake",
    "tui:pty:test:watch:local": "node --import ./scripts/tsx.mjs scripts/dev/tui-pty-test-watch.ts --mode local",
    "tui:questions:proof": "node --import ./scripts/tsx.mjs scripts/dev/tui-questions-proof.ts",
    "ui:boot-manifest:gen": "node --import ./scripts/tsx.mjs ui/scripts/control-ui-boot-manifest.mts",
    "ui:build": "node scripts/ui.js build",
    "ui:check-performance": "node --import ./scripts/tsx.mjs scripts/check-control-ui-performance.mts",
    "ui:check-performance:base": "node --import ./scripts/tsx.mjs scripts/check-control-ui-performance-base.mts",
    "ui:dev": "node scripts/ui.js dev",
    "ui:i18n:baseline": "node --import ./scripts/tsx.mjs scripts/control-ui-i18n-verify.ts baseline",
    "ui:i18n:check": "node --import ./scripts/tsx.mjs scripts/control-ui-i18n.ts check",
    "ui:i18n:report": "node --import ./scripts/tsx.mjs scripts/control-ui-i18n-report.ts",
    "ui:i18n:sync": "node --import ./scripts/tsx.mjs scripts/control-ui-i18n.ts sync --write",
    "ui:i18n:verify": "node --import ./scripts/tsx.mjs scripts/control-ui-i18n-verify.ts verify",
    "ui:install": "node scripts/ui.js install",
    "ui:parity": "node --import ./scripts/tsx.mjs scripts/control-ui-parity/index.mts",
    "ui:proof:composer-mic-hover": "node --import ./scripts/tsx.mjs scripts/capture-composer-mic-hover-proof.mts",
    "ui:proof:injected-turn-notice": "node --import ./scripts/tsx.mjs scripts/capture-injected-turn-notice-proof.mts",
    "ui:proof:model-picker": "node --import ./scripts/tsx.mjs scripts/capture-model-picker-proof.mts",
    "ui:proof:session-toolbar": "node --import ./scripts/tsx.mjs scripts/capture-session-toolbar-proof.mts",
    "ui:proof:where-chip": "node --import ./scripts/tsx.mjs scripts/capture-where-chip-auto-proof.mts",
    "ui:proof:workboard": "node --import ./scripts/tsx.mjs scripts/capture-workboard-ui-proof.mts",
    "ui:solid:inventory": "node --import ./scripts/tsx.mjs scripts/control-ui-solid-inventory.mts",
    "update:compat:check": "node scripts/update-compat-inventory.mts --check",
    "update:compat:gen": "node scripts/update-compat-inventory.mts",
    "update:network-budget:check": "node scripts/generate-update-network-budget.mjs --check",
    "update:network-budget:gen": "node scripts/generate-update-network-budget.mjs",
    "verify": "node --import ./scripts/tsx.mjs scripts/verify.mts"
  },
  "signal_details": {
    "dependency_added_unknown": "2 new non-watchlisted dep(s): ['@openclaw/proc-safe', '@trycua/cua-driver']",
    "dist_tag_anomaly": "dist-tags.latest=2026.11.1 but max published is 2026.11.5-beta.1",
    "script_count_spike": "scripts count 493 -> 604",
    "shared_repo_different_publisher": "repo 'git+https://github.com/openclaw/openclaw.git' also claimed by 10 package(s) under different publishers: ['npm/@aka_openclaw_plugin/mychat', 'npm/@openclaw/line', 'npm/@openclaw/pixverse-provider'] ...",
    "size_spike": "unpackedSize 87477902 -> 274712249 (3.1\u00d7)"
  },
  "time": {
    "created": "2026-01-29T11:08:11.861Z",
    "modified": "2026-11-05T09:41:26.621Z"
  }
}